1、flowable-流程的基本使用API


Flowable.6.3.0.BPMN.userguide.zh_CN.RC1.pdf    提取碼:cc42

flowable流程引擎的基本使用

1、流程部署

2、bpmn轉image

3、流程部署的查詢

4、流程實例啟動

5、查詢組任務

6、任務的申領/認領

7、完成用戶任務

8、流程實例的查詢

/**
 * springboot環境下測試
 *
 * @Auther: xuminggang
 * @Description: com.yxx.flowable
 * @version: 1.0
 */
@SpringBootTest
@RunWith(SpringRunner.class)
@Data
public class ProcessTest {


    private static final String IMAGE_TYPE = "png";

    @Value("宋體")
    private String activityFontName;
    @Value("宋體")
    private String labelFontName;
    @Value("宋體")
    private String annotationFontName;
    @Autowired
    private ProcessEngine processEngine;

    /**
     * 實例實例查詢
     */
    @Test
    public void testQueryHistory() {
        HistoryService historyService = processEngine.getHistoryService();
        List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().finished().list();
        for (HistoricProcessInstance historicProcessInstance : list) {
            List<HistoricTaskInstance> list1 = historyService.createHistoricTaskInstanceQuery()
                    .orderByHistoricTaskInstanceEndTime()
                    .asc()
                    .processInstanceId(historicProcessInstance.getId())
                    .list();
            System.out.println("------------" + historicProcessInstance.getName());
            for (HistoricTaskInstance historicTaskInstance : list1) {
                System.out.println(historicTaskInstance.getName() + historicTaskInstance.getAssignee());
            }
            System.out.println("------------");

        }
    }


    /**
     * 完成用戶任務
     */
    @Test
    public void testComplete() {
        TaskService taskService = processEngine.getTaskService();
        taskService.complete("10005");
    }

    /**
     * 認領/申領任務
     */
    @Test
    public void testClaimTask() {
        TaskService taskService = processEngine.getTaskService();
        Task task = taskService.createTaskQuery().taskId("20002").singleResult();
        System.out.println("task==>" + task.getName() + "==將被lisi認領");
        taskService.claim(task.getId(), "lisi");
    }

    /**
     * 查詢組任務
     */
    @Test
    public void testQueryGroupTask() {
        TaskService taskService = processEngine.getTaskService();
        List<Task> list = taskService.createTaskQuery()
//                .taskCandidateGroup("accountancy")
                .taskCandidateGroup("management")
//                .taskAssignee("zhangsan")
                .list();
        for (Task task : list) {
            System.out.println("taskID==>" + task.getId());
            System.out.println("taskName==>" + task.getName());
            System.out.println("task-Defi-KEY==>" + task.getTaskDefinitionKey());
            System.out.println("----------------------------------");
        }
    }

    /**
     * 啟動流程實例
     */
    @Test
    public void testStartProcessInstance() {
        RuntimeService runtimeService = processEngine.getRuntimeService();
        ProcessInstance financialReport = runtimeService.startProcessInstanceByKey("financialReport");

    }

    /**
     * 查詢部署
     */
    @Test
    public void testQueryDeployment() {
        RepositoryService repositoryService = processEngine.getRepositoryService();
        List<Deployment> list = repositoryService.createDeploymentQuery().list();
        for (Deployment deployment : list) {
            System.out.println("部署ID===》" + deployment.getId());
            System.out.println("部署key===》" + deployment.getKey());
            System.out.println("部署名稱===》" + deployment.getName());
            System.out.println("部署時間===》" + deployment.getDeploymentTime());
        }

    }

    /**
     * 流程定義
     * 通過bpmnmodel轉xml
     * 轉圖片
     */
    @Test
    public void testBpmn2Img() throws IOException {
        DefaultProcessDiagramGenerator defaultProcessDiagramGenerator = new DefaultProcessDiagramGenerator();
        RepositoryService repositoryService = processEngine.getRepositoryService();
        ProcessDefinition financialReport = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey("financialReport").singleResult();
        BpmnModel bpmnModel = repositoryService.getBpmnModel(financialReport.getId());
        // bpmnxml文件下載
        BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();
        byte[] bytes = bpmnXMLConverter.convertToXML(bpmnModel);
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
        FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\ideaProject\\study\\flowable\\flowable-boot\\src\\main\\resources\\demo.xml"));
        IOUtils.copy(byteArrayInputStream, fileOutputStream);
        // 獲取圖片
        InputStream inputStream = defaultProcessDiagramGenerator
                .generateDiagram(bpmnModel, IMAGE_TYPE, Collections.<String>emptyList(), Collections.<String>emptyList(),
                        activityFontName, labelFontName, annotationFontName, null, 2.0);
        // 直接轉圖片會存在問題,亂碼
        //InputStream inputStream = defaultProcessDiagramGenerator
        //      .generatePngDiagram(bpmnModel);
         fileOutputStream = new FileOutputStream(new File("E:\\ideaProject\\study\\flowable\\flowable-boot\\src\\main\\resources\\demo.png"));
        IOUtils.copy(inputStream, fileOutputStream);

    }


    /**
     * 部署
     */
    @Test
    public void testDeploy() {
        RepositoryService repositoryService = processEngine.getRepositoryService();
        repositoryService.createDeployment()
                .addClasspathResource("flow/FinancialReportProcess.bpmn20.xml")
                .deploy();

    }

}

 


免責聲明!

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



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