


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、KINGDEEK/3 BOS 开发指导手册BOS 扩展服务说明手册金蝶软件(中国)有限公司研发中心K/3 BOS 系统开发部BOS扩展业务服务说明手册金蝶软件(中国)有限公司研发中心 K/3 BOS 系统开发部RaymondYao 2006.02.121 扩展业务服务(扩展 Act ion )1.1 名词解释扩展业务服务:独立、通用的业务处理函数,其参数、返回数据独立于单据、基础资料;为了把业务处理函数和特定的单据绑定,必须在函数的配置界面进行参数配置。因此,一个完整的扩展业务服务包括参数配置组件和解析运行组件;扩展业务服务实现的功能等同于 BOS 原有的 Action 函数,只是允许用户自行
2、扩展。后文中扩展业务服务又称为扩展Action ;1.2 简介K/3BOS 除了内置的一些业务服务函数(Action)外,还支持用户开发自有的Action :用户可以将自有的业务逻辑封装在这种Action中,并在需要的时候配置到单据的字段(加载更新事件、值更新事件、保存规则)事件、操作事件和单据事件中,以实现自定义的过程。K/3 BOS 目前支持的Action ,按照运行领域可以分为:客户端 Action :包含适用于单据的中间层 Action按照触发条件可以分为:字段相关的Action操作相关的Action单据事件相关的Action同时还有一种特殊的Action :简单业务Action 和序
3、时簿的Action 。Action1.2.1字段相关的Ac tio n字段相关的Action ,是指当单据字段的值发生改变时会触发的Action 。字段相关的Action包含了所有BOS内置的Action ,如:TakeBaseData、 Calculate、UnitExchange、LockByItemTrack、SetDecimal、SetEquation、ShowHideField、LockField 、Vertify 、 LockUsed 、 LockMenu 、VerifyUniquely 、 TrigAction ,关于这些 Action 的使用,请参考相关手册。字段相关的Acti
4、on ,需要在字段的加载更新事件、值更新事件、保存规则 中进行定义。目前,字段相关的Action ,都是客户端单据运行的Action 。1 .2 . 2操作相关的 Ac tio n操作相关的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单据事件相关的Act i o n单据事件相关Action ,是指 BOS 单据在执行某些特定事件时触发的Action 。单据事件相关的Action ,需要在BOS 单据的保存前事件、保存后事件、删除前事件、删除后事件属性中定义。目前
6、包含:单据保存前 :在插件的BeforeSave 事件后发生单据保存后 :在插件的AfterSave 事件后发生单据删除前 :在插件的BeforeDel 事件后发生单据删除后 :在插件的AfterDel 事件后发生操作相关的Action ,目前都是在中间层运行。1 .2 . 4简单业务 A ctio n所谓简单业务Action ,是指符合BOS 简单业务规则定义的扩展Action 。这种Action ,可能是字段相关的,也可能是操作相关的Action ;可以在客户端运行,也可以在中间层运行。这种Action和其他扩展Action的区别在于:Action的定义界面是由BOS 提供的。1 . 3
7、扩展 Acti on 的基本属性所有的扩展Action ,应该具有以下属性:1.3.1运行时组件所有的 扩展 Action ,都需要有一个运行时组件,在实现特定接口后完成操作过程。这个组件是一个标准的Active Dll 组件。Action的具体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 类型,返回用户设置的 Act
9、ion 表达式Initial方法提供接口给调用者,由其触发配置界面初始化FormulaCheck函数Boolean ,检查最终用户设置的表达式是否合法,合法则返回真,BOS会接受用户的设置;不合法则应该返回假,BOS 不会接受用户的设置下面是代码模版:Private m_sActionAs StringPublic Property Get Action() As StringAction = m_sActionEnd PropertyPublic Property Let Action(ByVal New_Action As String)m_sAction = New_ActionEnd
10、PropertyPublic Property Set m_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 A
11、s Object)End PropertyPublic Function GetAction() As StringEnd FunctionPublic Sub Initial()在这里添加Action界面的初始化代码End SubPublic Function FormulaCheck() As Boolean在这里添加Action函数表达式语法检查。如果检查通过,返回True;否则返回FalseEnd Function请注意:1、如果是客户端适用的Action ,其定义时组件和运行时组件,都应该安装在客户端;2、如果是中间层适用的Action ,其定义时组件仍应该安装在客户端,而运行时组件
12、应安装在中间层;3、如果同时适用于客户端和中间层的Action ,其定义时组件仍应该安装在客户端,而运行时组件应同时安装在客户端和中间层;运行组件接口(客户端适用Action ):函数/ 属性类型详细说明SetInterface方法接受插件代理组件,单据的模板和数据包都可以从中获取TransAction函数翻译 Action 表达式 .暂保留为用DataSrv属性DoAction函数解析、执行 Action 的入口函数下面是代码模版:客户端扩展Action 模版Private WithEvents m_objBillInterfaceAs K3ClassEvents.BillEventPriv
13、ate WithEvents m_objBaseInterfaceAs K3ClassEvents.BaseClassEventPrivate WithEvents m_objListInterfaceAs K3ClassEvents.ListEventsPublic Sub SetInterface(ByRef objInterface As Object) 设置 / 传入插件代理组件On Error GoTo CatchIf Not (objInterface Is Nothing) ThenSelect Case VBA.UCase$(TypeName(objInterface)Case
14、 BILLEVENTSet m_objBillInterface = objInterfaceCase BASECLASSEVENTSet m_objBaseInterface = objInterfaceCase LISTEVENTSSet m_objListInterface = objInterfaceCase ElseEnd SelectEnd IfCatch:End SubPublic Property Set DataSrv(ByRef New_DataSrv As Object)End PropertyPublic Function TransAction( _ByRef str
15、Action 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 dctParamenters As KFO.Dictionary, _ByRef dctActionReturn As KFO.
16、Dictionary) As Long 执行 Action On Error GoTo Catch Dim lRet As Long Exit FunctionCatch:lRet = Err.NumberdctActionReturn(ErrorDescription) = Err.DescriptionDoAction = lRetEnd Function运行组件接口(中间层适用Action):函数 /属性类型详细说明DoAction函数解析、执行Action的入口函数下面是代码模版:中间层扩展Action模版Private m_dctParaPrivate m_dctReturnAs K
17、FO.DictionaryAs 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 Error GoTo Catch Dim lRet As LongExit FunctionCatch:lRet = Err.NumberdctActionRet
18、urn(ErrorDescription) = Err.DescriptionDoAction = lRetEnd Function1.3.4配置时组件的Lic ense s如果扩展Action 定义时组件,采用了一些具有行时,会出现下面的情况:Licenses许可要求的控件,则当用户运如果出现这种情况,需要在组件(控件)的初始化过程中添加Licenses许可。具体方法参考如下:Private Sub UserControl_Initialize()Licenses.AddProgId,LicenseKeyEnd Sub1 . 4 扩展 Acti on 的注册创建的 Action 如果需要在B
19、OS 中起到预期的作用,必须向BOS 进行注册,即向表格ICClassAction 中添加数据。该表关键字段描述:字段名类型长度为空详细说明FIDint4No编码,唯一,自定义的Action 请指定大于 100000 的编码,避免和 BOS 内置的 FID 冲突FNamevarchar20No名称,系统通过FName 和具体的 Action 关联,必须唯一,且无歧义FDescvarchar50No描述FSyntaxvarchar100No语法FParametervarchar7000No参数FTypesmallint2No类型FSetComponentVarchar64No配置 Action
20、的控件名,可以为 FRunComponentVarchar64No运行 Action 的组件名,如果为扩展Action ,必须填写需要注意的是,一个扩展Action ,只能支持1 个运行组件和1 个定义组件。1 . 5 FType 的意义ICClassAction 表中的 FType 字段,表示了这个Action 所具有的属性。其含义参考下面的值:值含义说明-1无效的 Action0有效的 Action1客户端的 Action2中间层的 Action4有配置界面的 Action8加载更新的 Action16值更新的 Action32保存更新的 Action64连续触发的 Action128有返
21、回值的 Action256操作类的 Action512系统内置 Action系统内置 Action 不允许修改1024扩展 Action2048简单业务 Action4096字段相关的 Action只能是客户端的 Action8192事件相关的 Action只能是中间层的 Action需要注意的是:一个Action 可以具有多个属性。举例:Action : TakeBaseDataFType = 0 + 1 + 4 + 8 + 161 . 6 Act ion 的执行控制在 BOS 中,允许对同一个字段或操作,同时定义多个Action 。这是,我们称之为字段或操作具有“ Action 序列”。A
22、ction 序列中的每个Action ,按照定义时的先后次序依次执行。通过扩展Action 接口中的 dctActionReturn参数,我们可以控制Action 的运行。dctActionReturn参数包含以下内容:序号dctActionReturn值域值说明1CancelSeries布 尔 值。 默 认表示是否需要取消整个Action序列的执行。为 False如果是一组中间层Action ,则会产生事务回滚;如果是客户端Action ,则后续 Action将不会被执行2ErrorDescription字符串。默认错误描述。如果Action 执行中出现错误,则为空。此值域包含错误描述。3A
23、ctionSeriesSharePoolKFO.DictionaryAction 之间共享变量的存储缓冲区4ActionSeriesSharePoolDefKFO.DictionaryAction 之间共享变量的存储缓冲区变量定义5ConstsKFO.Dictionary常量定义和值6其它Action 的交换交换数据空间。我们也可以通过在这个数据包中增加传递不同的值,来达到Action 间的数据传递。注意:请不要在Action中将这个数据包上述的几个值域清除,或将整个数据包清空。否则会产生运行时错误。2 客户端字段相关扩展 Act ion制作客户端字段相关的扩展Action , DoActio
24、n 接口的 dctParamenters参数包包含以下内容:值域说明FieldActionFieldActionExpressionsFieldActionTypeParamentersTriggerSeriesTotalActionSeriesSourceActionSeriesType当前 Action Name当前 Action 的定义表达式当前 Action 的类型当前 Action 的参数是否连续执行Action 序列的 Action 总数Action 序列的触发来源Action 序列的类型ClassTypeClassTypeEntryTableInfoDataBOSFieldTpl
25、BOSFieldValueItemObj引发 Action 的字段的模版数据包引发 Action 的字段的值数据包核算项目对象3 客户端操作相关扩展 Act ion制作客户端操作相关的扩展Action , DoAction 接口的 dctParamenters参数包包含以下内容:值域说明OperationActionOperationActionExpressionsOperationActionTypeParamentersTriggerSeriesTotal当前 Action Name当前 Action 的定义表达式当前 Action 的类型当前 Action 的参数是否连续执行Actio
26、n 序列的 Action 总数ActionSeriesSourceAction 序列的触发来源ActionSeriesTypeAction 序列的类型ClassTypeClassTypeEntryTableInfoDataOperationObject引发 Action 的操作对象数据包4 中间层扩展 Act io n制作中间层的扩展Action , DoAction 接口的 dctParamenters参数包包含以下内容:值域说明MiddleAction当前 Action NameMiddleActionExpressions当前 Action 的定义表达式MiddleActionType当前 Action 的类型Paramenters当前 Action 的参数SeriesTotalAction 序列的 Act
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西方政治制度的现状与未来试题及答案
- 软件设计师考试不断创新的学习方式试题及答案
- 深度解析软件设计师考试试题及答案的策略
- 逐步推进的学习计划如何实施2025年信息系统项目管理师试题及答案
- 公共政策改革中的参与性与透明性探讨试题及答案
- 解答2025年西方政治的核心试题及答案
- 公共政策与药品监督管理试题及答案
- 技术创新对公共政策设计的影响试题及答案
- 机电工程文化与价值观试题
- 深入理解2025年机电工程考试试题及答案
- 麻醉期间反流误吸的预防与处理
- 结构胶灌注施工方案
- 《中医体重管理临床指南》
- 银行业务专家竞聘述职模板
- 电子商务案例分析
- 外研版九年级上册英语Module 1 Wonders of the world大单元教学设计
- 2024年度影视剧本购买合同:制片公司与编剧之间关于剧本购买的协议3篇
- JGJ 58-2008电影院建筑设计规范
- 甘肃省兰州市2022年中考英语真题试卷(含答案)
- 220kVGIS安装施工方案
- 2024年湖南省高考化学试卷真题(含答案解析)
评论
0/150
提交评论