收藏 分销(赏)

BOS扩展业务服务说明手册.doc

上传人:精**** 文档编号:3069623 上传时间:2024-06-14 格式:DOC 页数:12 大小:299.50KB 下载积分:8 金币
下载 相关 举报
BOS扩展业务服务说明手册.doc_第1页
第1页 / 共12页
BOS扩展业务服务说明手册.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
KINGDEE K/3 BOS 开发指导手册 BOS扩展服务说明手册 金蝶软件(中国)有限公司 研发中心 K/3 BOS系统开发部 BOS扩展业务服务说明手册 ã 金蝶软件(中国)有限公司 研发中心 K/3 BOS系统开发部 RaymondYao 2006.02.12 1 扩展业务服务(扩展Action) 1.1 名词解释 扩展业务服务:独立、通用的业务处理函数,其参数、返回数据独立于单据、基础资料;为了把业务处理函数和特定的单据绑定,必须在函数的配置界面进行参数配置。因此,一个完整的扩展业务服务包括参数配置组件和解析运行组件;扩展业务服务实现的功能等同于BOS原有的Action函数,只是允许用户自行扩展。 后文中扩展业务服务又称为扩展Action; 1.2 简介 K/3 BOS 除了内置的一些业务服务函数(Action)外,还支持用户开发自有的Action:用户可以将自有的业务逻辑封装在这种Action中,并在需要的时候配置到单据的字段(加载更新事件、值更新事件、保存规则)事件、操作事件和单据事件中,以实现自定义的过程。 K/3 BOS目前支持的Action,按照运行领域可以分为: ² 客户端Action:包含适用于单据的Action和序时簿的Action ² 中间层Action 按照触发条件可以分为: ² 字段相关的Action ² 操作相关的Action ² 单据事件相关的Action 同时还有一种特殊的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的使用,请参考相关手册。 字段相关的Action,需要在字段的加载更新事件、值更新事件、保存规则中进行定义。 目前,字段相关的Action,都是客户端单据运行的Action。 1.2.2 操作相关的Action 操作相关的Action,是指当BOS单据的指定操作被用户触发后会执行的Action。 操作相关的Action,需要在BOS单据的操作管理中定义。 目前操作相关的Action,又包含: ² 单据操作前置Action:在插件BOSBarClick事件发生之后触发 ² 单据操作Action:在单据操作前置Action之后、BOS内置处理过程(如果有的话)之前触发 ² 单据操作后置Action:在BOS内置处理过程(如果有的话)完成之后触发 ² 序时簿操作前置Action:在插件BOSBarClick事件发生之后触发 ² 序时簿操作Action:在序时簿操作前置Action之后、BOS内置处理过程(如果有的话)之前触发 ² 序时簿操作后置Action:在BOS内置处理过程(如果有的话)完成之后触发 操作相关的Action,可以在客户端运行,也可以在中间层运行。 1.2.3 单据事件相关的Action 单据事件相关Action,是指BOS单据在执行某些特定事件时触发的Action。 单据事件相关的Action,需要在BOS单据的 保存前事件、保存后事件、删除前事件、删除后事件 属性中定义。 目前包含: ² 单据保存前:在插件的BeforeSave事件后发生 ² 单据保存后:在插件的AfterSave事件后发生 ² 单据删除前:在插件的BeforeDel事件后发生 ² 单据删除后:在插件的AfterDel事件后发生 操作相关的Action,目前都是在中间层运行。 1.2.4 简单业务Action 所谓简单业务Action,是指符合BOS简单业务规则定义的扩展Action。 这种Action,可能是字段相关的,也可能是操作相关的Action;可以在客户端运行,也可以在中间层运行。 这种Action和其他扩展Action的区别在于:Action的定义界面是由BOS提供的。 1.3 扩展Action的基本属性 所有的扩展Action,应该具有以下属性: 1.3.1 运行时组件 所有的扩展Action,都需要有一个运行时组件,在实现特定接口后完成Action的具体操作过程。 这个组件是一个标准的Active Dll组件。 1.3.2 配置时组件 如果扩展Action希望在用户配置时,由用户设定一些选项,并完成定义公式的校验,就需要提供定义时组件。 这个组件是一个标准的ActiveX Control组件。 对于简单业务Action,不需要提供这样的组件,但必须按照指定的参数编写公式,这样,配置界面将由BOS按照公式提供。 1.3.3 接口 所有的扩展Action,都必须实现下列接口: 定义组件接口: 函数/属性 类型 详细说明 Action 属性 可读/写,String类型,用来设置/返回用户配置的Action表达式 m_dctTableInfo 属性 只写,KFO.Dictionary类型。接受单据字段模板包 m_Field 属性 只写,KFO.Dictionary类型。接受Action对应的当前字段模板 m_vctClassTypeEntry 属性 只写,KFO.Vector类型。接受单据分录模板包 m_dctClassType 属性 只写,KFO.Dictionary类型。接受单据属性数据包 GetAction 函数 String类型,返回用户设置的Action表达式 Initial 方法 提供接口给调用者,由其触发配置界面初始化 FormulaCheck 函数 Boolean,检查最终用户设置的表达式是否合法,合法则返回真,BOS会接受用户的设置;不合法则应该返回假,BOS不会接受用户的设置 下面是代码模版: Private m_sAction As String Public Property Get Action() As String Action = m_sAction End Property Public Property Let Action(ByVal New_Action As String) m_sAction = New_Action End Property Public Property Set m_dctTableInfo(ByRef New_TableInfo As Object) End Property Public Property Set m_Field(ByRef New_Field As Object) End Property Public Property Set m_vctClassTypeEntry(ByRef New_vctClassTypeEntry As Object) End Property Public Property Set m_dctClassType(ByRef New_dctClassType As Object) End Property Public Function GetAction() As String End Function Public Sub Initial() '在这里添加Action界面的初始化代码 End Sub Public Function FormulaCheck() As Boolean '在这里添加Action函数表达式语法检查。如果检查通过,返回True;否则返回False End Function 请注意: 1、 如果是客户端适用的Action,其定义时组件和运行时组件,都应该安装在客户端; 2、 如果是中间层适用的Action,其定义时组件仍应该安装在客户端,而运行时组件应安装在中间层; 3、 如果同时适用于客户端和中间层的Action,其定义时组件仍应该安装在客户端,而运行时组件应同时安装在客户端和中间层; 运行组件接口(客户端适用Action): 函数/属性 类型 详细说明 SetInterface 方法 接受插件代理组件,单据的模板和数据包都可以从中获取 TransAction 函数 翻译Action表达式.暂保留为用 DataSrv 属性 DoAction 函数 解析、执行Action的入口函数 下面是代码模版: 客户端扩展Action模版 Private WithEvents m_objBillInterface As K3ClassEvents.BillEvent Private WithEvents m_objBaseInterface 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 "BILLEVENT" Set m_objBillInterface = objInterface Case "BASECLASSEVENT" Set m_objBaseInterface = objInterface Case "LISTEVENTS" Set m_objListInterface = objInterface Case Else End Select End If Catch: End Sub Public Property Set DataSrv(ByRef New_DataSrv As Object) End Property Public Function TransAction( _ ByRef strAction As String, _ ByRef strDescription As String, _ Optional ByVal strLanguage As String = "CHS", _ Optional ByVal blnTransToDesc As Boolean = True) As Long '翻译Action End Function Public Function DoAction(ByVal strFunction As String, _ ByVal dctParamenters As KFO.Dictionary, _ ByRef dctActionReturn As KFO.Dictionary) As Long '执行Action On Error GoTo Catch Dim lRet As Long Exit Function Catch: lRet = Err.Number dctActionReturn("ErrorDescription") = Err.Description DoAction = lRet End Function 运行组件接口(中间层适用Action): 函数/属性 类型 详细说明 DoAction 函数 解析、执行Action的入口函数 下面是代码模版: 中间层扩展Action模版 Private m_dctPara As KFO.Dictionary Private m_dctReturn As KFO.Dictionary Public 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 Error GoTo Catch Dim lRet As Long Exit Function Catch: lRet = Err.Number dctActionReturn("ErrorDescription") = Err.Description DoAction = lRet End Function 1.3.4 配置时组件的Licenses 如果扩展Action定义时组件,采用了一些具有Licenses许可要求的控件,则当用户运行时,会出现下面的情况: 如果出现这种情况,需要在组件(控件)的初始化过程中添加Licenses许可。具体方法参考如下: Private Sub UserControl_Initialize() Licenses.Add ProgId, LicenseKey End Sub 1.4 扩展Action的注册 创建的Action如果需要在BOS中起到预期的作用,必须向BOS进行注册,即向表格ICClassAction中添加数据。该表关键字段描述: 字段名 类型 长度 为空 详细说明 FID int 4 No 编码,唯一,自定义的Action请指定大于100000的编码,避免和BOS内置的FID冲突 FName varchar 20 No 名称,系统通过FName和具体的Action关联,必须唯一,且无歧义 FDesc varchar 50 No 描述 FSyntax varchar 100 No 语法 FParameter varchar 7000 No 参数 FType smallint 2 No 类型 FSetComponent Varchar 64 No 配置Action的控件名,可以为’’ FRunComponent Varchar 64 No 运行Action的组件名,如果为扩展Action,必须填写 需要注意的是,一个扩展Action,只能支持1个运行组件和1个定义组件。 1.5 FType的意义 ICClassAction表中的FType字段,表示了这个Action所具有的属性。其含义参考下面的值: 值 含义 说明 -1 无效的Action 0 有效的Action 1 客户端的Action 2 中间层的Action 4 有配置界面的Action 8 加载更新的Action 16 值更新的Action 32 保存更新的Action 64 连续触发的Action 128 有返回值的Action 256 操作类的Action 512 系统内置Action 系统内置Action 不允许修改 1024 扩展Action 2048 简单业务Action 4096 字段相关的Action 只能是客户端的Action 8192 事件相关的Action 只能是中间层的Action 需要注意的是:一个Action可以具有多个属性。 举例: Action:TakeBaseData FType = 0 + 1 + 4 + 8 + 16 1.6 Action的执行控制 在BOS中,允许对同一个字段或操作,同时定义多个Action。这是,我们称之为字段或操作具有“Action序列”。 Action序列中的每个Action,按照定义时的先后次序依次执行。通过扩展Action接口中的dctActionReturn参数,我们可以控制Action的运行。 dctActionReturn参数包含以下内容: 序号 dctActionReturn值域 值 说明 1 CancelSeries 布尔值。默认为False 表示是否需要取消整个Action序列的执行。如果是一组中间层Action,则会产生事务回滚;如果是客户端Action,则后续Action将不会被执行 2 ErrorDescription 字符串。默认为空。 错误描述。如果Action执行中出现错误,则此值域包含错误描述。 3 ActionSeriesSharePool KFO.Dictionary Action之间共享变量的存储缓冲区 4 ActionSeriesSharePoolDef KFO.Dictionary Action之间共享变量的存储缓冲区变量定义 5 Consts KFO.Dictionary 常量定义和值 6 其它 Action的交换交换数据空间。 我们也可以通过在这个数据包中增加传递不同的值,来达到Action间的数据传递。 注意:请不要在Action中将这个数据包上述的几个值域清除,或将整个数据包清空。否则会产生运行时错误。 2 客户端字段相关扩展Action 制作客户端字段相关的扩展Action,DoAction接口的dctParamenters参数包包含以下内容: 值域 说明 FieldAction 当前Action Name FieldActionExpressions 当前Action的定义表达式 FieldActionType 当前Action的类型 Paramenters 当前Action的参数 Trigger 是否连续执行 SeriesTotal Action序列的Action总数 ActionSeriesSource Action序列的触发来源 ActionSeriesType Action序列的类型 ClassType ClassTypeEntry TableInfo Data BOSFieldTpl 引发Action的字段的模版数据包 BOSFieldValue 引发Action的字段的值数据包 ItemObj 核算项目对象 3 客户端操作相关扩展Action 制作客户端操作相关的扩展Action,DoAction接口的dctParamenters参数包包含以下内容: 值域 说明 OperationAction 当前Action Name OperationActionExpressions 当前Action的定义表达式 OperationActionType 当前Action的类型 Paramenters 当前Action的参数 Trigger 是否连续执行 SeriesTotal Action序列的Action总数 ActionSeriesSource Action序列的触发来源 ActionSeriesType Action序列的类型 ClassType ClassTypeEntry TableInfo Data OperationObject 引发Action的操作对象数据包 4 中间层扩展Action 制作中间层的扩展Action,DoAction接口的dctParamenters参数包包含以下内容: 值域 说明 MiddleAction 当前Action Name MiddleActionExpressions 当前Action的定义表达式 MiddleActionType 当前Action的类型 Paramenters 当前Action的参数 SeriesTotal Action序列的Action总数 ActionSeriesSource Action序列的触发来源 ActionSeriesType Action序列的类型 ClassType ClassTypeEntry TableInfo Data OperationObject 如果Action序列是操作相关的,则包含此值域,否则不包含。引发Action的操作对象数据包 BOSFieldTpl 如果Action序列是字段相关的,则包含此值域,否则不包含。引发Action的字段的模版数据包 BOSFieldValue 如果Action序列是字段相关的,则包含此值域,否则不包含。引发Action的字段的值数据包 ItemObj 如果Action序列是字段相关的,则包含此值域,否则不包含。核算项目对象 5 单据事件相关Action 5.1 保存前、保存后事件 DoAction接口的dctParamenters参数包包含以下内容: 值域 说明 MiddleAction 当前Action Name SeriesTotal Action序列的Action总数 ActionSeriesSource Action序列的触发来源 ActionSeriesType Action序列的类型 ActionKey FBeforeSaveAction 或 FAfterSaveAction ClassType ClassTypeEntry TableInfo Data 5.2 删除前、删除后事件 DoAction接口的dctParamenters参数包包含以下内容: 值域 说明 MiddleAction 当前Action Name SeriesTotal Action序列的Action总数 ActionSeriesSource Action序列的触发来源 ActionSeriesType Action序列的类型 ActionKey FBeforeDeleteAction或 FAfterDeleteAction ClassTypeID 单据模版号 InterID 单据内码 ClassType ClassTypeEntry TableInfo Data
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服