NCV5-流程平台技术红皮书

更新时间:2024-06-24 03:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

流程平台技术红皮书

NC-UAP 5.0

用友NC-UAP 2015-10-28

目 录

第一章

1. 2. 3. 4.

第二章

1.

1.1 1.2 1.3 1.4 1.5 1.6

2.

2.1 2.2 2.3

3.

3.1 3.2 3.3 3.4 3.5 3.6

第三章

1.

2.

2.1 2.2 2.3

3.

3.1

3.2

4.

4.1

4.2 4.3

工作流与BPM ........................................................................ 1

信息系统的演变....................................................................................... 1 企业业务流程........................................................................................... 1 工作流....................................................................................................... 2 BPM............................................................................................................. 2

流程平台 .................................................................................. 3

单据元模型............................................................................................... 4

单据类型 ................................................................................................................... 4 单据动作及脚本 ....................................................................................................... 7 单据函数 ................................................................................................................... 9 单据UI ................................................................................................................... 11 单据项目 ................................................................................................................. 11 单据VO对照 ......................................................................................................... 12

业务流平台............................................................................................. 13

业务类型 ................................................................................................................. 14 流程配置 ................................................................................................................. 15 单据VO交换 ......................................................................................................... 19

审批流平台............................................................................................. 21

流程定义 ................................................................................................................. 21 工作项 ..................................................................................................................... 25 流程结果与单据状态 ............................................................................................. 26 反向流转 ................................................................................................................. 28 流程监控 ................................................................................................................. 29 短信审批 ................................................................................................................. 30

开发规范 ................................................................................ 34

平台缓存数据......................................................................................... 34 动作处理................................................................................................. 35

UI端调用-PfUtilClient ........................................................................................... 37 BS端调用 ............................................................................................................... 41 返回值 ..................................................................................................................... 42

动作脚本................................................................................................. 42

执行脚本编写 ......................................................................................................... 43 返回值 ..................................................................................................................... 45

审批流平台............................................................................................. 46

审批状态回写与查询 ............................................................................................. 46 送审 ......................................................................................................................... 46 审批 ......................................................................................................................... 48

第 2 页

4.4 4.5 4.6 弃审 ......................................................................................................................... 51 删除 ......................................................................................................................... 53 审批流相关接口 ..................................................................................................... 53

5.

5.1 5.2 5.3 5.4

业务流平台............................................................................................. 59

动作驱动 ................................................................................................................. 59 单据VO交换 ......................................................................................................... 60 单据UI菜单填充与响应 ....................................................................................... 61 业务流相关接口 ..................................................................................................... 64

第四章 开发流程 ................................................................................ 70

附录 ........................................................................................................... 71

1.

1.1

1.2 1.3

NC5.0短信服务 ..................................................................................... 71

应用模式 ................................................................................................................. 71 短信发送 ................................................................................................................. 72 短信接收 ................................................................................................................. 73

第 3 页

第一章 工作流与BPM

1. 信息系统的演变

从简单的办公信息系统,到事务处理系统,再到复杂的知识管理和决策支持系统,我们

可以看到,越来越多的通用任务已被从应用程序中分离出来并放入分解的管理系统中。图1说明了这种演进。

ApplicationWFMSApplicationUIMSDBMSOperating SystemOperating System 图 1通用功能分解

1975-1985 分离的应用

信息系统由被分解的应用组成,每个应用都有自己的数据库和定义。 1985-1995 数据库管理

将数据管理从应用程序中抽取出来。关系数据库的出现。 1995-2002 用户界面管理

将用户界面从应用程序中抽取出来。人机工程。 1998-2005 工作流管理

将业务过程从应用程序中抽取出来。跨企业,跨系统。

2. 企业业务流程

企业的经营过程是指企业为了实现一定的经营目标,在组织机构和人员的参与下,利用企业资源(设备、计算机软硬件等),按照预先确定的业务规则,在参与者之间进行文档、信息、任务的传递与处理。

企业的经营管理也是遵循一定规律的,其业务也需要按照一定的业务规则运行。业务按照一定的业务规则运行或处理就形成了企业的业务流程。

第 1 页

图 2企业经营过程

3. 工作流

The automation of a business process, in whole or part, during which documents, information or tasks are passed from one participant to another for action, according to a set of procedural rules(WFMC).

工作流是一个能够完全或部分自动执行的业务过程,根据一系列过程规则,文档、信息或任务能够在不同参与者之间传递和处理(WFMC)。比如保险索赔、抵押申请、税收申报、产品设计生产过程等。

工作流管理系统(Workflow Management System,WFMS)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中的任务(活动)以及群体成员之间的信息交互。强调的是业务过程的自动化。

4. BPM

业务过程管理(Business process management),非企业绩效管理(Business Performance Management)。包括了过程建模、过程自动化、企业应用集成、业务活动监控与优化的全生命周期。强调的是业务过程的分析与优化。比较常用的分析项为:

1.业务流程的瓶颈在哪?

2.给定时间内有多少案例(Case,也可称作实例)可被处理? 3.改变案例数量后,需要增加多少资源? 4.案例的平均完成时间?

第 2 页

第二章 流程平台

NC流程平台是对企业的流程进行建模的平台。其工作流模型由四部分组成,分别是过

程模型、组织模型、功能模型以及信息模型(工作流相关数据)。过程模型用来定义工作流的过程逻辑,包括组成工作流的所有活动以及活动之间的依赖关系。组织模型用来定义企业人员的组织结构,包括几种不同形式的组织元素以及每种组织元素内部的递阶层次关系。功能模型说明企业中需要完成的工作或者任务是什么,或者说功能模型说明了企业的目标是通过哪些具体的功能活动来实现的。它确定了企业业务功能的逻辑结构和相互关系。信息模型说明了企业处理的业务对象中所包含的信息以及业务对象间的关系。 过程模型采取基于活动网络图的过程模型,与其他的过程模型(如事件驱动过程链EPC、Petri网、语义-行为模型等)比较,活动网络图具有直观自然、可读性好的特性。

NC流程平台包括业务流程和审批流程两个部分。

Business Flow DesignerApplication ModelProcess DefinitionApproval Flow DesignerInvoked ApplicationsEmailOrganization ModelScriptsBusiness ServiceWeb ServiceMetadata RepositoryWorkflow EngineAdministration & AuditApplication ClientExchange EngineData MappingWork ListWorkflow Framework图 3业务流程框架

Rule Engine

整个业务流程框架的核心是工作流引擎。它负责解释执行由业务流设计器和审批流设计器设计的流程定义。流程定义可以引用NC系统建立的功能模型、组织模型以及各种元数据。NC用户可从工作列表中查看到工作流引擎分配给他的工作项。通过单据动作(比如提交、审批、弃审、驳回等)来处理工作项,从而驱动流程流转。工作流引擎在流转过程中还可以调

第 3 页

用各种自动应用,包括电子邮件、脚本以及Web服务等。业务流程框架还提供了管理监控工具对运行中的流程实例进行状态查询和管理。对于流转过程中涉及到的数据交换,工作流引擎将调用交换引擎根据规则进行数据映射。

1. 单据元模型

业务单据是描述企业业务信息的载体,是对业务数据的抽象。通过业务单据,可以清楚地反映企业的业务发生情况。企业中如请购单、采购订单、报销单、付款单等均为业务单据。 在NC系统中,一张业务单据的实现包括许多内容,比如单据类型、单据VO、单据UI、单据动作等。我们把这些用于描述某单据的信息统称为单据元模型。其组成如图4所示。

单据动作 单据函数单据类型 单据VO对照 单据UI 单据项目 单据VO模型单据物理模型(数据库表) 图 4单据元模型

1.1 单据类型

单据类型是对单据的分类。单据的元信息都是基于单据类型来定义。在定义单据类型时,单据类型必须属于某个系统类型。单据类型的注册信息比较多,由功能点[客户化]-[二次开发工具]-[单据管理]-[单据类型管理]维护,如图5所示,一般由各个产品组预置。

第 4 页

图 5单据类型管理

项目说明:

? 类型代码:手工输入,最大长度为4个字符,可以输入字母和数字,不允许重复。 ? 类型名称:业务单据名称,手工输入,不允许重复。 ? 单据大类:表示单据类别(应收应付101---),用于区分单据类型的主子关系(参见1.1.2

节)。

? 单据对应类:标识单据类型的关联UI,一般为关联的审批维护类功能节点编码。 ? 主表参照的固定条件语句:被其它单据参照时自己填写的固定的SQL条件语句。 ? 参照查询对应的DMO类:用于查询单据VO数据的业务逻辑类。必须实现接口

nc.bs.pub.pf.IQueryData以及nc.bs.pub.pf.IQueryData2(参见第三章5.4.6节)。

? 审批流检查类:通过编写审批流检查类,并在该类中实现审批流相关接口,来达到使用

审批流管理业务单据以及控制审批流行为的目的(参见第三章)。 ? 会计平台类:财务会计平台所需的类。 ? 是否项目核算:NC210以后不再使用。

? 是否为根节点:针对单据大类,用于实现单据主子关系。 ? 是否发送会计平台:用于财务会计平台。

? 节点编号:标识单据类型的关联UI,一般为关联的制单功能节点编码。 ? 自定义1(def1):流程配置的单据业务关联(业务流程)更新后的处理类。 ? 自定义2(def2):存取会计平台的产品组自定义查询。

? 自定义3(def3):动作执行前的UI端处理类。如果单据类型关联了多个功能节点,该类

还需要实现节点查找接口(参见第三章4.6节)。

对于流程平台产生的工作项,5.0统一使用打开功能节点的方式来处理。这需要单据类型的节点注册信息有所改变:

第 5 页

字段 bd_billtype.nodecode bd_billtype.classname 说明 制单节点编码 审批或维护节点编码 示例 110180 110190 需要走审批流 110190 不需要走审批流 110190 110190 不控制该单据类型关联的节点打开权限 所有功能节点UI类必须实现UI关联接口(参见4.6.4节)。

1.1.1系统类型

对业务系统的分类。5.0版本中,每个系统必须属于某个模块。由功能点[客户化]-[二次开发工具]-[会计平台]-[系统类型定义]维护,如图6所示。

图 6系统类型定义

项目说明:

? 系统类型编码:自定义输入,禁止重复。

第 6 页

? 系统类型名称:自定义输入,禁止重复。

? 是否专项管理:勾选此项,表示此业务系统将向管理会计平台传送数据。

? 是否发送到会计平台:勾选此项,表示此业务系统将向财务会计平台传送数据,在财务

会计平台的凭证模板节点,可以对此业务系统的单据进行操作。 ? 系统使用的业务类型:在进行凭证模板或成本单据模板定义时,该系统的业务单据使用

的业务类型档案。

? 模块名:标识该系统所属的产品模块。对应于NC_HOME/modules/下的目录名。 ? 相关节点编码:标识哪些功能节点号与产品模块的关联关系。一般用于参数设置中。

1.1.2主子关系

单据类型之间可存在主子关系,这通过isroot和billstyle两个属性来判定。

系统类型ECisRoot=YisRoot=Nbillstyle>100billstyle=102D1F1 (Y)F2 (Y)billstyle=103D2

图 7单据类型主子关系

如图7所示,D1的父单据类型为F1;D2的父单据类型为F2。

1.2 单据动作及脚本

是对单据业务处理行为的抽象,具有可定制的动作脚本。业务单据正是通过单据动作与流程平台进行交互的,从而驱动流程的流转。可对应于单据UI上的某个菜单。由功能点[客户化]-[二次开发工具]-[单据管理]-[单据动作管理]维护,如图8所示。

第 7 页

图 8单据动作管理

项目说明:

? 动作选择:提供四种动作各供选择:保存、审核、推式动作、其它。保存、审核是单据

的基本动作,动作代码有严格规定;推式动作表示该动作可被其他单据推式驱动。 ? 动作编码:当前单据动作的编码。注意,当动作选择为“保存”时,动作编码必须为以

“SAVE”结尾;而当动作选择为“审核”时,动作编码必须为以“APPROVE”开头。长度限制为20个英文字符。

? 动作名称:当前单据动作的显示名称

? 动作执行前提示:如此处输入文字,则在该动作被触发时,会弹出一个带有提示性文字

的对话框,如:是否保存?

? 动作控制:提供三个选项:动作可配置、进行驱动配置、进行约束检查。勾选“动作可

配置”,表示该动作可在流程配置中进行配置;勾选“进行驱动配置”,则该动作在流程配置中可以对其他单据动作进行推式操作,驱动其他单据;勾选“进行约束检查”,则此动作要根据业务流程的配置在执行前进行条件检验,满足条件动作才执行,否则就不执行。

第 8 页

图 9单据动作执行脚本

单据动作的处理统一由平台API来调用。详见第三章第3节。

1.2.1单据动作组

对单据动作的分组。由功能点[客户化]-[二次开发工具]-[单据管理]-[单据动作组管理]维护,如图10所示。

图 10单据动作组管理

1.3 单据函数

服务于单据的业务功能的抽取,是进行业务逻辑处理的组件。可用于动作脚本和条件判

第 9 页

定。由功能点[客户化]-[二次开发工具]-[流程配置]-[数据交换管理]维护,如图11所示。

图 11单据函数(组件)管理

项目说明:

? 函数说明:函数所实现的功能的说明性文字,建议尽量说明清晰,以便于系统实施。如

果以“<>”括起来,表示自定义函数。 ? 返回类型:该功能函数返回数据的类型。 ? 函数类名称:功能函数所属的全路径类名。

? 函数方法名称:该函数在类中所对应的方法名称。

? 函数参数:该函数正确调用所需的参数。参数的格式见下。

? 是否组件:标识该方法是否为组件。单据组件一般是没有返回值的一段业务处理逻辑,

它不可应用于审批条件、动作约束、工作项配置中。

1.3.1参数格式

函数参数以逗号“,”隔开,每个参数具有特定的格式。参数分为运行参数、属性参数和VO参数三种。

第 10 页

格式示例:

nc.vo.pub.AggregatedValueObject[]:01

nc.vo.pub.AggregatedValueObject:01,OBJuser:OBJECT nc.vo.po.OrderVO[]:21

&sAction:STRING,nc.vo.pub.AggregatedValueObject:01

注意:VO参数和属性参数的实际值由工作流上下文在运行时赋予。运行参数可在动作脚本中赋值。

1.3.2返回值

函数方法返回值支持的类型有: UFBoolean

String Integer UFDouble

1.4 单据UI

单据的界面展现模型,包括四大模板以及UI工厂等。每个单据还与一个维护它的功能节点对应,这个信息需要注册到单据类型中(参见1.1节)。

1.5 单据项目

是对单据业务数据的描述。一般与单据的VO模型对应。由功能点[客户化]-[二次开发工具]-[单据管理]-[单据项目管理]维护,如图12所示。

第 11 页

图 12单据项目管理

项目说明:

? 属性名:单据VO模型中的属性名称。 ? 多语资源ID:属性的多语ID号。 ? 专项类型:属性的数据类型。 ? 默认名称:属性的中文名称。

1.6 单据VO对照

描述了流程平台所需的信息(比如制单人、审批人、单据ID等)在单据VO模型上的对应关系。由功能点[客户化]-[二次开发工具]-[单据管理]-[单据VO对照管理]维护,如图6所示。

第 12 页

图 13单据VO对照

项目说明:

? 主子VO类名称:单据VO模型中的主子VO类名称。 ? 单据VO类名称:单据聚合VO类名称。

? 主表的关键字段:单据物理模型中主表的主键字段。 ? 子表编码:?

? 审批人:单据VO模型中表示审批人的属性名称。 ? 制单人:单据VO模型中表示制单人的属性名称。 ? 单据ID:单据VO模型中表示单据ID的属性名称。 ? 业务类型:单据VO模型中表示业务类型的属性名称。 ? 对于数据库表:注册单据主子物理表名称。

? 单据编号:单据VO模型中表示单据号的属性名称。

2. 业务流平台

NC业务流平台进行了简化,其设计思想是基于以下认识:业务流程是由单据组成的,而单据是由动作驱动的,动作又是由组件组成的;单据、动作以及组件可以由业务系统开发实现。NC业务流提供一种平台机制,在此可以根据用户的实际业务重新组织这些单据、动作及组件,包括每种单据的来源单据是什么、又驱动生成哪些单据、完成什么动作、动作生效的约束条件以及动作生效后将配置哪些组件等,以此更好满足企业个性化的需求。

第 13 页

图 14普通采购流程

2.1 业务类型

对业务流程的分类。各个公司可定义自己的业务流程,5.0支持集团业务类型,即在集团定义业务类型,然后各个子公司使用。比如集中采购流程:请购单->采购订单->到货单->入库单->采购发票->应付单。由功能点[客户化]-[流程配置]-[业务类型管理]维护,如图15所示。

第 14 页

图 15业务类型管理

2.2 流程配置

一个业务流程由相互关联的多个单据组成,通过定义单据间来源与动作驱动关系来定义业务流程。

图 16流程配置

第 15 页

项目说明:

? 单据代码:该字段为参照选择,参照内容为NC安装过的功能模块的所有单据类型。每

个业务类型每张单据只能选择一次。

? 单据名称:显示选择的单据代码的名称,不能编辑,选择单据代码后自动带入

? 参照单据:勾选此项,表示该单据的业务数据可以参照其他单据(来源单据)的数据生

成(将进行单据VO交换)。勾选此项,在流程配置中才可配置该单据的来源单据,否则不可配置。

? 自制单据:勾选此项,表示该单据的业务数据可以手工输入。

? 权限控制:设置每个单据有权限的参与者。在单据UI界面,业务类型下拉菜单中,只

有有权限的用户才可看到该业务类型(参见第三章5.3.1节)。同时还控制了下游消息的接收者范围。

? 下游消息:上游单据审批通过后,会给下游单据的参与者发送拉式消息。上游单据的推

式动作执行完后会驱动下游单据的动作,并给下游单据的参与者发送推式消息。

流程配置由5个向导工具组成,分别阐述如下:

2.2.1单据权限配置

5.0新增的配置,配置业务流程中每个单据有权限的参与者。用于业务类型的权限控制,以及下游消息的接收者范围。

图 17单据权限配置

第 16 页

2.2.2单据来源配置

是对当前单据类型的数据来源单据进行定义的界面。被定义为当前单据来源单据的业务单据,可以在业务流程中为当前单据提供业务数据(使用单据VO交换),以保持业务数据的一致性。

图 18单据来源配置

2.2.3动作约束配置

配置业务单据的单据动作(可能为单据界面上的某些功能按钮)在发生前需要进行的条件检查。若发生的业务满足定义的条件,则该单据动作将被执行,否则不允许执行。流程配置通过本步骤,即可实现对当前业务环节的事前控制。

第 17 页

图 19动作约束配置

2.2.4动作事件控制配置

为业务流程配置个性化动作脚本。在这里,用户可以针对不同业务类型对公共的单据动作执行脚本(参见第三章第3节)进行定制。使单据动作按照自己定义的规则来执行,以此来完善企业的业务流程,并对当前业务环节实现事中控制。

图 20动作脚本定制

第 18 页

2.2.5动作驱动配置

配置单据之间的动作驱动关系。具体参见第三章5.1节。左树列示了当前单据在单据动作管理中被定义为“进行驱动配置”的单据动作(参见1.2节)。

图 21动作驱动配置

项目说明:

? 目的单据:在当前单据动作完成时,将要进行动作处理的单据。

? 操作员相关:选择与操作员或角色有关,则该动作仅在所选择的操作员或角色执行时,

才会驱动目的单据的动作。 ? 动作:参照选择,选择目的单据被驱动的动作,该类动作在单据动作管理中被定义为“推

式动作”(参见1.2节)。

2.3 单据VO交换

单据类型之间存在相互转换的需求,平台提供了定义单据VO模型间的相互转换规则的机制。单据之间的上下游关系保存在表pub_billtobillrefer中,转换规则作为class文件保存,比如“nc.ui.pf.changedir. CHG21TO30”、“nc.bs.pf.changedir.CHG21TO30”等。单据VO交换可发生在前后或后台,并在交换后可进行特殊的业务处理。详细见第三章5.2节。

第 19 页

图 22 单据交换信息

项目说明:

? 被参照单据类型:来源单据类型。

? 用于显示来源单据的UI类:参照来源单据时,使用的来源单据显示UI。默认为

“nc.ui.pub.pf.BillSourceDLG”。 ? 用于查询来源单据的模板ID或UI类:查询来源单据需要使用的查询模板ID或UI。格

式有“”、“SO30TO31000000000000”和NULL(默认查询模板)。

? 用于查询来源单据的节点标识:被参照的来源单据的Nodekey,用于选择查询模板。

单据间的交换规则支持简单属性和公式定义,以及额外的交换后业务处理。

图 23单据交换规则

第 20 页

3. 审批流平台

审批流平台为单据的审批处理提供平台支持。基于任务驱动的执行引擎使得流程流转与用户交互分离开来,具有更强的健壮性。支持分支/汇总(Split/ Join)、优先级(Priority)、子流程(Subflow)、可指派、抢占/会签、消息配置、代理人、弃审等流程特性。

3.1 流程定义

NC5.0的审批流定义模型遵循WfMC的XPDL1.0过程定义规范,具有严格的语义和丰富的描述能力。

图 24审批流定义-浏览

第 21 页

图 25审批流定义-设计

审批流定义按照单据类型(+业务类型)进行了分类。用户可以基于单据类型定义审批流,也可以基于单据类型+业务类型(如果配置了业务流程)来定义审批流。一个单据类型(+业务类型)下可以定义多个审批流,这里可以把单据类型(+业务类型)理解为过程包的概念。

3.1.1流程模型

过程(Process)

由许多被执行的活动和一系列决定活动执行次序的转移构成。 活动(Activity) 审批流程中的一个个步骤统称为活动(或任务),包括制单活动、审批活动、虚活动、子流程。第一个拖放到审批流设计器中的参与者所属的活动为制单活动。虚活动主要用于对分支/汇总进行建模。子流程可实施流程重用。 参与者(Participant)

活动的一个属性,即活动的执行者,是对系统中组织模型的引用。目前支持『操作员』、『角色』和『动态组织』三种类型的参与者(HR岗位就是一种动态组织实现,具体扩展机制可参考附录)。第一个拖放到审批流设计器中的组织元素为制单活动的参与者。在设计器中,活动和参与者由同一个图元来展现。 转移(Transition)

活动间的流转,是两个活动间的有向连接。每个转移都具有转移条件(Condition),只有满足条件的转移才可流转。转移条件表达式除了审批结果表达式、单据函数表达式,5.0新增加了单据项目表达式。每个转移还具有优先级(Priority),优先级高的转移分支将被优先选择。

第 22 页

分支/汇总(Split/Join)

活动具有前驱条件(Join)和后继条件(Split)两个属性,可通过Split/Join-AND/XOR属性组合为过程的选择、并行结构进行建模。加上顺序和循环,这四个基本结构就可描述大多数过程结构。同时,工作流引擎还支持两种反向流转模式:驳回和弃审(参见3.4节)。 抢占和会签

审批活动的一个属性。会签:只有审批活动的参与者中所有用户完成审批后,该审批活动才能结束。抢占:只要审批活动的参与者中任何一人完成审批后,该审批活动即结束。 可指派

审批活动的一个属性。如果审批活动定义了可指派属性,则该审批活动的实际执行者需要从其参与者中手工选择。指派的分支优先被选择。 流程限定

审批活动的一个属性。用于设定前后两个活动的参与者之间的关系。支持“同公司”和“同部门”两种类型。只可为参与者为『角色』和『动态组织』的审批活动设置流程限定属性。

代理人(Agent)

审批活动的一个属性。制单活动不可设置代理人;只可为参与者为『操作员』类型的审批活动设置多级代理人;代理人只可为『操作员』。 消息配置(Message Config) 审批活动的一个属性。可为每个审批活动配置额外的消息通知机制。即在满足触发条件时,以消息、短信、邮件方式通知相关人员。

可以为每个审批活动配置额外的消息发送机制。对于制单活动,发送条件必须为“无条件”。对于审批活动,发送条件可为“无条件”、“审核通过”和“审核不通过”三种(注:对于审批活动,“无条件”即该审批活动完成之后就发送)。

在消息内容中我们可以使用宏表达式来获取一些业务相关数据。目前可从系统获取的宏对象变量仅有:

operater==当前登录操作员PK vo==当前操作的单据VO

vos==当前操作的单据VO数组

paravo==当前单据的审批流参数VO

参数VO可直接访问的变量列表。

第 23 页

这样,在我们的宏表达式中可以直接引用这些对象变量,并调用这些对象的方法(注:完全支持Java语法)。比如: 宏表达式 %%paravo.m_billNo%% %%paravo.m_workFlow.getCheckNote()%%

含义 当前单据号 当前审批步骤的批语 %%vo.getParentVO().getAttributeValue(“dwbm”)%% 当前单据VO中的某数据 3.1.2增删改

审批流程是基于单据类型(+业务类型)来定义的,由各个公司各自定义。选中某个单据类型(+业务类型),就可为其新增一个审批流程。一个单据类型(+业务类型)下不能存在两个同制单人的审批流程。 如果某流程定义已经拥有了流程实例,则不允许删除。 如果某流程定义已经拥有了流程实例,修改该定义后保存时会重新产生一个流程定义。原有的流程定义处于无效状态,不可再次编辑。

3.1.3导入/导出

在审批流定义-浏览界面,选中某个流程,可导出为本地XPDL文本文件。

1. 不导出包定义。

2. 一次只能导出一个流程。

从本地XPDL文本文件导入流程定义到当前单据类型包下:

1. 如果包定义不存在,则先新建包定义保存,再保存导入的流程定义。

2. 在导入含子流程的XPDL时,提示“导入的XPDL文件中含有对N个子流程的引用,

导入后需要修改流程以重新建立引用关系,是否继续?”。 3. 不能导入同制单人的流程定义。

3.1.4流程定义的选择

对于某个单据类型(+业务类型),根据制单人的不同,可定义多个审批流程定义。由于制单人类型支持『操作员』、『角色』和『动态组织』三类,一个操作员制单后,究竟走哪条流程定义,系统按照如下顺序优先选择流程定义: 1. 制单人为『操作员』类型的流程;

2. 制单人为『角色』类型的流程——若制单人委派了多个角色,则只找第一个角色定义的

流程;

3. 制单人为『动态组织』类型的流程。

第 24 页

3.2 工作项

工作项是是工作流引擎在流程流转过程中,对活动的参与者根据基本组织单元(操作员)进行任务分配的产物。

3.2.1分配策略

工作流引擎将产生的工作项直接推给用户,同时用户登录后可选择优先执行哪些任务。参与者出差后,审批工作项将会分配到代理人。动态代理人设置。

图 26用户出差和动态代理人管理

3.2.2标题定制

工作项的标题可由从单据元模型中获取到的信息组成,以便更人性化的显示在待办事务中。

第 25 页

图 27工作项内容定制

3.2.3关联UI

5.0版本中,工作项与UI的关联全部采取功能节点方式。风格一致,业务处理更加方便。工作项与哪个UI关联是由单据类型决定的(参见1.1节)。同时关联的UI必须实现5.0新增的UI关联接口(参见第三章4.6.4节)。

3.3 流程结果与单据状态

对于审批流程来说,流程实例正常结束后,必然会有一个审批结果。而单据的审批状态与流程结果密切相关。 工作项的审批结果 即登录到NC系统的操作员对流程平台分配给他的工作项的审批处理意见。包括“批准”、“不批准”、“驳回到制单人”三种。

活动的审批结果 对于角色/岗位类的参与者执行的审批活动,如果是会签属性,则只有所有会签操作员都审批通过,该活动结果才为审批通过,任何一个会签人审批不通过,该活动结果就为审批不通过;如果是抢占属性,则活动结果为抢占人的审批结果。

流程的审批结果 恒等于最后一个活动(即流转到结束节点的活动)的审批结果。恒等于最后一个审批人的审批结果。

一旦单据送审到审批流中,单据便处于某个审批状态。在审批流内部,单据的内部审批

第 26 页

状态有5种:

表 1单据审批状态

常量 取值 含义 自由态 提交态 审批进行中 审批通过 审批不通过 IPfRetBackCheckInfo.NOSTATE -1 IPfRetCheckInfo.COMMIT 3 IPfRetCheckInfo.GOINGON IPfRetCheckInfo.PASSING IPfRetCheckInfo.NOPASS 2 1 0

业务单据根据自己的业务需求也可定义自己的单据业务状态,但不可与上述5种状态相冲突。比如UI模式化开发包中就定义了更多的单据状态。

表 2单据业务状态

常量 IBillStatus.FREE IBillStatus.COMMIT IBillStatus.CHECKGOING IBillStatus.CHECKPASS IBillStatus.NOPASS IBillStatus.DELETE IBillStatus.CX IBillStatus.ENDED IBillStatus.FREEZE 取值 含义 自由态 提交态 审批进行中 审批通过 审批不通过 作废状态 冲销状态 终止(结算)态 冻结状态 8 3 2 1 0 4 5 6 7

自由态

即单据尚在编写中(已保存或尚未保存)并未提交到审批流的状态。

提交态

通过执行单据动作SAVE或EDIT,将单据送审后的状态。提交态是审批流内部的一个状态,它的回写并不通过审批流检查类进行。只能由业务组通过SAVE动作脚本自己对单据状态进行设置。所以有的业务组的单据并没有提交态的概念。

审批进行中

流程实例正处于运行中的状态。

审批完成

如果流程实例正常运行完成,该单据的审批过程即完成。审批流程结束后具有最终审批结果:通过或不通过,这也是单据的最终审批结果。

审批状态转换图如下所示:

第 27 页

1提交态278自由态进行中54

状态转换 自由态-〉提交态① 提交态-〉进行中② 进行中-〉完成态③ 完成态-〉自由态④ 自由态-〉完成态⑤ 完成态-〉进行中⑥ 提交态-〉自由态⑦ 进行中-〉自由态⑧ 触发条件 完成态63 制单后通过执行单据动作SAVE/EDIT将单据送审。 送审后只要有人已审核,即为进行中 流程实例按照定义一步步审批,直至正常流转结束。 一弃到底 提交即审批通过 逐级弃审 驳回到制单人 1. 驳回到制单人; 2. 流程流转到制单活动; 3. 第一个审批人弃审 在各个状态下对单据的业务处理(比如是否可删除、是否可编辑等)由业务组自己控制。

流程正常结束时,单据如果审批通过,会给制单人发送“审批通过”的通知消息;单据如果审批不通过,则给参与流程的所有人员发送“审批不通过”的通知消息。

3.4 反向流转

工作流引擎支持两种反向流转模式:驳回和弃审。

驳回是审批人直接将单据退回到制单人,导致单据处于自由态,但流程实例仍运行中。制单人收到驳回工作项,双击可打开单据UI。制单人修单后提交,不会新启实例,但会重新产生工作项;若是其他人修单(更改了制单人),如果找到审批流定义,则新启实例,删除旧实例。如果找不到审批流定义,则删除旧实例,走直批模式。 弃审是审批人审批完成后,再撤销自己的操作。有两种弃审模式:逐级弃审和一弃到底,这由单据VO是否实现了逐级弃审接口(参见第三章4.6.3节)来决定。弃审是通过调用

“UNAPPROVE”动作来实现的,具有特殊的动作脚本(参见第三章4.4节)。第一个审批人弃审会将单据置为自由态。修单后再提交,会新启实例,旧实例被删除。必须在单据审批完成后才可一弃到底,一弃到底将单据置为自由态,但不会向制单人发送通知消息,修单后再提交不会新启实例。

第 28 页

3.5 流程监控

对于系统中运行的审批流程实例,可监控它们现在所处的状态,并强制终止。同时还可查询到某单据的审批状态。当前操作员可查询的审批记录受审批查询权限(由[审批流用户管理]功能节点维护)的限制。

图 28单据审批情况查询

第 29 页

图 29流程图与审批情况

3.6 短信审批

NC系统产生的各种消息可通过短消息方式发送到手机用户,并且用户可通过回复的方式直接对单据进行审批,以及其他的业务处理。 审批流运转过程中会为流程中的不同用户产生工作项。这些任务项可以通过短信方式发送给对应用户(可配置是否需要这样发送)。用户可回复类似“-p ? N 不同意,金额过大。”或“N 不同意,金额过大。”的审批指令,NC系统会调用审批插件进行后台的审批处理。注意,由于后台审批没有前台交互,所以不支持“指派”特性。具体的实现细节可参考附录。

4. 消息中心

消息中心是用户与流程平台、预警平台进行交互的主界面,也是用户开展工作的基础。V5消息中心的需求来源于易用性小组以及NC产品自身的发展。

4.1 展现

整个消息中心分为上中下三栏,每栏都可最大化。分别是[公告栏]、[待办事务栏]、[预警消息栏]。

第 30 页

图 30消息中心

所有栏目均使用表格UITable展现。除了UITable内置的定位功能和双击表头排序功能,还提供表格样式设置功能。包括:

1. 设置列宽度、列顺序; 2. 设置显示隐藏列;

3. 设置表格行列分割线的隐藏; 4. 设置表头的隐藏;

5. 设置三栏的区域分配比例。

图 31设置表格样式

第 31 页

图 32设置消息刷新间隔和栏目大小分配比例

消息中心的三个栏目还提供类似查询模板的查询过滤功能(过滤器,或叫筛选器)。比如:

1. 按照优先级过滤; 2. 按照消息状态过滤; 3. 按照主题模糊匹配; 4. 按照发送人过滤;

5. 按照发送日期或处理日期过滤。

注意:这里的过滤属于前台过滤功能,即只对当前客户端中已有的消息过滤。

图 33消息筛选过滤界面

这些表格样式和过滤器保存在每个客户端的用户缓存中,以维持多次登录的一致性。

第 32 页

4.2 消息类型

1. 公告消息——可由任何人看到的消息,分为集团所有用户可见和公司所有用户可见两

种。显示在[公告栏]。

2. P2P对发消息——某人向另外一人直接发送的消息。显示在[公告栏]。 3. 审批流工作项——审批流平台产生的需要业务处理的工作项。同时包括审批通过、不通

过、驳回后给制单人发送的消息。显示在[待办事务栏]。

4. 业务流工作项——业务流平台产生的需要业务处理的推拉式消息。显示在[待办事务

栏]。

5. 通知消息——不需要业务处理的普通消息。审批流消息配置产生的消息以及业务代码产

生的一些消息。显示在[待办事务栏]。

6. 预警消息——预警平台产生的预警消息。显示在[预警消息栏]。

第 33 页

第三章 开发规范

1. 平台缓存数据

流程平台在前后台对一些频繁访问且不经常更新的数据都有缓存。详细可参考PfDataCache和PfUIDataCache类的Javadoc文档。 前台缓存:

基本档案表bd_bdinfo的缓存,获取方法:

/**返回基本档案VO*/

BasedocVO nc.ui.pf.pub.PfUIDataCache.getBdinfo( String strPk) //主键PK

单据类型对照信息表pub_billtobillrefer的缓存,获取方法:

/**返回单据类型相互参照VO*/

BilltobillreferVO nc.ui.pf.pub.PfUIDataCache.getBillInfo( String currentBillType, //目的单据类型PK String billType) //源单据类型PK

单据VO对照表pub_votable的缓存,获取方法:

/**返回该单据类型主表的PK字段名*/

String nc.ui.pf.pub.PfUIDataCache.getBillPK( String billType) //单据类型PK

单据类型表bd_billtype的缓存,获取方法:

/**返回单据类型VO*/

BilltypeVO nc.ui.pf.pub.PfUIDataCache.getBillType( String billType) //单据类型PK

币种信息表bd_currtype的缓存,获取方法:

/**返回币种VO*/

CurrtypeVO nc.ui.pf.pub.PfUIDataCache.getCurrType( String strPk) //币种的PK

后台缓存:

单据类型参照信息表pub_billtobillrefer的缓存,获取方法:

第 34 页

/**返回单据类型相互参照VO*/

BilltobillreferVO nc.bs.pf.pub.PfDataCache.getBilltoBillRefer( String billType, //目的单据类型PK String sourceBillType) //源单据类型PK

单据VO对照表pub_votable的缓存,获取方法:

/**返回单据类型对照VO*/

VotableVO nc.bs.pf.pub.PfDataCache.getBillTypeToVO( String pk_billType, //单据类型PK boolean isMain, //是否为主表VO String itemCode) //废弃参数

单据类型表bd_billtype的缓存,获取方法:

/**返回单据类型VO*/

BilltypeVO nc.bs.pf.pub.PfDataCache.getBillTypeInfo(

String dataSource, //数据源名称 String billType) //单据类型PK

2. 动作处理

动作处理时序图1:

第 35 页

PfUtilClient业务UIObject processAction()queryActionHint()非“APPROVE”非“UNAPPROVE”PfUtilBOEngineServiceApproveFlowManagerWorkflowQuery1.判断是否进行动作前提示IUIBeforeProcAction.runClass()2.获取动作执行前的处理类,并执行wfVo=checkOnSave()3.单据类型的类名以开头,且动作为“SAVE”或“EDIT”,则获取指派信息.非SAVE动作wfVo=checkWorkFlow()wfVo=checkWorkFlow()retObj=processAction(wfVo)4.执行动作SAVE动作wfVo=queryUnfinishedWorkflowInfo(paraVO)wfVo=checkWhenSave(paraVO)status=queryWorkflowStatus(paraVO.m_billId)5.retObj实现了IProcActionRetObject,则获取动作执行后的处理类,并执行IUIAfterProcAction.runClass()wfVo=queryUnfinishedWorkflowOnSave(paraVO,status)queryWorkflowDef()6.上述过程的异常类型为IPfRetException且需要处理,则再次进行处理retObj=runAfterActionException()retObj=processActionFlowInner()7.retObj实现了PfUtilActionVO,则前台显示loadDLG()BillQueryDLG.showModal()

图 34非审批类动作处理

动作处理时序图2:

第 36 页

PfUtilClient业务UIObject processActionFlow()queryActionHint()PfUtilBOPFBusiAction“APPROVE”或“UNAPPROVE”或其他1.判断是否进行动作前提示AbstractCompilerIUIBeforeProcAction.runClass()2.获取动作执行前的处理类,并执行3.动作为“APPROVE”,则弹出审批对话框.wfVo=checkWorkFlow()wfVo=checkWorkFlow()new WorkFlowCheckDlg(wfVo)WorkFlowCheckDlg如果制单即审批通过,或没有审批流定义,则直接审批通过execApprovePass(paraVo)3'.动作非“APPROVE”与用户交互:1.审批意见2.指派信息EngineServicePFBusiStateprocessWorkFlow(paraVo)procActionFlow(paraVo)intFlag=forwardCheckFlow(paraVo)execApproveState(paraVo,intFlag)getVariableValue()3a.用户取消了审批对话框return null;wfVo=null;retObj=processAction(wfVo)retObj=processAction(wfVo)actionBeforeWorkFlow()ActionConstrict()5.retObj实现了IProcActionRetObject,则获取动作执行后的处理类,并执行IUIAfterProcAction.runClass()6.上述过程的异常类型为IPfRetException且需要处理,则再次进行处理retObj=runAfterActionException()retObj=processActionFlowInner()流程仍处于审批进行中时直接返回return IWorkFlowRet动作为最后一个动作,执行动作驱动actiondrive()动作为”SAVE”,”EDIT”,则启动审批流执行动作脚本retObj=actionOnStep()处理弃审execApprovePass(paraVo,intFlag)PFActionConstrictexecApproveGoing(paraVo,intFlag)WorkflowQueryexecApproveNoPass(paraVo,intFlag)execUnApproveFree(paraVo,intFlag)动作约束检查intFlag=queryWorkflowStatus(billId)查询单据审批状态:-1 -自由态0 -审批不通过1 -审批通过2 -进行中3 -提交态TaskManager7.retObj实现了PfUtilActionVO,则前台显示loadDLG()BillQueryDLG.showModal()startApproveFlowAfterAction()sendWorkFlowOnSave()acceptTaskFromBusi(task)图 35审批类动作处理

2.1 UI端调用-PfUtilClient

1. 单据动作处理(非\)

Object nc.ui.pub.pf.PfUtilClient.processAction(Container parent,

String actionName, String billType, String currentDate, AggregatedValueObject vo, Object userObj,

String strBeforeUIClass, AggregatedValueObject checkVo ) throws Exception

功能:

第 37 页

本文来源:https://www.bwwdw.com/article/q0t3.html

Top