jbpm一直困扰的一个问题
2014-12-02 12:03
218 查看
在使用jbpm的时候创建task 有两种方式,一直是有jbpm给我创建,还有一种是自己根据业务需求手动创建task 而且手动创建时一种非常常见的方式,例如在处理工作流中的汇签问题,
查询资料上提到手动创建task的步骤 把create-tasks="false" ,在event 事件上边配置要触发的时间类型
以及要触发的class
class 如下
下边代码是让节点向下移动
现在问题是,ti.end();在调用这个方法的会从audit节点直接跳到hr mgr节点,并没有像预期的那样在mgr audit
节点创建多个task实例,我在CreateTask类中设置断点也没有执行到,
请有经验的朋友解释一下,我用的是jbpm3.2.2
查询资料上提到手动创建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一直困扰的一个问题(解决)
- 一直以来我(每个从事linux开发的人)深受“bug”的困扰,好像“bug”不足以描述这种被问题困扰的无奈。因为当在驱动或BSP的开发过程中,所碰到的问题比解决一个bug难得多。 Li
- ORCAD一个一直困扰我的元件编号问题
- 学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 一个困扰两天的创建动态控件的问题
- 这几天遇到了一个麻烦的问题一直没解决,很闹心!
- 一个困扰我很长时间的错误--原来是jsp链接MySql数据库的问题
- 最近一直在想的一个问题
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 最近被一个问题困扰着,如何实现类似Photoshop的多层图像操作,每层可单独操作,又可以组合显示出来。
- 困扰了好几天的一个问题,为存储过程或函数指定的参数太多
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 又一个困扰我的简单问题。
- 一个困扰我3天的问题解决了
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起