2024年5月3日发(作者:)

一:数据模型E_R图

PROCESS

involves

PROC_ID

PROC_NAME

PROC_DESC

contains

ASSGN_RULE

ACT_ID

BASED_ON

METHOD

DEPT_ID

TEAM_ID

ROLE_ID

EX_FUNC

HAVE_DONE_TASKS

TASK_ID

SERIAL_NO

ENTITY_ID

PRE_ACT_ID

CURR_ACT_ID

STAFF_ID

GRANTOR_ID

COMPLETION_FLAG

DATE_CREATED

DATE_ACCEPTED

DATE_COMPLETED

assigned to

PRE_RULE

DEPNT_ID

DEPNT_ACT_ID

DEPNT_ACT_STATUS

involved in

ROUTING_RULE

PRE_ACT_ID

CURR_ACT_ID

COMPLETION_FLAG

NEXT_ACT_ID_LIST

PRE_DEPNT_SET

has rules

INPUT_INTERFACE

TASK_ID

CURR_STAFF_ID

NEXT_STAFF_ID

ENTITY_ID

EXCHANGE_PARAMS

INPUT_RULE

PRE_TASK_ID

ACTIVITY

ACT_ID

PROC_ID

ACT_NAME

TIME_ALLOWED

ACT_ROUTER

RULE_APPLIED

EX_PRE_RULE_FUNC

EX_POST_RULE_FUNC

ACT_TYPE

OR_MERGE_FLAG

NUM_VOTES_NEEDED

AUTO_EXECUTIVE

ACT_DESC

TO_DO_TASK_LIST

TASK_ID

SERIAL_NO

ENTITY_ID

PRE_ACT_ID

CURR_ACT_ID

STAFF_ID

GRANTOR_ID

TASK_STATUS

DATE_CREATED

DATE_ACCEPTED

instances of

instances of

ACT_ATTCH_PARMS

ACT_ID

PARAM_NAME

PARAM_DESC

说明:

1.1 信息模型

信息模型的核心是业务活动表(简称活动)ACTIVITY,其他相关的表结构主要有业务

过程PROCESS、业务规则(活动流转规则)ROUTING_RULE、活动前依赖规则PRE_RULE、

任务指派规则ASSGN_RULE、任务列表TO_DO_TASK_LIST以及已完成的任务列表

HAVE_DONE_TASKS。从图中可以看出,ACTIVITY与其他表之间都存在联系。

1.1.1 活动类型

每个业务过程由若干业务活动组成,不同的业务活动通过各不相同的ACT_ID来唯一标

识,ACT_TYPE则指明相应活动的类型。同一个业务活动在工作流运行时可能具有多个实例

(instance)。我们将活动的实例称为任务

1

,将属于同一业务过程的任务称为属于同一批次

的任务。有的业务活动可能针对具体的业务环节,即在前台(后台)对应实际的应用逻辑;

有的业务活动则不针对具体的业务环节。活动类型可以进行如下分类:

INITIAL

,初始化活动,业务过程的第一个活动,不针对具体业务环节。

INTERACTION

,常规交互活动,

INTERACTION

活动对应实际的业务环节,在前台对应

实际的应用逻辑,完成此活动需要实际人员的参与。在所有活动类型中,只有

INTERACTION

活动才需要与实际人员交互。

AUTOMATION

,常规自动活动,同样对应实际的业务环节,但是实际的应用逻辑位于

后台,由工作流引擎自动调用完成。AUTO_EXECUTIVE指明相应应用逻辑的执行体。

AND_BRANCH

,与分支活动,不针对具体业务环节,此活动将同时派生出若干后继

活动。

AND_MERGE

,与汇聚活动,是一同步活动,不针对具体业务环节,流经此处的任务

将进行与汇聚同步。此活动将进行活动的前依赖规则检查,只有所有的前依赖规则均被满足,

才可流向后继活动。

OR_MERGE

,或汇聚活动,是一同步活动,不针对具体业务环节,流经此处的任务将

进行或汇聚同步。它同样将进行活动的前依赖规则检查,但是在前依赖规则只要存在一条满

足指定条件的,就可以流向后继活动。OR_MERGE_FLAG用于指定或汇聚条件。

VOTE_MERGE

,投票汇聚活动,是一同步活动,不针对具体业务环节,同一批次的

任务只有达到NUM_VOTES_NEEDED所指定的票数才可流向后继活动。

DUMMY

,哑活动,不针对具体业务环节,它可以作为某些活动的虚拟后继活动,还

可以使用它来构造更为复杂的业务规则。若哑活动有后继活动,则可以立即流向后继活动。

COMPLETION

,终结活动,表明相应业务过程的终结,不针对具体业务环节。

1.1.2 业务规则的表示

在工作流引擎中,业务规则可以分解成活动的前依赖规则和活动的后转发规则。活动

的前依赖规则指明相应活动的启动条件,启动条件是通过相应活动的直接前趋活动以及相应

的状态标志来表示的,前依赖规则包含顺序、与汇聚、或汇聚和投票汇聚四种规则。活动的

后转发规则指的是当前活动所对应的任务结束后该启动哪些后继活动,后转发规则包含顺

序、或分支和与分支三种规则。图1中的PRE_RULE表、ROUTING_RULE表以及ACTIVITY

表中的ACT_TYPE和RULE_APPLIED等字段联合表示活动的前依赖规则和后转发规则。

由于我们将各种汇聚活动单独抽取出来,因此可以用很简洁的关系结构来表达活动的

前依赖和后转发规则。首先ACTIVITY表中的RULE_APPLIED字段指示相应活动应该采用

何种规则判断准则,它可以有四种取值:

DEFAULT

USER_DEFINED_PRE_RULE

USER_DEFINED_POST_ROUTING_RULE

USER_DEFINED_BOTH_RULE

DEFAULT

表示由工

作流引擎自动根据PRE_RULE表和ROUTING_RULE表来进行规则检查。考虑到业务规则

的多样性,本文提供了自定义方式来表达那些无法用缺省规则表示的特殊业务规则,

ACTIVITY表中的EX_PRE_RULE_FUNC和EX_POST_RULE_FUNC分别指定了前依赖和后

转发规则的自定义调用接口。自定义业务规则的行为完全由相应的程序确定。一般情况下,

大多数业务规则都可以直接通过

DEFAULT

方式表达。接下来将讨论在

DEFAULT

方式下前依

赖规则和后转发规则的表示。

活动的后转发规则主要通过表ROUTING_RULE表示,后转发规则可以用如下四元组

来表达:

Post_Routing_Rule = (

PRE_ACT_ID, CURR_ACT_ID, COMPLETION_FLAG, NEXT_ACT_ID_LIST

)

其含义是:在当前活动的ACT_ID为

CURR_ACT_ID

的情况下,如果当前活动的前趋活动的

ACT_ID为

PRE_ACT_ID

并且当前活动的结束标记为

COMPLETION_FLAG

的话,工作流将流

向由

NEXT_ACT_ID_LIST

所指明的后继活动。

前依赖规或则需联合PRE_RULE、ROUTING_RULE和ACTIVITY共同表示,前依赖

规则可以用一个三元组来表达,即:

Pre_Dependency_Rule = (

PRE_ACT_ID, CURR_ACT_ID, PRE_DEPNT_SET

)

PRE_DEPNT_SET为前依赖活动集,其中的每一个元素又可以用另外一个三元组来表示: