转:传智播客—jbpm与OA项目(二) 续

系统 1640 0

 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 (泳道)

                   汤兄弟今天只是简单介绍了一下泳道,这个功能并不常用。

         泳道图:

clip_image008

 

         OK ,今天的内容到此结束。明天就开始我们的 OA 系统了,主要使用 struts+hibernate+jbpm 开发!

 

         哈哈,加油!

转:传智播客—jbpm与OA项目(二) 续


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论