activiti 7 + springboot2(五) 部署測試一個流程


一   部署流程定義,貼代碼

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.junit.Test;

public class ActivitiTest {

    /**
     * 部署流程
     */
    @Test
    public void deploy(){
        //創建ProcessEngineConfiguration對象
        ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                .createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        //創建ProcessEngine對象
        ProcessEngine processEngine = configuration.buildProcessEngine();
        //得到RepositoryService實例
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //進行部署
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("processes/diagram_1.bpmn")  //添加bpmn資源
                .addClasspathResource("processes/diagram_1.png")
                .name("請假申請單流程")
                .deploy();

        System.out.println(deployment.getName());
        System.out.println(deployment.getId());
    }

}
activiti.cfg.xml 見 springboot2+activiti 7 整合(三) 工程依賴配置和創建表結構
運行完成后,打開數據庫查看流程定義數據表ACT_RE_PROCDEF,可以看到 activiti 會將上邊代碼中指定的 bpm 文件和圖片文件保存在數據庫中。

 二 啟動一個流程實例

/**
* 啟動一個流程實例
*/
@Test
public void startProcessInstance(){
ProcessEngine processEngine = getProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance instance = runtimeService.startProcessInstanceByKey("myProcess_1");

System.out.println("流程實例ID:"+instance.getId());
System.out.println("流程定義ID:"+instance.getProcessDefinitionId());
}

public ProcessEngine getProcessEngine(){
//創建ProcessEngineConfiguration對象
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//創建ProcessEngine對象
return configuration.buildProcessEngine();
}

運行后,打開運行時任務節點表ACT_RU_TASK

流程實例的執行表ACT_RU_EXECUTION

 

    一個流程就啟動起來了。

 三 任務查詢

流程啟動后,各各任務的負責人就可以查詢自己當前需要處理的任務,查詢出來的任務都是該用戶的待辦任務

/**
* 查詢用戶的任務列表
*/
@Test
public void taskQuery() {
ProcessEngine processEngine = getProcessEngine();

TaskService taskService = processEngine.getTaskService();

//根據流程定義的key,負責人assignee來實現當前用戶的任務列表查詢
List<Task> list = taskService.createTaskQuery()
.processDefinitionKey("myProcess_1")
.taskAssignee("tom")
.list();

if(list!=null && list.size()>0){
for(Task task:list){
System.out.println("任務ID:"+task.getId());
System.out.println("任務名稱:"+task.getName());
System.out.println("任務的創建時間:"+task.getCreateTime());
System.out.println("任務的辦理人:"+task.getAssignee());
System.out.println("流程實例ID:"+task.getProcessInstanceId());
System.out.println("執行對象ID:"+task.getExecutionId());
System.out.println("流程定義ID:"+task.getProcessDefinitionId());
System.out.println("getOwner:"+task.getOwner());
System.out.println("getCategory:"+task.getCategory());
System.out.println("getDescription:"+task.getDescription());
System.out.println("getFormKey:"+task.getFormKey());
Map<String, Object> map = task.getProcessVariables();
for (Map.Entry<String, Object> m : map.entrySet()) {
System.out.println("key:" + m.getKey() + " value:" + m.getValue());
}
for (Map.Entry<String, Object> m : task.getTaskLocalVariables().entrySet()) {
System.out.println("key:" + m.getKey() + " value:" + m.getValue());
}

}
}
}

四 完成任務 

    /**
     * 完成任務
     */
    @Test
    public void completeTask(){
        //任務ID
        String taskId = "2505";
        ProcessEngine processEngine = getProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        taskService.complete(taskId);
        System.out.println("完成任務:任務ID:"+taskId);
    }

 依次把部門經理審批和人事審批的流程完成,整個流程走完以后:

查看, 歷史任務實例表ACT_HI_TASKINST

查看 ,歷史節點表 ACT_HI_ACTINST

源碼下載  https://download.csdn.net/download/zsg88/12093061


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM