在使用jbpm的时候创建task 有两种方式,一直是有jbpm给我创建,还有一种是自己根据业务需求手动创建task 而且手动创建时一种非常常见的方式,例如在处理工作流中的汇签问题,
查询资料上提到手动创建task的步骤 把create-tasks="false" ,在event 事件上边配置要触发的时间类型
以及要触发的class
<?xml version="1.0" encoding="GBK"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="helloworld">
<swimlane name="initorl">
</swimlane>
<start-state name="fillform">
<task name="fillform" swimlane="initorl"></task>
<transition to="audit"></transition>
</start-state>
<task-node name="audit">
<task name="audit">
<assignment actor-id="3"></assignment>
</task>
<transition to="mgr audit" name="mgr audit"></transition>
</task-node>
<task-node name="mgr audit" create-tasks="false" >
<task name="mgr audit">
</task>
<event type="node-enter">
<action class="net.valley.util.CreateTask"/>
</event>
<transition to="hr mgr" ></transition>
<!-- 手工添加多人审批
<task name="经理审批">
<assignment actor-id="2"></assignment>
</task>
<task name="经理审批">
<assignment actor-id="3"></assignment>
</task>
<task name="经理审批">
<assignment actor-id="4"></assignment>
</task>
<transition to="mg dic" name="to hr" ></transition>
</task-node>
-->
</task-node>
<task-node name="hr mgr">
<task name="hr mgr" swimlane="initorl">
</task>
<transition to="end1" ></transition>
</task-node>
<end-state name="end1"></end-state>
</process-definition>
class 如下
package net.valley.util;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
public class CreateTask implements ActionHandler{
/**
* 根据参与者的个数来创建task的实例个数
* 参与者之间用逗号分隔
*
*/
public void execute(ExecutionContext executionContext) throws Exception {
// TODO Auto-generated method stub
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
TaskNode tn=(TaskNode)executionContext.getNode();
String actorid=(String)executionContext.getProcessInstance().getContextInstance().getVariable("nextactorid");
TaskMgmtInstance tmi=executionContext.getTaskMgmtInstance();
String[] actors=actorid.split(",");
for(int i=0;i<actors.length;i++)
{
//一定要加上getToken();
TaskInstance ti=tmi.createTaskInstance(tn.getTask("mgr audit"),executionContext.getToken());
ti.setActorId(actors[i]);
}
}
}
下边代码是让节点向下移动
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="org.jbpm.JbpmContext"%>
<%@page import="org.jbpm.JbpmConfiguration"%>
<%@page import="org.jbpm.graph.exe.ProcessInstance"%>
<%@page import="org.jbpm.db.GraphSession"%>
<%@page import="org.jbpm.graph.def.ProcessDefinition"%>
<%@page import="org.jbpm.taskmgmt.exe.TaskInstance"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>xx</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
Long ttid=Long.parseLong(request.getParameter("ttid"));
//String tn=request.getParameter("s");
String actid=request.getParameter("sub");
//为了方便期间我把路线指定了,流程定义的时候也只有一个路线
String nextPath="mgr audit";
JbpmContext c=JbpmConfiguration.getInstance().createJbpmContext();
TaskInstance ti=c.loadTaskInstance(ttid);
ProcessInstance pi=ti.getProcessInstance();
ti.getProcessInstance().getContextInstance().setVariable("nextactorid",actid);
//ti.end("next");
//pi.signal();
//ti.end(nextPath);
ti.end(nextPath);
c.close();
%>
</body>
</html>
现在问题是,ti.end();在调用这个方法的会从audit节点直接跳到hr mgr节点,并没有像预期的那样在mgr audit
节点创建多个task实例,我在CreateTask类中设置断点也没有执行到,
请有经验的朋友解释一下,我用的是jbpm3.2.2
分享到:
相关推荐
JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...
"jbpm4web"是基于JBPM4开发的一个Web版本的示例项目,旨在帮助学习者更直观地理解和应用JBPM4的核心功能。这个Demo涵盖了业务流程的创建、发起、驳回和删除等关键操作,为初学者提供了一个实践平台。 1. **流程设计...
jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. **jbpm4表结构和表字段说明**: jbpm4.3表结构和表字段说明文档通常会详细...
jBPM是一个开源的、纯Java的、轻量级的商业流程管理(Business Process Management, BPM)工作流引擎。它支持多种可执行流程语言,并且可以在任何JavaEE应用服务器或简单的配置了JDBC的JVM环境中运行。jBPM的核心...
jbpm4.3是Jboss Business Process Management (BPM)平台的一个版本,它是一个开源的工作流管理系统,用于设计、执行和管理业务流程。本篇主要针对jbpm4.3使用过程中遇到的问题及其解决方法进行详细阐述。 首先,...
JBPM4是一个开源的工作流管理系统,它提供了全面的业务流程管理(BPM)解决方案,包括流程建模、执行、监控和优化。JBPM4允许开发者设计、部署和执行复杂的业务流程,使得组织能够更有效地自动化其业务操作。 ...
Jbpm,全称Java Business Process Management,是一个开源的工作流管理系统,用于设计、执行和管理业务流程。它提供了一套完整的工具集,包括流程建模、部署、执行、监控和优化,使得企业可以更加灵活地管理和自动化...
做好myeclipse集成后,按官方的文档做第一个例子即可。 http://www.mastertheboss.com/jbpm5/jbpm-5-tutorial-first-example 一般不会的问题,从官方找就行,但上面说的也不详细,结果搞了一天也没通,后来把条件...
jbpm(Java Business Process Management)是一个开源的工作流和业务流程管理平台,它提供了一套完整的工具链,用于设计、执行和管理工作流。在本示例中,用户可以了解如何在Java环境中集成并应用jbpm4进行流程定义...
你可以通过阅读这个文档,深入了解jbPM 3.2的使用方法,解决在实际项目中遇到的问题。 总的来说,jbPM 3.2是一个强大的工作流管理系统,通过深入理解和实践,开发者可以构建出高效、灵活的业务流程,提高企业的业务...
jbpm-3.1.2.zip 文件包含了 jBpm 的一个重要版本——jBpm 3.1.2,这是一个开源的工作流管理系统,专为构建灵活且可扩展的业务流程解决方案而设计。jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务...
jbpm jbpm4.3.jar DDDDDDDD
综上所述,"我写的一个jbpm实例"是一个全面展示jbpm功能和SSH框架集成的应用案例,涵盖了流程设计、部署、执行、监控等多个方面。通过学习这个实例,读者可以加深对jbpm的理解,为实际项目开发提供参考。
jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理系统,主要用于处理企业的业务流程自动化。jBPM 4.3是该系统的早期版本,虽然现在可能已经被更新的版本取代,但其仍然包含了许多核心的...
### jBPM 白皮书:介绍 ...总之,jBPM 作为一款强大的开源 BPM 框架,为企业提供了一个低成本、高灵活性的解决方案,帮助企业实现业务流程管理的现代化。随着 BPM 技术的发展和完善,jBPM 必将在更多领域发挥重要作用。
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...
每一个流程产生了多少个流程实例,有哪些流程实例结束了,哪些处于活动状态,哪些挂起了;同时对于每一个流程实例当前走到什么位置了(流程的进度状况)等等。通过查看JBPM的API我们发现API里并没有提供实现该功能...
这是我自己在这里几天学习jbpm做的一个小实例,完全用JSP+JBPM,接下来我会和spring结合在一起,希望在学习的你有帮助
jbpm使用案例,非常不错,大家都来看看吧。