红皮书-1.0流程平台技术新一代云ERP解决方案2目录一.工作流与BPM..51.1.信息系统的演变..51.2.企业业务流程.51.3.工作流.61.4.BPM.6二.流程平台..82.1.单据元模型.92.1.1.单据类型..92.1.2.单据动作及脚本..122.1.3.单据函数.152.1.4.单据UI..162.1.5.单据项目.162.1.6.单据VO对照.172.2.业务流平台..182.2.1.业务类型.192.2.2.流程配置.192.2.3.单据VO交换.232.3.审批流平台..252.3.1.流程定义.252.3.2.工作项.292.3.3.流程结果与单据状态..302.3.4.反向流转.332.3.5.流程监控.332.3.6.短信审批.34新一代云ERP解决方案32.4.消息中心..342.4.1.展现.352.4.2.息类型.36三.开发规范.373.1.平台缓存数据..373.2.动作处理..383.2.1.UI端调用-PfUtilClient..403.2.2.BS端调用..453.2.3.返回值.473.3.动作脚本..473.3.1.执行脚本编写.473.3.2.返回值.503.4.审批流平台..513.4.1.审批状态回写与查询..513.4.2.送审.523.4.3.审批.543.4.4.弃审.573.4.5.删除.593.4.6.审批流相关接口..593.5.业务流平台..653.5.1.动作驱动.653.5.2.单据VO交换.663.5.3.单据UI菜单填充与响应..673.5.4.业务流相关接口..71四.开发流程.76五.附录..77新一代云ERP解决方案45.1.U8cloud1.0短信服务.775.1.1.应用模式.775.1.2.短信发送.795.1.3.短信接收.795.2.U8cloud1.0动态组织..805.2.1.实现类图.805.2.2.注册.81新一代云ERP解决方案5一.工作流与BPM1.1.信息系统的演变从简单的办公信息系统,到事务处理系统,再到复杂的知识管理和决策支持系统,我们可以看到,越来越多的通用任务已被从应用程序中分离出来并放入分解的管理系统中。图1说明了这种演进。ApplicationOperatingSystemApplicationOperatingSystemWFMSUIMSDBMS图1通用功能分解1975-1985分离的应用信息系统由被分解的应用组成,每个应用都有自己的数据库和定义。1985-1995数据库管理将数据管理从应用程序中抽取出来。关系数据库的出现。1995-2002用户界面管理将用户界面从应用程序中抽取出来。人机工程。1998-2005工作流管理将业务过程从应用程序中抽取出来。跨企业,跨系统。1.2.企业业务流程企业的经营过程是指企业为了实现一定的经营目标,在组织机构和人员的参与下,利用企新一代云ERP解决方案6业资源(设备、计算机软硬件等),按照预先确定的业务规则,在参与者之间进行文档、信息、任务的传递与处理。企业的经营管理也是遵循一定规律的,其业务也需要按照一定的业务规则运行。业务按照一定的业务规则运行或处理就形成了企业的业务流程。图2企业经营过程1.3.工作流Theautomationofabusinessprocess,inwholeorpart,duringwhichdocuments,informationortasksarepassedfromoneparticipanttoanotherforaction,accordingtoasetofproceduralrules(WFMC).工作流是一个能够完全或部分自动执行的业务过程,根据一系列过程规则,文档、信息或任务能够在不同参与者之间传递和处理(WFMC)。比如保险索赔、抵押申请、税收申报、产品设计生产过程等。工作流管理系统(WorkflowManagementSystem,WFMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中的任务(活动)以及群体成员之间的信息交互。强调的是业务过程的自动化。1.4.BPM业务过程管理(Businessprocessmanagement),非企业绩效管理(BusinessPerformanceManagement)。包括了过程建模、过程自动化、企业应用集成、业务活动监控与优化的全生新一代云ERP解决方案7命周期。强调的是业务过程的分析与优化。比较常用的分析项为:1.业务流程的瓶颈在哪?2.给定时间内有多少案例(Case,也可称作实例)可被处理?3.改变案例数量后,需要增加多少资源?4.案例的平均完成时间?新一代云ERP解决方案8二.流程平台U8cloud流程平台是对企业的流程进行建模的平台。其工作流模型由四部分组成,分别是过程模型、组织模型、功能模型以及信息模型(工作流相关数据)。过程模型用来定义工作流的过程逻辑,包括组成工作流的所有活动以及活动之间的依赖关系。组织模型用来定义企业人员的组织结构,包括几种不同形式的组织元素以及每种组织元素内部的递阶层次关系。功能模型说明企业中需要完成的工作或者任务是什么,或者说功能模型说明了企业的目标是通过哪些具体的功能活动来实现的。它确定了企业业务功能的逻辑结构和相互关系。信息模型说明了企业处理的业务对象中所包含的信息以及业务对象间的关系。过程模型采取基于活动网络图的过程模型,与其他的过程模型(如事件驱动过程链EPC、Petri网、语义-行为模型等)比较,活动网络图具有直观自然、可读性好的特性。U8cloud流程平台包括业务流程和审批流程两个部分。WorkflowFrameworkProcessDefinitionWorkListAdministration&AuditBusinessFlowDesignerApprovalFlowDesignerExchangeEngineDataMappingRuleEngineInvokedApplicationsEmailScriptsBusinessServiceWebServiceOrganizationModelMetadataRepositoryApplicationClientApplicationModelWorkflowEngine图3业务流程框架新一代云ERP解决方案9整个业务流程框架的核心是工作流引擎。它负责解释执行由业务流设计器和审批流设计器设计的流程定义。流程定义可以引用U8cloud系统建立的功能模型、组织模型以及各种元数据。U8cloud用户可从工作列表中查看到工作流引擎分配给他的工作项。通过单据动作(比如提交、审批、弃审、驳回等)来处理工作项,从而驱动流程流转。工作流引擎在流转过程中还可以调用各种自动应用,包括电子邮件、脚本以及Web服务等。业务流程框架还提供了管理监控工具对运行中的流程实例进行状态查询和管理。对于流转过程中涉及到的数据交换,工作流引擎将调用交换引擎根据规则进行数据映射。2.1.单据元模型业务单据是描述企业业务信息的载体,是对业务数据的抽象。通过业务单据,可以清楚地反映企业的业务发生情况。企业中如请购单、采购订单、报销单、付款单等均为业务单据。在U8cloud系统中,一张业务单据的实现包括许多内容,比如单据类型、单据VO、单据UI、单据动作等。我们把这些用于描述某单据的信息统称为单据元模型。其组成如图4所示。单据物理模型(数据库表)单据类型单据动作单据函数单据VO对照单据UI单据项目单据VO模型图4单据元模型2.1.1.单据类型单据类型是对单据的分类。单据的元信息都是基于单据类型来定义。在定义单据类型时,单据类型必须属于某个系统类型。单据类型的注册信息比较多,由功能点[企业建模平台]-[二次开发平台]-[单据管理]-[单据类型管理]维护,如图5所示,一般由各个产品组预置。新一代云ERP解决方案10图5单据类型管理项目说明:✓类型代码:手工输入,最大长度为4个字符,可以输入字母和数字,不允许重复。✓类型名称:业务单据名称,手工输入,不允许重复。✓单据大类:表示单据类别(应收应付101---),用于区分单据类型的主子关系(参见1.1.2节)。✓单据对应类:标识单据类型的关联UI,一般为关联的审批维护类功能节点编码。✓主表参照的固定条件语句:被其它单据参照时自己填写的固定的SQL条件语句。✓参照查询对应的DMO类:用于查询单据VO数据的业务逻辑类。必须实现接口nc.bs.pub.pf.IQueryData以及nc.bs.pub.pf.IQueryData2(参见第三章5.4.6节)。✓审批流检查类:通过编写审批流检查类,并在该类中实现审批流相关接口,来达到使用审批流管理业务单据以及控制审批流行为的目的(参见第三章)。✓会计平台类:财务会计平台所需的类。✓是否为根节点:针对单据大类,用于实现单据主子关系。✓是否发送会计平台:用于财务会计平台。✓节点编号:标识单据类型的关联UI,一般为关联的制单功能节点编码。✓自定义1(def1):流程配置的单据业务关联(业务流程)更新后的处理类。✓自定义2(def2):存取会计平台的产品组自定义查询。✓自定义3(def3):动作执行前的UI端处理类。如果单据类型关联了多个功能节点,该类还需要实现节点查找接口(参见第三章4.6节)。新一代云ERP解决方案11对于流程平台产生的工作项,统一使用打开功能节点的方式来处理。这需要单据类型的节点注册信息有所改变:字段说明示例bd_billtype.nodecode制单节点编码110180bd_billtype.classname审批或维护节点编码<Y>110190需要走审批流<N>110190不需要走审批流110190<X>110190不控制该单据类型关联的节点打开权限所有功能节点UI类必须实现UI关联接口(参见4.6.4节)。(1)系统类型对业务系统的分类。每个系统必须属于某个模块。由功能点[企业建模平台]-[二次开发工具]-[会计平台]-[系统类型定义]维护,如图6所示。图6系统类型定义项目说明:✓系统类型编码:自定义输入,禁止重复。新一代云ERP解决方案12✓系统类型名称:自定义输入,禁止重复。✓是否专项管理:勾选此项,表示此业务系统将向管理会计平台传送数据。✓是否发送到会计平台:勾选此项,表示此业务系统将向财务会计平台传送数据,在财务会计平台的凭证模板节点,可以对此业务系统的单据进行操作。✓系统使用的业务类型:在进行凭证模板或成本单据模板定义时,该系统的业务单据使用的业务类型档案。✓模块名:标识该系统所属的产品模块。对应于U8C_HOME/modules/下的目录名。✓相关节点编码:标识哪些功能节点号与产品模块的关联关系。一般用于参数设置中。(2)主子关系单据类型之间可存在主子关系,这通过isroot和billstyle两个属性来判定。isRoot=YisRoot=Nbillstyle>100系统类型ECF1(Y)F2(Y)D1D2billstyle=102billstyle=103图7单据类型主子关系如图7所示,D1的父单据类型为F1;D2的父单据类型为F2。2.1.2.单据动作及脚本是对单据业务处理行为的抽象,具有可定制的动作脚本。业务单据正是通过单据动作与流程平台进行交互的,从而驱动流程的流转。可对应于单据UI上的某个菜单。由功能点[企业建模平台]-[二次开发工具]-[单据管理]-[单据动作管理]维护,如图8所示。新一代云ERP解决方案13图8单据动作管理项目说明:✓动作选择:提供四种动作各供选择:保存、审核、推式动作、其它。保存、审核是单据的基本动作,动作代码有严格规定;推式动作表示该动作可被其他单据推式驱动。✓动作编码:当前单据动作的编码。注意,当动作选择为“保存”时,动作编码必须为以“SAVE”结尾;而当动作选择为“审核”时,动作编码必须为以“APPROVE”开头。长度限制为20个英文字符。✓动作名称:当前单据动作的显示名称✓动作执行前提示:如此处输入文字,则在该动作被触发时,会弹出一个带有提示性文字的对话框,如:是否保存?✓动作控制:提供三个选项:动作可配置、进行驱动配置、进行约束检查。勾选“动作可配置”,表示该动作可在流程配置中进行配置;勾选“进行驱动配置”,则该动作在流程配置中可以对其他单据动作进行推式操作,驱动其他单据;勾选“进行约束检查”,则此动作要根据业务流程的配置在执行前进行条件检验,满足条件动作才执行,否则就不执行。新一代云ERP解决方案14图9单据动作执行脚本单据动作的处理统一由平台API来调用。详见第三章第3节。图10单据动作组管理对单据动作的分组。由功能点[企业建模平台]-[二次开发平台]-[单据管理]-[单据动作组管理]维护,如图10所示。新一代云ERP解决方案152.1.3.单据函数图11单据函数(组件)管理服务于单据的业务功能的抽取,是进行业务逻辑处理的组件。可用于动作脚本和条件判定。由功能点[企业建模平台]-[二次开发平台]-[流程配置]-[数据交换管理]维护,如图11所示。项目说明:✓函数说明:函数所实现的功能的说明性文字,建议尽量说明清晰,以便于系统实施。如果以“<>”括起来,表示自定义函数。✓返回类型:该功能函数返回数据的类型。✓函数类名称:功能函数所属的全路径类名。✓函数方法名称:该函数在类中所对应的方法名称。✓函数参数:该函数正确调用所需的参数。参数的格式见下。✓是否组件:标识该方法是否为组件。单据组件一般是没有返回值的一段业务处理逻辑,它不可应用于审批条件、动作约束、工作项配置中。(1)参数格式函数参数以逗号“,”隔开,每个参数具有特定的格式。参数分为运行参数、属性参数和VO参数三种。新一代云ERP解决方案16格式示例:nc.vo.pub.AggregatedValueObject[]:01nc.vo.pub.AggregatedValueObject:01,OBJuser:OBJECTnc.vo.po.OrderVO[]:21&sAction:STRING,nc.vo.pub.AggregatedValueObject:01注意:VO参数和属性参数的实际值由工作流上下文在运行时赋予。运行参数可在动作脚本中赋值。(2)返回值函数方法返回值支持的类型有:UFBooleanStringIntegerUFDouble2.1.4.单据UI单据的界面展现模型,包括四大模板以及UI工厂等。每个单据还与一个维护它的功能节点对应,这个信息需要注册到单据类型中(参见1.1节)。2.1.5.单据项目是对单据业务数据的描述。一般与单据的VO模型对应。由功能点[企业建模平台]-[二次开新一代云ERP解决方案17发平台]-[单据管理]-[单据项目管理]维护,如图12所示。图12单据项目管理项目说明:✓属性名:单据VO模型中的属性名称。✓多语资源ID:属性的多语ID号。✓专项类型:属性的数据类型。✓默认名称:属性的中文名称。✓引用档案:属性的引用档案。2.1.6.单据VO对照图13单据VO对照新一代云ERP解决方案18描述了流程平台所需的信息(比如制单人、审批人、单据ID等)在单据VO模型上的对应关系。由功能点[企业建模平台]-[二次开发平台]-[单据管理]-[单据VO对照管理]维护,如图6所示。项目说明:✓主子VO类名称:单据VO模型中的主子VO类名称。✓单据VO类名称:单据聚合VO类名称。✓主表的关键字段:单据物理模型中主表的主键字段。✓子表编码:?✓审批人:单据VO模型中表示审批人的属性名称。✓制单人:单据VO模型中表示制单人的属性名称。✓单据ID:单据VO模型中表示单据ID的属性名称。✓业务类型:单据VO模型中表示业务类型的属性名称。✓对于数据库表:注册单据主子物理表名称。✓单据编号:单据VO模型中表示单据号的属性名称。2.2.业务流平台图14普通采购流程U8cloud业务流平台进行了简化,其设计思想是基于以下认识:业务流程是由单据组成的,而单据是由动作驱动的,动作又是由组件组成的;单据、动作以及组件可以由业务系统开发实新一代云ERP解决方案19现。U8cloud业务流提供一种平台机制,在此可以根据用户的实际业务重新组织这些单据、动作及组件,包括每种单据的来源单据是什么、又驱动生成哪些单据、完成什么动作、动作生效的约束条件以及动作生效后将配置哪些组件等,以此更好满足企业个性化的需求。2.2.1.业务类型对业务流程的分类。各个公司可定义自己的业务流程,支持集团业务类型,即在集团定义业务类型,然后各个子公司使用。比如集中采购流程:请购单->采购订单->到货单->入库单->采购发票->应付单。由功能点[企业建模平台]-[流程平台]-[业务流程管理]维护,如图15所示。图15业务类型管理2.2.2.流程配置图16流程配置新一代云ERP解决方案20一个业务流程由相互关联的多个单据组成,通过定义单据间来源与动作驱动关系来定义业务流程。项目说明:✓单据代码:该字段为参照选择,参照内容为U8cloud安装过的功能模块的所有单据类型。每个业务类型每张单据只能选择一次。✓单据名称:显示选择的单据代码的名称,不能编辑,选择单据代码后自动带入✓参照单据:勾选此项,表示该单据的业务数据可以参照其他单据(来源单据)的数据生成(将进行单据VO交换)。勾选此项,在流程配置中才可配置该单据的来源单据,否则不可配置。✓自制单据:勾选此项,表示该单据的业务数据可以手工输入。✓权限控制:设置每个单据有权限的参与者。在单据UI界面,业务类型下拉菜单中,只有有权限的用户才可看到该业务类型(参见第三章5.3.1节)。同时还控制了下游消息的接收者范围。✓下游消息:上游单据审批通过后,会给下游单据的参与者发送拉式消息。上游单据的推式动作执行完后会驱动下游单据的动作,并给下游单据的参与者发送推式消息。流程配置由5个向导工具组成,分别阐述如下:(1)单据权限配置配置业务流程中每个单据有权限的参与者。用于业务类型的权限控制,以及下游消息的接收者范围。图17单据权限配置新一代云ERP解决方案21(2)单据来源配置是对当前单据类型的数据来源单据进行定义的界面。被定义为当前单据来源单据的业务单据,可以在业务流程中为当前单据提供业务数据(使用单据VO交换),以保持业务数据的一致性。图18单据来源配置(3)动作约束配置配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生前需要进行的条件检查。若发生的业务满足定义的条件,则该单据动作将被执行,否则不允许执行。流程配置通过本步骤,即可实现对当前业务环节的事前控制。新一代云ERP解决方案22图19动作约束配置(4)动作事件控制配置为业务流程配置个性化动作脚本。在这里,用户可以针对不同业务类型对公共的单据动作执行脚本(参见第三章第3节)进行定制。使单据动作按照自己定义的规则来执行,以此来完善企业的业务流程,并对当前业务环节实现事中控制。图20动作脚本定制(5)动作驱动配置新一代云ERP解决方案23配置单据之间的动作驱动关系。具体参见第三章5.1节。左树列示了当前单据在单据动作管理中被定义为“进行驱动配置”的单据动作(参见1.2节)。图21动作驱动配置项目说明:✓目的单据:在当前单据动作完成时,将要进行动作处理的单据。✓操作员相关:选择与操作员或角色有关,则该动作仅在所选择的操作员或角色执行时,才会驱动目的单据的动作。✓动作:参照选择,选择目的单据被驱动的动作,该类动作在单据动作管理中被定义为“推式动作”(参见1.2节)。2.2.3.单据VO交换单据类型之间存在相互转换的需求,平台提供了定义单据VO模型间的相互转换规则的机制。单据之间的上下游关系保存在表pub_billtobillrefer中,转换规则作为class文件保存,比如“nc.ui.pf.changedir.CHG21TO30”、“nc.bs.pf.changedir.CHG21TO30”等。单据VO交换可生在前后或后台,并在交换后可进行特殊的业务处理。详细见第三章5.2节。新一代云ERP解决方案24图22单据交换信息项目说明:✓被参照单据类型:来源单据类型。✓用于显示来源单据的UI类:参照来源单据时,使用的来源单据显示UI。默认为“nc.ui.pub.pf.BillSourceDLG”。✓用于查询来源单据的模板ID或UI类:查询来源单据需要使用的查询模板ID或UI。格式有“<nc.ui.po.pub.PoToPiQueDLG>”、“SO30TO31000000000000”和NULL(默认查询模板)。✓用于查询来源单据的节点标识:被参照的来源单据的Nodekey,用于选择查询模板。图23单据交换规则新一代云ERP解决方案25单据间的交换规则支持简单属性和公式定义,以及额外的交换后业务处理。2.3.审批流平台审批流平台为单据的审批处理提供平台支持。基于任务驱动的执行引擎使得流程流转与用户交互分离开来,具有更强的健壮性。支持分支/汇总(Split/Join)、优先级(Priority)、子流程(Subflow)、可指派、抢占/会签、消息配置、代理人、弃审等流程特性。2.3.1.流程定义U8cloud1.0的审批流定义模型遵循WfMC的XPDL1.0过程定义规范,具有严格的语义和丰富的描述能力。图24审批流定义-浏览新一代云ERP解决方案26图25审批流定义-设计审批流定义按照单据类型(+业务类型)进行了分类。用户可以基于单据类型定义审批流,也可以基于单据类型+业务类型(如果配置了业务流程)来定义审批流。一个单据类型(+业务类型)下可以定义多个审批流,这里可以把单据类型(+业务类型)理解为过程包的概念。(1)流程模型过程(Process)由许多被执行的活动和一系列决定活动执行次序的转移构成。活动(Activity)审批流程中的一个个步骤统称为活动(或任务),包括制单活动、审批活动、虚活动、子流程。第一个拖放到审批流设计器中的参与者所属的活动为制单活动。虚活动主要用于对分支/汇总进行建模。子流程可实施流程重用。参与者(Participant)活动的一个属性,即活动的执行者,是对系统中组织模型的引用。目前支持『操作员』、『角色』和『动态组织』三种类型的参与者(HR岗位就是一种动态组织实现,具体扩展机制可参考附录)。第一个拖放到审批流设计器中的组织元素为制单活动的参与者。在设计器中,活动和参与者由同一个图元来展现。转移(Transition)活动间的流转,是两个活动间的有向连接。每个转移都具有转移条件(Condition),只有满足条件的转移才可流转。转移条件表达式除了审批结果表达式、单据函数表达式,单据项目表达式。每个转移还具有优先级(Priority),优先级高的转移分支将被优先选择。分支/汇总(Split/Join)新一代云ERP解决方案27活动具有前驱条件(Join)和后继条件(Split)两个属性,可通过Split/Join-AND/XOR属性组合为过程的选择、并行结构进行建模。加上顺序和循环,这四个基本结构就可描述大多数过程结构。同时,工作流引擎还支持两种反向流转模式:驳回和弃审(参见3.4节)。抢占和会签审批活动的一个属性。会签:只有审批活动的参与者中所有用户完成审批后,该审批活动才能结束。抢占:只要审批活动的参与者中任何一人完成审批后,该审批活动即结束。可指派审批活动的一个属性。如果审批活动定义了可指派属性,则该审批活动的实际执行者需要从其参与者中手工选择。指派的分支优先被选择。流程限定审批活动的一个属性。用于设定前后两个活动的参与者之间的关系。支持“同公司”和“同部门”两种类型。只可为参与者为『角色』和『动态组织』的审批活动设置流程限定属性。代理人(Agent)审批活动的一个属性。制单活动不可设置代理人;只可为参与者为『操作员』类型的审批活动设置多级代理人;代理人只可为『操作员』。消息配置(MessageConfig)审批活动的一个属性。可为每个审批活动配置额外的消息通知机制。即在满足触发条件时,以消息、短信、邮件方式通知相关人员。可以为每个审批活动配置额外的消息发送机制。对于制单活动,发送条件必须为“无条件”。对于审批活动,发送条件可为“无条件”、“审核通过”和“审核不通过”三种(注:对于审批活动,“无条件”即该审批活动完成之后就发送)。在消息内容中我们可以使用宏表达式来获取一些业务相关数据。目前可从系统获取的宏对象变量仅有:operater==当前登录操作员PKvo==当前操作的单据VOvos==当前操作的单据VO数组paravo==当前单据的审批流参数VO新一代云ERP解决方案28参数VO可直接访问的变量列表。这样,在我们的宏表达式中可以直接引用这些对象变量,并调用这些对象的方法(注:完全支持Java语法)。比如:宏表达式含义%%paravo.m_billNo%%当前单据号%%vo.getParentVO().getAttributeValue(“dwbm”)%%当前单据VO中的某数据%%paravo.m_workFlow.getCheckNote()%%当前审批步骤的批语(2)增删改审批流程是基于单据类型(+业务类型)来定义的,由各个公司各自定义。选中某个单据类型(+业务类型),就可为其新增一个审批流程。一个单据类型(+业务类型)下不能存在两个同制单人的审批流程。如果某流程定义已经拥有了流程实例,则不允许删除。如果某流程定义已经拥有了流程实例,修改该定义后保存时会重新产生一个流程定义。原有的流程定义处于无效状态,不可再次编辑。(3)导入/导出在审批流定义-浏览界面,选中某个流程,可导出为本地XPDL文本文件。1.不导出包定义。2.一次只能导出一个流程。从本地XPDL文本文件导入流程定义到当前单据类型包下:新一代云ERP解决方案291.如果包定义不存在,则先新建包定义.