`
ynztpwl
  • 浏览: 59530 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jbpm3.2 Aciton动态创建TaskInstance来实现“会签”

 
阅读更多
昨天在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

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()方法。

分享到:
评论

相关推荐

    jBPM3.2.rar_JBPM3.2_jbpm_jbpm 3.2_jbpm3_jbpm3.2教程

    3. **jbPM库**:下载jbPM 3.2的库文件,包括jar包和其他依赖,这些可以通过Maven的pom.xml文件或Ant的build.xml文件来管理。 4. **数据库连接**:jbPM需要一个数据库来存储流程实例、任务等信息,你可以选择MySQL、...

    jbpm3.2开发总结.pdf

    首先,了解jbpm3.2需要掌握Java语言,J2EE技术栈,特别是Hibernate,因为在jbpm3.2中,流程定义、任务实例等数据的持久化是通过Hibernate来实现的。同时,了解Eclipse开发环境以及jbpm-gpd(jBPM Graphical Process ...

    JBPM3.2工作流开发指南

    JBPM3.2工作流开发指南 JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上。

    jbpm3.2表说明

    jbpm3.2表说明 很详细 1.1 JBPM_PROCESSDEFINITION:流程模版表 关系表 外键存在表 外键名称 外键存在表字段 存在原因 可能 关系 JBPM_NODE JBPM_NODE FK_PROCST_SBPRCDEF SUBPROCESSDEFINITION_ 子流程的...

    JBPM3.2 表初始化,流程发布

    **JBPM3.2 表初始化与流程发布详解** JBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于业务流程的建模、部署、执行和监控。在JBPM3.2版本中,用户需要对数据库进行初始化,以便正确...

    JBPM3.2与Spring结合时任务调度的实现.doc

    JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...

    jBPM 3.2 最新学习文档

    在jBPM 3.2中,用户可以通过图形化界面或者XML格式来创建和编辑流程定义,这极大地方便了非技术背景的业务人员参与到流程设计中。 然后,我们要了解jBPM的持久化机制。jBPM 3.2使用JPA(Java Persistence API)来...

    JBPM3.2 表初始化,流程发布第一课

    1. 数据库准备:JBPM3.2需要与数据库进行交互来存储流程实例、任务和变量等信息。因此,首先需要确保已经配置好与JBPM兼容的数据库,并创建相应的数据库表。JBPM提供了SQL脚本,用于在MySQL、Oracle、PostgreSQL等...

    jbpm3.2 .jar

    总的来说,jbpm3.2 .jar及其相关组件为开发者提供了强大的业务流程管理工具,帮助企业构建高度自动化和协调的业务环境。无论是流程的设计、执行还是维护,jbpm都提供了丰富的功能和支持,以适应不同行业的业务需求。

    [原创]jBPM 3.2 学习笔记

    用erstudio v7.1查看 博文链接:https://evanz.iteye.com/blog/106101

    jbpm3.2.x开发所需jar包

    **jbpm3.2.x 开发环境搭建及关键...总的来说,Jbpm3.2.x开发所需的jar包集合,是实现业务流程管理的关键元素。通过理解这些jar包的作用,并正确集成它们,开发者可以有效地利用Jbpm构建高效、可扩展的企业级流程应用。

    jbpm3.2 mysql修改可用建表语句

    jbpm3.2 mysql修改可用建表语句 在mysql命令行下使用:source D:1.sql

    JBPM3.2 源码

    总的来说,JBPM3.2源码提供了全面的业务流程管理解决方案,涉及到了流程设计、执行、监控等多个方面,对于理解BPM领域以及提升软件工程实践能力具有重要意义。无论是对于初学者还是经验丰富的开发者,深入研究和应用...

    jbpm3.2 简单的请假流程

    jbpm3.2是jbpm项目早期的一个稳定版本,它提供了一个强大的框架,允许开发者创建、部署和执行业务流程。 jbpm的请假流程示例通常会展示如何通过jbpm来实现一个常见的企业业务流程。这个流程可能包括员工申请假期、...

    深入浅出jBPM3.2.part1

    JBPM3.2,扫描版本,还算很清晰,虽然比较老,但是用来学习下还算不错,而且是中文,此文件因为太大,所以分为两个压缩包压缩,都已全部上传,请全部下载再解压缩。

    spring2_struts2_jbpm3.2.rar_jbpm struts2_jbpm-demo_jbpm3 spring_

    《Spring、Struts2与JBPM 3.2的整合应用详解》 在现代企业级应用开发中,Spring、Struts2和JBPM是三个重要的技术框架。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为应用程序提供了灵活的基础架构...

    深入浅出jBPM3.2.part2

    JBPM3.2,扫描版本,还算很清晰,虽然比较老,但是用来学习下还算不错,而且是中文,此文件因为太大,所以分为两个压缩包压缩,都已全部上传,请全部下载再解压缩。

    jbpm3.2开发总结[定义].pdf

    jBPM 3.2版本在2004年10月18日发布,并被纳入JBoss企业中间件平台,更名为JBoss jBPM。这个系统的设计目标是提供一个灵活且可扩展的流程控制流机制,通过流程语言来表达各种商业流程元素,如任务、异步通信、定时器...

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

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

Global site tag (gtag.js) - Google Analytics