首页 > 技术文章 > 1、flowable-流程的基本使用API

aismvy 2021-08-08 13:29 原文

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();

    }

}

 

推荐阅读