第八篇camunda系列-网关服务(代码片段)

波波烤鸭 波波烤鸭     2022-12-05     390

关键词:

网关篇

  网关用来控制流程的流向

1. 排他网关

  排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data-based gateway),用于对流程中的决策建模。当执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件计算为true的顺序流(当没有设置条件时,认为顺序流为true)继续流程。

绘制流程图:

对应的XML文件

流程演示

   /**
     * 完成流程的部署操作
     */
    @Test
    public void deploy()
        Deployment deploy = repositoryService.createDeployment()
                .name("排他网关")
                .addClasspathResource("flow/排他网关.bpmn")
                .deploy();
        System.out.println("deploy.getId() = " + deploy.getId());
    


    /**
     * 通过流程定义Id 启动
     */
    @Test
    public void startFlow()
        String processId = "Process_0eykic0:1:efadfc92-39c9-11ed-8f13-c03c59ad2248";
        ProcessInstance processInstance = runtimeService.startProcessInstanceById(processId);
        System.out.println("processInstance.getId() = " + processInstance.getId());
    

    /**
     * 完成任务
     */
    @Test
    public void completeTask()
        Map<String,Object> map = new HashMap<>();
        map.put("day",4);
        taskService.complete("21a323ee-39ca-11ed-8b49-c03c59ad2248",map);
    

传递的是day=4会走中间的路线。

2. 并行网关

  并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进入和外出顺序流的:

  • fork分支:并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。

  • join汇聚: 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。

  注意,如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。

与其他网关的主要区别是,并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。

3.包含网关

  包含网关可以看做是排他网关和并行网关的结合体。 和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。 但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样。

包含网关的功能是基于进入和外出顺序流的:

  • 分支: 所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行方式继续执行, 会为每个顺序流创建一个分支。

  • 汇聚:所有并行分支到达包含网关,会进入等待状态, 直到每个包含流程token的进入顺序流的分支都到达。 这是与并行网关的最大不同。换句话说,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。

当输入day=4时,走了第二和第三条路线

第八篇商城系统-库存管理(代码片段)

库存管理1.仓库列表维护1.1注册中心配置首先我们需要把库存服务注册到注册中心中。然后在nacos中发现注册的服务1.2网关路由配置客户端首先访问的都是网关服务,所以需要配置对应的路由规则就可以完成对仓库列表的处理... 查看详情

第八篇商城系统-库存管理(代码片段)

库存管理1.仓库列表维护1.1注册中心配置首先我们需要把库存服务注册到注册中心中。然后在nacos中发现注册的服务1.2网关路由配置客户端首先访问的都是网关服务,所以需要配置对应的路由规则就可以完成对仓库列表的处理... 查看详情

第八篇flowable之流程变量(代码片段)

流程变量  流程实例按步骤执行时,需要使用一些数据。在Flowable中,这些数据称作变量(variable),并会存储在数据库中。变量可以用在表达式中(例如在排他网关中用于选择正确的出口路径),也可以在... 查看详情

第八篇:面向对象(代码片段)

1类与对象类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人... 查看详情

02camunda系列-扩展案例-用户任务网关决策自动化(代码片段)

Camunda案例讲解  上面的案例过于简单,我们添加不同的任务节点和网关来丰富下1.用户任务1.1添加节点  我们在上面的案例中添加一个用户任务来处理流程。点击刚刚创建的批准付款节点,然后通过扳手设置节点的... 查看详情

02camunda系列-扩展案例-用户任务网关决策自动化(代码片段)

Camunda案例讲解  上面的案例过于简单,我们添加不同的任务节点和网关来丰富下1.用户任务1.1添加节点  我们在上面的案例中添加一个用户任务来处理流程。点击刚刚创建的批准付款节点,然后通过扳手设置节点的... 查看详情

第八篇python面向对象编程(代码片段)

11面向对象编程面向对象编程——ObjectOrientedProgramming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合... 查看详情

第八篇集合与容器(代码片段)

表格数据的存储packagecom.zzp.demo;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Set;/****测试表格数据的存储*@authorjava**/publicclassTestStoreDatapublicst 查看详情

设计模式从青铜到王者第八篇:创建型模式之建造者模式(builderpattern)(代码片段)

系列文章目录文章目录系列文章目录前言建一栋房子总共分几步?建造者模式告诉你答案!1.建造者模式简介2.建造者模式结构3.建造者模式代码实例3.1.定义产品类House3.2.定义建造者3.2.1.定义抽象建造者AbstractBuilder3.2.2.定... 查看详情

c++从青铜到王者第八篇:stl之string类的模拟实现(代码片段)

系列文章目录文章目录系列文章目录前言一、string类的模拟实现1.经典的string类问题2.浅拷贝3.深拷贝4.传统版的string类5.现代版的string类6.写时拷贝(了解)7.string类的模拟实现总结前言一、string类的模拟实现1.经典的string类问题上篇... 查看详情

第八篇django分页(代码片段)

Django分页1.复杂版data=[]foriinrange(1,302):tmp="id":i,"name":"alex-".format(i)data.append(tmp)print(data)defuser_list(request):#user_list=data[0:10]#user_list=data[10:20]try:current_page=int(request.G 查看详情

混合编程jni第八篇之jni对虚拟机的操作(代码片段)

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客写了好多了,今天继续写一下对虚拟机的一些操作。创建虚拟机jintJNI_CreateJavaVM(JavaVM**p_vm,void**p_env,void*vm_args);加载并初始化一个JavaVM,并返回一个指向JNI接口指... 查看详情

springcloud教程|第八篇:消息总线(springcloudbus)(代码片段)

一、安装rabbitmq二、pom父文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven. 查看详情

python学习第八篇:requests库学习(代码片段)

​Python学习第八篇:requests库学习活动地址:CSDN21天学习挑战赛——这里主要学习requests这个http模块,该模块主要用于发送请求获取响应urlib模块也可以实现request模块s能实现的功能,但是用的最多的还是requests模... 查看详情

python学习第八篇:requests库学习(代码片段)

​Python学习第八篇:requests库学习活动地址:CSDN21天学习挑战赛——这里主要学习requests这个http模块,该模块主要用于发送请求获取响应urlib模块也可以实现request模块s能实现的功能,但是用的最多的还是requests模... 查看详情

springcloud学习第八篇:gateway学习(hoxton.sr4)

网关的主要作用协议转换,路由转发流量聚合,对流量进行监控,日志输出作为整个系统的前端工程,对流量进行控制,有限流的作用作为系统的前端边界,外部流量只能通过网关才能访问系统可以在网关层做权限的判断可以在... 查看详情

第八篇springsecurity核心过滤器-csrffilter(代码片段)

SpringSecurity核心过滤器-CsrfFilter  SpringSecurity除了认证授权外功能外,还提供了安全防护功能。本文我们来介绍下SpringSecurity中是如何阻止CSRF攻击的。一、什么是CSRF攻击  跨站请求伪造(英语:Cross-siterequestforgery&#... 查看详情

第七篇camunda系列-身份服务(代码片段)

身份服务  在流程定义中在任务结点的assignee固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差。针对这种情况可以给任务设置多个候选人或... 查看详情