BOS擴展業(yè)務(wù)服務(wù)說明手冊_第1頁
BOS擴展業(yè)務(wù)服務(wù)說明手冊_第2頁
BOS擴展業(yè)務(wù)服務(wù)說明手冊_第3頁
BOS擴展業(yè)務(wù)服務(wù)說明手冊_第4頁
BOS擴展業(yè)務(wù)服務(wù)說明手冊_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 KINGDEEK/3 BOS 開發(fā)指導(dǎo)手冊BOS擴展服務(wù)說明手冊金蝶軟件(中國)有限公司 研發(fā)中心 K/3 BOS系統(tǒng)開發(fā)部BOS擴展業(yè)務(wù)服務(wù)說明手冊ã 金蝶軟件(中國)有限公司研發(fā)中心 K/3 BOS系統(tǒng)開發(fā)部RaymondYao1 擴展業(yè)務(wù)服務(wù)(擴展Action)1.1 名詞解釋擴展業(yè)務(wù)服務(wù):獨立、通用的業(yè)務(wù)處理函數(shù),其參數(shù)、返回數(shù)據(jù)獨立于單據(jù)、基礎(chǔ)資料;為了把業(yè)務(wù)處理函數(shù)和特定的單據(jù)綁定,必須在函數(shù)的配置界面進行參數(shù)配置。因此,一個完整的擴展業(yè)務(wù)服務(wù)包括參數(shù)配置組件和解析運行組件;擴展業(yè)務(wù)服務(wù)實現(xiàn)的功能等同于BOS原有的Action函數(shù),只是允許用戶自行擴展。后文中擴展業(yè)務(wù)服

2、務(wù)又稱為擴展Action;1.2 簡介K/3 BOS 除了內(nèi)置的一些業(yè)務(wù)服務(wù)函數(shù)(Action)外,還支持用戶開發(fā)自有的Action:用戶可以將自有的業(yè)務(wù)邏輯封裝在這種Action中,并在需要的時候配置到單據(jù)的字段(加載更新事件、值更新事件、保存規(guī)則)事件、操作事件和單據(jù)事件中,以實現(xiàn)自定義的過程。K/3 BOS目前支持的Action,按照運行領(lǐng)域可以分為:² 客戶端Action:包含適用于單據(jù)的Action和序時簿的Action² 中間層Action按照觸發(fā)條件可以分為:² 字段相關(guān)的Action² 操作相關(guān)的Action² 單據(jù)事件相關(guān)的A

3、ction同時還有一種特殊的Action:簡單業(yè)務(wù)Action。1.2.1 字段相關(guān)的Action字段相關(guān)的Action,是指當單據(jù)字段的值發(fā)生改變時會觸發(fā)的Action。字段相關(guān)的Action包含了所有BOS內(nèi)置的Action,如:TakeBaseData、Calculate、UnitExchange、LockByItemTrack、SetDecimal、SetEquation、ShowHideField、LockField、Vertify、LockUsed、LockMenu、VerifyUniquely、TrigAction,關(guān)于這些Action的使用,請參考相關(guān)手冊。字段相關(guān)的Actio

4、n,需要在字段的加載更新事件、值更新事件、保存規(guī)則中進行定義。目前,字段相關(guān)的Action,都是客戶端單據(jù)運行的Action。1.2.2 操作相關(guān)的Action操作相關(guān)的Action,是指當BOS單據(jù)的指定操作被用戶觸發(fā)后會執(zhí)行的Action。操作相關(guān)的Action,需要在BOS單據(jù)的操作管理中定義。目前操作相關(guān)的Action,又包含:² 單據(jù)操作前置Action:在插件BOSBarClick事件發(fā)生之后觸發(fā)² 單據(jù)操作Action:在單據(jù)操作前置Action之后、BOS內(nèi)置處理過程(如果有的話)之前觸發(fā)² 單據(jù)操作后置Action:在BOS內(nèi)置處理過程(如果有的

5、話)完成之后觸發(fā)² 序時簿操作前置Action:在插件BOSBarClick事件發(fā)生之后觸發(fā)² 序時簿操作Action:在序時簿操作前置Action之后、BOS內(nèi)置處理過程(如果有的話)之前觸發(fā)² 序時簿操作后置Action:在BOS內(nèi)置處理過程(如果有的話)完成之后觸發(fā)操作相關(guān)的Action,可以在客戶端運行,也可以在中間層運行。1.2.3 單據(jù)事件相關(guān)的Action單據(jù)事件相關(guān)Action,是指BOS單據(jù)在執(zhí)行某些特定事件時觸發(fā)的Action。單據(jù)事件相關(guān)的Action,需要在BOS單據(jù)的 保存前事件、保存后事件、刪除前事件、刪除后事件 屬性中定義。目前包含:

6、² 單據(jù)保存前:在插件的BeforeSave事件后發(fā)生² 單據(jù)保存后:在插件的AfterSave事件后發(fā)生² 單據(jù)刪除前:在插件的BeforeDel事件后發(fā)生² 單據(jù)刪除后:在插件的AfterDel事件后發(fā)生操作相關(guān)的Action,目前都是在中間層運行。1.2.4 簡單業(yè)務(wù)Action所謂簡單業(yè)務(wù)Action,是指符合BOS簡單業(yè)務(wù)規(guī)則定義的擴展Action。這種Action,可能是字段相關(guān)的,也可能是操作相關(guān)的Action;可以在客戶端運行,也可以在中間層運行。這種Action和其他擴展Action的區(qū)別在于:Action的定義界面是由BOS提供的。1

7、.3 擴展Action的基本屬性所有的擴展Action,應(yīng)該具有以下屬性:1.3.1 運行時組件所有的擴展Action,都需要有一個運行時組件,在實現(xiàn)特定接口后完成Action的具體操作過程。這個組件是一個標準的Active Dll組件。1.3.2 配置時組件如果擴展Action希望在用戶配置時,由用戶設(shè)定一些選項,并完成定義公式的校驗,就需要提供定義時組件。這個組件是一個標準的ActiveX Control組件。對于簡單業(yè)務(wù)Action,不需要提供這樣的組件,但必須按照指定的參數(shù)編寫公式,這樣,配置界面將由BOS按照公式提供。1.3.3 接口所有的擴展Action,都必須實現(xiàn)下列接口:定義組

8、件接口:函數(shù)/屬性類型詳細說明Action屬性可讀/寫,String類型,用來設(shè)置/返回用戶配置的Action表達式m_dctTableInfo屬性只寫,KFO.Dictionary類型。接受單據(jù)字段模板包m_Field屬性只寫,KFO.Dictionary類型。接受Action對應(yīng)的當前字段模板m_vctClassTypeEntry屬性只寫,KFO.Vector類型。接受單據(jù)分錄模板包m_dctClassType屬性只寫,KFO.Dictionary類型。接受單據(jù)屬性數(shù)據(jù)包GetAction函數(shù)String類型,返回用戶設(shè)置的Action表達式Initial方法提供接口給調(diào)用者,由其觸發(fā)配置

9、界面初始化FormulaCheck函數(shù)Boolean,檢查最終用戶設(shè)置的表達式是否合法,合法則返回真,BOS會接受用戶的設(shè)置;不合法則應(yīng)該返回假,BOS不會接受用戶的設(shè)置下面是代碼模版:Private m_sAction As StringPublic Property Get Action() As String Action = m_sActionEnd PropertyPublic Property Let Action(ByVal New_Action As String) m_sAction = New_ActionEnd PropertyPublic Property Set m_

10、dctTableInfo(ByRef New_TableInfo As Object)End PropertyPublic Property Set m_Field(ByRef New_Field As Object)End PropertyPublic Property Set m_vctClassTypeEntry(ByRef New_vctClassTypeEntry As Object)End PropertyPublic Property Set m_dctClassType(ByRef New_dctClassType As Object)End PropertyPublic Fu

11、nction GetAction() As String End FunctionPublic Sub Initial() '在這里添加Action界面的初始化代碼End SubPublic Function FormulaCheck() As Boolean '在這里添加Action函數(shù)表達式語法檢查。如果檢查通過,返回True;否則返回FalseEnd Function請注意:1、 如果是客戶端適用的Action,其定義時組件和運行時組件,都應(yīng)該安裝在客戶端;2、 如果是中間層適用的Action,其定義時組件仍應(yīng)該安裝在客戶端,而運行時組件應(yīng)安裝在中間層;3、 如果同時適用

12、于客戶端和中間層的Action,其定義時組件仍應(yīng)該安裝在客戶端,而運行時組件應(yīng)同時安裝在客戶端和中間層;運行組件接口(客戶端適用Action):函數(shù)/屬性類型詳細說明SetInterface方法接受插件代理組件,單據(jù)的模板和數(shù)據(jù)包都可以從中獲取TransAction函數(shù)翻譯Action表達式.暫保留為用DataSrv屬性DoAction函數(shù)解析、執(zhí)行Action的入口函數(shù)下面是代碼模版:客戶端擴展Action模版Private WithEvents m_objBillInterface As K3ClassEvents.BillEvent Private WithEvents m_objBas

13、eInterface As K3ClassEvents.BaseClassEvent Private WithEvents m_objListInterface As K3ClassEvents.ListEvents Public Sub SetInterface(ByRef objInterface As Object) '設(shè)置/傳入插件代理組件 On Error GoTo Catch If Not (objInterface Is Nothing) Then Select Case VBA.UCase$(TypeName(objInterface) Case "BILLE

14、VENT" Set m_objBillInterface = objInterface Case "BASECLASSEVENT" Set m_objBaseInterface = objInterface Case "LISTEVENTS" Set m_objListInterface = objInterface Case Else End Select End IfCatch:End SubPublic Property Set DataSrv(ByRef New_DataSrv As Object) End PropertyPublic

15、 Function TransAction( _ ByRef strAction As String, _ ByRef strDescription As String, _ Optional ByVal strLanguage As String = "CHS", _ Optional ByVal blnTransToDesc As Boolean = True) As Long '翻譯ActionEnd FunctionPublic Function DoAction(ByVal strFunction As String, _ ByVal dctParamen

16、ters As KFO.Dictionary, _ ByRef dctActionReturn As KFO.Dictionary) As Long '執(zhí)行Action On Error GoTo Catch Dim lRet As Long Exit FunctionCatch:lRet = Err.NumberdctActionReturn("ErrorDescription") = Err.DescriptionDoAction = lRetEnd Function運行組件接口(中間層適用Action):函數(shù)/屬性類型詳細說明DoAction函數(shù)解析、執(zhí)行Ac

17、tion的入口函數(shù)下面是代碼模版:中間層擴展Action模版Private m_dctPara As KFO.DictionaryPrivate m_dctReturn As KFO.DictionaryPublic Function DoAction(ByVal strFunction As String, _ Byval cn As ADODB.Connection, _ ByVal dctParamenters As KFO.Dictionary, _ ByRef dctActionReturn As KFO.Dictionary) As Long '執(zhí)行Action On Er

18、ror GoTo Catch Dim lRet As Long Exit FunctionCatch:lRet = Err.NumberdctActionReturn("ErrorDescription") = Err.DescriptionDoAction = lRetEnd Function1.3.4 配置時組件的Licenses如果擴展Action定義時組件,采用了一些具有Licenses許可要求的控件,則當用戶運行時,會出現(xiàn)下面的情況:如果出現(xiàn)這種情況,需要在組件(控件)的初始化過程中添加Licenses許可。具體方法參考如下:Private Sub UserCon

19、trol_Initialize() Licenses.Add ProgId, LicenseKeyEnd Sub1.4 擴展Action的注冊創(chuàng)建的Action如果需要在BOS中起到預(yù)期的作用,必須向BOS進行注冊,即向表格ICClassAction中添加數(shù)據(jù)。該表關(guān)鍵字段描述:字段名類型長度為空詳細說明FIDint4No編碼,唯一,自定義的Action請指定大于100000的編碼,避免和BOS內(nèi)置的FID沖突FNamevarchar20No名稱,系統(tǒng)通過FName和具體的Action關(guān)聯(lián),必須唯一,且無歧義FDescvarchar50No描述FSyntaxvarchar100No語法FPar

20、ametervarchar7000No參數(shù)FTypesmallint2No類型FSetComponentVarchar64No配置Action的控件名,可以為 FRunComponentVarchar64No運行Action的組件名,如果為擴展Action,必須填寫需要注意的是,一個擴展Action,只能支持1個運行組件和1個定義組件。1.5 FType的意義ICClassAction表中的FType字段,表示了這個Action所具有的屬性。其含義參考下面的值:值含義說明-1無效的Action0有效的Action1客戶端的Action2中間層的Action4有配置界面的Action8加載更新的

21、Action16值更新的Action32保存更新的Action64連續(xù)觸發(fā)的Action128有返回值的Action256操作類的Action512系統(tǒng)內(nèi)置Action系統(tǒng)內(nèi)置Action 不允許修改1024擴展Action2048簡單業(yè)務(wù)Action4096字段相關(guān)的Action只能是客戶端的Action8192事件相關(guān)的Action只能是中間層的Action需要注意的是:一個Action可以具有多個屬性。舉例:Action:TakeBaseData FType = 0 + 1 + 4 + 8 + 161.6 Action的執(zhí)行控制在BOS中,允許對同一個字段或操作,同時定義多個Action

22、。這是,我們稱之為字段或操作具有“Action序列”。Action序列中的每個Action,按照定義時的先后次序依次執(zhí)行。通過擴展Action接口中的dctActionReturn參數(shù),我們可以控制Action的運行。dctActionReturn參數(shù)包含以下內(nèi)容:序號dctActionReturn值域值說明1CancelSeries布爾值。默認為False表示是否需要取消整個Action序列的執(zhí)行。如果是一組中間層Action,則會產(chǎn)生事務(wù)回滾;如果是客戶端Action,則后續(xù)Action將不會被執(zhí)行2ErrorDescription字符串。默認為空。錯誤描述。如果Action執(zhí)行中出現(xiàn)錯誤

23、,則此值域包含錯誤描述。3ActionSeriesSharePoolKFO.DictionaryAction之間共享變量的存儲緩沖區(qū)4ActionSeriesSharePoolDefKFO.DictionaryAction之間共享變量的存儲緩沖區(qū)變量定義5ConstsKFO.Dictionary常量定義和值6其它Action的交換交換數(shù)據(jù)空間。我們也可以通過在這個數(shù)據(jù)包中增加傳遞不同的值,來達到Action間的數(shù)據(jù)傳遞。注意:請不要在Action中將這個數(shù)據(jù)包上述的幾個值域清除,或?qū)⒄麄€數(shù)據(jù)包清空。否則會產(chǎn)生運行時錯誤。2 客戶端字段相關(guān)擴展Action制作客戶端字段相關(guān)的擴展Action,D

24、oAction接口的dctParamenters參數(shù)包包含以下內(nèi)容:值域說明FieldAction當前Action NameFieldActionExpressions當前Action的定義表達式FieldActionType當前Action的類型Paramenters當前Action的參數(shù)Trigger是否連續(xù)執(zhí)行SeriesTotalAction序列的Action總數(shù)ActionSeriesSourceAction序列的觸發(fā)來源ActionSeriesTypeAction序列的類型ClassTypeClassTypeEntryTableInfoDataBOSFieldTpl引發(fā)Action

25、的字段的模版數(shù)據(jù)包BOSFieldValue引發(fā)Action的字段的值數(shù)據(jù)包ItemObj核算項目對象3 客戶端操作相關(guān)擴展Action制作客戶端操作相關(guān)的擴展Action,DoAction接口的dctParamenters參數(shù)包包含以下內(nèi)容:值域說明OperationAction當前Action NameOperationActionExpressions當前Action的定義表達式OperationActionType當前Action的類型Paramenters當前Action的參數(shù)Trigger是否連續(xù)執(zhí)行SeriesTotalAction序列的Action總數(shù)ActionSeriesSourceAction序列的觸發(fā)來源ActionSeriesTypeAction序列的類型ClassTypeClassTypeEntryTableInfoDataOperationObject引發(fā)Action的操作對象數(shù)據(jù)包4 中間層擴展Action制作中間層的擴展Action,DoAction接口的dctParamenters參數(shù)包包含以下內(nèi)容:值域說明MiddleAction當前Action NameMiddleActionExpressions當前Action的定義表達式MiddleActionType當前Action的類型Paramenters當前Action的參數(shù)SeriesTot

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論