`

JBPM知识点------tasknode

    博客分类:
  • JBPM
 
阅读更多

JBPM知识点------tasknode

分类: JBPM 653人阅读 评论 (0) 收藏 举报

同fork等一样是一种节点类型。任务节点是jbpm 中一个非常重要的概念,一个任务节点可以包含若干个任务(开始状态start-state只能有一个任务),不同的任务可以由不同的人来完成,任务实例被分配给actorId来完成。
任务实例有几个状态:创建、开始、结束,这些信息存在JBPM _TASKINSTANCE中。
常用的方法:
分派任务(指定处理人)-TaskInstance.assign(String)
根据处理人查找任务实例-TaskMgmtSession.findTaskInstancesByActorId(…)
任务创建-TaskMgmtInstance.createTaskInstance(…)
任务开始-TaskInstance.start()
任务结束TaskInstance.end(…)

任务可以被指定一个优先级,这个优先级在任务的实例创建时将被作为每个任务实例的初始优先级,任务实例的初始优先级可以在以后被修改。

如果多于一个任务实例与一个任务节点关联,流程开发者可以指定任务实例的完成怎样影响流程的继续。下面是可以给任务节点的signal属性设置的值:
l        last:这是默认值。当最后一个任务实例完成时继续执行;当在节点入口处没有任务创建时,继续执行。
l        last-wait:当最后一个任务实例完成时继续执行;当在节点入口处没有任务创建时,执行在任务节点等待,直到任务被创建。
l        first:当第一个任务实例完成时继续执行;当在节点入口处没有任务创建时,继续执行。
l        first-wait:当第一个任务实例完成时继续执行;当在节点入口处没有任务创建时,执行在任务节点等待,直到任务被创建。
l        unsynchronized:总是继续执行,不管任务是否创建和完成。
l        never:执行不再继续,不管任务是否创建和完成。


你可以在流程定义文件中定义任务,也可以在代码中定义:
public class CreateTasks implements ActionHandler {
 public void execute(ExecutionContext executionContext) throws Exception {
    Token token = executionContext.getToken();
    TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
     
    TaskNode taskNode = (TaskNode) executionContext.getNode();
    Task changeNappy = taskNode.getTask("change nappy");
 
    // 现在, 相同任务的两个任务实例被创建
    tmi.createTaskInstance(changeNappy, token);
    tmi.createTaskInstance(changeNappy, token);
 }
}

Jbpm 中,可以结合使用推模式和拉模式的任务分配。流程可以计算任务的责任人,并把它推到他/她的任务清单里;或者,任务可以被分配到参与者池,这种情况下,池中的每个参与者都可以拉出任务并把它放入参与者的个人任务清单。
推模式:Assignable.setActorId(String actorId);TaskMgmtSession.findTaskInstances(String actorId)
拉 模式:Assignable.setPooledActors(String[] actorIds);TaskMgmtSesion.findPooledTaskInstances(String actorId);TaskMgmtSession.findPooledTaskInstances(List actorIds)
为了防止多个用户在同一个共享任务上工作,使用用户的actorId修改任务实例的actorId就可以了。这样,任务实例将不会出现在共享任务清单中,而只会存在于用户个人的任务清单里。设置任务实例的actorId为空(null),则会把任务实例放回共享任务里。

任务实例可以拥有它自己的变量,并且也可以“看到”流程变量。
<task name="clean ceiling">
 <controller>
    <variable name="a" access="read" mapped-name="x" />
    <variable name="b" access="read,write,required" mapped-name="y" />
    <variable name="c" access="read,write" />
 </controller>
</task>
这里使用的是默认的控制器,也可以定义自己的控制器
<task name="clean ceiling">
 <controller class="com.yourcom.CleanCeilingTaskControllerHandler">
    -- here goes your task controller handler configuration --
 </controller>
</task>

任务有四个标准的事件类型定义:task-create,task-assign,task-start,和task-end。

 

<? xml version="1.0" encoding="UTF-8" ?>
< process-definition  xmlns =""  name ="yytest" >
    
< swimlane  name ="banker" >
        
< assignment  expression ="user(ernie)" />
    
</ swimlane >
    
< swimlane  name ="casher" >
        
< assignment  expression ="user(bert)" />
    
</ swimlane >
    
< start-state  name ="start" >
        
< transition  name =""  to ="charge" />
    
</ start-state >
    
< task-node  name ="charge"  signal ="first" >
        
< task  name ="bank"  swimlane ="banker" />
        
< task  name ="cash"  swimlane ="casher" />
        
< transition  name =""  to ="end" />
    
</ task-node >
    
< end-state  name ="end" />
</ process-definition >

 

 

private   static   void  run() {
        Jbpm Context jbpm Context 
=  jbpm Configuration.createJbpm Context();
        
try   {
            
long  processInstanceId  = 1 ;
            processInstance 
=  jbpm Context.loadProcessInstance(processInstanceId);
            Token token 
=  processInstance.getRootToken();
            System.out.println(token.getNode());
            token.signal();
            System.out.println(token.getNode());
            List casherTasks 
=  jbpm Context.getTaskMgmtSession().findTaskInstances( " ernie " );
            TaskInstance cashertaskInstance 
=  (TaskInstance)casherTasks.get( 0 );
            cashertaskInstance.start();
            cashertaskInstance.end();
            System.out.println(token.getNode());
            jbpm Context.save(processInstance);
            }
finally   {
              jbpm Context.close();
            }

    }
    

 

-------------------------------------------------

输出结果

StartState(start)
TaskNode(charge)
EndState(end)

分享到:
评论

相关推荐

    jbpm下载 jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)

    jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)jbpm下载 jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)jbpm下载

    jbpm-jpdl-suite-3.2.3安装配置.doc

    在配置jbpm-jpdl-suite-3.2.3的过程中,需要注意以下几个关键步骤: 1. **环境准备**: - 首先,确保你已经安装了JDK 1.6,因为jbpm-jpdl-suite-3.2.3需要依赖Java运行环境。 - 安装Ant 1.7.1,这是一个Java编译...

    jbpm-jpdl-suite-3.2.3的安装配置

    2. **jbpm-jpdl-designer-3.1.2.zip**:这是一个基于Eclipse的图形化流程设计工具,支持流程的可视化定制,避免直接编辑XML文件。同时,它还具有流程定义上传功能,方便将新定义的流程发布到jPDL系统。 3. **jbpm-...

    jbpm-jpdl-designer-site-3.1.7.zip

    jbpm-jpdl-designer-site-3.1.7.zip jbpm-jpdl-designer-site-3.1.7.zip jbpm-jpdl-designer-site-3.1.7.zip

    jbpm-starters-kit-3.1.2.part2.rar

    jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,共两卷

    jbpm-jpdl-suite-3.2.3.zip

    jbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3....

    jbpm-jpdl-suite-3.2.GA.zip-6

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-jpdl-3.2.3.zip

    jbpm-jpdl-3.2.3.zip 是一个包含开源工作流引擎jbpm的版本3.2.3的压缩包。jbpm(Java Business Process Management)是一个强大的业务流程管理系统,它提供了完整的业务流程建模、执行和管理能力,特别适合于需要...

    jbpm-flow-builder-5.1.0.Final.jar

    jbpm-flow-builder-5.1.0.Final.jar jbpm5

    jbpm-jpdl-suite-3.2.GA.zip-3

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-jpdl-designer-3.1.3.zip

    "jbpm-jpdl-designer-3.1.3.zip" 是一个压缩包,其中包含的是JBPMP项目中的JPDL设计器的相关资源。这个版本号3.1.3表明这是一个特定的历史版本。JBPMP(Java Business Process Management Suite)是用于业务流程管理...

    jbpm-jpdl-suite-3.2.GA.zip-5

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-gpd-site 4.4.zip

    jbpm-gpd-site 4.4.zip 是一个与jbpm(Java Business Process Management)相关的压缩文件,它包含的是jbpm-eclipse插件的特定版本,适用于jbpm 4.4框架。jbpm是一个开源的工作流管理系统,用于设计、执行和管理业务...

    jbpm-jpdl-3.2.3(server部分).rar

    这个是jbpm-jpdl-3.2.3.zip的server部分,有60多兆, 只要将"jbpm-jpdl-3.2.3(没有server部分).rar"和这个合在一起就是整个的jbpm-jpdl-3.2.3.zip "jbpm-jpdl-3.2.3(没有server部分).rar"在我的另外一个上传资源里面

    jbpm-starters-kit-3.1.2.zip官方下载地址

    jbpm-starters-kit-3.1.2.zip官方下载地址 版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里...

    jbpm-jpdl-designer-nodeps-3.1.4

    "jbpm-jpdl-designer-nodeps-3.1.4" 是一个针对Jbpm工作流管理系统中的JPDL设计工具的无依赖版本,主要用于创建和编辑JPDL(Jbpm Process Definition Language)文件。该资源包含了该工具的详细文档、许可证协议以及...

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    jbpm-2.0-beta1是该系统的早期版本,其核心功能包括工作流引擎、流程建模工具以及一系列示例项目,如jbpm-demo,用于帮助用户更好地理解和应用jbpm。 工作流引擎是jbpm的核心组件,它负责解析和执行工作流定义...

Global site tag (gtag.js) - Google Analytics