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

最新文章

  1. Jenkins 集成打包和上传 App Store 的冲突
  2. 第22章 java线程(2)-线程同步
  3. mysql修改密码
  4. Linux:Shell 常用通配符
  5. PPT制作教程:如何制作ppt
  6. WDCP(WDlinux Control Panel) mysql/add_user.php、mysql/add_db.php Authentication Loss
  7. [收藏夹整理]VC部分
  8. FormsAuthentication.HashPasswordForStoringInConfigFile 方法 之研究
  9. (微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
  10. NGINX(六)扩展
  11. Memcache及telnent命令详解--转
  12. hdu4474 Yet Another Multiple Problem
  13. DataBinding
  14. OSW 快速安装部署
  15. SpringBoot整合多数据源实现
  16. linux PWM蜂鸣器移植以及驱动程序分析【转】
  17. 猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库
  18. css控制input标签
  19. JDK5.0特性-线程 Callable和Future
  20. WGS84转大地2000

热门文章

  1. 在MAC中安装Compass的方法 (转)
  2. ie6 css sprites重复加载
  3. oct(x) 将一个数字转化为8进制
  4. 丢手帕问题(环形链表)---Java 待优化
  5. Android开发UI之Action Bar
  6. bzoj1443
  7. vijosP1567子串计数
  8. easyui 中的treegrid添加checkbox
  9. UITableView添加静态背景.
  10. js制作圆角按钮(兼容谷歌,ie7,ie8)