• springboot与flowable(10):网关服务(排他网关)


            一、绘制流程图

            排他网关用于对流程中的决策建模。当执行到这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件为true的顺序流继续流程。例如员工请假时,小于等于3天由组长审批,大于3天由总监审批。流程案例:

            绘制如下流程图,图中的X就是排他网关。

            点击排他网关上面的线,指定条件天数小于等于3。

            下面的线条件天数大于3天。

            给员工申请一个固定值(zhangsan),组长审批 = lisi,总监审批 = wangwu,人事审批 = zhaoliu。这样绘制完成。

            导出并复制到项目中

    二、部署

    1. @Test
    2. void contextLoads() {
    3. DeploymentBuilder deployment = repositoryService.createDeployment();
    4. deployment.addClasspathResource("process01/HolidayDemo3.bpmn20.xml");
    5. deployment.name("排他网关案例");
    6. Deployment deploy = deployment.deploy();
    7. System.out.println("deploy.getId() = " + deploy.getId());
    8. }

    三、启动

    1. /**
    2. * 发起流程
    3. */
    4. @Test
    5. public void startProcess() {
    6. String id = "HolidayDemo3:1:0138306c-2b8c-11ef-903b-644ed7087863";
    7. // 根据流程定义ID启动流程
    8. ProcessInstance processInstance = runtimeService.startProcessInstanceById(id);
    9. }

            使用张三进行申请并指定请假的天数。

    1. /**
    2. * 根据用户查询待办信息
    3. */
    4. @Test
    5. public void findFlow() {
    6. List list = taskService.createTaskQuery().taskAssignee("zhangsan").list();
    7. // 绑定请假的天数
    8. Map map = new HashMap<>();
    9. map.put("day", 2);
    10. // 根据id进行审批
    11. for (Task task : list) {
    12. taskService.complete(task.getId(), map);
    13. }
    14. }

            查看任务进度,因为天数小于3天所以任务进度到达了组长审批。

            依次使用lisi、zhaoliu进行审批,任务完成。

  • 相关阅读:
    html 隐藏广告代码,Javascript实现关闭广告实现删除广告的效果
    js基础知识整理之 —— 五种输出方式
    08-prometheus监控的告警通知-alertmanager组件工具
    MyBatis入门
    分享6种快速编写代码的技巧
    websocket逆向-protobuf序列化与反序列化
    DDR3 MIG IP核解决方案
    element-plus 表格-自定义样式实现
    重写SpringCloudGateway路由查找算法,性能提升100倍!
    Chrome浏览器是如何工作的?(一)
  • 原文地址:https://blog.csdn.net/qq_40298351/article/details/139716514