processdefinition.xml
文件内容为:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
process-definition
xmlns
=
""
name
=
"NodeEvent"
>
<
start-state
name
=
"start-state1"
>
<
transition
to
=
"task-node1"
></
transition
>
<
event
type
=
"node-leave"
>
<
action
class
=
"cn.itcast.cc.jbpm.node.event.NodeEventTest"
name
=
"printNodeEventType"
></
action
>
</
event
>
</
start-state
>
<
task-node
name
=
"task-node1"
>
<
task
name
=
"
下订单
"
>
<
assignment
actor-id
=
"
客户
"
></
assignment
>
<
event
type
=
"task-create"
>
<
action
ref-name
=
"printNodeEventType"
/>
</
event
>
<
event
type
=
"task-assign"
>
<
action
ref-name
=
"printNodeEventType"
/>
</
event
>
<
event
type
=
"task-start"
>
<
action
ref-name
=
"printNodeEventType"
/>
</
event
>
<
event
type
=
"task-end"
>
<
action
ref-name
=
"printNodeEventType"
/>
</
event
>
</
task
>
<
event
type
=
"node-enter"
>
<
action
ref-name
=
"printNodeEventType"
></
action
>
</
event
>
<
transition
to
=
"end-state1"
></
transition
>
</
task-node
>
<
end-state
name
=
"end-state1"
>
<
event
type
=
""
></
event
>
</
end-state
>
</
process-definition
>
|
如果
task-node
中包含多个
task
。将
event
放在
task
外部,
task-node
的内部,所有的
task
将共用同一个事件处理类。如果将
event
放在
task
内部,
task
将使用各自内部的事件处理类。
将流程发布到
JBOSSWEB
容器中(注意将类“
NodeEventTest
”一同发布),一步步执行查看控制台的输出。
五、任务分配
1.
个人任务
(推模型)
个人任务属于个人,只有个人能看到,必须由个人完成。个人任务的分配方式:
1)
手动添加,通过设计器设置
task
的
Actor
属性值。
2)
Actor
:通过设计器使用表达式将
Actor
设置为
#{customer}
,在事件处理函数中通过“
executionContext.getContextInstance().setTransientVariable(name, value)
”设置变量值,动态更改
actor
。
3)
为
Task
的“
Assignment->Handler
”添加一个实现了
AssignmentHandler
接口的类,在“
assign
”方法中调用“
assignable.setActorId(actor);
”方法设置
Actor
属性值。
4)
可以在程序的任何位置使用“
TaskInstance.setActorId(actor)
”设置
Actor
的值。
2.
组任务
(拉
/
竞争模型)
组任务属于小组,只有小组成员可以查看,但必须仅有一个人来完成。组任务的分配试:
1)
手动添加,通过设计器设置
task
的
PooledActors
属性值,使用“
,
”分隔。
2)
PooledActors
:通过设计器使用表达式将
PooledActors
属性设置为
#{actors}
,在事件处理函数中通过“
executionContext.getContextInstance().setTransientVariable(name, value)
”设置变量值,动态更改
actor
。
3)
为
Task
的“
Assignment->Handler
”添加一个实现了
AssignmentHandler
接口的类,在“
assign
”方法中调用“
assignable. setPooleActors (actors);
”方法设置
PooleActors
属性值。
4)
可以在程序的任何位置使用“
taskInstance.setPooledActors(actors)
”,设置
PooledActors
的值。
3.
查询
1)
个人任务:
jbpmContext.getTaskMgmtSession().findTaskInstances (actorId)
。
2)
组任务:
jbpmContext.getTaskMgmtSession().findPooledTaskInstances(actorId)
。
actorId
可以屏蔽
pooledActors
4.Swimlane
(泳道)
汤兄弟今天只是简单介绍了一下泳道,这个功能并不常用。
泳道图:
OK
,今天的内容到此结束。明天就开始我们的
OA
系统了,主要使用
struts+hibernate+jbpm
开发!
哈哈,加油!
转:传智播客—jbpm与OA项目(二) 续