日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIEBEL功能组件,eScript入门

發(fā)布時間:2023/12/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIEBEL功能组件,eScript入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 學習任務
  • 一、MVG的配置與學習
    • 1. 1:M的MVG配置,以統(tǒng)計訂單行數(shù)量功能為例
    • 1. M:M的MVG配置
  • 二、View Mode & Visibility配置
    • 1. Personal安全性
    • 2. Position安全性
  • 三、EBC和VBC的創(chuàng)建
    • 1. EBC的創(chuàng)建
    • 2. VBC的創(chuàng)建
  • 四、Import Object配置
  • 五、eScript入門
    • 提交訂單功能的實現(xiàn)
    • 多選刪除按鈕的實現(xiàn)
    • 撤銷按鈕的實現(xiàn)
    • 同步按鈕的實現(xiàn)
    • MVG添加按鈕的實現(xiàn)
    • MVG刪除按鈕的實現(xiàn)
    • 代碼實現(xiàn)計算字段
  • 遇到問題及其解決方案
  • 心得總結


前言

9.4~9.16學習情況總結


學習任務

  • MVG的配置與學習
  • View Mode和Visible的配置
  • SQL基礎略看
  • EBC和VBC的學習
  • Import Object學習
  • eScript入門、編碼訓練

一、MVG的配置與學習

個人理解MVG就是1:M或者M:M的關系模型,MVG的配置就將這種關系可視化、數(shù)據(jù)化。

1. 1:M的MVG配置,以統(tǒng)計訂單行數(shù)量功能為例

  • 創(chuàng)建Link:Cascade Delete級聯(lián)刪除填寫Delete,避免出現(xiàn)垃圾數(shù)據(jù),父子BC填寫對應字段即可

  • 在父BC中創(chuàng)建MVL如下,DestinationBC選擇子BC名,Link選剛才的Link即可。
    Auto Primary&Primary ID Field: 對于沒有Primary概念的子BC(即訂單行
    中,沒有一個訂單行是主要的) , 我們把該屬性置為None, Primary ID
    Field留空。
    No Associate/Copy/Delete/Insert/Update: 配置訂單行BC是為了統(tǒng)計訂
    單行的數(shù)據(jù),而不能直接通過MVG對訂單行進行編輯,因此我們把這些勾全
    勾上。

  • 創(chuàng)建MVF:如我們需要統(tǒng)計訂單行訂購的總量, 那么我們可以把訂單行上的Quantity字段作為訂單頭的MVF。一個訂單頭上有多少條訂單行,這個MVF就有多少個值。MVF也是FIeld的一種。

  • 4. 創(chuàng)建一個Calculate字段:注意Type屬性更改(默認是Text屬性),使用Count函數(shù)對MVF進行統(tǒng)計,例子中有多少序列號就有多少MVF記錄數(shù),統(tǒng)計記錄數(shù)就是統(tǒng)計訂單行數(shù)量。注意, Count函數(shù)的參數(shù)一定是一個MVL的名字。

    1. M:M的MVG配置

  • 創(chuàng)建中間表,新建兩個外鍵,分別指向父子BC

  • 創(chuàng)建Link,與1:M區(qū)別較大,有中間表做級聯(lián)了,所以Source Field和Destination Field不填
    重要屬性包括:
    Inter Table:中間表。
    Inter Parent Column: 中間表中父BC的表的外鍵。
    Inter Child Column:中間表中子BC的表的外鍵。
    Primary ID Field: 父BC中用于標識主要的字段。
    Cascade Delete: 再次強調, 除非需求很特殊,否則M:M的Link一定要選
    None!

    Primary Id Field = Child Id:業(yè)務上區(qū)分主要非主要、提升系統(tǒng)性能。

  • 創(chuàng)建MVF

  • 創(chuàng)建MVG Applet

    • 運行向導,BC字段填寫子BC
    • Pick Applet類型。選擇Edit List模式,模板選擇Popup List Mvg
    • 選擇需要的字段(MVF中創(chuàng)建的字段),其中SSA是主要字段,隱藏Field

    • 調整布局
    • 配置確定按鈕:
      在Control下新建一條記錄,設置以下屬性:
      Name: CloseApplet
      Caption – String Reference: SBL_OK-1004224735-0D4
      HTML Type: MiniButton
      Method Invoke: CloseApplet
      并拖拽至界面。
    • 設置Applet屬性:為了讓MVG Applet能夠進行關聯(lián)數(shù)據(jù)和刪除關聯(lián),以及更改Primary記錄等操作,保持No Insert\Delete\Update屬性為N,勾上No Merge屬性
    • 新建BC FIeld ,將MVF的Column添加進去(此處是Name)
    • 將FIeld添加Column至Applet,并選擇List Column中的MVG Applet屬性
  • 創(chuàng)建Associate Applet
    • 復制MVG Applet,把No Delete\Insert\Update\Merge屬性勾上,把Type屬性改為Association List。

    • 修改模板,Applet Web Template下,把Associate Applet的Web Template屬性改為 Popup List Assoc。

    • 刪除SSA Primary Field和確定按鈕,Associate Applet上無Primary的概念,因此我們把該字段刪除。并把確定按鈕刪除。

    • 在MVG Applet上配置Associate Applet

    二、View Mode & Visibility配置

    1. Personal安全性

  • 在需要做安全性的BC對象中,在BuscompView Mode下創(chuàng)建記錄如下:
  • 修改View的Applet Visibility Type=Personal
  • View Web Template Items上的NGC Order Header List Applet的Applet Visibility Type設為Personal。
  • 2. Position安全性

    Position安全性是應用最廣泛的一種安全性,因為它有兩個最重要的特性是
    Person安全性所不具備的:
    繼承性: 職位的數(shù)據(jù)可以被繼承,如果一個用戶離職或者換崗,那么新
    頂替他的崗位用戶可以繼承該崗位下所有的歷史數(shù)據(jù),實現(xiàn)人走崗留,
    使業(yè)務數(shù)據(jù)獨立于人(用戶)而存在。
    層級性: 上級職位可以通過配置實現(xiàn)對他所有下級職位的數(shù)據(jù)的訪問。
    由于這兩個特性與大多實際業(yè)務非常吻合,因此Position安全性是一種使用
    很廣泛,也很重要的安全性類型。

    我們有標準的職位BC:Position,首先基于Position以及他的Table:S_PARTY,做一個訂單頭上關于職位的MVG

  • 基于父表CX_ORDER_DWJ和子表S_PARTY建立中間表CX_POSITION_CON,創(chuàng)建外鍵字段

  • 創(chuàng)建Link,填寫父子BC以及中間表(不必填Source和Destination Field)

  • 將Position加進BO,添加Link關系

  • 創(chuàng)建MVLink,Destination BC寫子BC

  • 創(chuàng)建MVF,選擇自己需要的字段

  • 創(chuàng)建或者直接使用MVG Applet

  • 添加MVF到訂單頭Applet的Column,并綁定MVG Applet

  • 在父BC中配置View Mode,選擇相應的MVLink

  • 配置View的Visibility Applet Type屬性,分別設置成Sales Rep和Manager

  • 配置View Web Template Items分別設置Applet Visibility Type為對應的屬性

  • 在Screen中上掛上剛剛創(chuàng)建的View

  • 創(chuàng)建職位:開發(fā)環(huán)境中,管理—組—職位

  • 創(chuàng)建職責:開發(fā)環(huán)境中,管理—應用程序—職責

  • 分配職責、職位:開發(fā)環(huán)境中,管理—用戶—員工

  • 在管理—應用程序中注冊視圖,將Manager和Sales視圖分配給相應的經(jīng)理賬號,Sales分配給相應的銷售人員賬號

  • 用戶、職責、職位的關系如下:
    View與職責的關系是在環(huán)境中手動配置關聯(lián)的,將下屬的View手動添加到父職位中

    三、EBC和VBC的創(chuàng)建

    EBC指的是通過sql視圖,來獲取單表或者多表數(shù)據(jù)的BC,不基于任何實體表,不能直接進行新建、刪除、修改操作。

    1. EBC的創(chuàng)建

  • 根據(jù)需求創(chuàng)建View,并給View賦權
  • 創(chuàng)建View,保存為.sql文件備用

    CREATE VIEW detail AS SELECT d.product_id,d.product_price,d.order_deadline,h.order_type,h.order_comments,d.order_comment FROM CX_ORDER_DWJ h , CX_ORDER_ITEM d WHERE d.parent_order_id = h.row_id

    給View賦權

    GRANT SELECT ON detail TO SSE_ROLE;
  • 用向導創(chuàng)建External Table,如下圖選擇


  • 表里面需要有一個可以作為id的唯一列,將唯一列的system field mapping設置為Id,如下圖所示

  • 新建BC,選擇剛才建的Table字段即可

  • 至此BC已可以正常使用,配置相應的Applet,View,Screen,BO即可,可以作數(shù)據(jù)展示或者數(shù)據(jù)處理結果展示等。

  • 2. VBC的創(chuàng)建

  • 不要用向導,直接在bc界面New。不多做說明。
  • 在BC下面新建Field,不要填Column,PickList等可以正常進行配置。
  • 正常新建Applet,注意所有字段都要要勾上runtime
  • 四、Import Object配置

    Import Object的作用就是通過CSV文件導入記錄

  • 把Import Object對象從Object Explorer中調出來,并創(chuàng)建一個Import Object
    對象,BC填寫你需要導入的BC

  • 在Import Field中選擇你可能需要導入的Field

  • 創(chuàng)建導入源(建兩個只是為了測試,一般用一個就行)

  • 定義導入源的Field,即需要導入的字段

  • 定義Field對應的CSV文件的列名

  • 制作導入文件, 本次是用的導出文件的格式作的導入文件

  • 導入設置如下

  • 五、eScript入門

    提交訂單功能的實現(xiàn)

    需求:新建完訂單后,我們實現(xiàn)一個提交按鈕。該按鈕只有在訂單狀態(tài)為“新建”時可點擊。
    點擊新建按鈕后,判斷是否存在訂單行。如果沒有訂單行,那么報錯提示錄入訂單行。
    如果驗證通過,則把訂單頭的狀態(tài)改為“已提交”,并且把所有訂單行的價格改為“999”。

  • 在需要添加按鈕的Applet上添加UP字段如下,注意冒號與“SubmitOrder”間需要一個空格,“ SubmitOrder”應該與 Control 的 Method Invoked 屬性值對應。
    注意: Value 的值控制按鈕可用條件,為真(TRUE) 時按鈕可用,為假時(FALSE)按鈕不可用。這里可以設置相應的條件來控制按鈕是否可用,例如這個 Applet 所在的 BC 有一個字段“Status”,是值列表字段,其中有一個值是“導入”,當將 Value 設
    置成: [Status]=”導入” 表示在 Applet 上選中某一條記錄,當這條記錄的“Status”字段值不是“導入”時,按鈕將不
    可用,當“Status”字段值是“導入”時,按鈕可用。
    提示: 這里僅是方便說明問題,所以硬編碼寫了“導入”兩個漢字,實際應用中應當用 LookupValue 形式,如下:
    [Status]=LookupValue(“STATUS_TYPE”,”import”)
    NGC_ORDER_TYPE 表示這個靜態(tài)值列表的類型
    Incomplete表示對應的獨立源代碼

  • 添加Control,HTML Type與UP設置的值對應,然后把按鈕添加到Layout上

  • 創(chuàng)建BS,External Use: Y(能被代碼或者工作流調用,一般建立的 BS 都應該勾上),

  • 在Business Service Method下添加方法:SubmitOrder,Display Name: 提交訂單。

  • 在SubmitOrder方法下添加輸入輸出參數(shù):OrderId

  • 選擇NGC Order Header Service,Edit Server Script,在function Service_PreInvokeMethod (MethodName, Inputs, Outputs)添加以下代碼:

  • function Service_PreInvokeMethod (MethodName, Inputs, Outputs){//為了保證代碼的健壯性,function開始前應使用try{}catch(e){}finally{}來捕獲并處理異常。 try{//每個客戶化BS開頭定義事務,以確保數(shù)據(jù)的完整性//定義事務控制var psTranIn = TheApplication().NewPropertySet();var psTranOut = TheApplication().NewPropertySet();var bsTran = TheApplication().GetService("EAI Transaction Service");//開始事務bsTran.InvokeMethod("BeginTransaction", psTranIn, psTranOut);if (MethodName == "SubmitOrder"){SubmitOrder(Inputs, Outputs);}//如果邏輯正確結束,提交事務//正常結束,提交事務psTranIn.SetProperty("Abort", "false");bsTran.InvokeMethod("EndTransaction", psTranIn, psTranOut);}catch(e){//如果捕獲到異常,回滾事務//捕獲異常,回滾事務psTranIn.SetProperty("Abort", "true");bsTran.InvokeMethod("EndTransaction", psTranIn, psTranOut);TheApplication().RaiseErrorText(e.message);}finally{//程序結束時,必須釋放所有新創(chuàng)建的對象型變量//釋放對象psTranIn = null;psTranOut = null;bsTran = null;}//所有客戶化的BS都要返回CancelOperatonreturn (CancelOperation);}
  • 我們把提交訂單的邏輯封裝在BS的一個SubmitOrder的function里。在
  • BS里添加function:展開general,在declarations里添加以下代碼:

    //提交訂單的邏輯//輸入?yún)?shù):OrderId,需要提交的訂單的Idfunction SubmitOrder(Inputs, Outputs){try{//獲取訂單BO,BCvar boOrder = TheApplication().GetBusObject("HAND Order");var bcOrder = boOrder.GetBusComp("HAND Order");var bcItem = boOrder.GetBusComp("HAND Order Item");//獲取參數(shù)//GetProperty()是Property的一個最重要的方法之一,它的作用是獲取 Property Set里的某個鍵的值。我們這里是獲取輸入?yún)?shù)OrderId的值。var orderId = Inputs.GetProperty("OrderId");//根據(jù)輸入?yún)?shù)OrderId查詢出需要提交的訂單with (bcOrder){//從下面一句開始到ExecuteQuery,是最常用的腳本BC查詢操作步驟//激活字段,查詢前要激活所有你需要獲取或者設置值的字段ActivateField("Order Status");//設置安全性,結合安全性的知識理解。代碼中新開的BC實例一般用AllView安全性,確保能查到數(shù)據(jù)。但是界面上的實例不可更改安全性SetViewMode(AllView);//清空查詢條件ClearToQuery();//設置查詢條件,這里有兩種設置查詢條件的方法,SetSearchSpec和SetSearchExpr,我們建議使用SetSearchExpr,具體原因后續(xù)再分析//SetSearchSpec("Id", orderId);SetSearchExpr("[Id] = '" + orderId + "'");//執(zhí)行查詢ExecuteQuery(ForwardOnly);//查詢完成后,通過FirstRecord定位到查詢結果的第一條記錄,如果查詢不到任何記錄,則FirstRecord方法會返回falseif (!FirstRecord())throw "找不到訂單Id " + orderId + " !";}//查詢訂單下的訂單行with (bcItem){ActivateField("Item Status");//這里可以不需要對訂單行設置頭Id的查詢條件,因為在獲取BC時,訂單行被BO里的Link限制為訂單頭的子,該條件會自動附加ClearToQuery();ExecuteQuery(ForwardOnly);var bLineFound = FirstRecord();//驗證如果不存在至少一條訂單行,報錯if (!bLineFound)throw "請先錄入訂單行再提交!";//以下是最典型的通過while循環(huán)查詢出的記錄做操作的例子//循環(huán)所有訂單行,更新訂單行狀態(tài)為待發(fā)運var TO_BE_SHIPPED =TheApplication().InvokeMethod("LookupValue","HAND_ORD_ITEM_STATUS", "To Be Shipped");while (bLineFound){//SetFieldVaue是設置BC Field的值的方法SetFieldValue("Item Status", TO_BE_SHIPPED);//WriteRecord是保存記錄的方法WriteRecord();//NextRecord是把記錄定位到查詢結果的下一條記錄,如果已經(jīng)是最后一條(即不存在下一條),返回false,跳出while循環(huán)bLineFound = NextRecord();}}//更新為訂單行后,更新訂單頭狀態(tài)with (bcOrder){var PENDING =TheApplication().InvokeMethod("LookupValue", "HAND_ORD_STATUS", "Pending");SetFieldValue("Order Status", PENDING);WriteRecord();}}catch(e){//捕獲異常,報錯throw e;}finally{//釋放對象變量bcItem = null;bcOrder = null;boOrder = null;}}
  • BS的調用方法1:同樣在NGC Order Header List Applet的里修改腳本PreInvokeMethod,如下:
  • function WebApplet_PreInvokeMethod (MethodName){//提交訂單if (MethodName == "SubmitOrder"){try{//獲取Applet對應的BC實例var bcOrder = this.BusComp();//調用前先做一次界面的保存bcOrder.WriteRecord();//創(chuàng)建BS的輸入?yún)?shù)和輸出參數(shù)的Property Setvar psIn = TheApplication().NewPropertySet();var psOut = TheApplication().NewPropertySet();//設置輸入?yún)?shù)OrderId的值為當前光標選中的訂單頭IdpsIn.SetProperty("OrderId", bcOrder.GetFieldValue("Id"));//獲取BSvar bsOrdSvc = TheApplication().GetService("NGC Order Header Service");//調用BS的方法SubmitOrderbsOrdSvc.InvokeMethod("SubmitOrder", psIn, psOut);//注意,SNTO Order BC的Class必須是CSSBCBase或者其子類,否則不支持RefreshRecord方法//此處為什么要對記錄做刷新呢?因為BS里更新數(shù)據(jù)時基于一個全新的實例去更新的,//并不影響當前界面的實例。為了使當前界面的實例能反饋給用戶處理結果(訂單狀態(tài)字段改為“已提交”)//因此需要刷新當前界面的實例bcOrder.InvokeMethod("RefreshRecord");//客戶化方法,返回CancelOperationreturn (CancelOperation);}catch(e){TheApplication().RaiseErrorText(e.message);}finally{//釋放對象psIn = null;psOut = null;bsOrdSvc = null;bcOrder = null;}}//Hello World方法else if (MethodName == "HelloWorld"){TheApplication().RaiseErrorText("Hello World");return (CancelOperation);}return (ContinueOperation);}
  • BS的調用方法2:配置三個UP,Named Method
  • 多選刪除按鈕的實現(xiàn)

    在訂單行的刪除按鈕上新增多選刪除特性,在不改變按鈕原有功能和外觀的情況下,可以實現(xiàn)一次刪除所有選中的記錄。
    實現(xiàn)過程以及代碼略。

    撤銷按鈕的實現(xiàn)

    實現(xiàn)在訂單頭界面一鍵刪除所有訂單行,并且修改訂單狀態(tài)為未提交。
    實現(xiàn)過程以及代碼略。

    同步按鈕的實現(xiàn)

    同步訂單頭的產(chǎn)品名稱和Id到對應訂單行,產(chǎn)品種類是PIcklist字段,自動為所有訂單行Pick訂單頭的產(chǎn)品。
    實現(xiàn)過程以及代碼略。

    MVG添加按鈕的實現(xiàn)

    實現(xiàn)MVG字段的添加,以及設置主鍵的功能。
    實現(xiàn)過程以及代碼略。

    MVG刪除按鈕的實現(xiàn)

    實現(xiàn)MVG字段刪除關系的功能。
    實現(xiàn)過程以及代碼略。

    代碼實現(xiàn)計算字段

    用BC Field的Calculate字段調用BS方法,實現(xiàn)不用配置UP也能實現(xiàn)計算的功能,既節(jié)約了性能成本又可以實現(xiàn)代碼復用。

    遇到問題及其解決方案

  • VIew 與Applet做關聯(lián),然后編輯布局,將添加的Applet拖進去

  • 數(shù)據(jù)庫sql語句報錯
    創(chuàng)建中間表時,默認字段會帶空格,無法使用,需要修改。
    檢查Table是否正確check in和apply到服務器,修改前check out,修改后apply。

  • 導入數(shù)據(jù)時顯示文件無法使用或格式不匹配,無法找到與siebel的字段映射
    檢查Import Field字段和Applet上顯示的字段是否一致
    先導出,使用導出的文件格式填寫數(shù)據(jù)再導入

  • VBC無法正常顯示
    注意自定義字段不要與系統(tǒng)字段重名

  • Import Object無法正常導入
    文件格式問題,可以導出之后清空數(shù)據(jù)添加自己的數(shù)據(jù)
    字段命名問題,字段一般要和BC上顯示的名稱一致,便于映射

  • eScript無法正常執(zhí)行
    檢查使用的字段是否激活
    檢查屬性名稱是否對應

  • 動態(tài)PickList只讀,能看不能選
    檢查字段對應問題,一般要用唯一字段ID

  • MVG按鈕代碼無法設置PRIMARY KEY
    View Mode安全性問題,取消安全性設置即可

  • MVG按鈕代碼,新建記錄可以指定PRIMARY KEY,原有記錄的PRIMARY KEY無法被修改
    級聯(lián)刪除的bug問題,實體字段沒有被刪除以及覆蓋,獲取管理員權限,手動設置字段為空。

  • BC Script 無限循環(huán)
    BC的代碼不能寫this,否則會造成死循環(huán)
    可以這樣寫:

  • SetSearchExpr("[Id] = '"+this.GetFieldValue("Id")+"'");ExecuteQuery(ForwardOnly);for ( var j = FirstRecord(); j; j = NextRecord() ){var bcOrderMVG = GetMVGBusComp("Position Name");}
  • BC Script 引用的值無法正常顯示到界面,代碼執(zhí)行正常但無法生效
    return (CancelOperation);要寫在標準方法里,否則自己的方法還會被覆蓋。
  • function BusComp_PreGetFieldValue (FieldName, &FieldValue) {if(FieldName == "Position Name"){//調用自定義方法,然后一定要return cancelallPos(FieldName, FieldValue);return (CancelOperation);}return (ContinueOperation); }
  • 寫代碼的時候注意寫入數(shù)據(jù)要保存BC,否則無效
  • bcMVG.SetFieldValue("SSA Primary Field", "Y");bcMVG.WriteRecord();
  • DEBUG的時候經(jīng)常不能在斷點停頓
    一般是由于程序走不到斷點處,檢查判斷邏輯和流程。
    系統(tǒng)bug,解決辦法是關閉瀏覽器,關閉所有編程窗口重新編譯,然后重新打斷點
  • 在瀏覽器debug的一個方法記錄
    • 開發(fā)環(huán)境選擇 管理-業(yè)務服務(B) ——模擬器
    • 服務名稱選擇自己的BS名,再選擇要測試的方法
    • 輸入?yún)?shù)要與**Inputs.GetProperty(“OrderId”);**內容一致,點擊物業(yè)名稱進行配置
    • 點擊運行即可測試

  • 心得總結

    DEBUG是開發(fā)過程中至關重要的一步,但是TOOLS的編碼和DEBUG工具并不算好用,所以在學習過程中浪費了一些時間。不過好在有經(jīng)驗之后,大體上也能定位到問題在哪里,所以總體體驗下來,SIEBEL開發(fā)是需要一定經(jīng)驗積累的。一是比較小眾,網(wǎng)上資料和帖子比較少,很難上網(wǎng)找到解決方案;二是開發(fā)工具需要一個熟悉的過程,對于它的特性以及BUG等都需要摸索一下。
    多做,多做,多做。做過的東西當時是會了,但是過一段時間非常容易遺忘,特別是SIEBEL配置,過程細節(jié)比較多,不同功能配置都各不相同,漏了一個環(huán)節(jié)就直接跑不起來,報錯信息也非常不好定位問題所在。所以還是要多實戰(zhàn)多做幾遍,也能發(fā)現(xiàn)一些細節(jié)問題,記錄也是必要的,遺忘可以快速撿起來。
    剛學eScript的時候,遇到什么問題都想看看有沒有對應的API能用,就去查開發(fā)手冊,結果未必能找到對應的API。后來發(fā)現(xiàn)通過配置就很簡單能夠實現(xiàn)這個功能。有時候目光不能太局限,SIEBEL是一個界面化的二次開發(fā)平臺,要結合它的優(yōu)點去做開發(fā),配置和代碼,哪個方便穩(wěn)定性能好,就用哪個。我們的最終目的是實現(xiàn)功能,不管是通過什么方法。

    總結

    以上是生活随笔為你收集整理的SIEBEL功能组件,eScript入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。