zoukankan      html  css  js  c++  java
  • 工作流

    工作流视频教程:链接:http://pan.baidu.com/s/1hs176BE 密码:klkg

     

     

    test.png

    test.jpdl.xml

    [html] view plain copy
     
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3. <process name="test" xmlns="http://jbpm.org/4.4/jpdl">  
    4.    <start g="247,9,48,48" name="start1">  
    5.       <transition g="-69,-22" name="to 员工提交申请" to="员工提交申请"/>  
    6.    </start>  
    7.    <end g="244,326,48,48" name="end1"/>  
    8.    <task assignee="员工" g="223,84,92,52" name="员工提交申请">  
    9.       <transition g="-93,-22" name="to 部门经理审批" to="部门经理审批"/>  
    10.    </task>  
    11.    <task assignee="部门经理" g="226,161,92,52" name="部门经理审批">  
    12.       <transition g="-81,-22" name="to 总经理审批" to="总经理审批"/>  
    13.    </task>  
    14.    <task assignee="总经理" g="222,244,92,52" name="总经理审批">  
    15.       <transition g="-50,-22" name="to end1" to="end1"/>  
    16.    </task>  
    17. </process>  

    Task

    assignee

    员工提交申请

    员工

    部门经理审批

    部门经理

    总经理审批

    总经理

    1.部署流程定义

    a) 通过直接拿到.jpdl.xml和.png方式部署

    [java] view plain copy
     
    1. private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();  
    2.   
    3.     @Test  
    4.     public void createSchema() { // hbm2ddl.auto=update  
    5.         new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory();  
    6.     }  
    7.   
    8.     // 一、部署流程定义  
    9.     @Test  
    10.     public void deployProcessDefinition() {  
    11.         processEngine.getRepositoryService()//  
    12.                 .createDeployment()//  
    13.                 .addResourceFromClasspath("helloworld/test.jpdl.xml")//  
    14.                 .addResourceFromClasspath("helloworld/test.png")//  
    15.                 .deploy();  
    16.     }  



    b) 部署完后,在jbpm4_ployment表中有一条记录;在jbpm4_lob表有两条记录,分别为test.jpdl.xml和test.png。

    2.启动流程实例

    a) 通过key启动流程实例,.jpdl.xml中key不写默认为name属性

    [java] view plain copy
     
    1. @Test  
    2.     public void startProcessInstance() {  
    3.         processEngine.getExecutionService().startProcessInstanceByKey("test");  
    4.     }  

    b) 启动流程实例后:jbpm4_execution表中有一条员工提交申请的活动记录,此时进行到to员工提交申请环节。

    3.员工操作

    a) 查询未办理的任务列表

    [java] view plain copy
     
    1. @Test  
    2.     public void findMyTaskList() {  
    3.         // 查询任务  
    4.         String userId = "员工";  
    5.         List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);  
    6.   
    7.         // 显示任务  
    8.         System.out.println("========= 【"+userId+"】的未办理的任务列表 =========");  
    9.         for (Task task : list) {  
    10.             System.out.println("id=" + task.getId()//  
    11.                     + ", name=" + task.getName()//  
    12.                     + ", assignee=" + task.getAssignee()//  
    13.                     + ", createTime=" + task.getCreateTime());  
    14.         }  
    15.     }  

    b) 查看到信息如下:有一条任务id为20002

    ========== 【员工】的未办理的任务列表 =========

    id=20002, name=员工提交申请, assignee=员工, createTime=2014-05-02 16:48:04.0

    c) 员工办理任务:提交申请环节

    [java] view plain copy
     
    1. @Test  
    2.     public void completeTask() {  
    3.         String taskId = "20002";  
    4.         processEngine.getTaskService().completeTask(taskId);  
    5.     }  

    d) 员工执行完任务,即员工提交申请环节结束,环节进行到to部门经理审批,此时员工再查询个人任务列表结果为空。

    4.部门经理操作

    a) 查询未办理的任务列表

    [java] view plain copy
     
    1. @Test  
    2.     public void findMyTaskList() {  
    3.         // 查询任务  
    4.         String userId = "部门经理";  
    5.         List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);  
    6.   
    7.         // 显示任务  
    8.         System.out.println("========= 【"+userId+"】的未办理的任务列表 =========");  
    9.         for (Task task : list) {  
    10.             System.out.println("id=" + task.getId()//  
    11.                     + ", name=" + task.getName()//  
    12.                     + ", assignee=" + task.getAssignee()//  
    13.                     + ", createTime=" + task.getCreateTime());  
    14.         }  
    15.     }  

    b) 查看到信息如下:有一条任务id为30001

    ========== 【部门经理】的未办理的任务列表 =========

    id=30001, name=部门经理审批, assignee=部门经理, createTime=2014-05-02 16:49:06.0

    c) 部门经理办理任务:提交申请环节

    [java] view plain copy
     
    1. @Test  
    2.     public void completeTask() {  
    3.         String taskId = "30001";  
    4.         processEngine.getTaskService().completeTask(taskId);  
    5.     }  

    d) 部门经理执行完任务,即部门经理审批环节结束,环节进行到to总经理审批,此时部门经理再查询个人任务列表结果为空。

    5.总经理操作

    a) 查询未办理的任务列表

    [java] view plain copy
     
    1. @Test  
    2.     public void findMyTaskList() {  
    3.         // 查询任务  
    4.         String userId = "总经理";  
    5.         List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);  
    6.   
    7.         // 显示任务  
    8.         System.out.println("========= 【"+userId+"】的未办理的任务列表 =========");  
    9.         for (Task task : list) {  
    10.             System.out.println("id=" + task.getId()//  
    11.                     + ", name=" + task.getName()//  
    12.                     + ", assignee=" + task.getAssignee()//  
    13.                     + ", createTime=" + task.getCreateTime());  
    14.         }  
    15.     }  

    b) 查看到任务id为40001

    ========== 【总经理】的未办理的任务列表 =========

    id=40001, name=总经理审批, assignee=总经理, createTime=2014-05-02 16:49:33.0

    c) 总经理办理任务:提交申请环节

    [java] view plain copy
     
    1. @Test  
    2.     public void completeTask() {  
    3.         String taskId = "40001";  
    4.         processEngine.getTaskService().completeTask(taskId);  
    5.     }  



    d) 总经理执行完任务,即总经理审批环节结束,环节进行到to end1,此时总经理再查询个人任务列表结果为空。

    6.流程实例执行完毕,此时jbpm4_execution表为空,历史记录表:jbpm4_hist_procinst出现一条记录

  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/pureEve/p/6559297.html
Copyright © 2011-2022 走看看