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
      -------------------------------------------------
      -------------------------------------------------
      -------------------------------------------------
        到此,第一个流程实例完成。
     
     
  • 相关阅读:
    迭代是人,递归是神(迭代与递归的总结:比较)
    HMM(隐马尔科夫)用于中文分词
    Python 字典(Dictionary) get()方法
    jieba中文分词源码分析(四)
    一个隐马尔科夫模型的应用实例:中文分词
    小白给小白详解维特比算法(二)
    IOS 播放音频流媒体
    iOS开发之多媒体API(1)
    IOS流媒体播放
    ios7中使用scrollview来横向滑动图片,自动产生偏移竖向的偏移 问题
  • 原文地址:https://www.cnblogs.com/lindu/p/3193023.html
Copyright © 2011-2022 走看看