首页 V流程平台开发文档

V流程平台开发文档

举报
开通vip

V流程平台开发文档V6.0流程平台开发文档NC_UAP基础技术部2009-4参考文档:《NCV5-流程平台技术红皮书.doc》《V5.1流程平台详细设计.doc》《V5.02流程平台详细设计.doc》《V5.5流程平台详细设计.doc》《V5.5工作流开发文档.doc》《V5.5流程平台-元数据应用.doc》《NCV55-元数据建模及治理红皮书.doc》《NCV55-元数据开发红皮书.doc》《NCV6流程平台概要需求-评审lhp.doc》版本日期修订人修订0.32009-6-23雷军设计评审后的较大改动:去掉系统类型,改用模块;单...

V流程平台开发文档
V6.0流程平台开发文档NC_UAP基础技术部2009-4参考文档:《NCV5-流程平台技术红皮书.doc》《V5.1流程平台详细 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 .doc》《V5.02流程平台详细设计.doc》《V5.5流程平台详细设计.doc》《V5.5工作流开发文档.doc》《V5.5流程平台-元数据应用.doc》《NCV55-元数据建模及治理红皮书.doc》《NCV55-元数据开发红皮书.doc》《NCV6流程平台概要需求-评审lhp.doc》版本日期修订人修订0.32009-6-23雷军设计评审后的较大改动:去掉系统类型,改用模块;单据类型必须关联元数据实体;去掉单据VO对照、单据项目的注册;目录1流程平台中的本体41.1单据类型41.1.1元数据实体51.2交易类型61.3单据函数61.3.1参数格式71.3.2返回值81.4单据动作及脚本81.4.1单据动作组102审批流平台102.1流程定义112.1.1流程模型122.1.2流程用户组142.1.3多版本142.1.4定义查找算法152.2执行引擎152.3工作项162.3.1设置动态代理人162.3.2工作项消息定制172.3.3工作项的处理172.4动作处理182.4.1动作组192.5流程结果与单据状态202.5.1单据审批状态的回写222.6流程治理中心223业务流平台243.1业务流程243.2流程配置253.2.1参与者配置263.2.2单据来源设置273.2.3动作执行前约束设置283.2.4动作执行后约束设置293.2.5动作事件控制配置303.2.6动作驱动配置323.2.7上游消息配置333.2.8VO交换333.2.9流程显示343.3单据VO交换343.3.1交换规则343.3.2前台交换373.3.3后台交换383.3.4单据VO交换前后处理接口393.4参照制单393.4.1获得业务类型393.4.2参照制单393.5动作驱动413.5动作处理413.6业务流相关接口423.6.1动作执行后返回界面的初始化接口423.6.2参照制单查询UI初始化接口423.6.3业务类型调整接口433.6.4单据VO查询接口443.6.5动作处理非常接口443.6.6动作驱动前的校验接口453.6.7动作驱动单据VO交换前的检查接口453.6.8下游消息接收者用户自定义接口464工作流平台464.1流程定义464.1.1流程模型464.1.2工作流组件474.1.3多版本484.1.4流程模板484.2执行引擎494.3工作项494.4动作处理514.5流程结果与单据状态514.6流程治理中心515消息中心511流程平台中的本体这里一并对流程平台中的一些基本概念进行阐述。了解流程平台的前提是了解这些基本要素。1.1单据类型单据类型是对单据的分类,也被称作交易。其他本体都是基于单据类型来定义。在定义单据类型时,单据类型必须属于某个模块。单据类型由功能点[客户化]-[二次开发工具]-[单据治理]-[单据类型治理]保护,如图所示,一样由各业务产品预置。项目说明:类型代码:手工输入,最大长度为4个字符,可以输入字母和数字,不答应重复。类型名称:业务单据名称,手工输入,不答应重复。单据大类:表示单据类别(应收应对101---),用于区分单据类型的主子关系(估量在V6.0废弃?)。节点编号:单据类型关联的治理功能节点编号。用于根据单据类型联查打开单据UI。审批节点编号:单据类型关联的审批功能节点编号。用于审批时,根据单据类型联查打开单据UI。主表参照的固定条件语句:被其它单据参照时自己填写的固定的SQL条件语句。参照查询对应的DMO类:应该统一为业务扩展类?审批流检查类:应该统一为业务扩展类?实现IcheckState,IbackCheckState(可不实现)的接口的DMO类文件会计平台类:财务会计平台所需的类。实现IaccountProcMsgIAccountRetVoucher的接口的DMO类文件是否项目核算:NC210以后不再使用。是否为根节点:针对单据大类,用于实现单据主子关系。是否发送会计平台:用于财务会计平台。如果该单据不直接传送财务会计平台,则不挑选是否可扩展交易类型:标识该单据类型是否可以定制扩展交易类型。元数据组件:如果进行了元数据实体建模,则可将元数据组件与单据类型进行关联。单据类型还可注册一些扩展类(如交易类型扩展类、流程用户组规则器),储存在单据类型子表中。1.1.1元数据实体NC从5.5版本开始支持元数据建模。对象元数据是对业务实体对象及其相互间关系的抽象描述,也称作实体对象模型。它为系统运行中的数据提供了更加确切的语义。元数据业务模型中的一些关键概念包括模块,组件,实体,值对象,业务接口,属性,业务操作,方法,参数,元素,容器,IBean等。业务对象元模型是按照模块-组件-实体三层关系进行组织的。对于流程平台而言,单据类型必须与元数据主实体进行关联。同时,元数据实体还需要实现流程平台业务接口IFlowBizItf、IPfBillLock和IHeadBodyQueryItf,并进行属性的映射。1.2交易类型是对单据类型(交易)的分类。最明显的例子是报销单据,可以把不同类型的费用报销进行细分,如差旅报销、部门活动报销、交通费报销等,这些细分的类型就可以懂得为交易类型。可直接懂得为是交易的细分,基于横向基于行业/企业的不同、纵向基于企业的不同发展阶段的不同而不同。扩展交易类型只是在单据类型支撑的功能模型基础之上再描述一些规则、模板、流程的差异,所以是用户可定制的。交易类型区分全局级与集团级。预制的交易类型在全局级,所有集团均可用;用户新增的交易类型只做到集团级。由功能点[客户化]-[流程平台]-[交易类型治理]保护,如图所示。交易类型支持扩展属性。如果交易类型有自己的特别属性,则还需把交易类型的扩展编辑器类、扩展业务类注册在其所属的单据类型上。交易类型可发布为新的功能节点。1.3单据函数是对服务于单据的业务功能的抽取,是进行业务逻辑处理的组件。可用于动作脚本和条件判定。由功能点[客户化]-[二次开发工具]-[单据治理]-[单据函数注册]保护,如图所示。项目说明:函数说明:函数所实现的功能的说明性文字,建议尽量说明清楚,以便于系统实施。如果以“<>”括起来,表示自定义函数。返回类型:该功能函数返回数据的类型。函数类名称:功能函数所属的全路径类名。函数方法名称:该函数在类中所对应的方法名称。函数参数:该函数正确调用所需的参数。参数的格式见下。是否组件:标识该方法是否为组件。单据组件一样是没有返回值的一段业务处理逻辑,它不可应用于审批条件、动作约束、工作项配置中。1.3.1参数格式函数参数以逗号“,”隔开,每个参数具有特定的格式。参数分为运行参数、属性参数和VO参数三种。每个参数还可定义是否为数组类型。格式示例:nc.vo.pub.AggregatedValueObject[]:01nc.vo.pub.AggregatedValueObject:01,OBJuser:OBJECTnc.vo.po.OrderVO[]:21&sAction:STRING,nc.vo.pub.AggregatedValueObject:01注意: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过程定义 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ,具有严格的语义和丰富的描述能力。流程定义在集团建立和治理。流程定义三要素:单据(或交易)类型+组织单元+流程启动者。(该组织单元必须为元数据实体上的主组织类型)审批流定义按照单据类型(+交易类型)进行了分类。用户可以基于单据类型定义审批流,也可以基于单据类型+交易类型来定义审批流。一个单据类型(+交易类型)下可以定义多个审批流。2.1.1流程模型一个审批流程的定义由诸多的元素共同构成。过程(Process)——由许多被执行的活动和一系列决定活动执行次序的转移构成。活动(Activity)——审批流程中的一个个步骤统称为活动(或任务),包括制单活动、审批活动、虚活动、子流程。第一个拖放到审批流设计器中的参与者所属的活动为制单活动。虚活动主要用于对分支/汇总进行建模。子流程可实施流程重用。参与者(Participant)——活动的一个属性,即活动的执行者,是对系统中组织模型的引用。目前支持『操作员』、『角色』和『动态组织』三种类型的参与者(HR岗位就是一种动态组织实现,具体扩展机制可参考附录)。第一个拖放到审批流设计器中的组织元素为制单活动的参与者。在流程设计器中,活动和参与者由同一个图元来展现。转移(Transition)——活动间的流转,是两个活动间的有向连接。每个转移都具有转移条件(Condition),只有满足条件的转移才可流转。转移条件表达式支持:审批结果表达式、单据函数表达式、单据项目表达式(对于表体项目还支持统计函数:最大值MAX、最小值MIN、乘积MUL、和SUM、平均值AVG)、元数据表达式。每个转移还具有优先级(Priority),优先级高的转移分支将被优先挑选。分支/汇总(Split/Join)——活动具有前驱条件(Join)和后继条件(Split)两个属性,可通过Split/Join-AND/XOR属性组合为过程的挑选、并行结构进行建模。加上顺序和循环,这四个基本结构就可描述大多数过程结构。同时,审批流还支持两种反向流转模式:驳回和弃审。抢占和会签(CompletionStrategy)——审批活动的一个属性。会签:只有审批活动的参与者中所有用户完成审批后,该审批活动才能终止。抢占:只要审批活动的参与者中任何一人完成审批后,该审批活动即终止。可指派(PerformerDispatch)——审批活动的一个属性。如果审批活动定义了可指派属性,则该审批活动的实际执行者需要从其参与者中手工挑选。指派的分支优先被挑选。查询当前环节的后继可指派审批活动时,预先判定当前环节到指派活动的转移路径的条件。不再返回不符合转移条件的可指派活动。判定时,先忽略审批结果条件表达式;同时审批对话框中挑选“批准”或“不批准”会对指派对话框产生联动影响。流程限定(ParticipantRelation)——审批活动的一个属性。用于设定前后两个活动的参与者之间的关系。统一为参与者“限定模式”,内置通用模式(动态限定(更正为费用承担者)、上级限定、同公司、同部门、同公司且同部门),并支持单据扩展(比如“与调入行同公司”、“与调出行同公司”等)。代理人(Agent)——审批活动的一个属性。这里设置的代理人为静态代理人。制单活动不可设置代理人;只可为参与者为『操作员』类型的审批活动设置多级代理人;代理人只可为『操作员』。还可以在[流程治理]-[代理人设置]处为不同单据类型统一设置动态代理人。消息配置(MessageConfig)——审批活动的一个属性。可为每个审批活动配置额外的消息通知机制。即在满足触发条件时,以消息、短信、邮件方式通知相关人员。可以为每个审批活动配置额外的消息发送机制。对于制单活动,发送条件必须为“无条件”。对于审批活动,发送条件可为“无条件”、“审核通过”和“审核不通过”三种。在消息内容中我们可以使用宏表达式来获取一些业务相关数据。目前可从系统获取的宏对象变量仅有:operater==当前登录操作员PKvo==当前操作的单据VOvos==当前操作的单据VO数组paravo==当前单据的审批流参数VO参数VO可直接拜访的变量列表。这样,在我们的宏表达式中可以直接引用这些对象变量,并调用这些对象的方法(注:完全支持Java语法)。比如:宏表达式含义%%paravo.m_billNo%%当前单据号%%vo.getParentVO().getAttributeValue(“dwbm”)%%当前单据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.1。以后每次修改后储存,自动增加0.1(【注意】应该严格保证某单据(或交易)类型下,所有流程定义版本唯独)。新建流程的处于“未启用”状态。流程停用后不能够使用,已经生成流程实例的流程能够还是按照原有定义运行。如果修改的流程定义已经有流程实例,则储存时自动产生新的流程定义。同时停用旧的流程定义。如果流程定义没有生成实例,修改流程定义的话,就只更新版本号,但不储存以前的流程定义。能够将停用的流程定义重新启用。停用的流程是不能修改的。不答应删除已有流程实例的流程定义。2.1.4定义查找算法由于可以在单据类型和交易类型上都定义流程,所以流程启动时优先选用交易类型上定义的流程。2.2执行引擎执行引擎运行过程中会产生如下对象:流程实例、活动实例、任务实例、工作项,并对它们进行持久化处理。工作流引擎支持两种反向流转模式:驳回和弃审。驳回是审批人直接将单据退回到制单人,导致单据处于自由态,但流程实例仍运行中。制单人收到驳回工作项,双击可打开单据UI。制单人修单后提交,会新启实例,重新产生工作项;若是其他人修单(更换了制单人),如果找到审批流定义,则新启实例,删除旧实例。如果找不到审批流定义,则删除旧实例,走直批模式。弃审是审批人审批完成后,再撤销自己的操作。有两种弃审模式:逐级弃审和一弃到底,可以在流程定义上进行挑选。弃审是通过调用“UNAPPROVE”动作来实现的,具有特别的动作脚本。第一个审批人弃审会将单据置为自由态。修单后再提交,会新启实例,旧实例被删除。必须在单据审批完成后才可一弃到底,一弃到底将单据置为自由态,会向制单人发送通知消息,修单后再提交不会新启实例。2.3工作项工作流引擎将产生的工作项直接推给用户,同时用户登录后可挑选优先执行哪些任务。审批人出差后,审批工作项将会分配到代理人。2.3.1设置动态代理人图1替换新截图?集团治理员可使用该节点为所有集团用户设置代理人。普通用户可使用该节点为自己设置代理人。个性化中心也可设置登录用户的代理人。2.3.2工作项消息定制活动实际执行过程中产生的任务项,表现为待办消息。工作项的标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 可以根据不同的单据类型进行定制。标题内容可以由五个部分(单据项目、单据函数、元数据、流程信息、自定义文本)拼接而成。如图所示。2.3.3工作项的处理提供对工作项的治理(邮件催办、转交、加签);催办的逾期时限支持:全局级<流程级<活动级;逾期天数运算支持挑选工作日历(工作日历提供服务:根据起止时间算出有效历时)。2.4动作处理单据类型必须注册审批流相关的三个单据动作:提交(也叫送审)、审批、弃审,并编写动作脚本。前台动作处理(整合PfUtilClient为如下两个方法):Objectnc.ui.pub.pf.PfUtilClient.runAction(Containerparent,StringactionName,StringbillType,StringbusiDate,AggregatedValueObjectbillvo,ObjectuserObj,StringstrBeforeUIClass,AggregatedValueObjectcheckVo,HashMapeParam)throwsExceptionObject[]nc.ui.pub.pf.PfUtilClient.runBatch(Containerparent,StringactionName,StringbillType,StringcurrentDate,AggregatedValueObject[]voAry,Object[]userObjAry,StringstrBeforeUIClass,HashMapeParam)throwsException后台动作处理(先使用NCLocator查找到IPFBusiAction组件后调用):Objectnc.itf.uap.pf.IPFBusiAction.processAction(StringactionName,StringbillType,StringcurrentDate,PfUtilWorkFlowVOwfContextVO,AggregatedValueObjectbillvo,ObjectuserObj,HashMapeParam)throwsBusinessExceptionObject[]nc.itf.uap.pf.IPFBusiAction.processBatch(StringactionName,StringbillType,StringcurrentDate,AggregatedValueObject[]billvos,Object[]userObjAry,PfUtilWorkFlowVOwfContextVO)throwsBusinessException2.4.1动作组publicstaticvoidretElseBtn(ButtonObjectboElse,StringbillType,StringactionStyle)功能:获取某单据类型下某动作组的所有单据动作,并添加为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将单据送审。提交态->进行中②送审后只要有人已审核,即为进行中进行中->完成态③流程实例按照定义一步步审批,直至正常流转终止。完成态->自由态④一弃到底自由态->完成态⑤提交即审批通过完成态->进行中⑥逐级弃审提交态->自由态⑦驳回到制单人进行中->自由态⑧驳回到制单人;流程流转到制单活动;第一个审批人弃审在各个状态下对单据的业务处理(比如是否可删除、是否可编辑等)由业务组自己控制。流程正常终止时,单据如果审批通过,会给制单人发送“审批通过”的通知消息;单据如果审批不通过,则给参与流程的所有人员发送“审批不通过”的通知消息。2.5.1单据审批状态的回写单据审批状态在流程流转过程中需要回写到单据VO对象以及单据数据库表中。审批流流转过程中,需要把单据的审批状态回写到单据数据库表以及单据VO中。 必须让元数据实体实现业务接口IFlowBizItf。2.6流程治理中心提供对流程实例的监控(终止、挂起/复原);可根据流程定义查询正运行、已完成的流程实例、启动新流程实例。可查询所有已审批通过、审批中、提交但尚未审批的单据,而不仅仅是查询工作项。流程 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ——流程实例、活动执行时间的分析报表。对于系统中运行的审批流程实例,可监控它们现在所处的状态,并强制终止。同时还可查询到某单据的审批状态。当前操作员可查询的审批记录受审批查询权限(由[审批流用户治理]功能节点保护)的限制。图2流程实例查询图3流程图与工作项治理3业务流平台NC业务流平台设计思想是基于以下认识:业务流程是由单据组成的,而单据是由动作驱动的,动作又是由组件组成的;单据、动作以及组件可以由业务系统开发实现。NC业务流提供一种平台机制,在此可以根据用户的实际业务重新组织这些单据、动作及组件,包括每种单据的来源单据是什么、又驱动生成哪些单据、完成什么动作、动作生效的约束条件以及动作生效后将配置哪些组件等,以此更好满足企业个性化的需求。图4普通采购流程业务流程的最大特点是流程实例中上下游单据是不同的对象,id不同,单据类型可能相同也可能不同。业务流程引擎要处理上下游单据对象之间的数据映射、转换、合并或分单。工作流程中可以包含审批流程;业务流程中可以包含工作流程。3.1业务流程V6中业务流程为集团级,必须属于某个集团,各集团可以定义自己的业务流程。产品发版时可预置业务流程。比如集中采购流程:请购单->采购订单->到货单->入库单->采购发票->应对单。由功能点[客户化]-[流程平台]-[业务流程治理]保护。3.2流程配置流程配置定义了单据之间的动作驱动关系(推式)和来源参照关系(拉式)。业务流不是由流程实例来驱动流转,由于涉及到单据数据之间分拆和合并,难以监控到整个业务流的运行情形。一个业务流程由相互关联的多个单据组成,通过定义单据间来源与动作驱动关系来定义业务流程,由功能点[客户化]-[流程平台]-[流程配置]保护。项目说明:单据类型:该字段为参照挑选,参照内容为NC安装过的功能模块的所有业务单据。每个业务类型每张单据只能挑选一次。交易类型:该字段为参照挑选,参照内容为该行第一列挑选的单据业务单据类型下的交易类型。每个业务类型单据的每个交易类型只能挑选一次参照单据:勾选此项,表示该单据的业务数据可以参照其他单据(来源单据)的数据生成。勾选此项,在流程配置中才可配置该单据的来源单据,否则不可配置。自制单据:勾选此项,表示该单据的业务数据可以手工输入。上游消息:上游消息是下游单据完成某种处理之后,向上游单据的操作员发出的通知消息。下游消息:上游单据审批通过后,则单据可以被其下游单据作为参照,会给下游单据的参与者发送拉式消息。上游单据的推式动作执行完后会驱动下游单据的动作,并给下游单据的参与者发送推式消息。推式消息——流程配置中动作驱动如果产生了下游单据,且下游单据尚未走审批流,则给下游单据的负责人发送这种消息。消息处理方式为直接打开该单据UI进行保护。拉式消息——流程配置中如果某单据审批通过,则给下游单据的负责人发送这种消息。消息处理方式为打开该单据UI,并参照上游单据。目的业务流程:参照列出了当前登录公司和集团的业务流程。在定义VO交换规则时,新增系统变量DEST_BUSITYPE。实际交换时,该变量的取值=当前业务流程下该目的单据配置的值。【注意】参照单据、自制单据两项可以同时挑选,表示该单据在本业务流程中既可以参照来源单据生成单据数据,也可以手工制单。但此两个选项必须挑选其一。3.2.1参与者配置设置下游消息的接收者为该组织中属于该角色的相关用户。如果用户注册了IPfPersonFilter2接口的实现类,则优先使用此过滤器返回用户PK数组,详见3.6.103.2.2单据来源设置是对当前单据类型的数据来源单据进行定义的界面。被定义为当前单据来源单据的业务单据,可以在业务流程中为当前单据提供业务数据(使用单据VO交换),以保持业务数据的一致性。在“单据来源配置”流程向导界面,单击“配置”,进入单据来源配置操作界面。在此操作界面中,用户可以设置来源单据并定义约束条件图2-3单据来源设置3.2.3动作执行前约束设置配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生前需要进行的条件检查。若发生的业务满足定义的条件,则该单据动作将被执行,否则不答应执行。流程配置通过本步骤,即可实现对当前业务环节的事前控制。图5动作约束配置3.2.4动作执行后约束设置配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生后进行的条件检查。若业务发生后满足定义的条件,则流程将连续执行,否则不答应此动作执行。流程配置通过本步骤,即可实现对当前业务环节的事后控制。图2-5动作约束后配置项目说明:见3.2.4动作约束前配置。3.2.5动作事件控制配置在“动作事件控制配置”流程向导界面,单击“配置”,进入动作事件控制配置。单击挑选左侧单据动作,右侧列示该动作的代码,可以手工编写代码,也可以通过“应用函数”、“常用语法”、“数据类型”、“VO类型定义”来编写代码。图2-6动作控制配置项目说明:应用函数:挑选应用函数,可以将直接将NC业务单据的函数插入到单据动作中。常用语法:提供了JAVA标准语法的快速挑选。数据类型:包括JAVA标准数据类型及NC定义的各种数据类型。VO类型定义:包括NC业务单据的VO类型。3.2.6动作驱动配置图2-7消息驱动配置项目说明:目的单据:在当前单据动作完成时,将要产生动作的单据。操作员相关:挑选与操作员或组有关,则该动作仅在所挑选的操作员或组执行时,才会“推”式生成目的单据的动作。动作:参照挑选,挑选目的单据可以“推”式生成的动作,该类动作在单据动作治理中被定义为“推式动作”3.2.7上游消息配置图2-7上游消息配置3.2.8VO交换用于定义该业务流程中,不同单据(或交易)类型之间的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交换*@paramsourceBillType源单据类型PK*@paramdestBillType目的单据类型PK*@paramsourceBillVO源单据聚合VO*@return目的单据聚合VO*@throwsException*/publicstaticAggregatedValueObjectrunChangeData(StringsourceBillType,StringdestBillType,AggregatedValueObjectsourceBillVO)throwsBusinessException批量交换调用方法/***运行前台VO数组交换*@paramsourceBillType源单据类型PK*@paramdestBillType目的单据类型PK*@paramsourceBillVOs源单据聚合VO数组*@return目的单据聚合VO数组*@throwsException*/publicstaticAggregatedValueObject[]runChangeDataAry(StringsourceBillType,StringdestBillType,AggregatedValueObject[]sourceBillVOs)throwsBusinessException3.3.3后台交换调用PfUtilTools中的方法单张单据VO交换调用方法/***进行VO交换*@paramsrcTranstype源交易类型PK*@paramdestTranstype目的交易类型PK*@paramsourceBillVO源单据聚合VO*@paramparaVo工作流参数VO*@return目的单据聚合VO*@throwsBusinessException*/publicstaticAggregatedValueObjectrunChangeData(StringsrcTranstype,StringdestTranstype,AggregatedValueObjectsourceBillVO,PfParameterVOparaVo)throwsBusinessException批量交换调用方法/***运行数据交换类(VO数组)*@paramsourceBillType源单据类型PK*@paramdestBillType目的单据类型PK*@paramsourceBillVOs源单据聚合VO数组*@paramparaVo工作流参数VO,仅用于获取一些系统变量*@return目的单据聚合VO数组*@throwsBusinessException*/publicstaticAggregatedValueObject[]runChangeDataAry(StringsourceBillType,StringdestBillType,AggregatedValueObject[]sourceBillVOs,PfParameterVOparaVo)throwsBusinessException3.3.4单据VO交换前后处理接口由元数据实体实现业务接口IVoChangeAdjustItf。3.4参照制单需要进行参照制单的交易类型,需要在流程配置首页挑选“参照制单”选项。在流程配置向导中的单据来源设置界面是对当前单据类型的数据来源单据进行定义。被定义为当前单据来源单据的业务单据,可以在业务流程中为当前单据提供业务数据(使用单据VO交换),以保持业务数据的一致性。调用PfUtilClient里的方法。3.4.1获得业务类型用于获取某单据类型配置的所有业务类型(流程),以便用户可以挑选不同的业务流程。publicstaticvoidretBusinessBtn(ButtonObjectinoutBoBusiness,StringgroupId,StringbillType)功能:返回指定公司、某单据类型配置过的所有业务类型,并作为“业务类型”菜单按钮的子按钮。子按钮的tag被赋值为“业务类型PK”。参数说明:参数名含义及取值inoutBoBusiness待填充的“业务类型”菜单按钮groupId集团PKbillType单据类型PK3.4.2参照制单获得“新增”子按钮获得某业务类型下,该单据所配置的来源单据,以便参照制单。/***为"新增"按钮添加子菜单按钮*
  • 这些子菜单按钮即为可参照的来源单据*
  • 获得某单据类型(或交易类型)在某业务类型下配置的所有来源单据类型*@paramboAdd"新增"按钮*@paramgroupId公司PK*@parambillOrTranstype当前单据类型(或交易类型)PK*@paramboBusiness"业务类型"按钮(为空时添加与该单据类型(或交易类型)相关的所有业务流程下的来源单据类型)*@paramincludeBillTypebillOrTranstype为交易类型时候,是否返回所属单据类型的来源*/publicstaticvoidretAddBtn(ButtonObjectboAdd,StringgroupId,StringbillOrTranstype,ButtonObjectboBusiness,booleanincludeBillType)功能:返回指定公司、单据类型、业务类型的来源单据类型,并作为“增加”菜单按钮的子按钮。子按钮的tag被赋值为“单据类型PK:业务类型PK”。当busitype为空时则添加所有与此单据类型相关的业务类型下的来源单据类型publicstaticvoidretCopyBtn(ButtonObjectboCopy,StringcorpId,StringbillOrTransype,booleanincludeBillType)功能:为按钮boCopy添加子菜单按钮,获得该单据在所有相关业务类型下为自制单据的按钮,子按钮的tag被赋值为“MAKEFLAG:业务类型PK”。/***返回某单据类型(或交易类型)某动作组的所有动作,并作为子按钮填充*@paramboElse其他按钮*@parambillType单据类型(或交易类型)PK*@paramactionStyle动作组编码*/publicstaticvoidretElseBtn(ButtonObjectboElse,StringbillType,StringactionStyle)功能:返回某单据类型(或交易类型)某动作组的所有动作,并作为子按钮填充子按钮响应1.如果某单据类型配置为“自制单据”,则会显现“自制单据”的子菜单。2.对于通过平台获取的来源单据按钮,可以一种统一的方式来处理响应。publicstaticvoidchildButtonClicked(ButtonObjectbtnObj,StringpkGroup,StringpkOperator,StringcurrentTransType,Containerparent,ObjectuserObj,StringsourceBillId)功能:主要是对单据来源子菜单的响应。包括:1、查询来源单据;2、显示来源单据,并进行挑选;3、获取挑选的来源单据;4、单据VO交换。参数说明:参数名含义及取值bo点击的单据来源子菜单按钮groupId集团PKpkOperator操作员PKcurrentBillType当前单据类型PKparent父窗体userObj用户对象sourceBillId来源单据id(如果传递,则直接打开该单据)3.5动作驱动在BS端动作处理的过程中,在执行完动作脚本后,根据其返回值的不同可能会进行动作驱动——依次执行被驱动的单据动作,同时如果被驱动动作编码为“SAVE”或“EDIT”结尾,还尝试启动审批流。如果为“START”则尝试启动工作流。比如动作驱动:30_APPROVE->7D_PUSHSAVE           7D_APPROVE          4F_SAVE          5G_NIKE 执行完7D_PUSHSAVE之后,如果启动了审批流,仍旧遍历被驱动的动作,但不会执行同单据类型的动作。也就是说,仍旧会执行4F_SAVE和5G_NIKE动作脚本,但不会执行7D_APPROVE。不执行动作驱动的情形:动作脚本返回值为IWorkFlowRet。动作脚本返回值为Object[],且Object[0]类型为IWorkflowBatch,并指明了不进行动作驱动。当前动作非单据类型注册的终止动作。3.5动作处理见2.4节。3.6业务流相关接口3.6.1动作执行后返回界面的初始化接口在前台通过PfUtilClient调用单据动作,动作执行完成后,如果返回值为nc.vo.pub.pf.PfUtilActionVO对象,则会显示UI界面。并根据该返回值中的信息进行界面初始化。nc.ui.pub.pf.IinitDatapublicinterfaceIInitData{publicvoidinitAccountData(StringdataSourceName)throwsInitDataException;publicvoidinitCorpData(StringpkCorp)throwsInitDataException;}nc.ui.pub.pf.IinitData2publicinterfaceIInitData2extendsIInitData{/**初始化dlg和panel界面*/publicvoidinitCorpData(CreateCorpContextcreateCorpContext)throwsInitDataException;}3.6.2参照制单查询UI初始化接口该接口为实现自定义查询条件(单据参照录入时弹出的查询条件DLG)的类必须实现该接口,被方法PfUtilClient.childButtonClicked()调用。实现该接口的类必须注册在单据参照表pub_billtobillrefer的字段queryTemplateId中,并且必须用<>括起来。nc.ui.pub.pf.IinitQueryDatapublicinterfaceIinitQueryData{/***@parampkCorp公司PK*@paramoperator操作员PK*@paramfunNode功能节点编码*@parambusinessType业务类型PK*@paramcurrentBillType当前单据类型PK*@paramsourceBilltype来源单据类型PK*@paramuserObj传入用户对象?*@throwsException*/voidinitData(StringpkCorp,Stringoperator,StringfunNode,StringbusinessType,StringcurrentBillType,StringsourceBilltype,ObjectuserObj)throwsException;}nc.ui.pub.pf.IinitQueryData2publicinterfaceIinitQueryData2{/***@parampkCorp公司PK*@paramoperator操作员PK*@paramfunNode功能节点编码*@parambusinessType业务类型PK*@paramcurrentBillType当前单据类型PK*@paramsourceBilltype来源单据类型PK*@paramnodeKey节点标识?*@paramuserObj传入用户对象?*@throwsException*/voidinitData(StringpkCorp,Stringoperator,StringfunNode,StringbusinessType,StringcurrentBillType,StringsourceBilltype,StringnodeKey,ObjectuserObj)throwsException;}产品组可以自己定制的来源单据展现对话框,必须用<>括起来,需继承AbstractReferQueryUI,如果null就用通用的BillSourceDLG,注册在单据参照表pub_billtobillrefer的字段referclassname中。3.6.3业务类型调整接口在流程配置功能点,对流程配置表pub_billbusiness进行新增、删除或更新时需要调用业务处理类。该类注册在单据类型表bd_billtype的def1字段。nc.bs.pub.pf.IsaveAfterBusi/**增加完单据后根据pfPoArriveVO更新产品组的业务数据*/voidaffectBusi(nc.vo.pub.pf.PfPOArriveVOvo)throwsBusinessException;/**相关单据类型,返回例如:"'30','20'"*/StringgetRelaBillType();3.6.4单据VO查询接口流程平台需要根据一些条件查询单据VO,主要应用于邮件审批和参照制单中。流程平台提供查询单据主表VO的方法:CircularlyAccessibleValueObject[]IPFConfig.queryHeadAllData(StringbillType,//单据类型PKStringbusinessType,//业务类型PKStringwhereString)//主表查询条件也提供了查询单据子表VO的方法:CircularlyAccessibleValueObject[]IPFConfig.queryBodyAllData(StringbillType,//单据类型PKStringkey,//主表主键StringbodyCondition)//子表查询条件【注意】必须让元数据实体实现业务接口IHeadBodyQueryItf。3.6.5动作处理非常接口UI动作处理过程中如果显现特定的非常,还需进行额外的处理。nc.vo.pub.pf.IpfRetExceptionpublicinterfaceIPfRetException{/**返回该非常是否进行处理0--不进行处理,1--进行处理*/intgetBusiStyle();/**返回后台处理的业务对象*/ObjectgetObject();/**返回处理非常的UI类(该类必须实现接口IRunClassAfterException)*/StringgetProcClass();}nc.ui.pub.pf.IrunClassAfterExceptionpublicinterfaceIRunClassAfterException{/**返回客户端修改的业务数据对象*/Objectgetobj();/**客户端的业务处理*/voidrunClass(Containerparent,Objectobj)throwsException;3.6.6动作驱动前的校验接口由审批流检查类实现,并把类名注册在单据表来源单据的bd_billtype.checkclassname字段,执行动作驱动时根据实现决定是否执行驱动publicinterfaceIActionDriveChecker{/***校验当前驱动是否答应*@paramsrcBilltype来源单据类型PK*@paramsrcBillVo源单据VO*@paramsrcAction来源动作编码,比如"APPROVE"等*@paramdestBilltype目的单据类型PK*@paramdrivedAction被驱动动作编码,比如"WRITE"等*@returntrue答应;false不答应*@throwsBusinessException*/booleanisEnableDrive(StringsrcBilltype,AggregatedValueObjectsrcBillVO,StringsrcAction,StringdestBillType,StringbeDrivedActionName)throwsBusinessException;}3.6.7动作驱动单据VO交换前的检查接口由审批流检查类实现,并把类名注册在单据表bd_billtype.checkclassname字段,动作驱动时后台VO交换根
  • 本文档为【V流程平台开发文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
    该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
    [版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
    本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
    网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    下载需要: 免费 已有0 人下载
    最新资料
    资料动态
    专题动态
    个人认证用户
    小吴
    多年维修电工经验
    格式:doc
    大小:2MB
    软件:Word
    页数:0
    分类:教育学
    上传时间:2021-03-04
    浏览量:10