首页 > 其他分享 >Camunda Modeler流程设计器

Camunda Modeler流程设计器

时间:2024-09-07 20:14:11浏览次数:3  
标签:网关 流程 配置 用户 如下 任务 Camunda Modeler

1、介绍

任何可执行流程都需要预先设计和配置业务流程模型和BPMN图,BPMN图可以让使用者更容易理解流程的结构,Camunda Modeler是一个可视化设计和实现BPMN图表的工具。

下面是官方使用文档:1、Modeler中绘制BPMN介绍

2、桌面版Modeler使用介绍

2、相关概念

可以将BPMN的绘制类比于我们常规意义上的流程图,例如:开始和结束节点、节点之间的连接线(有向箭头)、处理框、决策判断框,如下是一个简易的常规流程图

下面将BPMN中的概念和上述常规的流程图类比,方便理解,如下给一个和上面流程图对应的bpmn图,如下:

2.1、顺序流(Sequence flow)

顺序流其实就是类比于上面的有向箭头,表示从一个节点流向另一个节点。如下图红框下的箭头线段表示顺序流,从开始节点流向用户任务节点。

在bpmn文件中,顺序流有唯一标识,sourceRef记录了源节点,targetRef记录了目的节点,如下图:

2.2、用户任务(User task)

Bpmn中定义了很多种任务,本处只说明用户任务,更多的任务类型参考官方介绍:BPMN tasks

用户任务顾名思义是需要人来参与完成的任务,当一个流程到达一个用户任务,将会创建一个用户任务实例,流程将在此停止,当用户处理完成该任务,流程才会继续向下进行。

在Modeler画布上拖拽一个任务控件,可以选择该任务的类型,User task表示用户任务,如下图:

在bpmn文件中,每一个用户任务存在一个唯一id,camunda中可以指定任务处理人(assignee),其中incoming表示流入的顺序流(流入的箭头),outgoing表示流出的顺序流(流出的箭头),如下图:

2.3、服务任务(Service task)

服务任务不需要人员来进行处理,例如利用服务节点来做统计或者其他可以由程序处理的任务,流程到达服务任务后会在此停止,等待服务任务绑定的作业处理完成。

可以在右侧的Implementation配置对应实现作业逻辑的实现类或者方法,如下:

在bpmn文件中,每一个服务任务存在一个唯一id,camunda:class表示任务的实现方式,其中incoming表示流入的顺序流(流入的箭头),outgoing表示流出的顺序流(流出的箭头),如下图:

2.4、启动事件(Start event)

如常规流程图中的开始节点一样,bpmn中一般需要一个启动事件,作为流程的起始,事件分为很多类,如:空白启动事件、结束事件、消息启动事件等等,详细可以查看官方文档介绍:None events | Camunda 8 Docs

如果是需要手动点击表单按钮的方式发起流程,一般都需要一个空白的启动事件(None start events),空白启动事件在一个流程中最多只能存在一个。

在Modeler画布上拖拽一个事件控件,可以选择该事件的类型,Start event表示空白启动事件,如下图:

bnpm文件中,启动事件存在唯一id,outgoing表示流出的顺序流,如下:

2.5、结束事件(End event)

单独把结束事件拎出来,是为了符合我们常规的流程图绘制,有开始有结束,但是结束事件在一个流程中不是必须的,同时一个流程或者子流程可以有多个结束事件。

当不存在结束事件时,当前的执行路径结束,则流程完成,如下是一个存在结束事件的流程和不存在结束事件的流程:

bnpm文件中,结束事件存在唯一id,incoming表示流入的顺序流,一个节点可以存在多条流入的顺序流和流出的顺序流,如下:

2.6、互斥网关(Exclusive gateway)

BPMN中的网关存在多种类型,例如:并行网关、包含网关、复杂网关和基于事件的网关。

并行网关允许将流分为多条流同时进行,也可以将多条流汇合,直到接收到所有并行流的处理结果,流程才会往下进行;包含网关可以将一条流分为多条流,每条分开的流都需要指定流入条件,满足条件则流入。详细介绍查看官方文档:BPMN gateways

常规流程图中的判断条件就相当于BPMN中的互斥网关,就是根据判断条件选择一条分支进行,分支之间彼此互斥,下面以互斥网关进行举例。

如下是bpmn图中的互斥网关,判断条件于网关流出的顺序流上配置,选择条件类型,然后编写条件表达式,如下:

 

这样在流程达到网关时,会从流程变量获取表达式中的参数值,结合表达式进行判断,满足条件则进入分支路径。

3、配置说明

下面主要是针对上一节的各个元素,右侧的配置项作说明,有一些配置是大部分元素都拥有的,有一些是特定元素才有的配置。

如下的配置项基本是大部分元素都有的配置。

3.1、通用信息

所有的元素都有这个通用信息的配置,就是名称和ID,ID用于在BPMN文件中,唯一标识该元素,一般自动生成,也可以自行修改。

3.2、执行监听器

如下是执行监听器的配置,除了顺序流节点的event Type是take,其他节点(事件、任务、网关等等)都有start和end两种事件类型,对应的就是执行前、执行后,如果在节点执行前后,期望做一些操作,则可以使用执行监听器。详细的官网文档如下:Execution listeners | Camunda 8 Docs

监听器支持的实现方式有多种,比如:Java类、EL表达式、委托表达式和外部脚本等,和下面的用户任务监听器的实现方式一样。详细的代码实现查看:Camunda中的Execution listeners和Task listeners

3.3、用户任务

用户任务元素有两个特有的配置,分别是任务监听器(Task Listenners)和任务处理人(User assignment)

3.3.1、任务处理人

用户任务肯定需要用户处理,这一项就是配置和任务处理人相关的参数,如下:

Assignee:配置任务的处理人

Candidate groups:配置任务的候选处理用户组,camunda里面,用户是可以属于用户组的

candidate users:配置任务的候选处理人列表,即可以配置多个候选处理用户,用逗号隔开。可以用于任务由多个用户抢占式处理,即候选用户都可以领取这个任务,谁领取了谁处理,其他人就看到了。

Due date:任务到期日期,支持设置流程变量和固定格式的日期字符串,如下面图的参数说明。

Follow up date:任务跟进日期,设置同Due date。日期参数内部API支持通过参数筛选过滤用户任务,可以做一些类似于任务提醒的事情。

3.3.2、任务监听器

用户任务独有的任务监听器,有更丰富的事件类型,有:创建任务、设置处理人、完成任务、删除任务、更新任务、任务处理超时,可以更灵活的进行围绕用户任务的自定义处理,例如通知、记录等等操作,其和服务任务一样支持多种监听器类型。详细的代码实现查看:Camunda中的Execution listeners和Task listeners

3.4、服务任务

服务任务有一个特有的配置,就是服务任务的实现,如下:

其type支持多种选项,例如外部任务、Java类、EL表达式、委托表达式和连接器,特别说明一下External(外部任务)和Connector(连接器),两者和其余的几种不一样,Java类、EL表达式、委托表达式都是在和camunda引擎同一个服务下编写代码。

External(外部任务):有另外一个外部服务主动调用camunda接口,其定时的查询camunda引擎指定topic下的任务,处理完成后,调用引擎接口告知已完成。

Connector(连接器):camunda主动调用外部服务的接口,但是这种接口可以通过camunda引擎内置的连接器插件处理,例如http connector,通过配置外部http接口的url和method以及参数,调用接口,并支持通过表达式处理接口的返回值,属于非代码实现。

详细的代码实现查看:Camunda中的Execution listeners和Task listeners

3.5、表单配置

所有和用户处理相关的元素都可以用到表单配置,配置表单的目的就是为了和用户操作,例如空白启动事件和用户任务就支持配置表单。如下就是一个表单配置,使用camunda的web页面处理用户任务时,就可以看到配置的表单,Label就是显示给用户看的文字,type表示用户的这输入值是什么类型。

用户处理任务时,看到的页面如下:

3.6、输入/输出参数

一般只有任务才会有输入和输出两个参数,例如上面的服务任务和用户任务,这个参数和下面的扩展属性类似,配置的参数可以在流程任务变量中获取到,区别在于这里配置的参数是任务的局部属性,只允许当前任务本身进行访问,可以与流程中同名的变量名同时存在,相互之间不受影响。可以查看这里的提问回复和解释:Inputs/Outputs parameters on camunda modeler, and interaction with that - Camunda 7 Topics - Camunda Forum

3.7、扩展属性

这里配置的就是流程变量,可以在整个流程中被所有节点获取和修改,可以在其中配置一些固定值,标识当前节点的属性,或者传入一下需要的值,或者流程中可能会用到的值

标签:网关,流程,配置,用户,如下,任务,Camunda,Modeler
From: https://www.cnblogs.com/zhaodalei/p/18313136

相关文章

  • Python在报表自动化的优势及实现流程
    Python在报表自动化的优势及实现流程 更新时间:2023年12月28日10:08:08 作者:涛哥聊Python  本文利用Python实现报表自动化,通过介绍环境设置、数据收集和准备、报表生成以及自动化流程,展示Python的灵活性和丰富的生态系统在报表自动化中的卓越表现,从设置虚拟环境到使......
  • 注册域名流程是怎样
    注册域名需要经过一系列步骤,下面是详细的注册流程。**1.选择合适的域名域名是网站的门面,因此选择一个好记且与业务相关的域名至关重要。通常建议域名要简短、易拼写、容易记忆,并且最好与网站的主题或内容相关。**2.确认域名的可用性在注册域名之前,需要确认所选择的域名......
  • 流程控制
    流程控制在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种流程控制:顺序控制分支控制(条件控制)循环控制顺序控制:在程序流程控制中,最基本的就是顺序控制。程序会按照自上而下的顺序执行。分支流程控制if语句switch语句if语句【重要】分类:单分支,......
  • Android BLE scan流程及源码分析
    在Android系统中,startScan 方法用于启动蓝牙扫描,本文针对较新的Android版本14进行BLE扫描源码分析。一、AndroidBle scan的一般流程概述1.权限和蓝牙适配器检查应用需要确保具有适当的蓝牙和位置权限(从Android6.0开始,蓝牙扫描通常需要位置权限)。应用还需要检查......
  • 模板化-上线文件的流程步骤
    1.服务和分支,避免上线服务遗漏,及定义上线的优先级先后顺序。2.apollo配置,检查上线的pro环境的apollo配置,否则项目启动因为缺少配置会启动报错。3.SQLDMS,上线之前先执行脚本,否则会因为缺少字段而导致系统报错。flow系统加上客户和商户的会员号字段需求,上线之前忘记了。ALTERTA......
  • JS流程控制
    流程控制在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种流程控制:顺序控制分支控制(条件控制)循环控制顺序控制:在程序流程控制中,最基本的就是顺序控制。程序会按照自上而下的顺序执行。if语句【重要】分类:单分支,双分支,多分支,分支嵌套()只能是变量或值......
  • Shell脚本流程控制(Linux篇)
    1.流程控制流程控制是改变程序运行顺序的指令。1.1.条件判断1.1.1.文件类型判断参数说明-d判断指定的目录是否存在-e判断文件是否存在,存在即为真-f判断普通文件是否存在-L判断文件是否存在且为连接文件示例一:#判断文件是否存在,存在为0,不存在为1root@zking:~#test-ea......
  • 【保姆级教程】使用 PyTorch 自定义卷积神经网络(CNN) 实现图像分类、训练验证、预测全
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。......
  • 行政组织理论-第十二章:政府再造流程
    章节章节汇总第一章:绪论第二章:行政组织的演变第三章:科层制行政组织理论第四章:人本主义组织理论第五章:网络型组织理论第六章:行政组织目标第七章:行政组织结构第八章:行政组织体制第九章:行政组织设置与自身管理第十章:组织激励第十一章:创建学习型组织第十二章:政府再造流程第十三......
  • MYSQL的安装与配置流程
    MYSQL的安装与配置流程1.下载安装包mysql官方下载链接2.解压并配置文件用管理员身份打开命令提示符进入解压的地址中使用一下命令安装MySQL服务mysqldinstallMySQL80若显示下面失败的提示可以使用该指令卸载该服务后再重新安装mysqld-removeMySQL80//此处为直接修改的......