设置流程定义图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. 完成我的个人任务

示例代码:

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("完成任务!");
    }
}