设置流程定义图bpmn
     assignee :申请人、审核人

wKioL1aPcfXBT9s2AAApORknZGg222.png


相关操作的表

-- act_re_procdef 流程定义表
-- act_re_deployment 部署表 
-- act_ge_property 通用属性表  id 生成策略  
-- act_ru_execution  执行对象,流程实例,流程对象
-- act_ru_task 任务表


入门示例:

  1. 创建流程引擎及工作流数据表
     - 数据库及表可以自动创建,
       可以在配置数据库连接时,实现自动创建数据库和表
     - 取得ProcessEngine对象
       先取得ProcessEngineConfiguration 对象 ,再由该对象来构建ProcessEngine
  2. 部署流程
      影响的表:
        act_re_procdef :流程定义表 :
      该表的key属性 是bpmn 的 id决定  
      该表的name属性  是bpmn 的name 属性决定
    act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
    act_ge_property :通用属性表
  3. 启动流程
  4. 查看我的个人任务
  5. 完成我的个人任务

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package  com;
import  java.util.List;
import  org.activiti.engine.ProcessEngine;
import  org.activiti.engine.ProcessEngines;
import  org.activiti.engine.repository.Deployment;
import  org.activiti.engine.runtime.ProcessInstance;
import  org.activiti.engine.task.Task;
import  org.junit.Test;
public  class  ActivitiTest {
     /**
      * 建表并创建流程引擎对象(核心对象)
      */
     @Test
     public  void  createProcessEngine() {
         // 获取流程引擎
         ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
         System.out.println(processEngine);
     }
     /**
      * 部署流程定义 影响的表: act_re_procdef : 流程定义表 : 该表的key属性 是bpmn 的 id决定 该表的name属性
      * 是bpmn 的name 属性决定 act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
      * act_ge_property :通用属性表
      */
     @Test
     public  void  deploy() {
         // 获取流程引擎
         ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
         // 获取仓库服务的实例
         Deployment deployment = processEngine.getRepositoryService() //
                 .createDeployment() //
                 .addClasspathResource( "bpmn/hello.bpmn" ) //
                 .addClasspathResource( "bpmn/hello.png" ) //
                 .name( "报销单流程" ).deploy();
         System.out.println(deployment.getId() +  "        "  + deployment.getName());
     }
     /**
      * 启动流程
      */
     @Test
     public  void  startProcess() {
         // 获取流程引擎对象
         ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
         // 启动流程
         // 使用流程定义的key启动流程实例,默认会按照最新版本启动流程实例
         ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey( "helloprocess" );
         System.out.println( "pid:"  + pi.getId() +  ",activitiId:"  + pi.getActivityId());
     }
     /**
      *  查看任务
      * @throws Exception
      */
     @Test
     public  void  queryMyTask()  throws  Exception {
         // 指定任务办理者
         String assignee =  "李四" ;
         // 获取流程引擎对象
         ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
         // 查询任务的列表
         List<Task> tasks = processEngine.getTaskService().createTaskQuery() // 创建任务查询对象
                 .taskAssignee(assignee) // 指定个人任务办理人
                 .list();
         // 遍历结合查看内容
         for  (Task task : tasks) {
             System.out.println( "taskId:"  + task.getId() +  ",taskName:"  + task.getName());
             System.out.println( "*************************" );
         }
     }
     
     /**
      *  办理任务
      * @throws Exception
      */
     @Test
     public  void  completeTask()  throws  Exception {
     String taskId =  "404" ;
     // 获取流程引擎对象
     ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
     // 完成任务
     processEngine.getTaskService()
         .complete(taskId);
     System.out.println( "完成任务!" );
     }
}