日耳曼语-安南人
Joinwork
工作流引擎
总体设计
上海携创软件技术有限公司
目录
Joinwork
工作流引擎总体设计
.
...........................
..................................................
.........................
3
流程模板定义
.
................................................ .................................................. ........................
3
模板定义类关系图
.
..............................................
..................................................
..........
3
流程模板文件的存储
.
.............................................
..................................................
.......
4
流程模板
XML
文件格式说明
.................................................
.......................................
5
数据变量定义
.
................................................ .................................................. ..............
1
0
模板定义语法检查
.
..............................................
..................................................
........
11
用户和组织机构管理
.
.............................................
..................................................
.............
11
设计目标
.
..................................................
..................................................
....................
11
Party
模型
.........
..................................................
..................................................
..........
11
用户、组织与组织类别
.
............................................ .................................................. ..
11
相关类图
.
.................................
..................................................
.....................................
1
3
参与者权限管理
.
< br>............................................... .................................................. ...................
1
4
相关类图
.
..................................................
..................................................
....................
1
4
引擎的运行
.
.................................................
..................................................
.........................
1
5
流程引擎
.
..................................................
..................................................
....................
1
5
流程实例
.
..................................................
..................................................
....................
1
6
流程实例的存储
.
< br>............................................... .................................................. ...........
1
7
运行中模板管理
.
< br>............................................... .................................................. ...........
1
8
任务管理
.
..................................................
..................................................
............................
1
8
任务管理器
.
.................................................
..................................................
.................
1
8
任务的生成和分配
.
..............................................
..................................................
........
1
9
任务代理人信息
.
< br>............................................... .................................................. ...........
1
9
任务的存储
.
.................................................
..................................................
.................
2
0
任务日志记录
.
................................................ .................................................. ..............
2
1
消息管理
.
..................................................
..................................................
............................
2
1
消息定义
.
..................................................
..................................................
....................
2
1
消息处理
.
..................................................
..................................................
....................
2
2
定时管理
.
..................................................
..................................................
............................
2
3
动作组件
.
..................................................
..................................................
............................
2
3
2
Joinwork
工作流引擎总体设计
流程模板定义
模板定义类关系图
BPMParam
BPMPolicies
BPMPolicy
< br>policies
1..1
0..n
BPMActors
1..1
actors
0..n
BPMActor
BPMParticipa
ntType
BPMObject
BPMNote
BPMTransition
BPMAbstractNode
BPMParticipant
BPMStatus
BPMActivity
BPMTimeActivity
Me
ssageNode
BPMStart
BPMEnd
BPMAndRouter
BPMConRouter
BPMEventActivity
BPMHumenActivity
BPMSubProcess
BPMProcess
BPMObject
是所有流程模板类的基类;
BPMObj
ec.
getBPMObjectType()
方法所有基
类必须
重载,以返回模板类代表的模板元素类型代码。
各模板元素类型代码如下表:
模板类
BPMProcess
BPMActivity
BPMAndRouter
BPMConRouter
0
1
2
3
类型代码
3
BPMEnd
BPMEventActivity
BPMHumenActivity
BPMPolicy
BPMStart
BPMStatus
BPMTimeActivity
BPMTransition
BPMSubProcess
BPMActor
BPMActors
BPMNote
BPMDataField
4
5
6
7
8
9
10
11
12
13
14
15
16
BPMAbstractNo
de
是所有流程节点类的基类;
BP
MActivity
是所有活动类节点的基类;
BPMProc
ess
类也是
BPMActivity
的子类。
BPMStatus
是所有
状态类节点的基类;
动作脚本运行规则类
(
BPMPolicy
,
BPMP
olicies
)
、
参与者定义类
p>
(
BPMActor
,
BPMActor
)
,
标注类(<
/p>
BPMNote
)
、迁移类(
BPMTransition
)作为
BPMObj
ect
的直接派生类。
流程模板文件的存储
ProcessDefManager
(from wapi)
0..n
defManagerMap
WAPIFactory
1..1
(from wapi)
p>
ProcessDefManagerFileImpl
(from
processdef)
devProcess
BPMDefi
nitionManager
ObjectTypeTree
(
from util)
readyProcess
1..1
p>
processMap
0..n
BPMPr
ocess
模板文件以
XML
文本文件形式存储在文件系统中,文件后缀为
.process
。
每个模板类都有
toXML()
和
fromXML()
方法;
通过调用
BPMProces
s
的
fromXML()
完成流程模板
XML
文件到流程类对象的装配,调用
BPMProcess
的
toXML()
完成流程对象到
XML
文件的存储;
BPMDefintionManager
负责完成流程模板的
加载和存储动作。
模板文件分为开发中模板和可执行模板,<
/p>
流程模板管理器
ProcessDefManagerFileI
mpl
类对象
存储了一个流程引擎中的所有开发中和可执行的流
程模板。
ProcessDefManager
对外提供统一的流程模板访问接口。
WAPIFa
ctory
根据配置文件完成多个流程引擎的流程模板管理器的装配。
< br>
4
流程模板
XML
文件格式说明
流程
模板
XML
文件不作为对外接口,
只是
用于流程引擎内部。
为扩展方便和解析效率,
没有定义对应的<
/p>
XML Schema
。
<
process
es
>
<
process
vender
p>
=
versio
n
=
2.3.1
type
=
samples
flowType
=
workflow
id
=
activity_status
name<
/p>
=
流程流转演示流程
desc
=
演示状态
和活动节点
的特性,加深对流程流转模型的理解
createdate<
/p>
=
00
updatedate
=
72
sortIndex
=
0<
/p>
importClass
=
import
DateFormat;
<
node
id
=
start
name
=
流程的流转
:
开始<
/p>
type
=
8
desc
=
x
=
100
y
=
100
messageId
=
startPage
=
returnPage
=
sortIndex
=
0
humenStart
=
true
timeStart
=
false
p>
msgStart
=
false
startPageTemplate
=
_doForm
returnPageTemplate
=
_doFormReturn
<
parameter
positionId
=
dataId
=
text
id
< br>=
text
type
=
in
dataType
=
data
name
=
文本
-text
< br>canBeNull
=
true
visible
=
< br>true
size
=
align
=
maxSize
=
itemList
=
selectIndexType
=
selectIndexData
=
<
parameter
positionId
=
dataId
=
dataCom
id
=
e
<
/p>
type
=
return
dataType
=
dat
a
name
=
时间
-e
canBeNull
p>
=
true
p>
visible
=
true
size
=
align
=
maxSize
=
itemList
=
selectIndexType
=
selectIndexData
=
。。。
node
>
。。。
<
node
id
=
Node_0
< br> name
=
人工启动的状态
<
/p>
type
=
9
desc
=
x
=
300
y
=
400
messageId
=
startPage
=
returnPage
=
sortIndex
=
0
humenStart
=
true
timeStart
=
false
p>
msgStart
=
false
startPageTemplate
=
_doForm
returnPageTemplate
=
_doFormReturn
<
actor
role
=
somebody
co
ndition
=
1
< br> const
=
false
p>
partyId
=
a1
< br>
partyType
=
user
partyIdName
=
a1
[a1]
partyTypeName
=
个人
<
actor
role
=
manager
con
dition
=
1
const
=
false
partyId
=
CMM
< br>
partyType
=
temp
partyIdName
=
CMM
实施小组
[CMM]
partyTypeName
=
短期组织
no
de
>
<
node
id
=
Node_0_02
name
=
定时启动的
状态
A
ty
pe
=
9
desc
=
x
=
100
y
=
200
<
/p>
messageId
=
condition
=
handly
=
startPage
=
returnPage
=
sortIndex
=
0
humenStart
=
false
timeStart
=
true
msgStar
t
=
false
startPageTemplate
=
< br>_doForm
return
PageTemplate
=
_doFormReturn
p>
hasStartDate
=
true
startDate
=
00
hasEndDate
=
true
endDate
=
00
day
=
0
hour
=
23
minute
=
10
cyctype
=
day
timetype
=
1
<
node
id
=
Node_2_21
name
=
消息启动的状态
type
=
9
desc
=
x
=
446.95
y
=
180
messageI
d
=
message1
condition
=
("1"
;)
handly
< br>=
n("OK")
startPage
=
returnPage
=
sortI
ndex
=
0
humenStart
=
false
<
/p>
timeStart
=
false
p>
msgStart
=
true
startPageT
emplate
=
_doForm
p>
returnPageTemplate
=
_doFormReturn
<
node
id
=
HumenNode_4
na
me
=
抢先任务
2
type
=
6
desc
=
x
=
450
y
=
450
startPage
=
returnPage
=
startPageTemplat
e
=
_doForm
< br>
returnPageTemplate
=
_doFormReturn
message1
=
message2
=
UIType
=
form
task_var_value
=
f
inishNum
=
0
finishNum2
=
2
level
=
3
day
=
0
hour
=
0
minute
=
0
task_num_value
=
1
auto
=
true
assign
=
false
claim
=
false
< br>can_assign
=
false
can_return
=
fal
se
task_num
=
true
task_var
=
false
< br>task_actor
=
false
entrust
=
false<
/p>
delegate
=
< br>false
review
=<
/p>
false
<
actions
< br>>
<
action
name
=
触发消息
1
type
=
7
eventId
=
8
< br>
isErrorOut
=
fa
lse
ssage(
]]>
action
>
ac
tions
>
8
<
actor
role
=
sad
conditi
on
=
0
c
onst
=
true
< br>
partyId
=
_ser<
/p>
partyType
=
user
partyIdName
< br>=
_ser
< br>partyTypeName
=
个人
<
/
node
>
。。。
<
node
id
=
SynNode_0
name
=
type
=
2
desc
=
x
=
450
y
=
250
start
=
false
<
node
id
=
TimeNode_0
nam
e
=
延时
1
分
钟
type
=
10
desc
=
x
=
200
y
=
100
time_var
=
timetyp
e
=
1
hour
=
0
day
=
0
minute
=
1
<
node
id
=
EventNode_0
name
=
消息处理
type
=
5
desc
=
x
=
400
y
=
300
messageId
=
message
1
condition
=
handly
=
。。。
<
link
id
=
Link_12
name
=
type
=
11
desc
=
condition
=<
/p>
i
==0
fr
om
=
Node_0
< br>
to
=
HumenNode_
4
sortIndex
=
0
inputDataCanBeNull
p>
=
false
<
/p>
noAutoCreateButton
=
false
<
link
id
=
stop
name
=
结束
< br> type
=
11
desc
=
condition
=
from
p>
=
HumenNode_1
to
=
End
sortIndex
=
0
inputDataCanBeNull
=
fal
se
noAutoCreateBu
tton
=
false
<
bend
x
=
500
y
=
150
li
nk
>
9
<
data
id
=
text
name
=
文本
type
=
Text
desc
=
size
=
length
=
array
=
false
bas
icType
=
true
<
data
id
=
dataCom
name
p>
=
数据组件
ty
pe
=
feeDetail
desc
=
size
=
length
=
array
=
false
bas
icType
=
false
process
>
pr
ocesses
>
数据变量定义
DataTypeMa
nager
1
dataTypeMap
0..n
DataTypeMeta
1
metadata
read/write
1
<
DataField
0..n
dataFields
1
BPMAbstract
Node
(from definition)
dataTyp
eConfig
DateDataField
CustomDa
taField
SelectDataField
TextDa
taField
FileDataField
IntDataF
ield
NumberDataField
< br>流程节点中的变量定义都是
DataField
派生类对
象,
DataField
派生类的类型由元数据
DataTypeMeta
对象描述。
DataTyp
eManager
负责元数据对象的存储管理。
10
模板定义语法检查
在流程模板定义文件加载、
从流程设计器传入时,
有时
需要检查流程定义是否完整合法,
此
功能通过
< br>ProcessChecker
类对象和模板定义类提供的
check()
方法完成。
用户和组织机构管理
设计目标
业务流程中的人工任务如何
分配给具体的组织或个人执行,
根据业务系统面对的行业以
及功
能范围不同会有很大的区别。
作为通用型组件的工作流引擎,
需
要一个抽象的模型来统
一解决以上问题。
Party
模型
Party
(参与者)模型是现有比
较成熟的解决以上问题的用户对象模型。在
Party
模型中<
/p>
各种不同类型的组织和个人都被抽象为参与者(
Party
)
,从而能够在系统内部方便的对这些
对象进
行统一的控制。
用户、组织与组织类别
为了方便理解
和使用,
Joinwork
的
OrgM
anager
接口对外使用了:用户(
User
)
/
组织
(
< br>Group
)
/
组织类别(
p>
GroupType
)三个概念:
11
可以通过例子来看看业务系统的现有组织对象模型如何映射到用户、
组织和组织类别这
三个概念上。
假设业务系统由一个机构管理模块负责维护组织的部门人员结构信息,
< br>如果有业务流程
在运行中需要使用这些信息做任务分派的话,我们就需要在定制的
OrgManager
实现类中将
部门
人员结构信息提供给引擎。
通过新建一个“
Departmen
t
”的组织类别,然后将所有的部门转换成组织(类别为
Dep
artment
)
,部门中的员工作为组织中的人员即可。
p>
如果同时业务系统内还有一个角色管理
系统,
某些业务流程的任务分派需要使用角色信
息来完成。
p>
那我们可以再定义一个新的
“
Role
p>
”
组织类别,
把具体的角色
(如系统管理员
/xxx
岗位)作为组织导入工作流系
统即可。
通过类似的方式我们能把多个组织对象模型同时映射到引擎的参与者模型上,
供流程模
板设计时和流程运行时使用。
对一个
具体的任务分配我们也可以实现跨不同的对象模型,比原有对象模型灵活了许
多。比如:
执行任务
A
的用户可以指定是部门
A<
/p>
和角色
A
的集合。
12
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
日耳曼语-安南人
-
上一篇:(完整版)新标准大学英语综合课程四网络课程答案
下一篇:德语专四作文例文和点评