JBPM4.4简介(八)-Task与提交(转)

Task

在我们上述流程定义中,张三审批这个环节,用的是一个Task类型的Activity来定义的。这种类型的Activity的行为是:创建任务实例 (TaskImpl),并把任务实例与参与者(assignee)相关联。Task是一个接口,而TaskImpl是具体的实现类。

 

任务实例(Task)这种概念,其实质是用来定义Execution与assignee之间的关联的。从上面我们知道流程已经执行到了张三审批这个环节了,因此,我们下一步的目标就是:通过张三,找出流转到他手上的所有的业务对象信息。下面是一个示例:

       ProcessEngine engine = newConfiguration()

           .setResource("jbpm.cfg.xml").buildProcessEngine();

      

       //根据用户,查询它的任务列表

       List<Task> tasks = engine.getTaskService().findPersonalTasks("张三");

       for(Task t:tasks){

           System.out.println("任务ID:"+t.getId()+","+t.getAssignee()+"手上有【"+t.getExecutionId()+"】等待:"+t.getActivityName());

       }

 

在数据库中,亦可查询到相关信息:

JBPM4.4简介(八)-Task与提交 - 冬虫夏草 - 瞇孒璐  钚崾哭

关于Task及其与Execution等之间的关系,我们在课堂上将做详细解析。

 

提交

张三如果审批完成,他需要继续向下提交,下面是示例代码:

       //根据任务ID,完成此任务

       //任务被完成之后,将自动流转到下一个环节

       engine.getTaskService().completeTask("10002");

      

       //任务被完成之后,下面的查询将无数据

       List<Task> tasks = engine.getTaskService().findPersonalTasks("张三");

       for(Task t:tasks){

           System.out.println(t.getAssignee()+"手上有【"+t.getExecutionId()+"】等待:"+t.getActivityName());

       }

completeTask就是完成某个任务实例,我们在查询出某人有哪些任务实例之后,他就可以选择其中一个任务实例来完成(complete)。任务实例被完成之后,任务实例对象将被删除,并被转移到历史库中。

 

在张三提交完成之后,JBPM4_TASK表将变为:

JBPM4.4简介(八)-Task与提交 - 冬虫夏草 - 瞇孒璐  钚崾哭

 

你也可以到JBPM4_HIST_TASK表中查询有关刚才那个Task的历史信息(比如它的完成时间等信息)。

 

后续工作

张三审批完成之后,我们可以继续用李四来查询其手上的任务列表,并结束任务对象;然后继续用王五来查询其手上的任务列表,并结束任务对象。

 

当所有环节都完成之后,流程实例对象及各种任务实例对象都会被删除,并被转移到历史库中。

大家可继续执行,直到执行结束!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值