Activiti工作流之任务的运行/查询/完成

8张表:

SELECT * FROM act_re_deployment;   -- 一 流程部署表

SELECT * FROM act_ge_bytearray;    -- 二 流程二进制表

SELECT * FROM act_re_procdef;      -- 三 流程定义表

SELECT * FROM act_ru_execution;    -- 四 流程正在运行表

SELECT * FROM act_hi_procinst;     -- 五 流程实例历史表

SELECT * FROM act_ru_task;         -- 六 流程当前任务表

SELECT * FROM act_hi_taskinst;     -- 七 流程历史任务表

SELECT * FROM act_hi_actinst;      -- 八 流程历史活动节点表

先决工作:

//定义一个成员变量
    RepositoryService repositoryService;
    
    RuntimeService runtimeService;
    
    TaskService taskService;
    
    /**
     * 获取流程引擎
     */
    @Before
    public void setUp() throws Exception {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        repositoryService = processEngine.getRepositoryService();
        runtimeService = processEngine.getRuntimeService();
        taskService = processEngine.getTaskService();
    }

1 启动流程

测试代码:

/**
     * 启动流程
     */
    @Test
    public void startProcess() {
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activiti_leave");
        String processInstanceId = processInstance.getId();
        String activityId = processInstance.getActivityId();
        String definitionId = processInstance.getProcessDefinitionId();
        
        System.out.println("流程实例ID:"+processInstanceId);
        System.out.println("正在活动的节点ID:"+activityId);
        System.out.println("流程定义ID:"+definitionId);
    }

2 查询正在运行的实例

测试代码:

/**
     * 查询正在运行的实例
     */
    @Test
    public void queryExecution(){
        List executionList = runtimeService.createExecutionQuery()  //创建正在执行的流程查询对象
                      .processDefinitionKey("activiti_leave")   //根据流程定义的key查询
                      .orderByProcessInstanceId()  //根据流程实例id排序
                      .desc()  //倒序
                      .list();  //查询出集合
        for(Execution execution: executionList){
            System.out.println("正在执行的流程对象的id: "+execution.getId());
            System.out.println("所属流程实例的id:"+execution.getProcessInstanceId());
            System.out.println("正在活动的节点的id: "+execution.getActivityId());
        }
    }

3 查询任务

测试代码:

/**
     * 根据办理人查询任务
     */
    @Test
    public void queryTaskByAssignee(){
        String assignee = "employee";
        List taskList = taskService.createTaskQuery()
                                     .processDefinitionKey("activiti_leave")
                                     .taskAssignee(assignee)
                                     .orderByTaskCreateTime()
                                     .desc()
                                     .list();
        
        for(Task task: taskList){
            System.out.println("任务id: "+task.getId());
            System.out.println("任务名字: "+task.getName());
            System.out.println("任务创建时间: "+task.getCreateTime());
            System.out.println("办理人: "+task.getAssignee());
        }
    }

4 查询任务位置

测试代码:

/**
     * 查询当前流程实例状态
     */
    @Test
    public void queryProInstanceStateByProInstanceId(){
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId("35001").singleResult();
        if(processInstance == null){
            System.out.println("当前流程已经完成");
        }else{
            System.out.println("当前流程实例ID:"+processInstance.getId());
            System.out.println("当前流程所处的位置:"+processInstance.getActivityId());
        }
    }

5 完成任务

测试代码:

/**
     * 根据办理人查询任务
     */
    @Test
    public void queryTaskByAssignee(){
        String assignee = "employee";
        List taskList = taskService.createTaskQuery()
                                     .processDefinitionKey("activiti_leave")
                                     .taskAssignee(assignee)
                                     .orderByTaskCreateTime()
                                     .desc()
                                     .list();
        
        for(Task task: taskList){
            System.out.println("任务id: "+task.getId());
            System.out.println("任务名字: "+task.getName());
            System.out.println("任务创建时间: "+task.getCreateTime());
            System.out.println("办理人: "+task.getAssignee());
        }
    }

Activiti系列回顾:

Activiti工作流之简介与环境搭建

Activiti工作流之流程部署和相关操作

你可能感兴趣的:(Activiti)