camunda区分不同类型待办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了camunda区分不同类型待办相关的知识,希望对你有一定的参考价值。
参考技术A 情况如下:Camunda是一种轻量级的商业流程开源平台。同类型的产品有osworkflow、jbpm、activiti、flowable。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4。由于jbpm、activiti、flowable这几个流程引擎出现的比较早,国内人用的比较多,大家对camunda流程引擎认识的不多,实际上camunda在功能上、稳定性、性能、轻量化方面均比jbpm、activiti、flowable优秀。支持外部任务(ExternalTask)ExternalTask应该和HTTPTask做对比。HTTPTask:会有2个问题:a:请求超时怎么处理?b:测试环境与正式环境的区分?ExternalTask:会有一个外部任务节点时,当执行到该节点的时候,会发布一个任务单元。外部系统定时向Camunda获取外部任务单元,然后做一些业务逻辑或者请求HTTP、API。做完之后,再提交给Camunda,流程继续往下走。ExternalTask的好处:产生的任务只能被一个客户端获取;任务执行失败,可配制重试次数;任务可配制优先级;还可以自己实现ExternalTaskClient,可以实现更灵活的处理方式。
02Camunda系列-扩展案例
案例扩展
上一篇的案例过于简单,我们添加不同的任务节点和网关来丰富下
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,现在画布上已经存在一个决策元素了,选择它,然后在右侧属性面板中更改Id
和Name
,这里的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的基础入门案例我们就讲解到这里
以上是关于camunda区分不同类型待办的主要内容,如果未能解决你的问题,请参考以下文章