工作流框架引擎设计文档格式.docx
- 文档编号:20064812
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:42
- 大小:63.57KB
工作流框架引擎设计文档格式.docx
《工作流框架引擎设计文档格式.docx》由会员分享,可在线阅读,更多相关《工作流框架引擎设计文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
也许以上问题通过深入的研究或是复杂的扩展,间接的设计后都可以解决,但是我觉得通过对jpbm的借鉴,定制一个贴近应用,使用简单,规模有限的工作流引擎是更好的选择。
3、自主开发引擎的目标?
A、能够使用扩展的状态图(XML格式)定义工作流程。
B、在某个状态下,可以定义一个或多个任务(task),可以根据其执行结果(未执行也是一种结果)的任意组合来决定下一状态(处理并签、会签)。
C、一个任务的所属用户可以充分使用上下文用户、绝对用户、用户组、用户关系等灵活模式。
D、可以定义事项在在某个状态下,可用的其他资源。
E、支持在xml定义中使用脚本语言(BeanShell),以便工作流程定义取得更大的灵活性。
减少因流程变化对硬编码和系统升级的需求。
F、同工作流的界面开发有一个简单明确的接口(包括程序接口、数据库接口)。
G、支持一系统包含多个流程,一个流程支持多个单位版本,一个单位包含多个历史版本(确保流程定义升级不会有问题)。
用户定义扩展
A、用户组,定义一组有相同特性的用户,例如科长组,局长组等,建立专用数据表存储。
B、用户关系,定义同用户A具有特定关系的用户B,例如A的科长是B,建立专用数据表存储。
C、替代用户,当某个用户零时不在岗位时,可由管理员定义这个用户的替代用户,替代用户可操做这个用户的待办事项,建立专用数据表存储。
流程定义格式(XML)
一个状态图例:
开始
如上图,一个流程图定义的节点(Node)共有三种类型,即《开始节点》、《任务节点》和《结束节点》,必须包含且只包含一个《开始节点》,0到N个《任务节点》,1到N个《结束节点》,并且流程必须以《开始节点》开始,以《结束节点》结束。
节点间的有向连线叫转换(transition),表示从一种状态节点变化到另一种状态节点。
下边介绍xml格式及含义:
先看一个不完整的例子,帮助理解:
<
process-definitionname=“……”description=“…….”event-handler=“……”>
<
start-nodename=“……”state=“…….”state-code=“……”state-label=“……”>
<
taskname=“…..”type=“…...”action=“……”>
<
results>
<
result>
code>
ok<
/code>
description>
派单完成<
/description>
/result>
/results>
/task>
transitionto=“……”operation=“……”operation-code=“……”operation-label=“……”/>
/start-node>
……
task-nodename=“……”state=“……”state-code=“……”state-label=“……”>
taskname=“…..”type=“……”action=“……”>
01<
批准<
02<
不批准<
user-list>
……
/user-list>
……..
resources>
resource>
……<
/resource>
/resources>
……
transitionto=“……”operation=“……”operation-code=“……”operation-label=“……”/>
/task-node>
……
end-nodename=“……”state=“…….”state-code=“……”state-label=“……”/>
/process-definition>
以下是完整的元素定义,分别定义每个元素可包含的属性和子元素
process-definition元素
名称
类型
个数
描述
name
attribute
required
流程定义的唯一名称
description
流程定义的文字描述
event-handler
流程事件处理类的全名,是一个实现了ProcessEventHandler接口的类,流程引擎会使用反射来实例化流程事件处理类。
具体参见类设计
start-node
element
[1…1]
开始节点
end-node
[1…N]
结束节点
task-node
[0…N]
任务节点
start-node元素
节点的唯一标志
state
节点代表的内部状态
state-code
节点代表的外部状态编码
state-label
状态的文字标签
task
当前节点的相关任务,当其中任何任务完成时将触发离开节点的请求,引擎会判断能否离开当前节点及离开的路径(transition)
transition
转换,指明开始节点的流向的节点
resources
[0…1]
定义事项处于当前节点时,待办事项界面(或其他)可用的资源集合
end-node元素
task-node元素
转换,指向下一个节点
transition元素
转换的唯一标志
to
指向下一个任务或结束节点的唯一标志name
operation
转换所代表的内部操作
operation-code
optional
转换所代表的外部操作编码
operation-label
对当前节点的所有任务的执行结果的总结性概述文字
condition-script
stringelement
选择此转换的必须条件。
只有当此script执行的结果返回true,引擎才会选择此转换离开当前节点;
如果没有定义此元素,则无条件转换
resources元素
resource
可用的资源ID,ID的具体含义由具体的流程实现者或本框架的使用者定义
task元素
任务的唯一标志
type
数值型,0表示普通任务,1为外部任务(通常不在用户界面上完成)
action
required/optional
任务对应的处理程序地址(例如对应代办事项界面上任务按钮触发的url),当任务类型是0普通任务时,本属性是必须的,当任务类型是1外部任务时,本属性可以不提供
action-label
任务处理程序的文字标签
results
任务完成的可能结果及其描述
tags
任务对应的其他信息,具体含义由具体的流程实现者或本框架的使用者定义
user-list
可以执行本任务的用户列表,如果没有指定user-list元素,则表示这个任务所有人都可以执行
enable-script
在引擎创建新节点时被调用,用来确定本节点是否创建本任务,返回true则创建,返回false不创建,如果没有定义本元素,那么本任务将被无条件创建
results元素
result
结果编码及其描述信息
result元素
code
结果编码
结果描述信息
用来确定本节点的本任务在这一刻是否允许使用本结果,返回true则允许,返回false不允许,如果没有定义本元素,那么本结果将允许使用
tags元素
tag
键值对信息
tag元素
key
唯一标志
value
标志对应的值
user-list元素
empty-is-all
0表示正常(缺省)
1表示当用户列表为空时(没有用户),则相当于不限制用户
owner-user
null
流程实例的属主用户
absolute-user
包含绝对用户名称
group-user-list
包含用户组名,囊括了组定义的所有用户
task-user-list
string
内容为指定任务的唯一名称;
如果流程实例已经流经过指定任务的父节点,并且在指定节点有一个或多个用户执行过该任务,则返回这些用户
relative-user-list
同某些用户有特定关系的用户
relative-user-list元素
relationship
定义关系类别,例如科长,主管等等
流程实例的属主用户(如果有的话)
数据库设计
用户信息扩展类表:
T_GROUP用户组定义表
字段
GROUP_ID
用户组ID
VARCHAR2(36)
主键
GROUP_CODE
用户组编码
VARCHAR2(20)
GROUP_NAME
用户组名称
VARCHAR2(50)
DESCRIPTION
用户组描述
VARCHAR2(256)
注1:
DEPT_IDGROUP_CODE建唯一复合索引
T_GROUP_USER组用户映射表
GROUP_USER_ID
用户和组映射ID
外键连接T_GROUP表的GROUP_ID
USER_ID
用户ID
外键连接T_USER表的USER_ID
GROUP_IDUSER_ID建唯一复合索引
T_RELATION关系定义表
RELATION_ID
关系ID
RELATION_CODE
关系编码
RELATION_NAME
关系名称
关系描述
T_RELATION_USER关系用户映射表
RELATION_USER_ID
唯一ID
外键连接T_RELATION表的RELATION_ID
RELATIVE_USER_ID
关系用户ID
注1:
USER_IDRELATION_IDRELATIVE_USER_ID建唯一复合索引
T_REPLACER替代人定义表
REPLACER_ID
替代ID
PROC_TYPE_ID
流程类型ID
外键连接T_PROC_TYPE表的PROC_TYPE_ID
REPLACER_USER_ID
替代用户ID
PROC_TYPE_IDUSER_IDREPLACER_USER_ID建唯一复合索引
流程定义信息存储表:
T_PROC_TYPE流程类型表
PROC_TYPE_NAME
流程类型唯一标志
流程类型的唯一ID
流程类型描述
SHOW_NO
显示序号
INT
PROC_TYPE_NAME建唯一索引
T_PROC_DEFINE流程定义表
PROC_DEFINE_ID
流程定义ID
PROC_DEFINE_NAME
流程定义唯一标志
流程定义唯一ID
外键连接T_PROC_TYPE表的PROC_TYPE_ID
VERSION
流程定义版本
0,1,2,……N
EVENT_HANDLER
流程事件处理者
DEFINE_DATE
流程定义日期
DATE
流程定义描述
DEFAULT_FLAG
缺省版本标记
0非缺省版本
1缺省版本(参见表T_DEPT_PROC的备注3)
PROC_TYPE_IDVERSION建唯一复合索引
注2:
PROC_DEFINE_NAME建唯一索引
T_DEPT_PROC部门流程类型映射表
DEPT_PROC_ID
部门流程定义ID
DEPT_ID
部门ID
外键连接T_DEPARTMENT表的DEPT_ID
DEPT_IDPROC_TYPE_ID建唯一复合索引
PROC_TYPE_ID+VERSION同T_PROC_DEFINE表的PROC_TYPE_ID+VERSION建立引用关系
注3:
如果某个部门没有在本表定义使用的流程定义版本,则确省使用缺省版本(DEFAULT_FLAG=1)的流程定义
T_PROC_NODE流程节点表
PROC_NODE_ID
流程节点ID
PROC_NODE_NAME
流程节点唯一标志
节点的唯一ID
外键连接T_PROC_DEFINE表的PROC_DEFINE_ID
TYPE
流程节点类型
0开始节点1任务节点2结束节点
STATE
流程节点状态
STATE_CODE
流程节点外部状态
STATE_LABEL
状态文本标签
PROC_DEFINE_IDPROC_NODE_NAME建唯一复合索引
T_PROC_TRANS流程转换表
PROC_TRANS_ID
流程转换ID
PROC_TRANS_NAME
流程转换的唯一标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工作流 框架 引擎 设计