v6流程平台开发文档.docx
0 流程平台开发文档NC_UAP基础技术部2009-4参考文档:NCV5-流程平台技术红皮书.docV5.1流程平台详细设计.docV5.02流程平台详细设计.docV5.5流程平台详细设计.docV5.5工作流开发文档.docV5.5流程平台-元数据应用.docNCV55-元数据建模及管理红皮书.docNCV55-元数据开发红皮书.docNCV6流程平台概要需求-评审lhp.doc版本日期修订人修订0.32009-6-23雷军设计评审后的较大改动:1. 去掉系统类型,改用模块;2. 单据类型必须关联元数据实体;去掉单据VO对照、单据项目的注册;目录1流程平台中的本体这里一并对流程平台中的一些基本概念进行阐述。了解流程平台的前提是了 解这些基本要素。1.1单据类型单据类型是对单据的分类,也被称作交易。其他本体都是基于单据类型来 定义。在定义单据类型时,单据类型必须属于某个模块。单据类型由功能点客 户化-二次开发工具-单据管理-单据类型管理维护,如图所示,一般由 各业务产品预置。项目说明:类型代码:手工输入,最大长度为4个字符,可以输入字母和数字, 不允许重复。类型名称:业务单据名称,手工输入,不允许重复。单据大类:表示单据类别(应收应付101-),用于区分单据类型的 主子关系(估计在V6.0废弃?)。节点编号:单据类型关联的管理功能节点编号。用于根据单据类型联 查打开单据UI。审批节点编号:单据类型关联的审批功能节点编号。用于审批时,根 据单据类型联查打开单据UI。主表参照的固定条件语句:被其它单据参照时自己填写的固定的SQL 条件语句。参照查询对应的DMO类:应该统一为业务扩展类?审批流检查类:应该统一为业务扩展类?会计平台类:财务会计平台所需的类。是否项目核算:NC210以后不再使用。是否为根节点:针对单据大类,用于实现单据主子关系。是否发送会计平台:用于财务会计平台。是否可扩展交易类型:标识该单据类型是否可以定制扩展交易类型。元数据组件:如果进行了元数据实体建模,则可将元数据组件与单据 类型进行关联。单据类型还可注册一些扩展类(如交易类型扩展类、流程用户组规则器),保存 在单据类型子表中。1.1.1元数据实体NC从5.5版本开始支持元数据建模。对象元数据是对业务实体对象及其相 互间关系的抽象描述,也称作实体对象模型。它为系统运行中的数据提供了更 加确切的语义。元数据业务模型中的一些关键概念包括模块,组件,实体,值 对象,业务接口,属性,业务操作,方法,参数,元素,容器,IBean等。业务 对象元模型是按照模块-组件-实体三层关系进行组织的。对于流程平台而言,单据类型必须与元数据主实体进行关联。同时,元数 据实体还需要实现流程平台业务接口 IFlowBizItf、IPfBillLock和 IHeadBodyQueryltf,并进行属性的映射。1.2交易类型是对单据类型(交易)的分类。最明显的例子是报销单据,可以把不同类 型的费用报销进行细分,如差旅报销、部门活动报销、交通费报销等,这些细 分的类型就可以理解为交易类型。可直接理解为是交易的细分,基于横向基于行业/企业的不同、纵向基于企 业的不同发展阶段的不同而不同。扩展交易类型只是在单据类型支撑的功能模 型基础之上再描述一些规则、模板、流程的差异,所以是用户可定制的。交易类型区分全局级与集团级。预制的交易类型在全局级,所有集团均可 用;用户新增的交易类型只做到集团级。由功能点客户化-流程平台-交易类型管理维护,如图所示。交易类型支持扩展属性。如果交易类型有自己的特殊属性,则还需把交易 类型的扩展编辑器类、扩展业务类注册在其所属的单据类型上。交易类型可发布为新的功能节点。1.3单据函数是对服务于单据的业务功能的抽取,是进行业务逻辑处理的组件。可用于动作脚本和条件判定。由功能点客户化-二次开发工具-单据管理-单据 函数注册维护,如图所示。项目说明:函数说明:函数所实现的功能的说明性文字,建议尽量说明清晰,以便于系统实施。如果以“”括起来,表示自定义函数返回类型:该功能函数返回数据的类型。函数类名称:功能函数所属的全路径类名。函数方法名称:该函数在类中所对应的方法名称。函数参数:该函数正确调用所需的参数。参数的格式见下。是否组件:标识该方法是否为组件。单据组件一般是没有返回值的一段业务处理逻辑,它不可应用于审批条件、动作约束、工作项配置中。1.3.1参数格式函数参数以逗号“,”隔开,每个参数具有特定的格式。参数分为运行参数、 属性参数和VO参数三种。每个参数还可定义是否为数组类型。格式示例:注意:VO参数和属性参数的实际值由工作流上下文在运行时赋予。运行参 数可在动作脚本中赋值。1.3.2返回值函数方法返回值支持的类型有:UFBooleanStringIntegerUFDouble1.4单据动作及脚本是对单据业务处理行为的抽象,具有可定制的动作脚本。业务单据正是通过 单据动作与流程平台进行交互的,从而驱动流程的流转。可对应于单据UI上的 某个菜单。由功能点客户化-二次开发工具-单据管理-单据动作管理维 护,如图所示。项目说明:动作选择:提供四种动作各供选择:保存、审核、推式动作、其它。保存、审核是单据的基本动作,动作代码有严格规定;推式动作表示该动作 可被其他单据推式驱动。动作编码:当前单据动作的编码。注意,当动作选择为“保存”时,动作编码必须为以“SAVE”结尾;而当动作选择为“审核”时,动作编码必 须为以“APPROVE”开头。长度限制为20个英文字符。动作名称:当前单据动作的显示名称动作执行前提示:如此处输入文字,则在该动作被触发时,会弹出一个带有提示性文字的对话框,如:是否保存?动作控制:提供三个选项:动作可配置、进行驱动配置、进行约束检查。勾选“动作可配置”,表示该动作可在流程配置中进行配置;勾选“进 行驱动配置”,则该动作在流程配置中可以对其他单据动作进行推式操作, 驱动其他单据;勾选“进行约束检查”,则此动作要根据业务流程的配置在 执行前进行条件检验,满足条件动作才执行,否则就不执行。动作脚本编辑由功能点客户化-二次开发工具-单据管理-单据动作 执行脚本维护,界面如下图所示1.4.1单据动作组对单据动作的分组,一个动作组下可以包含多个单据动作。由功能点客户 化-二次开发工具-单据管理-单据动作组管理维护,如图所示。2审批流平台审批流平台为单据的审批处理提供平台支持。基于任务驱动的执行引擎使 得流程流转与用户交互分离开来,具有更强的健壮性。支持分支/汇总(Split/ Join)、优先级(Priority)、子流程(Subflow)、可指派、抢占/会签、消息配 置、代理人、弃审等流程特性。在5.02版本中,流程平台还加强了短信和邮件 的移动应用功能。2.1流程定义NC的审批流定义模型遵循WfMC的XPDL1.1过程定义规范,具有严格的语义 和丰富的描述能力。流程定义在集团建立和管理。流程定义三要素:单据(或交易)类型+组织 单元+流程启动者。(该组织单元必须为元数据实体上的主组织类型)审批流定义按照单据类型(+交易类型)进行了分类。用户可以基于单据类 型定义审批流,也可以基于单据类型+交易类型来定义审批流。一个单据类型(+ 交易类型)下可以定义多个审批流。2.1.1流程模型一个审批流程的定义由诸多的元素共同构成。过程(Process)由许多被执行的活动和一系列决定活动执行次序的转移构成。活动(Activity)审批流程中的一个个步骤统称为活动(或任务),包括制单活动、审批 活动、虚活动、子流程。第一个拖放到审批流设计器中的参与者所属的活动为 制单活动。虚活动主要用于对分支/汇总进行建模。子流程可实施流程重用。参与者(Participant)活动的一个属性,即活动的执行者,是对系统中组织模型的引用。目 前支持操作员、角色和动态组织三种类型的参与者(HR岗位就是一 种动态组织实现,具体扩展机制可参考附录)。第一个拖放到审批流设计器中 的组织元素为制单活动的参与者。在流程设计器中,活动和参与者由同一个图 元来展现。转移(Transition)活动间的流转,是两个活动间的有向连接。每个转移都具有转移条件(Condition),只有满足条件的转移才可流转。转移条件表达式支持:审批结 果表达式、单据函数表达式、单据项目表达式(对于表体项目还支持统计函数: 最大值MAX、最小值MIN、乘积MUL、和SUM、平均值AVG)、元数据表达式。每个 转移还具有优先级(Priority),优先级高的转移分支将被优先选择。分支/汇总(Split/Join)活动具有前驱条件(Join)和后继条件(Split)两个属性,可通过 Split/Join-AND/XOR属性组合为过程的选择、并行结构进行建模。加上顺序和 循环,这四个基本结构就可描述大多数过程结构。同时,审批流还支持两种反 向流转模式:驳回和弃审。抢占和会签(C ompletion Strategy)审批活动的一个属性。会签:只有审批活动的参与者中所有用户完成 审批后,该审批活动才能结束。抢占:只要审批活动的参与者中任何一人完成 审批后,该审批活动即结束。可指派(Performer Dispatch)审批活动的一个属性。如果审批活动定义了可指派属性,则该审批活 动的实际执行者需要从其参与者中手工选择。指派的分支优先被选择。查询当前环节的后继可指派审批活动时,预先判断当前环节到指派活动的转移路径的 条件。不再返回不符合转移条件的可指派活动。判定时,先忽略审批结果条件 表达式;同时审批对话框中选择“批准”或“不批准”会对指派对话框产生联 动影响。流程限定(Participant Relation)审批活动的一个属性。用于设定前后两个活动的参与者之间的关系。统一为参与者“限定模式”,内置通用模式(动态限定(更正为费用承担者)、 上级限定、同公司、同部门、同公司且同部门),并支持单据扩展(比如“与 调入行同公司”、“与调出行同公司”等)。代理人(Agent)审批活动的一个属性。这里设置的代理人为静态代理人。制单活动不 可设置代理人;只可为参与者为操作员类型的审批活动设置多级代理人; 代理人只可为操作员。还可以在流程管理-代理人设置处为不同单据类型统一设置动态代理 人。消息配置(Message Config)审批活动的一个属性。可为每个审批活动配置额外的消息通知机制。 即在满足触发条件时,以消息、短信、邮件方式通知相关人员。可以为每个审批活动配置额外的消息发送机制。对于制单活动,发送条件必须为“无条件”。对于审批活动,发送条件可为“无条件”、“审核通过”和“审核不通过”三种。在消息内容中我们可以使用宏表达式来获取一些业务相关数据。目前可从系统获取的宏对象变量仅有:operater=当前登录操作员PKvo=当前操作的单据VOvos=当前操作的单据VO数组paravo=当前单据的审批流参数VO-® PFParamet&ryo-珍 m_3ctionN3nri& : String-珍m_aut oApprove AfterComm it : booleani rn_billld : Stringi rn_billNci: String- om_billType : String- *rn_businessT ype : string- *m_cald : String- *rn_currentDate ; String- *m_data5aurce : String-。 rn_mdkeBillOperator; String-。 m_operator; String- 。 m_preValueVo : AggreciatedValueObiect- #m_preValu已口5 : Aggr已口曰t已dV日lu已口5|已ct- # m_5tandHeadVo : PublicHeadVOj“ rn_ueerObj : Objectj“ o rn_ueerObj£ : Objectj“ o m workFlow : nc. vo. pub. pF. PfUtil Workflow VO参数VO可直接访问的变量列表。这样,在我们的宏表达式中可以直接引用这些对象变量,并调用这些对象的方法(注:完全支持Java语法)。比如:宏表达式含义%paravo.m_billNo%当前单据号%vo.getParentVO().getAttributeValue(“dwbmw)%当前单据VO中的某数据%paravo.m_workFlow.getCheckNote()%当前审批步骤的批语2.1.2流程用户组NC5.5中流程定义的参与者支持“用户”、“角色”、“动态组织”(目前已有 HR人员组、HR岗位、虚拟角色)。NC6. 0需要增加“流程用户组”。支持离散型、规则型两种“流程用户组”。离散选取用户或角色或用户组或 角色组;规则型“流程用户组”需要基于单据类型定义。定义一个规则型“流 程用户组”时,需要指定单据类型、依赖属性(由规则器决定是否需要指定)、 规则器。规则器系统默认两种:“上级主管”、“员工”,这两种规则器都需要指定依 赖属性(比如H_pk_corp, H_pk_dept)。并支持代码扩展的规则器,注册在 bd_billtype2 辅表中。(注:这种规则器的实现方式类似于NC5.5中的参与者限定器。)【注意】流程用户组不能作为流程启动者。2.1.3多版本1)流程定义的三个状态:“未启用”、“启用”、“停用”。2)新增流程定义保存时,版本号默认为1.1。以后每次修改后保存,自动增加0.1 (【注意】应该严格保证某单据(或交易)类型下,所有流程定义版本唯一)。新建流程的处于“未启用”状态。3)流程停用后不能够使用,已经生成流程实例的流程能够还是按照原有定义运 行。4)如果修改的流程定义已经有流程实例,则保存时自动产生新的流程定义。同 时停用旧的流程定义。5)如果流程定义没有生成实例,修改流程定义的话,就只更新版本号,但不保 存以前的流程定义。6)能够将停用的流程定义重新启用。7)停用的流程是不能修改的。8)不允许删除已有流程实例的流程定义。2.1.4定义查找算法由于可以在单据类型和交易类型上都定义流程,所以流程启动时优先选用 交易类型上定义的流程。2.2执行引擎执行引擎运行过程中会产生如下对象:流程实例、活动实例、任务实例、工作项,并对它们进行持久化处理。工作流引擎支持两种反向流转模式:驳回和弃审。驳回是审批人直接将单据退回到制单人,导致单据处于自由态,但流程实 例仍运行中。制单人收到驳回工作项,双击可打开单据UIO制单人修单后提交, 会新启实例,重新产生工作项;若是其他人修单(更改了制单人),如果找到 审批流定义,则新启实例,删除旧实例。如果找不到审批流定义,则删除旧实 例,走直批模式。弃审是审批人审批完成后,再撤销自己的操作。有两种弃审模式:逐级弃 审和一弃到底,可以在流程定义上进行选择。弃审是通过调用“UNAPPROVE”动 作来实现的,具有特殊的动作脚本。第一个审批人弃审会将单据置为自由态。 修单后再提交,会新启实例,旧实例被删除。必须在单据审批完成后才可一弃 到底,一弃到底将单据置为自由态,会向制单人发送通知消息,修单后再提交 不会新启实例。2.3工作项工作流引擎将产生的工作项直接推给用户,同时用户登录后可选择优先执 行哪些任务。审批人出差后,审批工作项将会分配到代理人。2.3.1设置动态代理人图i替换新截图?集团管理员可使用该节点为所有集团用户设置代理人。普通用户可使用该 节点为自己设置代理人。个性化中心也可设置登录用户的代理人。2.3.2工作项消息定制活动实际执行过程中产生的任务项,表现为待办消息。工作项的标题可以 根据不同的单据类型进行定制。标题内容可以由五个部分(单据项目、单据函 数、元数据、流程信息、自定义文本)拼接而成。如图所示。2.3.3工作项的处理提供对工作项的管理(邮件催办、转交、加签);催办的逾期时限支持:全局级流程级活动级;逾期天数计算支持选择工作日历(工作日历提供服务:根据起止时间算出有效历时)。2.4动作处理单据类型必须注册审批流相关的三个单据动作:提交(也叫送审)、审批、 弃审,并编写动作脚本。前台动作处理(整合PfUtilClient为如下两个方法):后台动作处理(先使用NCLocator查找到IPFBusiAction组件后调用):2.4.1动作组public static void retElseBtn(ButtonObject boElse,String billType,String actionStyle)功能:获取某单据类型下某动作组的所有单据动作,并添加为boElse的子按钮。参数说明:参数名含义及取值boElse待填充的其他菜单按钮billType单据类型PKactionStyle动作组编码2.5流程结果与单据状态对于审批流程来说,流程实例正常结束后,必然会有一个审批结果。而单 据的审批状态与流程结果密切相关。工作项的审批结果即登录到NC系统的操作员对流程平台分配给他的工作项的审批处理意 见。包括“批准”、“不批准”、“驳回到制单人”三种。活动的审批结果对于角色/岗位类的参与者执行的审批活动,如果是会签属性,则只有所 有会签操作员都审批通过,该活动结果才为审批通过,任何一个会签人审批不 通过,该活动结果就为审批不通过;如果是抢占属性,则活动结果为抢占人的 审批结果。流程的审批结果恒等于最后一个活动(即流转到结束节点的活动)的审批结果。恒等于 最后一个审批人的审批结果。单据的审批状态与业务状态一旦单据送审到审批流中,单据便处于某个审批状态。在审批流内部,单 据的内部审批状态有5种:表1单据审批状态常量取值含义IPfRetCheckInfo.NOSTATE-1自由态IPfRetCheckInfo.COMMIT3提交态IPfRetCheckInfo.GOINGON2审批进行中IPfRetCheckInfo.PASSING1审批通过IPfRetCheckInfo.NOPASS0审批不通过业务单据根据自己的业务需求也可定义自己的单据业务状态,但不可与上述5种状态相冲突。比如UI模式化开发包中就定义了更多的单据状态。表2单据业务状态常量取值含义IBillStatus.FREE8自由态IBillStatus.COMMIT3提交态IBillStatus.CHECKGOING2审批进行中IBillStatus.CHECKPASS1审批通过IBillStatus.NOPASS0审批不通过IBillStatus.DELETE4作废状态IBillStatus.CX5冲销状态IBillStatus.ENDED6终止(结算)态IBillStatus.FREEZE7冻结状态自由态即单据尚在编写中(已保存或尚未保存)并未提交到审批流的状态。提交态通过执行单据动作SAVE或EDIT,将单据送审后的状态。提交态是审批流内 部的一个状态,它的回写并不通过审批流检查类进行。只能由业务组通过SAVE 动作脚本自己对单据状态进行设置。所以有的业务组的单据并没有提交态的概 念。审批进行中流程实例正处于运行中的状态。审批完成如果流程实例正常运行完成,该单据的审批过程即完成。审批流程结束后 具有最终审批结果:通过或不通过,这也是单据的最终审批结果。审批状态转换图如下所示:状态转换触发条件自由态->提交态制单后通过执行单据动作SAVE/EDIT将单据送审。提交态-> 进行中送审后只要有人已审核,即为进行中进行中->完成态流程实例按照定义步步审批,直至正常流 转结束。完成态-> 自由态一弃到底自由态->完成态提交即审批通过完成态-> 进行中逐级弃审提父态-> 自由态驳回到制单人进行中-> 自由态1. 驳回到制单人;2. 流程流转到制单活动;3. 第一个审批人弃审在各个状态下对单据的业务处理(比如是否可删除、是否可编辑等)由业 务组自己控制。流程正常结束时,单据如果审批通过,会给制单人发送“审批通过”的通 知消息;单据如果审批不通过,则给参与流程的所有人员发送“审批不通过” 的通知消息。2.5.1单据审批状态的回写单据审批状态在流程流转过程中需要回写到单据VO对象以及单据数据库表 中。审批流流转过程中,需要把单据的审批状态回写到单据数据库表以及单据 VO 中。?必须让元数据实体实现业务接口 IFlowBizItf。2.6流程管理中心提供对流程实例的监控(终止、挂起/恢复);可根据流程定义查询正运行、已完成的流程实例、启动新流程实例。可查询所有已审批通过、审批中、提交但尚未审批的单据,而不仅仅是查 询工作项。流程分析流程实例、活动执行时间的分析报表。对于系统中运行的审批流程实例,可监控它们现在所处的状态,并强制终 止。同时还可查询到某单据的审批状态。当前操作员可查询的审批记录受审批 查询权限(由审批流用户管理功能节点维护)的限制。图2流程实例查询图3流程图与工作项管理3业务流平台NC业务流平台设计思想是基于以下认识:业务流程是由单据组成的,而单 据是由动作驱动的,动作又是由组件组成的;单据、动作以及组件可以由业务 系统开发实现。NC业务流提供一种平台机制,在此可以根据用户的实际业务重 新组织这些单据、动作及组件,包括每种单据的来源单据是什么、又驱动生成 哪些单据、完成什么动作、动作生效的约束条件以及动作生效后将配置哪些组 件等,以此更好满足企业个性化的需求。图4普通采购流程业务流程的最大特点是流程实例中上下游单据是不同的对象,id不同,单 据类型可能相同也可能不同。业务流程引擎要处理上下游单据对象之间的数据 映射、转换、合并或分单。工作流程中可以包含审批流程;业务流程中可以包含工作流程。3.1业务流程V6中业务流程为集团级,必须属于某个集团,各集团可以定义自己的业务 流程。产品发版时可预置业务流程。比如集中采购流程:请购单->采购订单-> 到货单-> 入库单-> 采购发票->应付单。由功能点客户化-流程平台-业务流 程管理维护。3.2流程配置流程配置定义了单据之间的动作驱动关系(推式)和来源参照关系(拉式)。 业务流不是由流程实例来驱动流转,由于涉及到单据数据之间分拆和合并,难 以监控到整个业务流的运行情况。一个业务流程由相互关联的多个单据组成,通过定义单据间来源与动作驱 动关系来定义业务流程,由功能点客户化-流程平台-流程配置维护。项目说明:单据类型:该字段为参照选择,参照内容为NC安装过的功能模块的 所有业务单据。每个业务类型每张单据只能选择一次。交易类型:该字段为参照选择,参照内容为该行第一列选择的单据业 务单据类型下的交易类型。每个业务类型单据的每个交易类型只能选择一次参照单据:勾选此项,表示该单据的业务数据可以参照其他单据(来 源单据)的数据生成。勾选此项,在流程配置中才可配置该单据的来源单据, 否则不可配置。自制单据:勾选此项,表示该单据的业务数据可以手工输入。上游消息:上游消息是下游单据完成某种处理之后,向上游单据的操 作员发出的通知消息。下游消息:上游单据审批通过后,则单据可以被其下游单据作为参照, 会给下游单据的参与者发送拉式消息。上游单据的推式动作执行完后会驱动 下游单据的动作,并给下游单据的参与者发送推式消息。推式消息一一流程配置中动作驱动如果产生了下游单据,且下游单据 尚未走审批流,则给下游单据的负责人发送这种消息。消息处理方式为直接 打开该单据UI进行维护。拉式消息一一流程配置中如果某单据审批通过,则给下游单据的负责人发送这种消息。消息处理方式为打开该单据UI,并参照上游单据。目的业务流程:参照列出了当前登录公司和集团的业务流程。在定义 VO交换规则时,新增系统变量DEST_BUSITYPE。实际交换时,该变量的取值 二当前业务流程下该目的单据配置的值。【注意】参照单据、自制单据两项可以同时选择,表示该单据在本业务流 程中既可以参照来源单据生成单据数据,也可以手工制单。但此两个选项必须 选择其一。3.2.1参与者配置设置下游消息的接收者为该组织中属于该角色的相关用户。如果用户注册了 IPfPersonFilter2接口的实现类,则优先使用此过滤器返 回用户PK数组,详见3.2.2单据来源设置是对当前单据类型的数据来源单据进行定义的界面。被定义为当前单据来 源单据的业务单据,可以在业务流程中为当前单据提供业务数据(使用单据VO 交换),以保持业务数据的一致性。在“单据来源配置”流程向导界面,单击“配置”,进入单据来源配置操作 界面。在此操作界面中,用户可以设置来源单据并定义约束条件单据类型:症存来购成库鱼 交易类型:单据未源段置源酉图2-3单据来源设置单据琴援吸置在此;您设蚤某个牢据某冲业冬羸程的J-3.2.3动作执行前约束设置配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生前 需要进行的条件检查。若发生的业务满足定义的条件,则该单据动作将被执行, 否则不允许执行。流程配置通过本步骤,即可实现对当前业务环节的事前控制。图5动作约束配置3.2.4动作执行后约束设置配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生后 进行的条件检查。若业务发生后满足定义的条件,则流程将继续执行,否则不 允许此动作执行。流程配置通过本步骤,即可实现对当前业务环节的事后控制。图2-5动作约束后配置项目说明:见3.2.4动作约束前配置。3.2.5动作事件控制配置在“动作事件控制配置”流程向导界面,单击“配置”,进入动作事件控制 配置。单击选择左侧单据动作,右侧列示该动作的代码,可以手工编写代码,也 可以通过“应用函数”、“常用语法”、“数据类型”、“VO类型定义”来编写代码。睥阔停:对外布出单据类型:蜘产入库单变号类坦!助g伴g沮动作宰件控剧配置苦此崽景妻做旧曰国球当此作生花旺,Me.安郭艮手泮.曳芍含更寻岂号i图2-6动作控制配置项目说明:应用函数:选择应用函数,可以将直接将区业务单据的函数插入到单据动 作中。常用语法:提供了 JAVA标准语法的快速选择。数据类型:包括JAVA标准数据类型及NC定义的各种数据类型。VO类型定义:包括NC业务单据的VO类型。3.2.6动作驱动配置图2-7消息驱动配置项目说明:目的单据:在当前单据动作完成时,将要产生动作的单据。操作员相关:选择与操作员或组有关,则该动作仅在所选择的操作员或组 执行时,才会“推”式生成目的单据的动作。动作:参照选择,选择目的单据可以“推”式生成的动作,该类动作在单 据动作管理中被定义为“推式动作”3.2.7上游消息配置图2-7上游消息配置3.2.8 VO 交换用于定义该业务流程中,不同单据(或交易)类型之间的VO交换规则。业 务流程必须属于某个集团,所以该处定义的业务流程均为集团级。3.2.9流程显示图2-9流程显示项目说明:流程示意图中,红色箭头线表示“拉”式生成(单据来源)的单据数据走向, 即上游单据为红色箭头所指单据的来源单据;灰色箭头线表示“推”式生成(消息驱动)的单据数据走向,即上游单据某 动作将驱动产生灰色箭头所指单据的某动作。3.3单据VO交换3.3.1交换规则单据VO之间存在相互转换的场景,流程平台提供了定义单据元数据实体间的 相互转换规则的机制。转换规则保存在表pub_vochange以及其子表 pub_vochange_b 中。VO交换规则可以在单据类型和交易类型之间相互定义。VO交换规则区分集 团级和全局级,可以定义在业务流程上也可以定义为与业务流程无关。V6流程 平台中可以在两个功能点管理VO交换规则:功能点客户化-流程平台-流程配置流程向导中的VO交换见 3.2.8功能点二次开发工具-流程配置-数据交换管理这里可以定义与业务流程无关的VO交换规则,可以区分集团级和全局级。新增VO交换需要选择来源以及目的单据类型,选择界面如下:VO交换的编辑界面:表格编辑界面:NC6.0只支持元数据实体间的交换,交换规则示例如下:交换规则类型说明pk_corp->pk_corp映射目的表头属性来源于源表头属性vapproveid->details.pk_goods映射目的表头属性来源于源表体属性makedate->SYSDATE赋值目的属性来源于环境变量details.mny-totalmny映射目的表体属性来源于源表头属性details.price->details.price映射目的表体属性来源于源表体属性totalmny-iff()公式目的属性来源于公式billno->getColValue()公式目的属性来源于公式xxx->N赋值字符串常量abc->23.56赋值数值型常量details.pk_jldw->getKJQJ(H_b)公式目的属性来源于自定义函数3.3.2前台交换单据VO交换可发生在前后或后台,并在交换后可进行特殊的业务处理。调用PfUtilUITools中的方法,单张单据VO交换调用方法/*进行前台VO交换* param sourceBillType 源单据类型PK* param destBillType 目的单据类型PK* param sourceBillVO 源单据聚合VO* return目的单据聚合VO* ©throws Exception*/public static AggregatedValueObject runChangeData(String sourceBillType,String destBillType,AggregatedValueObject sourceBillVO) throws BusinessException批量交换调用方法/*运行前台VO数组交换* ©param sourceBillType 源单据类型PK* param destBillType 目的单据类型PK* ©param sourceBillVOs 源单据聚合VO数组* ©return目的单据聚合VO数组* ©throws Exception*/public static AggregatedValueObject runChangeDataAry(String sourceBillType,String destBillType,AggregatedValueObject sourceBillVOs) throws BusinessException3.3.3后台交换调用PfUtilTools中的方法单张单据VO交换调用方法/*进行VO交换* ©param srcTranstype 源交易类型PK* ©param destTranstype 目的交易类型PK* ©param sourceBillVO 源单据聚合VO* ©param paraVo工作流参数VO* ©return目的单据聚合VO* ©throws BusinessException*/public static AggregatedValueObject runChangeData(String srcTranstype,String destTranstype,AggregatedValueObject sourceBillVO,PfParameterVO paraVo) throws BusinessException批量交换调用方法/*运行数据交换类(VO数组)* ©param sourceBillType 源单据类型PK* ©param destBillType 目的单据类型PK* ©param sourceBillVOs 源单据聚合VO数组* ©param paraVo工作流参数VO,仅用于获取一些系统变量* ©return目的单据聚合VO数组* ©throws BusinessException*/public static AggregatedValueObject runChangeDataAry(String sourceBillType,String destBillType,AggregatedValueObject sourceBillVOs,PfParameterVO paraVo) throws BusinessException3.3.4单据VO交换前后处理接口由元数据实体实现业务接口 IVoChangeAdjustItf。3.4参照制单需要进行参照制单的交易类型,需要在流程配置首页选择“参照制单”选 项。在流程配置向导中的单据来源设置界面是对当前单据类型的数据来源单据进行定义。被定义为当前单据来源单据的业务单据,可以在业务流程中为当前 单据提供业务数据(使用单据VO交换),以保持业务数据的一致性。调用PfUtilClient里的方法。3.4.1获得业务类型用于获取某单据类型配置的所有业务类型(流程),以便用户可以选择不同 的业务流程