工作流参考手册初稿V01_第1页
工作流参考手册初稿V01_第2页
工作流参考手册初稿V01_第3页
工作流参考手册初稿V01_第4页
工作流参考手册初稿V01_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章工作流参考手册初稿V01

在使用EOSWorkFlow的过程中,不管是开发者在“开发环境”中定义业务

流程,还是“工作流引擎”操纵流程流转,或者是工作流参与者使用的“客户

端”,再或者者管理员使用的“管理与监控工具”,在这期间都会贯穿EOS

Workflow的5个要紧对象一一流程定义、活动定义、流程实例、活动实例与工

作项。

1.1EOS工作流开发过程简述

EOS的工作流开发过程能够看作是一个不断迭代的过程,如下图:

首先是分析需求,然后根据需求定义流程,在这个阶段最要紧的工作任务事

实上是设计,根据业务需求来设计流程,这个流程要怎么走,流程有关的数据如

何流淌,流程的参与者如何界定,与流程有关的业务数据如何流淌及储存等等。

在这个阶段的工作结果是一个能够公布的流程,第一次形成的流程可能是一个比

较简单的,并不完善的版本,但是随着迭代的进行,这个流程将不断地被修正与

改进,直到形成一个能够使用的版本。

流程公布后就能够执行了,流程在执行阶段叫流程实例,它有待启动、运行、

挂起、完成、结束、中止等六种状态,

我们在设计及开发的过程中可能会犯一些错误,从而导致公布的流程执行不

正确,或者者还可能已经开发好的流程满足不了现在的需求,需要进行调整,这

个时候迭代就开始了。

1.2概念说明

流程定义:描述一个完整的业务过程,它由若干活动构成。包含了流程的基

本信息、流程的开始与结束条件、构成的活动、活动间流转的规则、需要用户执

行的工作任务(工作项)、可能调用的应用程序与流程有关数据等信息。提交到

流程定义库(WFProcessDefine)后会包含流程定义ID(流程定义的唯一标识)、

流程定义名称、版本号、流程定义描述与提交时间等描述。

活动定义:包含在流程定义之中,代表了一个相对独立的、逻辑的工作单元。

•个活动代表•个需要由有关资源处理,或者者由计算机处理的任务。其中定义

了该活动的基本信息、执行该活动的参与者、时间限制、工作项信息、触发事件、

启动策略等信息。

流程实例:当流程定义提交、公布到服务器以后,就能够启动该流程,启动

时会创建流程定义的一个实例,叫流程实例。同一个流程定义能够有多个流程实

例。每一个流程实例会被储存在流程实例库(WFProcessInst)中,包含流程实例

ID(唯一标识)、流程实例名称、流程定义ID、流程实例的状态、该实例的启

动者、启动时间、有关数据等信息。

活动实例:流程实例中的每个活动称之活动实例。每一个活动实例会被储存

在活动实例库(WFActivitylnst)中,包含活动实例ID(唯一标识)、活动实例的状

态、所属的活动定义ID与流程实例ID、时间限制、是否超时、创建时间等信息。

工作项:表示流程实例在流转过程中为完成某个活动实例所要参与者做的工

作。一个活动实例能够对应一个或者多个工作项。每个工作项会被储存在工作项

库(WFWorkltem)中,包含工作项ID(唯一标识)、参与者ID、工作项的状态、

所属的活动实例ID,流程实例ID等信息。

对象间的要紧关系

流程定义与活动定义是在工作流开发阶段所确定;流程实例、活动实例与工

作项则是在工作流运行阶段确定。

一个流程定义由多个活动定义构成。

一个流程定义能够创建多个流程实例。

一个流程实例包含多个活动实例,每个活动实例能够包含一个或者多个工作

在一些特定的情况下(比如,一个活动要循环执行多次),一个活动定义会

存在多个活动实例

具体如下图所示:

其他概念

【工作流】

工作流管理联盟(WFMC)给出的“工作流”定义是:

①全部或者者部分,由计算机支持或者自动处理的业务过程;

②干预过程、业务程序的自动化处理,文档、信息或者者任务按照定义好

的规则在参与者间传递,来完成整个业务目标或者者对整个业务目标的

完成做奉献。同时,“工作流”可能由手工组织。

【参与者】

它要紧描业务流程在实例化后的运行过程中参与操作的人员、角色或者组织。

【工作流有关数据】

工作流引擎根据工作流有关数据与转换条件进行推进,工作流有关数据的属性包

含数据名称、数据类型与数据值等。它是工作流引擎执行任务推进的根据。

【转移条件】

要紧负责为流程实例的推进提供导航根据,引擎根据转移条件实现流程的流转。

【聚合模式】

指当流程中的一个活动存在多个前驱活动时。,该活动产生实例的规则将根据“聚

合模式”而定。聚合模式包含:全部聚合/单一聚合/多路聚合(AND/XOR/OR);“全

部聚合”模式表示只有当所有前驱活动都运行结束后才启动该活动实例,假如存

在尚未运行结束的前驱活动,则该活动处于等待状态。“单一聚合''模式表示只要

任何一个前驱活动运行结束,则该活动即进入运行状态。“多路聚合”模式表示满

足条件的前驱活动都完成,该活动才可进入运行状态。

【分支模式】

当一个活动的后继活动有多个时,需要确定这些后继活动产生活动实例的规则

(即分支模式)。分支模式包含:全部分支/单一分支/多路分支(AND/XOR/OR);

“全部分支''模式表示条件表达式计算结果为“True”的所有活动都产生活动实例;

“单一分支”模式则表示从后继活动中任选一个条件表达式为“True”的活动产生

实例。“单一分支”模式下需要指定一个“缺省迁移”,当所有条件都为“False”时,

此缺省迁移对应的活动则会产生实例「多路分支”表示该活动的完成会触发所有

满足条件的后继活动。

【工作流客户端】

工作流客户端是提供给用户完成工作流任务的浏览,查询,执行的界面,与工作

流程启动的界面。EOS工作流客户端通过web界面的方式提供给用户。

•按用户与角色取得工作项

•工作列表的自定义归类

•工作项的签收、拒收、执行、提醒

•竞争工作项的处理

•图形化的启动过程

【工作流管理监控工具】

工作流管理监控工具足为用户提供基于Web方式的工;乍流实例的管理与监控功

能与业务流程的管理。

•支持图形化工作流实例的管理

•支持图形化监控过程实例的运行情况

•支持图形化业务流程的管理

•运行期实时数据查询

•图形化再现流程运行过程

•工作项的重分配

•流程统计分析、工作项统计分析

1.3有关配置说明

下列是一些有用的配置说明,关于EOS工作流的具体配置说明请参考附录一〉

配置文件wfconfig.xmlo

工作流数据连结的配置在哪里

带有工作流的EOS应用一定要使用数据源的方式(配置了数据源与连接池,且

eosconfig.xml文件中single值为false)连接数据库,这样才能保证.I:作流与

业务系统中事务的完整性。而且工作流调度引擎需要连接池来处理对数据库的并

发操纵,不能使用JDBC直接连接,否则在实际的使用中会出现并发操纵错误。

比如:使用E0S5.0,在工作流客户端的“我的任务一>待执行的工作任务”执行

一个待执行的工作项,该二作项的任务是调用一个人工活动去查一张表。假如在

studio中启动项目server,功能一切正常,假如启动外部server,这个功能有

的时候候正常,有的时候候出错,出错页面的截图与全面的log见附件!(注:

出错是不确定的,有的时候候连续好几次都报错,有的时候候连续好几次都对!)

在编写工作流的业务自动机(业务逻辑)中,有关的工作流操作(如:完成工作

流节点,回退,设置工作洸的有关数据等操作)与外部的业务操作都要并在一个

transaction(事务)中。

工作流历史表的有关说明

EOS数据库中存在以WF'_H开头的几张表,这是工作流历史表,分别对应了流

程实例、活动项实例、工作项实例等等,业务上经常需要通过这些历史数据进行

统计分析,至于什么时候进行记录备份,帮助文档中没有提到。

事实上,在EOS系统配置文件wfconfig.xml中,定义了历史记录备份的策略,

如下:

<groupname="trans_history”>

<!一转移历史的策略:可能的值T1ME_BASED(固定时间转移)|ON_F1N1SH(流

程实例结束时转移)INEVER(不转移)ON_START(系统启动时候后移)

<configValuekey=,,transstrategy,z>TIMEBASED</configValue>

<!一转移时间点列表:当trans_strategy配置为T1ME_BASED时候有效。表示转

移到历史表的时间,格式示例:1:00,2:00,8:18->

<configValuekey=*time^list^>0:30,5:00</configValue>

</group>

第2章建模过程

EOSStudio提供了可视化的开发环境来定义工作流业务流程模型,提供串行、

分支、并行、聚合、循环、同步、子流程等丰富的流程逻辑结构,与人工活动、

自动活动、路由活动等多种活动类型,并可对这些活动属性进行定义,如参与者

类型、触发事件、子流程属性、时间限制、回退动作、多工作项等,定义属性时

可选择不一致的数据类型、可灵活的扩展活动;能够通过表单数据为活动节点设

置动态表单,其表单数据实现了动态表单的编辑,为口常工作中表单的定制提供

了良好的设计工具。

2.1流程定义

流程定义由流程属性、活动属性、连接线三部分构成。开发者能够根据实际

中的业务需要设置流程上的基本属性、触发事件、时间限制与流程启动者。对每

一个具体的活动则可根据实际情况设定其运行的方式、参与者与调用的应用等信

息。完成流程定义的描述后即可提交、公布。提交后的流程将生成XML格式的流

程定义义件,存入流程定义库中

2.1.1流程版本

版本号的产生方式如下:

1、开发人员指定

版本号的格式为:X.Y.Z(其中X〉0;Y:0-99;Z:0-99),若指定的版本在流程

定义库中不存在,则按指定的版本号生成新版本。若指定的版本在流程定义库中

存在,则覆盖流程定义库中已有的版本。比如,某流程在流程定义库中存在

1.1.1与1.2.3两个版本。若要提交第二个版本,开发人员指定新版本号1.1.2,

那么该流程提交流程定义库的版本号即为1.1.2;若指定版本号为1.1.1,则该流

程在提交流程定义库时会覆盖原有1.1.1版本的流程

2、自动生成新版本

获取流程定义库中同一流程的最大版本,并在此基础上〃加I1〃作为当前流程

的版本号。

2.1.2触发事件

2.1.2.1触发事件说明

流程触发事件表示按照流程定义中的设置流程实例在运行到某个阶段所需

要工作流引擎做某种类型的某个动作。“某个阶段”即为事件的触发时机,“某

种类型”即为事件类型,“某个动作”即为事件的动作。

触发时机:表不指定的事件动作在何时触发。EOSWorkFlow提供了创建、动、

结束、超时与提醒5个触发时机。

创建:表示指定的事件在流程实例创建时触发。如今流程实例实际上处于

“待启动”的状态,并没有合适的活动实例产生。简言之,流程实例如今只是做

好运行的准备,但未真正开始运行。比如:把田径比赛中的110米栏比作流程实

例,那么创建时的流程实例就相当于已站在助跑器前的运动员们等待发令枪响的

那一刻。

启动:表示指定的事件在流程实例启动时触发。如今,流程实例已真正处于

运行状态了,流程实例已开始运行,各活动实例将会相继产生。比如:流程实例

如今的状态若比作110米栏,就相当于运动员们听到发令枪响冲离起跑线的那一

刻。

结束:表示指定的事件在流程实例结束时触发。即流程实例中所有的活动实

例均已完成时触发。

超时:表示指定的事件在流程实例超时时触发。比如:若流程的超时时间订

为1天,那么定义的事件将在流程实例启动时开始计时,并在1天之后触发此事

件。

提醒:表示指定的事件在流程实例指定的提醒时间触发。比如:若流程的提

醒时间订为1小时,那么定义的事件将在流程实例启动时开始计时,并在超时前

1小时触发此事件。

事件类型:标明事件动作的类型。EOSWorkFlow提供基于EOS平台的业务

逻辑与运算逻辑两种类型。

事件动作:由开发人员根据具体的业务需求自行定义。能够是一个运算逻辑也能够是一

个业务逻辑。

2.1.2.2触发事件设置方法

【场景】

在流程”启动的同时,获取指定节点信息并放入该流程实例有关数据的指定

节点下c如获取流程信息中创建者节点(WFCcntcxt/WFPrccessInst/creatcr),放入

有关数据区Node/creator卜。

【分析】

通过【场景】的描述,我们能够使用流程触发事件的方式实现该需求。分析

为:

1、“在流程启动的同时……”,表示触发的时机为启动,调用方式为同步。

这里需要特别注意的是,调用方式同步与异步的区别。同步是指:以“同步”的方

式调用触发事件,等待事件运行完成后,该流程才启动。同步是指:以“异步”

的方式调用触发事件,该流程在启动完触发事件后就启动,而无需等待触发事件

运行完成。

2、“获取指定节点信息”为事件动作,能够用业务逻辑来实现。触发事件中

产生的数据还能够在业务逻辑中输出,这样就能够将这些数据直接设置为有关数

据了。

3、要将步骤2中获取的信息放入该流程实例有关数据的指定节点下,具体

可在事件参数中设置。

输入参数设置为WFContext,在各类触发事件与回退事件中,WFContext属

十流程实例的有关数据区部分,这块数据区有固定的数据结构,具体请见:3.2.2

流程实例数据区。触发事件的数据来源于有关数据区,WEContext是有关数据区

中固有的一块区域信息,这些信息都放在Wfcontcxt节点下。其中,WFContext

数据区内容是流程实例自身的信息,有关数据区的内容还有流程中产生的过程数

据,即业务数据。

_______________________________________________.

基本信息触发事件时间限制|流程启动者|

参数定义

|IDI触发时机I事件类型I调用冰I事商租一-T^i地入I

[图-设置触发事件的参数]

注意:

假如调用的事件类型为业务逻辑,而参数的数据类型为字符串常量或者字符

串变量,那么路径中填入的格式务必为:nodeName=〃value"或者

nodeName='value'(由于业务逻辑不支持直接传入常量或者变量)

比如:要传入常量tiger到所调用的业务逻辑中,就务必做如下设置

参数

参数定义.______________________________

IBI参数类型:数数类我I路短I参数名名I目两短I'

工辎大一一一一一.广竽符串常量.一《^^逼神k]y1

「」

提交后常量tiger将作为name节点

的值作为动作的参数传入,形式为

<root>

-<data>

<name>tiger</name>

</data>

</root>

2.1.3超时设置

假如想扩展与替换EOS工作流的超时与预警机制,能够根据工作流配置文件

wfcontig.xml中的工作流引擎服务层有关配置

<modulename="service">

<groupname="timer">

<configValuekey="interval">10000</configValue>

<configValuekey="limeIimit_calculator"x/configValue>

</group>

参数timelimijcalculalor流程与活动时间限制的计算方法类名称,该类务必实现

接口com.primeton.eos.wf.service.api.TimeLimitCalculatoro

配置为空或者者不做配置,表示使用确省实现类:

com.primeton.eos.wf.service.TimeLimitCalcuIatorDefaulto

2.1.3.1时间限制说明

流程的时间限制表示流程启动后务必在多长时间内完成。在流程时间限制的

设置中EOSWorkFlow为开发人员提供了指定具体的限制时间、超时是否进行邮

件通知、是否在超时前进行提醒、是否发提醒通知等功能。

流程时间限制的计时:从流程启动时开始计时

流程时间限制的获取:直接指定、从有关数据获取(格式:3.5.20表示时限

为3天5小时20分钟)

发送提醒邮件:EOSWorkElow可根据流程定义中的具体设置给流程启动者发

提醒邮件,提醒他该流程还有多长时间将超时

发送超时邮件:EOSWorkFlow可根据流程定义中的具体设置绐流程启动者发

送超时邮件,告之他该流程已经超时

提醒时间务必小于指定的时间限制

EOSWORKFLOW推断流程或者人工活动超时的原理

流程或者人工活动的时间限制中设置的限制时间将写入表WITrocesslnst或

者WFWorkltem的limitNum字段中,单位为亳秒,1imitNumDosc是其描述字段;

finalTime是时间限制到达后的时间。EOSWorkFlow将当前时间与startTime

相减的结果与limitNum比较,一旦超出时间限制就将isTimeOut字段置为Y,

表示超时;timcOutNum表示超时了多长时间,在流程结束时写入。假如设置了

超时提醒,该字段可能出现负数,是未超时的表现,只有正数才表示超时的时间,

timeOutNumDesc是其描述字段。

2.1.3.2时间设置说明

【描述】

【应用场景】

规定流程A务必在I天内完成,超时进行通知;并在超时前10小时发提醒通知

【操作步骤】

I、双击流程A的编辑区,弹出属性设置窗口,点击时间限制选项卡

2、勾选启用时间限制

3、指定时间限制为:1天。小时0分钟

4、勾选是否按设置的时间限制进行超时通知。此处将会根据wfconfig.xml有关

配置给流程启动者发送邮件。

5、指定提早0天10小时0分钟提醒

6、勾选是否按设置的提醒时间进行超时预警。此处将会根据wfconfig.xml有关配置

给流程启动者发送邮件

[图-设置流程时间限制I]

说明:

1、不管是超时通知的邮件还是提醒的邮件,收件人都是流程启动者

2、这些邮件的发件人,可根据具体情况在配置文件设置$Primeton

HOME\cosservcr\config目录下的wfconfig.xml设置,有关部分如下所示:

<groupname=,,sendmail">

<configValuekey="username">zll</configValue>

<configValuekey="password">zll</conflgValue>

<configValuekey="mailPort">25</configValue>

<conflgValuekey="fromName'>zll</configValue>

<configValuekcy="authLogin"Xruc</configValue>

</group>

参数说明:

Field名称可否空说明

mailScrvcr是邮件服务器SMTP地址

mailPort是SMTP端口,通常设置为25

authLogin是SMTP服务器是否需要进行用户验证,设置(rue则需

要进行用户认证,设置false则不需要进行认证

username是SMTP服务器的用户名

password是SMTP的用户口令

特别说明:EOS工作流超时提醒只提醒一次。流程实例一旦超时,就会触发相

应的操作将流程实例中的WFProcessInst/isTimcOut十点设置为丫。假如想实现

重复提醒功能,通常的做法是为流程设置超时的触发事件。在超时触发事件中注

册一个定时器,定时扫描该流程实例是否完成,假如没有完成就执行发放邮件或

者者短信都通知的操作。

2.1.4流程启动者

流程启动者表示能够启动某个流程的组织、角色或者人。EOSWorkFlow提

供两种流程启动策略:任意人员启动与从组织机构树获取。这样做的目的要紧是

从实际工作中的安全性考虑,视流程的具体情况限定能能启动该流程的人员范

围。

[图-流程启动者]

当流程实例运行的时候,能够在有关数据区的如卜节点xpalh找到流程启动者:

<WFContext>

<WFProcessInst>

<creator>tiger</creator>

</WFProcessInst>

</WFContcxt>

2.1.5流程定义特别说明

工作流的自动活动或者触发事件调用带事务的业务逻辑的注意事项

由于工作流的事务操纵与业务逻辑的事务操纵是分开的,因此,当工作流的

自动活动或者触发事件调用了带事务操纵的业务逻辑时,工作流引擎默认忽略业

务逻辑中的事务,这样就存在一个问题:

业务逻辑中出现了特殊,并通过特殊线回滚,这时,业务数据提交不成功,

但是,工作流引擎并没有接收到特殊,它会继续往后走,最终就出现工作流事务

与业务事务不一致的现象,

【解决方案与步骤】

建议业务逻辑中不要用特殊线回退到回滚,让特殊直接抛出,这样工作流引

擎会接收到特殊,继而做回滚!

【备注】

1)特殊线不能随便使用,假如一定要用,最好设置返回值返回,最后转向

出错页面;

2)使用特殊线前还要注意BL方法是否会抛特殊,由于不是所有的BL方法

都会抛特殊。

2.2活动定义

EOSWorkFlow提供了六种类型的活动。开始活动、结束活动、人工活动、自

动活动、子流程活动与路由活动。

活动图元介绍

图元名称含义

表示一个业务流程的开始。在流程开始活动能够定义流程的

开始活动

启动表单与业务流程的触发事件。

人工活动指需要人工干预、进行某种操作的活动。比如填写表单等。

指无需人工干预,系统自动执行的活动。比如获取系统时间、

往数据库中插入记录等。

一种特殊的活动,此活动本身是指向某一个流程,表示当流

子流程程实例运行至如今,启动另外一个流程。子流程的启动分为

©同步与异步两种方式。

是一种逻辑活动,根据操纵条件推断流程的流向。该活动小

路由活动

身并不执行任何具体的操作。

□结束活动表示一个业务流程的结束。

2.2.1设置活动基本信息

活动包含:人工活动、自动活动、子流程。

1)自动活动的基本信息设置如下:

•调用方式:

“同步”:直到调用的执行动作运行完后当前自动活动才结束

“异步”:当前自动活动在调用执行动作后就结束,而无需等待执行动

作运行完

•结束方式:

“自动”:调用完执行动作后,工作流引擎自动将当前自动活动结束

“人工:”调用完执行动作后,引擎不将当前.自动活动结束,而是等待

外部调用结束该活动

2)子流程的基本信息设置如下:

调用方式:

“同步”:以“同步”的方式调用子流程,等待子流程运行完成后,该

子流程活动才结束

“异步”:以“异步”的方式调用子流程,当前活动在启动完子流程后

就结束,而无需等待子流程运行完成

子流程:单击【选择…】按钮,从弹出窗口的资源树中选择子流程或者直

接输入子流程,填写规则为:构件包名.工作流构件名.业务流程名。假如调

用的子流程需要输入或者输出一些参数请在参数选项卡中设置

2.2.2聚合模式、分支模式

活动的“分支”与“聚合”模式在流程定义时设置,分别描述了活动在运行

时何时被触发与或者个运行结束后,它的后继活动如何被触发。

2.2.2.1聚合模式

聚合模式,表示该活动得以触发的方式。它包含“全部聚合(AND)”、“单一

聚合(XOR)”与“多路聚合(OR)”三种情况:

1.“全部聚合”型聚合模式

表示该活动务必等到它的所有前驱活动全部完成才能够触发。

2“单一聚合”型聚合模式

表示当该活动的若干前驱活动中只要有一个满足条件的活动完成,该活动即

可被触发。

3“多路聚合”型聚合模式

表示该活动务必等到它的所有满足条件的前驱活动全部完成才能够触发。

满足条件的前驱活动包含:

1)它与该活动的连线是“默认值”;

2)它与该活动连线上条件为“irue”;

3)多路聚合还需要特别说明的是:多路聚合不一定要设置默认连线,也就

是说一个多路聚合的全部连线都能够设置条件C

【示例】

1.“全部聚合”型聚合模式示例

[图.“全部聚合‘‘型聚合模式]

如上图所示,“人工总动》的4合模式(JoinMode)”设置为“全

部聚合”,那么只有在它的前驱“人工活动”、“人工活动1”,“人工活

动2”都完成后,“人工活动3”才能够运行。

如上所示,由于“人工活动3”的“聚合模式(JoinMode)”设置为“单一

聚合”,那么根据上面的算法说明,当“人工活动”完成后,“人工活动3”

就能够运行了。而无需考虑“人工活动1”或者“人工活动2”是否完成。

3.“多路聚合”型聚合模式示例

1)山前驱活动射出的连线上中有默认值

・掇色表示活勖已结床

o•红色表示活勃正在运行

人工活瞅

[图-“多路聚合”型聚合模式]

如上图所示,由于“人工活动3”的“聚合模式(JoinMode)”是“多路聚合”

同时在处理的过程中“nunF=6",那么根据上面的算法说明由于“人工活动”与

“人工活动3”与“人工活动1”与“人工活动3”的连线上的条件都满足,因

此“人工活动3”在“人工活动”与“人工活动1”完成后被触发。

2)由前驱活动射出的连线上都设置条件

结束活动

活动c

[图•“多路聚合”型聚合模式]

如上图所示,由于“活动E”的“聚合模式(JoinMode)”是“多路聚合”同

时在处理的过程中“num=6",那么根据上面的算法说明由于“活动B与“活动

D”的射出的连线上的条件都满足,因此“活动B与“活动D”都完成后,活动E

才被触发。

2.2.2.2分支模式

分支模式,表示该活动结束后,它的后继活动的触发情况。它包含“全部分

支支ND)”、“单一分支(XOR)”与“多路分支(OR)”三种情况:

1.“全部分支”型分支模式

表示该活动结束后它的所有后继活动将同时被触发。

2.“单一分支”型分支模式

假如该活动的分支模式为“单一分支”,那么引擎会根据由该活动“射出”

的连接线上的条件进行推断,决定该触发哪个后继活动。具体分为下面三种

情况:

1)满足条件的连接线所指的活动被触发;

2)假如有若干个连接线上的条件都满足,那么比较连接线上的优先级,

优先级高的那条连接线所指的活动将被触发;

3)假如连接线上的条件都不满足,那么取“默认值”的那条连接线所

指的活动将被触发。

[注]活动的“分支模式”为“单一分支”时,由它射出的连接线有且只有

一条线的取值是“默认值”。

3.“多路分支”型分支模式

假如该活动的分支模式为“多路分支”,那么引擎会根据由该活动“射出”

的连接线上的条件进行推断,决定触发哪个或者什么后继活动。具体分为下

面二种情况:

1)假如连接线上取“默认值”,那么由此连接线所指的后继活动会被触发;

2)假如连接线上的条件满足,那么由此连接线所指的后继活动会被触发。

3)多路分支还需要特别说明的是:多路分支不一定要设置默认连线,也就

是说一个多路分支的全部连线都能够设置条件。

【示例】

1.“全部分支”型分支模式示例

[图•“全部分支”型分支模式]

如上图所示,由于A活动的分支模式是“全部分支”,那么当A活动完成

后它后继的所有活动(B、C、D)将同时被触发。

2.“单一分支”型分支模式示例

1)由该活动射出的连线上只有一个满足条件时

D・红色表示活动正在运行

[图-“单一分支”型分支模式11

如图所示,由于活动的分支模式是“单一分支”同时在处理

的过程中因此由“A”射出的连接线上只有“num>5”满足

条件,因此“B”活动满足条件被触发。

2)由该活动射出的连线上有若干个满足条件时

❹•绿色新活动已结束

D•红色表示活动正在运行

[图-“单一分支”型分支模式2]

如上图所示,由于“A”活动的分支模式是“单一分支”同时在处

理的过程中“nuni=l",尽管由A指向B与C的两条分支都满足条件,

但指向B的优先级大于指向C的优先级,因此“B”活动被触发。

3)由该活动射出的连线上没有一个满足条件时

结束

•绿色表示活动已结束

・红色表示活动正在运行

[图-“单一分支”型分支模式3]

如上图所示,由于“A”活动的分支模式是“单一分支”同时在处理的

过程中"num==2",那么由“A”射出的连接线上没有满足条件的,囚

此“D”活动被缺省触发。

3.“多路分支”型分支模式示例

1)由活动射出的连线上中有默认值

人工活动3结束

•姗色表示活勖已结束

・红色表示活劫正在运行

人工活动2

[图-“多路分支”型分支模式]

如上图所小,由于“开始活动”的分支模式是“多路分支'’同时在处理

的过程中“nunr=6",那么根据上面的算法说明,由“开始活动”射出的连

接线上为“默认值”所指的后继活动“人工活动”一定会被触发;又由于

满足“num>5”的条件因此“人工活动1”也会被触发

2)由活动射出的连线上中没有默认值,全部设置条件

O

活动C

如上图所示,由于“开始活动”的“分支模式”是“多路分支”同时在处理

的过程中“num--6”,那么根据上面的算法说明由于射向“活动B与“活动D”

的连线上的条件都满足,因此“活动B与“活动D”在开始活动结束后被触发。

2.2.3参与者设置

活动参与者实际上是指在流程实例运行过程中,流程实例“流转”至如今该

活动实例所对应的工作项有什么人能够执行。在流程定义时设置活动的参与者实

际上是圈定流程实例运行至如今能够执行该活动实例所对应工作项的人员范围,

能够是机构、角色或者人C

EOSWorkFlow提供了4种能够获取参与者的方式;

组织机构与角色:参与者由开发人员从机构树中获取

-只选择一人:表示该活动所对应的工作项直接分配给该人处理

-超过一•人:表示该活动所对应的工作项由这些人中的某个人以“领取”

的方式处理

虚拟岗位(机构+角色):表示在不设置岗位的情况下,由部门+角色共同决定一

个人工活动的参与者。

流程启动者:表示活动参与者为该流程的启动者

活动执行者:表示活动参与者为某个已完成的活动实例所对应工作项的执行者

特别说明:假如要改写组织机构权限并在参与者设置的时候显示新的组织机构

树,具体操作请参见知识库文档:组织机构与工作流集成方案.doc

2.2.3.1虚拟岗位(机构+角色)设置参与者

一图通过机构+角色实现虚拟岗位设置参与者

用角色+机构的方式设置参与者需要特别注意的是,在该活动激活往常一定

要将上图中机构变量路径设置到有关数据区中。

此外,还有一种方法设置一组机构:把多个机构写成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

这样机构变量路径xpath写成:list/org/id即可。这样,工作流引擎也会找到

多个机构id,从而实现设置一组机构+角色的要求。如下图所示:

基本信息参与者设置表单数据|时间限制|多工作项|触发事件|回退|自由流启动策略

6犯织机构与角色

r流程

r活动

r相关

6岗位列表(通过机物变量和角色决定此处list是一组机构

r规则

机构变量路径:|list/org/id

一选择...|

选择角色:|舒人员▼.

选定参与者一

参与者ID:|0R(org=$list/org/id,role=teleAp)取消

名称:|机构$list/org/,dAP人员

类型:|说位列衷3

确定|取消

图-设置一组机构变量

2.2.3.2从有关数据区设置参与者

1)从有关数据获得一个具体的参与者

【算法说明】

从有关数据的XPATH中,直接指定一个参与者。

注:这种方式获得的参与者只能是个人。有关数据务必满足下面的结构。

<XXXX>tiger</XXXX>

2)从有关数据获猫某一类型的参与者(指定一个或者一组人员)

[归法说明]

从有关数据的XPATH中,获得某一类型的参与者。能够是一个人,也能够是某

一角色或者某一机构的一组人。有关数据务必满足下面的结构。

<xxxx>

<id/>

<name/>

<type/>

</xxxx>

3)从有关数据获得一系列参与者

[算法说明]

从有关数据的XPATH中,获得一组参与者。能够是一个人、一个角色、一个岗

位、一个机构,也能够是机构、角色或者个人的集合,还能够是周位列表的集合。

有关数据务必满足下面的结构。

<list>

<Participant>

<id/>

<namc/>

<type/>

〈/Participant〉

<Participan(>

<id/>

<nanie/>

<typc/>

</Participant>

id与type的含义如上所示

[特别说明]:在上面XPATH结构中假如lype是“person",那么id即为用户

ID;假如type是"role",那么id即为角色ID;假如type是"organization",那

么id即为机构ID;假如type是“position",那么id即为岗位ID;假如type

是“posilion」isl",那么id即需满足如下格式:

<Condi(iontypc="OR">〃:ypc="OR”表示组织机构

<roleID>rolea</roleID>〃角色ID

<orglD>$orglD</orgID>//获取机构ID的XPATH(相关于有关数据的根路径)。飞”

不可少,标识其后的串是个XPATH。

</Condition>

此外,还有一种方法设置一组机构:把多个机构写成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

这样机构变量路径xpalh写成:list/org/id即可。这样,工作流引擎也会找到

多个机构id,从而实现设置一组机构+角色的要求。

2.2.3.3从规则逻辑设置参与者

从规则逻辑获取参与者

【算法说明】

从业务逻辑获取参与者列表,然后再按照“分配到组织机构”的模式进行分配。

从业务逻辑返回Dom当中找到参与者列表的方法:

1)假如返回的结果中包含下面的结构,系统从list节点中获取多个参与者。

<list>

(Participant〉

<id></id>

<name></name>

<type></type>

</Participant>

<Participant>

<idX/id>

<name></name>

<type></type>

</Participant>

</list>

2)假如从规则逻辑中没有找到list节点,那么系统会查找Participant节点.

获取参与者。格式如下所示:

〈Participant)

<id></id>

<name></name>

<type></type>

</Participant>

id与type的含义同上。

[特别说明]:假如如上所示的两种结构都存在于调用的规则逻辑的返回的结

果中,那么系统只会从list节点中获取参与者。

在上面XPATH结构中假如type是“person”,那么id即为用户ID;假如type

是"role",那么id即为角色ID:假如type是uorganization那么id即

为机构ID;假如type是“position",那么id即为岗位ID;假如type

是“positionJList",那么id即需满足如下格式:

<Conditiontype="0R">//type二"OR”表示组织机构

<roleTD>rolea</roleID>//角色ID

<orgID>$orgID</orgID>//获取机构ID的XPATH(相关于有关数据的根

路径)。"$"不可少,标识其后的串是个XPATH。

</Condition>

此外,还有一种方法设置一组机构:把多个机构写成如下格式:

<list>

<org>

<id>l</id>

</org

<org>

<id>2</id>

</org>

</list>

这样机构变量路径xpalh写成:list/org/id即可。这样,工作流引擎也会找到

多个机构id,从而实现设置一组机构+角色的要求。

2.2.3.4工作流参与者设置机制说明

流程实例根据流转条件依次激活实例中的相应的活动,当活动分配给某个参

与者(唯一的userID)的时候,就在WFWorkltem表中形成一条工作项记录,主

键为workTtemTDo在WFWorkTtcm工作项信息表里还有个很重要的字段:

participanto这个字段描述该工作项的参与者具体是谁。在工作项参与者

WFWIParticipant表中,也有工作项workltemlD与参与者participant,只是,

这个表里描述的是根据流程定义,活动被激活后工作项的分配情况,根据流程定

义的设置形成相应的记录,比如,流程定义中有3种参与者,那么在

WFWIParticipant表中也形成3条记录,因此这里的参与者有可能是具体个人

(userID),也可能是角色(role),也可能是机构(orgTD),也可能是岗位

(positionlD),当工作项没有领取的时候,在WFWorkhem表中也会形成一条记

录,这条记录的参与者字段participant是用“|”隔开的参与者串,这个串中

的参与者是在流程定义的时候定义的。当工作项被领取以后,就会在工作项表

WFWorkltem表里出现具体的执行人信息。此外,有的时候候工作项会出现该派

的情况,这个时候,改派以后具体参与者也在工作项表WFWorkltem表有描述,

而工作项参与者WFWIParticipant表不可能有什么变化。

2.2.4时间限制

活动的时间限制表示活动实例启动启动后务必在多长时间内完成。在活动时

间限制的设置中EOSWorkFlow为开发人员提供了指定具体的限制时间、超时是

否进行邮件通知、是否在超时前进行提醒、是否发提醒通知等功能。

活动时间限制的设置:开发人员能够根据业务需要在“人工活动”与“子流程活

动”中进行设置。

活动时间限制的计时:从活动实例启动时开始计时

活动时间限制的获取:直接指定、从有关数据获取(格式:3.5.20表示时限

为3天5小时20分钟)

活动还有超时的触发事件设置,能够针对超时做具体的操作。

EOSWORKFLOW推断流程或者人工活动超时的原理

流程或者人工活动的时间限制中设置的限制时间将写入表WFProcessInst或者

WFWorkltem的limitNum字段中,单位为亳秒,limitNumDesc是其描述字段;

finalTime是时间限制到达后的时间。EOSWorkFlow将当前时间与startTime

相减的结果与limitNum比较,一旦超出时间限制就将isTimeOut字段置为Y,

表示超时;timeOutNum表示超时了多长时间,在流程结束时写入。假如设置了

超时提醒,该字段可能出现负数,是未超时的表现,只有正数才表示超时的时间,

timeOutNumDesc是其描述字段。

2.2.5多工作项

一个活动到底产牛.多少个工作项同时产生的这些工作项又由谁来做呢?EOS

WorkFlow就工作项的产生与分配问题提供了2种策略:

按参与者设置个数领取工作项:按照此活动参与者的个数产生工作项。每个

参与者一个工作项,若参与者中包含若干人员(比如参与者的类型为机构或者角

色),则这些人员可通过先“领取”的方式执行工作项C

比如:某活动设置了3个参与者:tiger,角色B(包含fish与goose两人),

机构A(包含kitty、snoppy、micky三人),那么按照此策略将产生3个工作项。

具体分配为:tiger一个工作项,由其直接执行(该参与者只有一个人因此无需

先领取);角色B一个工作项,由fish或者goose中的一个人以领取的方式执行;

同理,机构A一个工作项,由kitty^snoppy或者micky中的一个人以领取的方

式执行。

按操作员个数分配工作项:根据参与者中的人员个数产生工作项,同时这些

工作项将直接分配到参与者中的人员,每人一个。

比如,上面的例子若按此策略将产生6个工作项,Iiger、fish、goose、kitly、

snoppy,micky每人分配一个工作项,直接执行。

多工作项执行

不管工作项的个数如何有关人员每个人至多只能执行一个。

未完成工作项自动终止

1)选择“是”:工作流引擎在结束活动实例的同时关于那些剩余的未完成

的工作项作“停止”处理。

2)选择“否”:那些剩余的未完成的工作项仍处于运行状态,尽管如今活

动实例已结束。这些工作项的拥有者如今不管是否处理它们,已不可能对运

行的流程造成任何影响,只有当流程实例结束时,引擎才会将这些工作项终

2.2.5.1活动项与工作项

活动项与工作项是一对多的关系,人工活动被激活后,形成活动项实例继而

有生成工作项实例,供参与者操作。在工作项表阳邛orkltcm中储存了活动项实

力与工作项之间的关系。

通过BL_finishActivityByDefID结束活动的方式结束工作项

在现有壬作流工作项结束调用中通常都会使用BL_finishWork【tem这个运算

逻辑调用,但是也有情况能够通过BL_finishActivityByDefID来结束活动的方

式结束工作项。假如这样做的话会带来一个问题,BL_finishActivityByDefID

方法是结束活动,当活动中的工作项需要领取而又没看领取的情况下,假如直接

使用该方法,则会导致此活动被终止,而不是正常结束,因此这种情况下只能直

接使用BL_finishWorkItem来结束工作项。要么先领取,然后再用

BL_finishActivityByDcfID来结束活动。orkltem

2.2.6触发事件

创建:指活动被实例化时

启动:指活动被实例化并满足启动条件时,当活动被创建的同时也会被启动,因

此这两项的触发时机是一致的。

结束:当活动完成时(finish)

超时:当活动超时时(假如设置了时间限制,该项有效)触发

事件类型:标明事件动作的类型。EOSWorkFlow提供基于EOS平台的业务逻辑

与运算逻辑两种类型。

事件动作:由开发人员根据具体的业务需求自行定义。能够是一个运算逻辑也能

够是一个业务逻辑。

触发事件设置说明:

1、触发时机与调用方式。这里需要特别注意的是,调用方式同步与异步的

区别。同步是指:以“同步’的方式调用触发事件,等待事件运行完成后,该活动

才启动。异步是指:以“异步”的方式调用触发事件,该活动在启动完触发事件

后就启动,而无需等待触发事件运行完成。

2、触发事件。假如用业务逻辑来实现,那么触发事件中产生的数据还能够

在业务逻辑中输出,这样就能够将这些数据宜接设置为有关数据了。假如是运算

逻辑则不能输出到有关数据区中。

3、事件参数中设置。输入参数设置为WFContoxt,在各类触发事件与同退事

件中,WFContext属于流程实例的有关数据区部分,这次数据区有固定的数据结

构,具体请见:3.2.2流程实例数据区。触发事件的数据来源于有关数据区,

WFContcxt是有关数据区中固有的一块区域信息,这些唁息都放在Wfcontcxt节

点下。其中,WFContext数据区内容是流程实例自身的信息,有关数据区的内容

还有流程中产生的过程数据,即业务数据。

基本信息触发事件时间限制流程启动者I

参数定义

|口>I触发时机I事件类型I调用冰I事商祖一指?

h启动业务逻缉w二I

03®

ID

触发时机3事件类型|好曰三]

调用方式fW

事件动作|trainbiz.bizSet[W]

身逑

哨走取洎

[图-设置触发事件的参数]

注意:

假如调用的事件类型为业务逻辑,而参数的数据类型为字符串常量或者字符

串变量,那么路径中填入的格式务必为:nodeName—value"或者

nodeName='value'(由于业务逻辑不支持直接传入常量或者变量)

比如:要传入常量tiger到所调用的业务逻辑中,就务必做如下设置

目标路径仅对事件类型为业务逻辑的事件动作有效。

2.2.7回退动作

回退是指流程实例运行到某个活动时,由于一些原因要回退到它前驱的某个

活动上。EOSWorkFlow按照“指定的回退策略”回退到“指定的目标活动”上,

并根据定义时的设置与回退策略执行被回退活动上的“回退动作”。

回退动作

是指活动在被回退时所需做的操作,通常是因

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论