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()获取到发起者。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mrshan/archive/2006/09/07/1188785.aspx