zoukankan      html  css  js  c++  java
  • 工作流_JBPM之Helloword

     
    环境: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
      -------------------------------------------------
      -------------------------------------------------
      -------------------------------------------------
        到此,第一个流程实例完成。
     
     
  • 相关阅读:
    【DFS】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem D. Divisibility Game
    【二分】【三分】【计算几何】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem L. Lines and Polygon
    【线段树】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem J. Jedi Training
    【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word
    【转载】随机生成k个范围为1-n的随机数,其中有多少个不同的随机数?
    【推导】【贪心】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem H. Path or Coloring
    【枚举】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem D. Cutting Potatoes
    【找规律】【递归】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem F. Doubling
    【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!
    【计算几何】【圆反演】计蒜客17314 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 G. Finding the Radius for an Inserted Circle
  • 原文地址:https://www.cnblogs.com/lindu/p/3193023.html
Copyright © 2011-2022 走看看