`
zha_zi
  • 浏览: 585404 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

jbpm一直困扰的一个问题

阅读更多

        在使用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的一个实例

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

    jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍

    jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍

    jbpm5第一个例子

    做好myeclipse集成后,按官方的文档做第一个例子即可。 http://www.mastertheboss.com/jbpm5/jbpm-5-tutorial-first-example 一般不会的问题,从官方找就行,但上面说的也不详细,结果搞了一天也没通,后来把条件...

    jbpm简介\jbpm简介

    \jbpm简介\jbpm简介\jbpm简介\jbpm简介\jbpm简介

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    jbpm开发指南--jbpm全面介绍

    每一个流程产生了多少个流程实例,有哪些流程实例结束了,哪些处于活动状态,哪些挂起了;同时对于每一个流程实例当前走到什么位置了(流程的进度状况)等等。通过查看JBPM的API我们发现API里并没有提供实现该功能...

    jbpm 数据库jbpm 数据库

    jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库

    jsp jbpm 做的一个小实例

    这是我自己在这里几天学习jbpm做的一个小实例,完全用JSP+JBPM,接下来我会和spring结合在一起,希望在学习的你有帮助

    jbpm 案例 jbpm jbpm

    jbpm使用案例,非常不错,大家都来看看吧。

    一个详细的JBPM请假DEMO

    一个详细的JBPM请假DEMO,里面有详细的所有配置与源代码

    JBPM工作原理及表结构详解

    6.2 上传一个ZIP包:(包含PNG和JPDL.XML)后 19 6.3 开始一个流程STARTPROCESSINSTANCEBYKEY后 19 6.4 填写申请信息 19 6.5 审批申请信息 19 6.6 审批结束 20 7、简单的流程实例: 21 8、配置文件 25 9、JBMP4.4包...

    jbpm4jbpm5

    jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版

    一个Jbpm实例代码

    Jbpm实例代码,供学习参考。里面包含源代码!

    我写的一个jbpm实例

    我写的一个jbpm实例

    一个JBPM工作流例子,JBPM

    一个JBPM工作流例子,JBPM实现销售批复

    jbpm4web-JBPM4的一个web版本的Demo

    自学Jbpm,根据教程自己写的web版本的Demo,欢迎下载测试。里边包含了业务流程的创建,发起,驳回,删除等。如果没有积分的同志请到我的博客里边去寻找联系我的QQ链接,发送QQ或者邮件来索取。

    jbpm3.2表说明

    JBPM_TASK JBPM_TASK FK_TASK_PROCDEF PROCESSDEFINITION_ 一个流程可能有多个task JBPM_MODULEDEFINITION JBPM_MODULEDEFINITION FK_MODDEF_PROCDEF PROCESSDEFINITION_ 一个流程可能处在很多的模块(模块概念不...

    jbpm4.3问题解决

    jbpm4.3问题解决方法,我们根据您的错误给出针对性的解答!

    jbpm4源码jbpm4源码jbpm4源码

    jbpm4源码jbpm4源码jbpm4源码

Global site tag (gtag.js) - Google Analytics