`
xgbjmxn
  • 浏览: 270546 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

jbpm之6 JBPM流程通过Aciton动态创建TaskInstance来实现“会签”

    博客分类:
  • jbpm
阅读更多
jbpm6(2007-03-14 23:32:38)转载 
JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
关键字:   JBPM 会签   
昨天在Jbpm-inside群里面和大家讨论了在Jbpm流程中,如何实现“会签”的问题,最后得出了两种方案。今天就这两种思想中的一种:通过Aciton动态创建TaskInstance来实现“会签”,自己实现了一把,成功了!

1. 创建processDefinition.xml流程定义文件,如下:

代码
<?xml version="1.0" encoding="UTF-8"?>  
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="webPay">  
    <swimlane name="PooledActors">  
        <assignment class="com.sky.plugin.jbpm.ActorHandel"></assignment>  
    </swimlane>  
    <start-state name="网上支付审批流程">  
        <transition name="开始" to="财务人员录入"></transition>  
    </start-state>  
    <task-node name="财务人员录入">  
        <task name="财务人员录入申报数据" swimlane="PooledActors"></task>  
        <transition name="主管会计复核" to="主管会计复核"></transition>  
    </task-node>  
    <task-node name="主管会计复核" signal="last-wait" create-tasks="false">  
        <task name="主管会计复核" swimlane="PooledActors"></task>  
        <event type="node-enter">  
            <action name="createInstance"  
        class="com.sky.plugin.jbpm.CreateTaskInstance">  
            </action>  
        </event>  
        <transition name="复核通过" to="领导审批"></transition>  
        <transition name="复核不通过" to="异常结束"></transition>  
    </task-node>  
    <task-node name="领导审批">  
        <task name="领导审批" swimlane="PooledActors"></task>  
        <transition name="同意" to="结束"></transition>  
        <transition name="不同意" to="异常结束"></transition>  
    </task-node>  
    <end-state name="结束"></end-state>  
    <end-state name="异常结束"></end-state>  
</process-definition>  
task-node"主管会计复核"则是我们需要进行会签的节点。在这个节点我们设置了几个重要的属性:

1) signal="last-wait",这个属性决定了该节点将在完成该节点内的所有Task的TaskInstance以后才会进入下一个节点。)


2) create-tasks="false",这个属性决定了在进入该节点的时候,不会自动为该节点的任何Task创建任何的TaskInstance。因为我们需要根据会签的人员来自己创建TaskInstance。


3) action,action的设定是为了,在Action中根据实际的情况来创建TaskInstance
2. 编写Action代码

代码
import org.jbpm.graph.def.ActionHandler;   
import org.jbpm.graph.exe.ExecutionContext;   
import org.jbpm.graph.exe.Token;   
import org.jbpm.graph.node.TaskNode;   
import org.jbpm.taskmgmt.def.Task;   
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;   
  
public class CreateTaskInstance implements ActionHandler {   
  
    private static final long serialVersionUID = 1L;   
  
    public void execute(ExecutionContext executionContext) throws Exception {   
        Token token = executionContext.getToken();   
        TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();   
  
        TaskNode taskNode = (TaskNode) executionContext.getNode();   
        Task task= taskNode.getTask("主管会计复核");   
        tmi.createTaskInstance(task, token)   
                      .setPooledActors(new String[]{"1000"});   
        tmi.createTaskInstance(task, token)   
                      .setPooledActors(new String[]{"1001"});   
  
    }   
  
}   
当然,在实际情况中.setPooledActors(new String[]{"100"})中设置的actor应该是动态指定的,这里为了简单方便就直接写入的固定值。

3.部署运行,OK!

注意:如果在给TaskInstance指定Actor的时候是使用.setActor()方法的话,那么在获取用户任务列表的时候用.findTaskInstances();如果是用.setPooledActors(),则需要使用.findPolledTaskInstance()方法。[list][/list]

分享到:
评论

相关推荐

    jbpm4.3 会签的实现

    jbpm是一个开源的工作流管理框架,版本4.3提供了丰富的功能来支持复杂的企业流程,其中包括会签的实现。本文将深入探讨jbpm4.3如何实现会签功能,并分享相关的源码和工具使用。 1. jbpm4.3概述: jbpm4.3是jbpm的一...

    JBPM4.4会签实例

    通过学习"CountersignDemo"这个实例,你可以深入了解JBPM4.4的会签实现,包括如何设计流程、创建自定义活动、编写工具类以及如何在实际应用中部署和使用。这将有助于提升你对业务流程管理的理解,使你能更好地为企业...

    jBPM4.4 会签,用custom实现(带加签、减签功能)

    在jBPM中,我们可以通过动态修改流程实例的结构来实现加签。例如,当一个特定条件满足时,我们的custom节点可以增加一个新的多实例任务,并将其分配给新添加的审批人。 减签则是在流程进行中,因为某些原因不再需要...

    jBPM4.4 会签(带加签、减签功能)

    在jbPM中实现加签,可以通过动态修改任务参与者的方式来达成。这通常需要编写自定义服务任务或者监听器,当满足特定条件时,动态插入新的参与者到任务实例中。 4. **减签功能** 减签则是在流程进行中,某些审批者...

    JBPM4.4完整可用审批流程

    使用JBPM4.4,开发者可以设计复杂的审批流程,例如请假申请、报销审批等,通过图形化的流程设计器(Business Process Designer)创建流程模型。流程中的每个步骤可以关联到一个任务,任务可以分配给不同的角色或用户...

    JBPM流程监控的实现过程

    本文将深入探讨如何通过手工编码方式在JBPM中实现流程监控,包括如何监控已发布流程的状态、流程实例的动态以及任务实例的执行情况。 #### 一、理解流程监控的核心需求 流程监控的核心目标在于实时掌握系统内流程...

    jbpm4 s2sh 请假流程

    这个示例应用可以帮助初学者了解如何在实际项目中结合jbpm4和SSH来实现业务流程自动化,同时也为更复杂的BPM系统开发奠定了基础。通过学习和实践这个教程,开发者可以掌握如何将工作流管理融入到日常的Web应用中,...

    jbpm工作流(会签,串签)

    这通常通过序列流(Sequence Flow)来实现,每个任务完成后,流程才会流转到下一个任务。 查询已办和待办任务是流程参与者日常操作的重要部分。jbpm提供了任务查询服务,可以基于各种条件(如任务状态、任务负责人...

    JBPM 流程 监控 的实现

    6. **使用流程审计表**:JBPM的持久化机制会将流程实例和任务的状态记录在数据库的审计表中,可以通过查询这些审计表来获取流程的运行状态,从而实现监控。 7. **设计和实现监控服务**:创建一个独立的服务,该服务...

    JBPM4.3 Spring会签 实例

    其次,创建流程定义(.bpmn文件)来描述会签流程。在这个流程中,可以设置多个并行的任务节点,每个节点代表一个会签的角色。通过使用边界事件和多实例任务,我们可以实现会签的逻辑。多实例任务允许我们指定一个...

    jbpm会签.zip

    6. **流程实例(Process Instance)与令牌(Token)**:jbpm中的每个流程执行实例都有一个与之关联的令牌,令牌在流程图中移动,代表了流程的当前状态。在并行网关中,令牌会复制,每个副本代表一个并行路径。 7. *...

    jbpm+S2SH请假流程经典实现及源码

    在本项目中,你可以看到如何通过jbpm提供的工具或API创建请假流程的模型,包括请假申请、审批、驳回等步骤。 Struts2作为MVC框架负责处理用户请求,提供视图层和控制层的交互。Spring框架则用于依赖注入和事务管理...

    JBPM流程引擎资料

    这些节点的处理方式,例如如何通过decision条件或表达式进行决策,如何实现并行分支,如何结束流程实例等,都是jBPM流程设计的关键知识点。 自动活动(Automatic Activities)是流程中无需人工干预的部分,文档对于...

    jbpm4.4 在线设计流程图 ext + raphael

    Raphael提供了一系列API,可以创建、移动、改变形状和颜色等,使得jbpm4.4能够动态生成和编辑流程图。 在jbpm4.4中设计流程图时,用户可以通过拖放操作添加各种流程元素,如开始事件、结束事件、任务和网关等。每种...

    jbpm4.4 会签 测试( fork & join)

    在jbpm中,"fork & join"机制是实现并行处理和流程控制的关键概念,尤其在处理会签(多个审批人同时参与审批)等场景时显得尤为重要。 "fork"在jbpm中指的是流程分支,当流程到达一个fork节点时,流程会分裂为多个...

    JBPM5.4工作流 Eclipse流程插件安装

    在中文环境中,关于JBPM5.4的资料相对较少,因此,这套教程将深入探讨如何在国内没有中文文档支持的情况下,通过翻译英文文档和实际项目应用来掌握JBPM5.4的使用,确保开发者能够顺利地进行工作流开发。 **1. 安装...

Global site tag (gtag.js) - Google Analytics