JBPM中的起始任务


JBPM 中的起始任务
什么是起始任务
    所谓起始任务就是在开始状态(start-state)中定义的任务(task)。如下定义(注意:开始状态只能有一个任务)
<process-definition>
 <swimlane name='initiator' />
 <start-state>
    <task swimlane='initiator' />
    <transition to='...' />
 </start-state>
 ...
</process-definition>
起始任务的创建执行
如果定义了起始任务,就可以通过创建起始任务来启动流程的执行,而不是通过向根令牌发信号的方式。如下代码:
//创建起始任务
TaskInstance taskInstance = processInstance.getTaskMgmtInstance.createStartTaskInstance();
.........
//完成起始任务,继续流程执行
taskInstance.end();
起始任务的参与者
起始任务的任务实例在创建时,其参与者会自动从身份鉴定组件获取,这从Jbpm的源码中可以得知,如下代码片断:
public class TasgMgmtIntance extends ModuleInstance()
{
        ……
        public TaskInstance createStartTaskInstance()
        {
               ……
               taskInstance.setActorId(
                       SecurityHelp.getAuthenticatedActorId());
               return taskInstance;
        }
        ……
}
 
public abstract class SecurityHelp()
{
        public static String getAuthenticatedActorId()
        {
               ……
               AuthenticationService authenticationService = 
               jbpmContext.getService().get AuthenticationService();
               if(authenticationService != null)
                       actorId = authenticationService.getActorId();
               ……
               return actorId;
        }
}
身份鉴定组件是Jbpm提供的安全机制中用来鉴定参与者身份的,这是一个开放的接口,Jbpm基于的前提是把身份鉴定交给用户来完成。Jbpm自己有一个默认实现(在jbpm.cfg.xml中配置),针对于这个默认实现,可以使用jbpmContext.setActorId(actorId)来设置已经过鉴定的参与者(可查看JbpmContext类相关源码),创建起始任务时自动取的参与者就是通过jbpmContext.setActorId(actorId)所设置的(注意:具体所设置的参与者的鉴定过程需要用户在事先已经完成;这个设置只存在于所创建的jbpmContext生命周期内)。有关身份鉴定更多信息请查阅相关资料。
 
当然我们也可以调用taskInstance.setActorId()自己设定起始任务的参与者。
起始任务的用途
l       流程起始需要一个过程
当流程的起始不单单只是一个状态,而需要一个过程的时候,我们需要起始任务。例如:一个请假审批流程,用户填写请假单进行保存,而不是即刻进行流程流转执行;而该用户下次登录时应该可以看到自己未完成的请假单,并继续流程执行(提交审批)。这时我们就可以在用户首次填写请假单进行保存时,创建流程实例及起始任务,而当用户再次登录就可以看到自己未完成的工作,选择提交审批时完成任务,并继续流程的流转。
l       捕获流程的发起者
在起始任务中使用泳道,来捕获流程的发起者。当起始任务的任务实例创建时,参与者会自动被存储在起始任务的泳道中,在以后的代码中可以通过processInstance.getTaskMgmtInstance().getSwimlaneInstance(“swimlaneName”).getActorId()获取到发起者。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值