工作流

it2022-05-16  58

环境:Eclipse 3.5 + java 6 + MySQL 5.5 + jBPM 4.4   1、建立 Java Project; 2、拷贝 XML配置文件放进工程目录; 3、 建立 JPDL文件,画流程图; 4、编写测试类;   完成的项目目录:      jBPM 流程图:     helloword.jpdl.xml: <?xml version="1.0" encoding="UTF-8"?> <process name="helloword" xmlns="http://jbpm.org/4.4/jpdl"> <start g="132,24,48,48" name="start1"> <transition g="-52,-22" name="to task1" to="提交申请"/> </start> <end g="132,456,48,48" name="end1"/> <task g="108,108,92,52" name="提交申请" assignee="员工"> <transition g="-49,-13" name="to task2" to="部门经理审批"/> </task> <task g="108,228,92,52" name="部门经理审批" assignee="部门经理"> <transition g="-48,-12" name="to task3" to="总经理审批"/> </task> <task g="108,348,92,52" name="总经理审批" assignee="总经理"> <transition g="-48,-11" name="to end1" to="end1"/> </task> </process>

 

    测试类:Helloword.java package com.guilin.jbpm; import java.util.List; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.task.Task; import org.junit.Test; public class Helloword { private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine(); // 部署流程定义 @Test public void deployProcessDefinition() { processEngine.getRepositoryService().createDeployment() .addResourceFromClasspath("com/guilin/jbpm/helloword.jpdl.xml") .addResourceFromClasspath("com/guilin/jbpm/helloword.png") .deploy(); System.out.println("部署流程完毕!"); } // 启动流程实例 @Test public void startProcessInstance() { processEngine.getExecutionService().startProcessInstanceByKey("helloword"); System.out.println("启动流程实例成功!"); } // 查询我的任务列表 @Test public void findMyTaskList() { String[] userIds = { "员工", "部门经理", "总经理" }; for (int i = 0; i < userIds.length; i++) { // 查询任务 List<Task> tasks = processEngine.getTaskService() .findPersonalTasks(userIds[i]); // 显示任务信息 for (Task task : tasks) { System.out.println("-------------------------------------------------"); System.out.println("任务ID=" + task.getId() + ", 任务名称=" + task.getName() + ", 任务办理人=" + task.getAssignee() + ", 任务创建时间=" + task.getCreateTime()); } } } // 办理任务 @Test public void completeTask() { // 任务 ID String taskId = "60001"; processEngine.getTaskService().completeTask(taskId); System.out.println(taskId + "任务完成!"); } }

 

  测试过程:     灰色部分为控制台输出: 执行部署流程:deployProcessDefinition     部署流程完毕! 启动第一个流程实例:startProcessInstance      启动流程实例成功! 查询任务列表:findMyTaskList ------------------------------------------------- 任务ID=10002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:20:18.0 再启动第二个流程实例:startProcessInstance 查询任务列表:findMyTaskList 任务ID=10002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0 任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:20:18.0 任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0 ------------------------------------------------- ------------------------------------------------- 办理任务:completeTask; taskId 改为:10002     10002任务完成! 查询任务列表:findMyTaskList 任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0 任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0 ------------------------------------------------- 任务ID=40001, 任务名称=部门经理审批, 任务办理人=部门经理, 任务创建时间=2013-07-16 11:24:45.0 ------------------------------------------------- ------------------------------------------------- 办理任务completeTask; taskId 改为:40001     40001任务完成! 查询任务列表:findMyTaskList 任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0 任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0 ------------------------------------------------- ------------------------------------------------- 任务ID=50001, 任务名称=总经理审批, 任务办理人=总经理, 任务创建时间=2013-07-16 11:28:52.0 ------------------------------------------------- 办理任务completeTask; taskId 改为:50001     50001任务完成! 查询任务列表:findMyTaskList 任务ID=20002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:11.0 任务ID=30002, 任务名称=提交申请, 任务办理人=员工, 任务创建时间=2013-07-16 11:22:19.0 ------------------------------------------------- ------------------------------------------------- -------------------------------------------------     到此,第一个流程实例完成。    

转载于:https://www.cnblogs.com/lindu/p/3193023.html


最新回复(0)