当前位置: 首页 > news >正文

【02】Camunda系列-扩展案例-用户任务、网关、决策自动化

在这里插入图片描述

Camunda 案例讲解

  上面的案例过于简单,我们添加不同的任务节点和网关来丰富下

1. 用户任务

1.1 添加节点

   我们在上面的案例中添加一个用户任务来处理流程。

在这里插入图片描述

点击刚刚创建的批准付款节点,然后通过扳手设置节点的类型为用户任务(User Task)

在这里插入图片描述

  然后设置节点的审批人为demo

在这里插入图片描述

1.2 配置表单

  在用户节点处我们绑定表单数据。然后创建表单相关的字段,并添加对应的描述信息。

在这里插入图片描述

amount字段:

​ ID:amount

​ Type:long

​ Label:金额

Item字段:

​ ID:item

​ Type:string

​ Label:项目

Approved字段:

​ ID:approved

​ Type:boolean

​ Label:是否同意

1.3 部署流程

  流程定义好之后我们就可以部署流程了。直接在Camunda Modeler工具栏上的上传按钮将流程上传到流程引擎中。部署后在Camunda Web中查看部署的流程。

在这里插入图片描述

1.4 测试流程

  打开任务列表(http://localhost:8080/camunda/app/tasklist/),使用 demo / demo 登录。点击右上角的 Start process ,在弹出的对话框中选择“付款流程”.

在这里插入图片描述

  这时会弹出编辑流程变量的对话框,可以通过点击 Add a variable 按钮添加变量,这次我们先不添加,直接点击右下角Start启动流程。

在这里插入图片描述

这时,在任务列表应该就能看到刚创建的人工任务了,如果没有可以手动刷新一下

在这里插入图片描述

  到这儿这个用户任务节点的人工审核就应该要处理了,我们在下一个案例中继续这个案例,我们加入排他网关来处理。

2.排他网关

  我们将使用排他网关(Exclusive Gateways),为流程添加分支,仅在金额足够大的时候进行人工审核.

2.1 添加网关节点

  首先打开Camunda Modeler ,在左侧的工具架中找到网关(菱形),将它拖动到“付款请求”和“刷卡付款”之间,将“批准付款”向下移动再添加一个网关,调整流程,最后看起来类似这样:
在这里插入图片描述

2.2 配置网关

  接下来,我们选择“<1000”的连线,打开属性面板,选择“Condition Type”为“Expression”,这里我们使用JAVA统一表达式语言编写条件,这里要做的是在金额小于1000时直接刷卡付款,则输入表达式 ${amount<1000}

在这里插入图片描述

同样的,对另一条线也进行配置,表达式为${amount>=1000}

在这里插入图片描述

然后是否批准的排他网关节点我们也需要处理下

在这里插入图片描述

在这里插入图片描述

2.3 部署流程

  部署流程和上面的操作是一样的。
在这里插入图片描述

2.4 测试操作

  打开任务列表(http://localhost:8080/camunda/app/tasklist/),使用 demo / demo 登录,点击右上角的 Start process ,在弹出的对话框中选择“付款流程”,上面例子中,我们直接点击 Start,但这次我们要增加几个变量来测试动态的流程。
在这里插入图片描述

试着更改 amount 的值,查看对流程执行顺序的影响

3.决策自动化

  在上面的案例中我们在审批时是通过用户任务结合表单来做的审批,本案例我们来看看我们通过DMN为流程添加一个业务规则来处理

3.1 添加业务规则

  打开 Camunda Modeler,点击 “批准付款”,在右面的扳手菜单中,将类型改为“Business Rule Task ”(业务规则任务)

在这里插入图片描述

下一步,将属性面板中的 Implementation 选择为DMN,输入 Decision Ref 为 approve-payment,为了将决策的结果存入流程变量,我们还需要编辑结果变量Result Variable 为approved,结果类型 Map Decision Result 选择为 singleEntry ,最后结果如下:

在这里插入图片描述

3.2 创建DMN表

  点击 File > New File > DMN Diagram创建一个新的DMN,现在画布上已经存在一个决策元素了,选择它,然后在右侧属性面板中更改IdName,这里的Id需要和流程中的Decision Ref属性一致,这次我们输入Id为approve-payment
在这里插入图片描述

  接下来,点击决策元素左上角的表格按钮,创建新的DMN表.

在这里插入图片描述

3.3 编辑DMN表

  首先编辑输入参数,在本例中,为了简单,我们依据项目名进行判断,规则可以使用 FEEL 表达式JUEL或者 Script 书写,详情可以阅读 https://docs.camunda.org/manual/latest/user-guide/dmn-engine/expressions-and-scripts/

双击表格中的Input,编辑第一个输入参数

在这里插入图片描述

下面,设置输入参数,双击Output编辑

在这里插入图片描述

下面,我们点击左侧的蓝色加号,添加一些规则,最后类似这样:

在这里插入图片描述

3.4 部署DMN表

  点击底部的部署按钮,将DMN部署到流程引擎中

在这里插入图片描述

3.5 流程案例测试

  现在打开 http://localhost:8080/camunda/app/cockpit/ ,使用demo/demo登录,可以看到决策定义增加了一个,点击进去可以看到刚才编辑的DMN.

在这里插入图片描述

点击进去可以看到对应的决策信息

在这里插入图片描述

然后我们部署流程然后启动流程
在这里插入图片描述

该流程决策输出的approved为true
在这里插入图片描述

更改下输入的参数

在这里插入图片描述

该决策中输出的approved为false

在这里插入图片描述

好了~到此Camunda的基础入门案例我们就讲解到这里

相关文章:

  • J. Counting Trees (树,卡特兰数)
  • 77-Java的Set系列集合、Collection体系的总结
  • this指哪去了
  • 算法----二维区域和检索 - 矩阵不可变(Kotlin)
  • 向Visual Studio Code导入ST项目
  • ES6转为ES5 AST
  • 二分法查找方法
  • UE5物体旋转(蓝图版)
  • 【网络安全】SQL注入专题讲解
  • unordered_set、unordered_map的介绍+使用+比较
  • Leetcode139. 单词拆分
  • DRM系列(9)之drm_atomic_helper_commit
  • Unity入门03——Unity脚本
  • finally执行语句的注意和小陷阱
  • 【推荐系统->论文阅读】WideDeep模型
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【5+】跨webview多页面 触发事件(二)
  • create-react-app项目添加less配置
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • mac修复ab及siege安装
  • node 版本过低
  • Python_OOP
  • 服务器从安装到部署全过程(二)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 前端面试之CSS3新特性
  • 如何进阶一名有竞争力的程序员?
  • 如何学习JavaEE,项目又该如何做?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 中文输入法与React文本输入框的问题与解决方案
  • 说说我为什么看好Spring Cloud Alibaba
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #考研#计算机文化知识1(局域网及网络互联)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (转) 深度模型优化性能 调参
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [C++]高精度 bign (重载运算符版本)
  • [CCIE历程]CCIE # 20604
  • [codeforces] 25E Test || hash
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [hive小技巧]同一份数据多种处理
  • [leetcode 189][轮转数组]
  • [linux学习]apt-get参数解析
  • [Python] 集合操作及方法总结