网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  JBPM中的起始任务            【字体:
JBPM中的起始任务
作者:佚名    文章来源:不详    点击数:    更新时间:2007-7-8    

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


本文来源:http://blog.csdn.net/napoleonsame/archive/2007/06/19/1658551.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • 从头开始认识jboss

  • EJB3.0入门

  • bpm产品

  • JavaWeb中的Session、Sessio…

  • OpenCV在VC.net,VC6.0等中的…

  • Qt中的多线程编程

  • C++中 的内存错误与泄漏

  • 类中的静态成员

  • C++中的explicit关键字

  • 说说C++中的malloc与new

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David