Flowable可视化流程设计器Flowable BPMN visualizer

1.安装IDEA插件Flowable BPMN visualizer

IDEA插件市场中搜索Flowable BPMN visualizer安装该插件
在这里插入图片描述

2.创建流程图

2.1.创建流程图文件

在resources下创建myProcess.bpmn20.xml流程图。

创建时名称只用输入myProcess
在这里插入图片描述

2.2.创建流程图

在这里插入图片描述

  1. 选中myProcess.bpmn20.xml,右键打开流程图设计界面
    在这里插入图片描述
  2. 设计流程图
    流程名称和id
    在这里插入图片描述
    创建开始事件
    在这里插入图片描述
    创建用户任务
    在这里插入图片描述
    指定任务责任人zhangsanlisi
    在这里插入图片描述
    在这里插入图片描述
    创建结束事件
    在这里插入图片描述
    连线
    在这里插入图片描述

2.3.部署和执行流程

依次执行下列方法

public class Test02 {

    ProcessEngineConfiguration configuration = null;
    @Before
    public void before(){
        // 获取  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?serverTimezone=UTC&nullCatalogMeansCurrent=true");
        // 如果数据库中的表结构不存在就新建
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    }

    /**
     * 部署流程
     *
     */
    @Test
    public void testDeploy(){
        // 1.获取 ProcessEngine 对象
        ProcessEngine processEngine = configuration.buildProcessEngine();
        // 2.获取RepositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        // 3.完成流程的部署操作
        Deployment deploy = repositoryService.createDeployment()// 创建Deployment对象
                .addClasspathResource("myProcess.bpmn20.xml") // 添加流程部署文件
                .name("请假流程") // 设置部署流程的名称
                .deploy(); // 执行部署操作
        System.out.println("deploy.getId() = " + deploy.getId());
        System.out.println("deploy.getName() = " + deploy.getName());
    }

    /**
     * 启动流程实例
     */
    @Test
    public void testRunProcess(){
        ProcessEngine processEngine = configuration.buildProcessEngine();

        // 我们需要通过RuntimeService来启动流程实例
        RuntimeService runtimeService = processEngine.getRuntimeService();

        // 启动流程实例
        ProcessInstance holidayRequest = runtimeService.startProcessInstanceById("myProcess:4:145004"); //从库中act_re_procdef表查看该值
        System.out.println("holidayRequest.getProcessDefinitionId() = " + holidayRequest.getProcessDefinitionId());
        System.out.println("holidayRequest.getActivityId() = " + holidayRequest.getActivityId());
        System.out.println("holidayRequest.getId() = " + holidayRequest.getId());
    }

    /**
     * 查询和完成zhangsan任务
     */
    @Test
    public void testQueryTask(){
        ProcessEngine processEngine = configuration.buildProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey("myProcess") // 指定查询的流程编程
                .taskAssignee("zhangsan") // 查询这个任务的处理人
                .list();
        for (Task task : list) {
            System.out.println("task.getProcessDefinitionId() = " + task.getProcessDefinitionId());
            System.out.println("task.getName() = " + task.getName());
            System.out.println("task.getAssignee() = " + task.getAssignee());
            System.out.println("task.getDescription() = " + task.getDescription());
            System.out.println("task.getId() = " + task.getId());
            taskService.complete(task.getId());
        }
    }

    /**
     * 完成lisi当前任务
     */
    @Test
    public void testCompleteTask(){
        ProcessEngine processEngine = configuration.buildProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey("myProcess")
                .taskAssignee("lisi")
                .list();

        for (Task task : list) {
            // 完成任务
            taskService.complete(task.getId());
        }



    }

    /**
     * 获取流程任务的历史数据
     */
    @Test
    public void testHistory(){
        ProcessEngine processEngine = configuration.buildProcessEngine();
        HistoryService historyService = processEngine.getHistoryService();
        List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery()
                .processDefinitionId("myProcess:4:145004")
                .finished() // 查询的历史记录的状态是已经完成
                .orderByHistoricActivityInstanceEndTime().asc() // 指定排序的字段和顺序
                .list();
        for (HistoricActivityInstance history : list) {
            System.out.println(history.getActivityName()+":"+history.getAssignee()+"--"
                    +history.getActivityId()+":" + history.getDurationInMillis()+"毫秒");
        }

    }
}

另有flowable提供的流程设计器web应用Flowable UI可供选择

学习打卡:Java学习笔记-day02-Flowable可视化流程设计器Flowable BPMN visualizer

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
根据引用\[1\],在新版的IDEA 2020及以上版本中,actiBPM插件已经不再支持。而Activiti BPMN visualizer是一款支持编辑和浏览工作流设计图的IDEA插件,但对于工作流设计中的网关设计支持不太友好。所以,如果你想绘制bpmn文件,可以考虑使用Camunda Modeler软件来协助设计整体工作流程图,根据引用\[2\],你可以在文件的任意位置点击右键,选择"view bpmn(Activiti)Diagram"来查看和编辑bpmn文件。另外,根据引用\[3\],如果你想通过模型id查找并获取xml流程图,可以使用repositoryService.getModelEditorSource(id)接口,但是这种方法只能获取最新流程定义的版本图。如果你需要查看每个流程版本的流程图,你需要通过流程定义id获取对应的BpmnModel,然后使用BpmnXMLConverter进行转换。 #### 引用[.reference_title] - *1* *2* [【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流设计的简单使用】](https://blog.csdn.net/weixin_43025151/article/details/125967784)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [bpmn-js显示FlowableBpmnModel转换为xml文档的流程图排他网关丢失中间“X”](https://blog.csdn.net/honor_zhang/article/details/129891089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸魚散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值