BOS扩展业务服务说明手册_第1页
BOS扩展业务服务说明手册_第2页
BOS扩展业务服务说明手册_第3页
BOS扩展业务服务说明手册_第4页
BOS扩展业务服务说明手册_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 KINGDEEK/3 BOS 开发指导手册BOS扩展服务说明手册金蝶软件(中国)有限公司 研发中心 K/3 BOS系统开发部BOS扩展业务服务说明手册ã 金蝶软件(中国)有限公司研发中心 K/3 BOS系统开发部RaymondYao1 扩展业务服务(扩展Action)1.1 名词解释扩展业务服务:独立、通用的业务处理函数,其参数、返回数据独立于单据、基础资料;为了把业务处理函数和特定的单据绑定,必须在函数的配置界面进行参数配置。因此,一个完整的扩展业务服务包括参数配置组件和解析运行组件;扩展业务服务实现的功能等同于BOS原有的Action函数,只是允许用户自行扩展。后文中扩展业务服

2、务又称为扩展Action;1.2 简介K/3 BOS 除了内置的一些业务服务函数(Action)外,还支持用户开发自有的Action:用户可以将自有的业务逻辑封装在这种Action中,并在需要的时候配置到单据的字段(加载更新事件、值更新事件、保存规则)事件、操作事件和单据事件中,以实现自定义的过程。K/3 BOS目前支持的Action,按照运行领域可以分为:² 客户端Action:包含适用于单据的Action和序时簿的Action² 中间层Action按照触发条件可以分为:² 字段相关的Action² 操作相关的Action² 单据事件相关的A

3、ction同时还有一种特殊的Action:简单业务Action。1.2.1 字段相关的Action字段相关的Action,是指当单据字段的值发生改变时会触发的Action。字段相关的Action包含了所有BOS内置的Action,如:TakeBaseData、Calculate、UnitExchange、LockByItemTrack、SetDecimal、SetEquation、ShowHideField、LockField、Vertify、LockUsed、LockMenu、VerifyUniquely、TrigAction,关于这些Action的使用,请参考相关手册。字段相关的Actio

4、n,需要在字段的加载更新事件、值更新事件、保存规则中进行定义。目前,字段相关的Action,都是客户端单据运行的Action。1.2.2 操作相关的Action操作相关的Action,是指当BOS单据的指定操作被用户触发后会执行的Action。操作相关的Action,需要在BOS单据的操作管理中定义。目前操作相关的Action,又包含:² 单据操作前置Action:在插件BOSBarClick事件发生之后触发² 单据操作Action:在单据操作前置Action之后、BOS内置处理过程(如果有的话)之前触发² 单据操作后置Action:在BOS内置处理过程(如果有的

5、话)完成之后触发² 序时簿操作前置Action:在插件BOSBarClick事件发生之后触发² 序时簿操作Action:在序时簿操作前置Action之后、BOS内置处理过程(如果有的话)之前触发² 序时簿操作后置Action:在BOS内置处理过程(如果有的话)完成之后触发操作相关的Action,可以在客户端运行,也可以在中间层运行。1.2.3 单据事件相关的Action单据事件相关Action,是指BOS单据在执行某些特定事件时触发的Action。单据事件相关的Action,需要在BOS单据的 保存前事件、保存后事件、删除前事件、删除后事件 属性中定义。目前包含:

6、² 单据保存前:在插件的BeforeSave事件后发生² 单据保存后:在插件的AfterSave事件后发生² 单据删除前:在插件的BeforeDel事件后发生² 单据删除后:在插件的AfterDel事件后发生操作相关的Action,目前都是在中间层运行。1.2.4 简单业务Action所谓简单业务Action,是指符合BOS简单业务规则定义的扩展Action。这种Action,可能是字段相关的,也可能是操作相关的Action;可以在客户端运行,也可以在中间层运行。这种Action和其他扩展Action的区别在于:Action的定义界面是由BOS提供的。1

7、.3 扩展Action的基本属性所有的扩展Action,应该具有以下属性:1.3.1 运行时组件所有的扩展Action,都需要有一个运行时组件,在实现特定接口后完成Action的具体操作过程。这个组件是一个标准的Active Dll组件。1.3.2 配置时组件如果扩展Action希望在用户配置时,由用户设定一些选项,并完成定义公式的校验,就需要提供定义时组件。这个组件是一个标准的ActiveX Control组件。对于简单业务Action,不需要提供这样的组件,但必须按照指定的参数编写公式,这样,配置界面将由BOS按照公式提供。1.3.3 接口所有的扩展Action,都必须实现下列接口:定义组

8、件接口:函数/属性类型详细说明Action属性可读/写,String类型,用来设置/返回用户配置的Action表达式m_dctTableInfo属性只写,KFO.Dictionary类型。接受单据字段模板包m_Field属性只写,KFO.Dictionary类型。接受Action对应的当前字段模板m_vctClassTypeEntry属性只写,KFO.Vector类型。接受单据分录模板包m_dctClassType属性只写,KFO.Dictionary类型。接受单据属性数据包GetAction函数String类型,返回用户设置的Action表达式Initial方法提供接口给调用者,由其触发配置

9、界面初始化FormulaCheck函数Boolean,检查最终用户设置的表达式是否合法,合法则返回真,BOS会接受用户的设置;不合法则应该返回假,BOS不会接受用户的设置下面是代码模版: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函数表达式语法检查。如果检查通过,返回True;否则返回FalseEnd Function请注意:1、 如果是客户端适用的Action,其定义时组件和运行时组件,都应该安装在客户端;2、 如果是中间层适用的Action,其定义时组件仍应该安装在客户端,而运行时组件应安装在中间层;3、 如果同时适用

12、于客户端和中间层的Action,其定义时组件仍应该安装在客户端,而运行时组件应同时安装在客户端和中间层;运行组件接口(客户端适用Action):函数/属性类型详细说明SetInterface方法接受插件代理组件,单据的模板和数据包都可以从中获取TransAction函数翻译Action表达式.暂保留为用DataSrv属性DoAction函数解析、执行Action的入口函数下面是代码模版:客户端扩展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) '设置/传入插件代理组件 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 '执行Action On Error GoTo Catch Dim lRet As Long Exit FunctionCatch:lRet = Err.NumberdctActionReturn("ErrorDescription") = Err.DescriptionDoAction = lRetEnd Function运行组件接口(中间层适用Action):函数/属性类型详细说明DoAction函数解析、执行Ac

17、tion的入口函数下面是代码模版:中间层扩展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 '执行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许可要求的控件,则当用户运行时,会出现下面的情况:如果出现这种情况,需要在组件(控件)的初始化过程中添加Licenses许可。具体方法参考如下:Private Sub UserCon

19、trol_Initialize() Licenses.Add ProgId, LicenseKeyEnd Sub1.4 扩展Action的注册创建的Action如果需要在BOS中起到预期的作用,必须向BOS进行注册,即向表格ICClassAction中添加数据。该表关键字段描述:字段名类型长度为空详细说明FIDint4No编码,唯一,自定义的Action请指定大于100000的编码,避免和BOS内置的FID冲突FNamevarchar20No名称,系统通过FName和具体的Action关联,必须唯一,且无歧义FDescvarchar50No描述FSyntaxvarchar100No语法FPar

20、ametervarchar7000No参数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连续触发的Action128有返回值的Action256操作类的Action512系统内置Action系统内置Action 不允许修改1024扩展Action2048简单业务Action4096字段相关的Action只能是客户端的Action8192事件相关的Action只能是中间层的Action需要注意的是:一个Action可以具有多个属性。举例:Action:TakeBaseData FType = 0 + 1 + 4 + 8 + 161.6 Action的执行控制在BOS中,允许对同一个字段或操作,同时定义多个Action

22、。这是,我们称之为字段或操作具有“Action序列”。Action序列中的每个Action,按照定义时的先后次序依次执行。通过扩展Action接口中的dctActionReturn参数,我们可以控制Action的运行。dctActionReturn参数包含以下内容:序号dctActionReturn值域值说明1CancelSeries布尔值。默认为False表示是否需要取消整个Action序列的执行。如果是一组中间层Action,则会产生事务回滚;如果是客户端Action,则后续Action将不会被执行2ErrorDescription字符串。默认为空。错误描述。如果Action执行中出现错误

23、,则此值域包含错误描述。3ActionSeriesSharePoolKFO.DictionaryAction之间共享变量的存储缓冲区4ActionSeriesSharePoolDefKFO.DictionaryAction之间共享变量的存储缓冲区变量定义5ConstsKFO.Dictionary常量定义和值6其它Action的交换交换数据空间。我们也可以通过在这个数据包中增加传递不同的值,来达到Action间的数据传递。注意:请不要在Action中将这个数据包上述的几个值域清除,或将整个数据包清空。否则会产生运行时错误。2 客户端字段相关扩展Action制作客户端字段相关的扩展Action,D

24、oAction接口的dctParamenters参数包包含以下内容:值域说明FieldAction当前Action NameFieldActionExpressions当前Action的定义表达式FieldActionType当前Action的类型Paramenters当前Action的参数Trigger是否连续执行SeriesTotalAction序列的Action总数ActionSeriesSourceAction序列的触发来源ActionSeriesTypeAction序列的类型ClassTypeClassTypeEntryTableInfoDataBOSFieldTpl引发Action

25、的字段的模版数据包BOSFieldValue引发Action的字段的值数据包ItemObj核算项目对象3 客户端操作相关扩展Action制作客户端操作相关的扩展Action,DoAction接口的dctParamenters参数包包含以下内容:值域说明OperationAction当前Action NameOperationActionExpressions当前Action的定义表达式OperationActionType当前Action的类型Paramenters当前Action的参数Trigger是否连续执行SeriesTotalAction序列的Action总数ActionSeriesSourceAction序列的触发来源ActionSeriesTypeAction序列的类型ClassTypeClassTypeEntryTableInfoDataOperationObject引发Action的操作对象数据包4 中间层扩展Action制作中间层的扩展Action,DoAction接口的dctParamenters参数包包含以下内容:值域说明MiddleAction当前Action NameMiddleActionExpressions当前Action的定义表达式MiddleActionType当前Action的类型Paramenters当前Action的参数SeriesTot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论