flowable學習二流程部署,定義,刪除流程實例,啓動一個流程實例,任務查詢,完成當任務

package com.fzybh.test;

import com.sun.corba.se.impl.ior.OldJIDLObjectKeyTemplate;
import org.flowable.engine.*;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import sun.awt.geom.AreaOp;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class test01 {


    ProcessEngineConfiguration configuration = null;

    @Before
    public void before(){
        //獲取信息
        configuration =  new StandaloneProcessEngineConfiguration();
        //配置相關數據庫的連接信息
        configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver");
        configuration.setJdbcUsername("root");
        configuration.setJdbcPassword("123456");
        configuration.setJdbcUrl("jdbc:mysql://localhost:3306/flowable-learn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);


        //通過ProessEngineConfiguration 構建我們需求的processEngine
        // ProcessEngine processEngine = configuration.buildProcessEngine();
        //System.out.println("processEngine:"+processEngine);
    }


    @Test
    public void testProcessEngine(){

        //獲取信息
        before();

        //通過ProessEngineConfiguration 構建我們需求的processEngine
        ProcessEngine processEngine = configuration.buildProcessEngine();
        System.out.println("processEngine:"+processEngine);

    }


    /**
     * 佈置流程
     */
    @Test
    public void testDeploy(){
        //1.獲取 processEngine 對象
        ProcessEngineConfiguration configuration =  new StandaloneProcessEngineConfiguration();
        //配置相關數據庫的連接信息
        configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver");
        configuration.setJdbcUsername("root");
        configuration.setJdbcPassword("123456");
        configuration.setJdbcUrl("jdbc:mysql://localhost:3306/flowable-learn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        ProcessEngine processEngine = configuration.buildProcessEngine();
        //2.獲取RepositoryService 服務  processEngine對象下面服務(RepositoryService,RuntimeService,TaskService,HistoryService)
        RepositoryService repositoryService =processEngine.getRepositoryService();
        //3.完成流程的部署操作
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("holiday-request.bpmn20.xml")
                .name("請假流程")
                .deploy();
        System.out.println("deployment getID()"+deployment.getId());
        System.out.println("deployment getName()"+deployment.getName());
    }

    /**
     * 查詢流程定義的信息
     */
    @Test
    public void testDeployQuery(){
        before();
        ProcessEngine processEngine = configuration.buildProcessEngine();
        System.out.println("processEngine:"+processEngine);
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //1.方法一
        //ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        //ProcessDefinition processDefinition = processDefinitionQuery.deploymentId("1").singleResult();
        //2.方法二
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .deploymentId("1").singleResult();
        System.out.println("processDefinition.getDeploymentId():"+processDefinition.getDeploymentId());
        System.out.println("processDefinition.getName():"+processDefinition.getName());
        System.out.println("processDefinition.getDescription():"+processDefinition.getDescription());
        System.out.println("processDefinition.getId():"+processDefinition.getId());
    }

    /**
     * 刪除流程實例
     */
    @Test
    public void testDelDeploy(){
        before();
        ProcessEngine processEngine = configuration.buildProcessEngine();
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //刪除部署的流程 第一個參數是ID,如果部署的流程啓動了就不允許刪除了
        //repositoryService.deleteDeployment("1");
        //第二個參數是級聯刪除,如果流程啓動了,相關的任務一併刪除掉(act_re_deployment id=2501)
        repositoryService.deleteDeployment("2501",true);

    }

    /**
     * 啓動一個流程實例
     */
    @Test
    public void testRunProcess(){
        before();
        ProcessEngine processEngine = configuration.buildProcessEngine();
        RuntimeService runtimeService = processEngine.getRuntimeService();
        //構建流程實例變量
        Map<String,Object> varivale = new HashMap<>();
        varivale.put("employee","張三");
        varivale.put("nrOfHolidays",3);
        varivale.put("deciption","工作累了,出去玩玩");
        //啓動流程實例
        ProcessInstance holidaysRequest = runtimeService.startProcessInstanceByKey("holidayRequest",varivale);
        System.out.println("holidayRequest holidaysRequest.getProcessDefinitionId():"+holidaysRequest.getProcessDefinitionId());
        System.out.println("holidayRequest holidaysRequest.getActivityId():"+holidaysRequest.getActivityId());
        System.out.println("holidayRequest holidaysRequest.getId()任務id:"+holidaysRequest.getId());
    }

    /**
     * 測試,張三:任務查詢
     */
    @Test
    public void testQueryTask(){
        before();
        ProcessEngine processEngine = configuration.buildProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        List<Task> list=taskService.createTaskQuery()
                .processDefinitionKey("holidayRequest")//指定查詢流程編程
                .taskAssignee("zhangsan")
                .list();
        for(Task task:list){
            System.out.println("任務id :"+ task.getProcessDefinitionId());
            System.out.println("任務task.getName() :"+ task.getName());
            System.out.println("任務getAssignee() :"+ task.getAssignee());
            System.out.println("task.getDescription() = " + task.getDescription());
            System.out.println("task.getId() = " + task.getId());

        }

    }

    /**
     * 完成當任務(不同,)
     */
    @Test
    public void testCompleteTask(){
        before();
        ProcessEngine processEngine = configuration.buildProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        //找到任務
        Task task = taskService.createTaskQuery()
                .processDefinitionKey("holidayRequest")
                .taskAssignee("zhangsan")
                .singleResult();
        //創建流程變量
        Map<String, Object> map = new HashMap();
        map.put("approved",false);
        taskService.complete(task.getId(), map);

    }



}

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章