ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-08-08 13:31:37  阅读:415  来源: 互联网

标签:flowable 流程 list System API println processEngine public out


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

    }

}

 

标签:flowable,流程,list,System,API,println,processEngine,public,out
来源: https://www.cnblogs.com/aismvy/p/15114714.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有