package cn.itcast.c_processinstance;

import java.util.List;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.TaskQuery;
import org.jbpm.api.task.Task;
import org.junit.Test; /**
* 执行流程实例有关的操作
*
* <pre>
* 启动流程实例
* 查询我的任务列表
* 办理任务
* 直接向后执行一步
* </pre>
*
* @author tyg
*
*/
public class ProcessInstanceTest { private ProcessEngine processEngine = Configuration.getProcessEngine(); // 启动流程实例
@Test
public void testStartProcessInstance() throws Exception {
// 使用指定的流程定义启动流程实例(指定名称并且是指定的version)
// processEngine.getExecutionService().startProcessInstanceById("helloworld-3"); // 使用指定key的最新版本的流程定义启动一个流程实例
ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("helloworld");
System.out.println("流程实例启动成功,processInstanceId=" + pi.getId() + ", processDefinitionId=" + pi.getProcessDefinitionId());
} // 查询我的(未完成的)任务列表
@Test
public void testFindMyTaskList() throws Exception {
// 准备
String userId = "员工";
// String userId = "部门经理";
//String userId = "总经理"; // // 查询所有
// List<Task> list = processEngine.getTaskService().findPersonalTasks(userId); // 分页的查询
List<Task> list = processEngine.getTaskService()//
.createTaskQuery()//
// 过滤条件
.assignee(userId)// 指定办理人是谁,如果不指定办理人,就会查出所有人的任务
// 排序条件
// .orderAsc(TaskQuery.PROPERTY_CREATEDATE)
// 执行查询得到结果
// .count();
// .page(firstResult, maxResults)
.list(); // 显示
for (Task t : list) {
System.out.println("id=" + t.getId()//
+ ", name=" + t.getName()// 任务名称
+ ", assignee=" + t.getAssignee()// 办理人
+ ", createTime=" + t.getCreateTime()// 此任务的创建时间
+ ", executionId=" + t.getExecutionId()); // 所属的执行对象的id
}
} // 办理任务
@Test
public void testCompleteTask() throws Exception {
String taskId = "320002";
processEngine.getTaskService().completeTask(taskId);
} // 跳过某个节点,直接向后执行一步 假设:流程到部门经理,此时需要跳转到总经理时,操作:获取部门经理的executionId
@Test
public void testSignal() throws Exception {
String executionId = "helloworld.320001";
processEngine.getExecutionService().signalExecutionById(executionId, "to 总经理[审批]");
}
}
<?xml version="1.0" encoding="UTF-8"?>

<process name="hellokey" key="hellokey" xmlns="http://jbpm.org/4.4/jpdl">
<start g="115,21,48,48" name="start1">
<transition g="-71,-17" name="to 提交申请" to="提交申请"/>
</start>
<end g="115,353,48,48" name="end1"/>
<task assignee="员工" g="81,101,117,52" name="提交申请">
<transition g="-78,-15" name="to 部门经理[审批]" to="部门经理[审批]"/>
</task>
<task assignee="部门经理" g="81,185,117,52" name="部门经理[审批]">
<transition g="-95,-17" name="to 总经理[审批]" to="总经理[审批]"/>
</task>
<task assignee="总经理" g="81,269,117,52" name="总经理[审批]">
<transition g="-47,-17" name="to end1" to="end1"/>
</task>
</process>

下载demo

jbpm4.4 demo3的更多相关文章

  1. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  2. JBPM4.4业务流程管理框架详细解读

    1. 什么是JBPM4.4业务流程管理框架? JBPM,全称是JavaBusiness Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的 ...

  3. Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver

    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver 报错信息:

  4. JBPM4.4学习API

    一.流程引擎API org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源. 既所有的Service API(服务接口)都从ProcessEngine中获取 ...

  5. SSH整合JBPM4.4

    第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...

  6. JBPM4.4+SSH 整合配置及完整实例

    整合jBPM4.4+ssh过程(spring接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml): 1.在se ...

  7. Myeclipse10 + JBPM4.4 环境搭建图文教程

    一.软件环境 IDE:Myeclipse10.0 (jbpm4.0以上版本好像只能与Myeclipse7.5以上版本集成) JBPM:4.4 与Myeclipse集成 1.解压jbpm-4.4.zip ...

  8. JBPM4.4与SSH2之整合

    JBPM4.4与SSH2之整合(附完整源码) 这是我来到这世上二十多年来,第二次写博客啊.哈哈  这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么 ...

  9. Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.jbpm4.4 测试环境搭建 2.Jbpm4.4+hibernat ...

随机推荐

  1. css3创建动画

    @keyframes ico{ 0% { top: -100%; } 100%{ top:4%; } } @-webkit-keyframes ico{ 0% { top: -100%; } 100% ...

  2. Spring+MyBatis实践—登录和权限控制

    1.实现用户登录功能: 通过session来实现用户登录功能.在用户登录时,将用户的相关信息放在HttpSession对象用,其中HttpSession对象可以通过HttpServletRequest ...

  3. POJ 3592 Instantaneous Transference(强联通分量 Tarjan)

    http://poj.org/problem?id=3592 题意 :给你一个n*m的矩阵,每个位置上都有一个字符,如果是数字代表这个地方有该数量的金矿,如果是*代表这个地方有传送带并且没有金矿,可以 ...

  4. HDU4535+公式

    错排公式. 用64位! /* */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include ...

  5. 关于 ASP.NET MVC 4 如果管理用户

    很久没上来写博客,因为自己没写博客的日子里去学了一下OBJECTIVE-C 和 ASP.NET MVC.最近在学ASP.NET MVC 4,有个问题一直在困扰着我,就是怎样管理用SIMPLE MEMB ...

  6. Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

  7. java.sizeOf

    Introduction With java.SizeOf you can measure the real memory size of your Java objects. Download it ...

  8. jquery checkbox获取多个选项

    http://www.jb51.net/article/27186.htm http://www.cnblogs.com/libingql/archive/2011/11/07/2238663.htm ...

  9. linux 内核驱动--Platform Device和Platform_driver注册过程

    linux 内核驱动--Platform Device和Platform_driver注册过程 从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Pla ...

  10. BZOJ_1011_[HNOI2008]_遥远的行星_(近似)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1011 \(n\)个行星,第\(i\)颗行星的质量为\(m_i\),给出一个很小的常数\(A\) ...