群晖wordpress外网无法仿问,苏州博客关键词优化,外国高端网站设计,四川手机网站制作这里写目录标题 前言一、 介绍基本概念介绍1.BPMN2.Form3.DMN 二、Camunda使用1、下载安装1.1、camunda-modeler#xff1a;BPMN绘画工具1.2、camunda-bpm-run#xff1a;web端控制页面 2、创建流程2.1、部署一个基础流程2.2、添加用户任务2.2.1、绑定表单2.2.1.1、Generated… 这里写目录标题 前言一、 介绍基本概念介绍1.BPMN2.Form3.DMN 二、Camunda使用1、下载安装1.1、camunda-modelerBPMN绘画工具1.2、camunda-bpm-runweb端控制页面 2、创建流程2.1、部署一个基础流程2.2、添加用户任务2.2.1、绑定表单2.2.1.1、Generated Task Forms2.2.1.2、Camunda Forms方式创建form表单绑定form表单 2.2.2提交 2.3、给流程添加活动2.3.1、curl添加2.3.2、REST Client 2.4、处理用户活动2.5、添加用户2.5.1、继续处理用户活动 2.6、添加外部活动2.7、添加网关 前言 该专栏主要为介绍camunda的学习和使用 【2024】Camunda常用功能基本详细介绍和使用-下1【2024】Camunda常用功能基本详细介绍和使用(业务决策和定时事件)-下2 在学习camunda之前我们首先得先了解目前主流的一些工作流引擎目前市面上几个主要的工作流引擎jBPM7、Activiti7、Flowable6.5、Camunda7主要都是由jBPM发展而来的。因此在使用上也会大致相同基本上熟悉了一个去学习其他的难度也都相对会比较低。
以下是jBPM、Activiti、Flowable和Camunda四个主流工作流引擎
特性jBPMActivitiFlowableCamunda许可证ASLApache软件许可证Apache License 2.0Apache License 2.0Apache License 2.0社区活跃的社区但正在增长庞大的社区但是有分支与Flowable围绕具体问题的活跃社区非常活跃且强有力的社区工作流定义BPMN、DMNBPMNBPMNBPMN、DMN建模工具jBPM DesignerActiviti DesignerFlowable Designer (基于Eclipse)在Cockpit内嵌包含模型任务管理高级的任务管理能力任务服务API人类任务任务服务API任务身份确认人类任务案件管理流程执行状态JPA Hibernate内存执行自定义持久化内存执行JPA内存执行JPA集成Web ServicesSeamRESTJEERESTSpringJEE集成SpringREST微服务SpringSpring BootREST, BPMN IO决策管理Drools引擎业务规则--DMN决策表和决策树流程可见性和审计审计日志BPMN执行视图运行时服务和历史服务审计日志路径Cockpit, Operate可扩展性设计为大型企业应用支持集群和可扩展性可扩展分布式执行可扩展性支持集群用户任务交互通过BPM控制台与任务表单任务列表表单API任务列表表单API任务列表易用表单DMN表单决策模型DMN 1.1--DMN 1.1案例管理支持 CMMN有限的通过Activiti Explorer-CMMN 1.1扩展性插件外部任务工作项变量扩展任务处理器Delegate听众Camunda spinDelegateCAM修复工具对其他技术的支持是有限的是强大的支持库连接器商业支持Red Hat提供支持多个提供商Flowable提供支持企业支持学习曲线中等至陡峭中等中等中等至陡峭使用场景大型企业复杂决策管理要求柔性业务流程自动化柔性业务流程自动化复杂流程决策支持要求较高最新发布版本截至2023年7.x7.x具体版本可能变化6.x7.x(开源) / 8.x(商业)
所有的这些引擎都是基于Java开发的这使得它们对Java环境下的工作流程管理非常友好。Activiti和Flowable的关系Flowable是Activiti的分支项目因此它们在很多方面有相似点。jBPM 是集成了决策管理和复杂业务流程的综合解决方案Red Hat提供支持吸引大型企业。Camunda 因其通过DMN提供的强大的决策管理支持而与众不同。不同的引擎在流程执行方式上有所区别一些引擎重点是内存执行而其他提供高级的持久性选项。
在选择上普通使用其实功能都差距不大就可能一些内部细节上会有区别但在开源版本使用上Camunda相对会更新的频率高一些并且工具相对也齐全一些所以优先推荐使用Camunda
一、 介绍
Camunda在发展上目前主要是分为了两个主要版本7.x和8.x7.x的为开源版本目前更新到最新的是7.23本教程介绍使用的是7.20也是相对比较新的版本不同的版本之间会有一定的差异。测试过几个版本相对这个会比较好用一点。 常用几个官方的网站 开源版官方操作手册https://docs.camunda.org/get-started/quick-start/camunda-modeler和camunda-bpm下载地址https://downloads.camunda.cloud/release/官方示例git仓库https://github.com/camunda/camunda-bpm-examples 基本概念介绍
1.BPMN
BPMNBusiness Process Model and Notation是业务流程模型与标记法是一组由对象管理组织Object Management Group, OMG发布的图形符号用来直观地表示业务流程。它通过标准化的图形表示法使业务流程能够在不同组织和技术领域之间得到一致理解。目前工作流使用的都是这个2.0版本的一个标准。 基本常用符号 事件Event 活动Activity 活动是工作或任务的一个通用术语一个活动可以是一个任务还可以是一个当前流程的子处理流程其次你还可以为活动指定不听的类型 网关GateWay 网关用来处理决策有几种常用的网关
2.Form
在Camunda中Form主要表示表单主要用于以下几个方面
用户任务User Tasks 当工作流程中需要用户输入或交互时通过表单可以获取这些信息。表单数据的流转表单数据可以与流程变量进行映射。提交表单后数据可以自动填入流程变量或者通过Variables API进行后续处理。校验和逻辑Camunda表单支持复杂的表单验证逻辑和条件渲染。这意味着表单中的字段可以根据用户的输入或外部条件显示或隐藏、启用或禁用。
3.DMN
Camunda集成了DMN来管理业务决策这有助于
决策表Decision Tables 决策表是DMN的核心概念它以表格形式清晰直观地展示了各种决策规则。用户可以定义输入条件、决策输出以及相关的规则当输入条件满足规则时决策输出会得到相应的值。决策树和流程图DMN也支持基于决策树和流程图进行建模适用于更加复杂的决策逻辑其中实例化的路径可以可视化地表示出来。决策服务Camunda可以将DMN决策表作为服务部署使其可以在流程中使用或者通过REST API被调用。这意味着决策可以独立于流程存在增加了决策的重用性和保持性。与流程整合DMN模型可以无缝地集成到Camunda的工作流程中。这意味着在流程中的任意一步都可能需要一个业务决策其中决策的结果直接影响流程的流向或执行任务。决策自动化内置的DMN引擎能够自动执行决策逻辑这大大提高了决策的执行效率并减少了人工判断的错误。
二、Camunda使用
1、下载安装
我们总共需要安装两个东西camunda-modeler和camunda-bpm。可以通过上面的地址看不同的版本进行选择或者直接通过下面的地址下载和我一样的。
1.1、camunda-modelerBPMN绘画工具 下载安装 下载地址。根据自己主机环境选择不同的版本安装 mac的直接下载.dmg即可 如果是windows则下载win的压缩包解压后点击camunda-modeler.exe文件即可打开 打开后选择中间的Camunda7的BPMN digagram进行创建一个.bpmn文件 功能区介绍
1.2、camunda-bpm-runweb端控制页面 下载安装 下载地址 介绍 解压后可以使用vs code查看具体的结构.sh的是linux和mac的可执行文件.bat的是win的。 resources目录是存放bpmn文件的 userlib目录是存放jar包的如果有自定义的jar包可以放那 添加配置 在default.yml文件添加下面配置7.20之后必须要设置历史生存时间可以通过配置文件设置后就不用每个bpmn文件单独配置了。
camunda.bpm:
# 历史生存时间generic-properties:properties:historyTimeToLive: P30D启动 通过对应的start文件启动进入下面页面表示启动成功 登陆 把路径后缀清楚掉会重定向到登陆页面可以直接通过账号密码登陆默认的账号密码就是default.yml文件中配置的demo/demo可以自己改为自己想要的。 点击登陆后会先有一个弹窗然后随便点一个就可以进入主页了
2、创建流程
模拟创建一个请假流程一步步实现复制功能
2.1、部署一个基础流程 先通过开始事件添加一个活动 在通过这个活动添加一个结束时间 添加名称 双击符号或者通过右边的name添加 同理后面两个也一样 上传 点击空白区域添加流程ID 然后在点击下面的小火箭发送数据到web端第一次需要先把文件进行本地保存。发送到地址ip就是你web服务的ip 查看 然后回到web端点击Cockpit查看流程 在点击Process Definitions查看流程列表
查看列表默认有两个测试的数据第一条就是刚刚新增的
双击后就可以看到对应的流程图左边为流程图的信息。
2.2、添加用户任务
直接给活动图标指定为用户任务 给这个活动指定处理的人员
2.2.1、绑定表单
2.2.1.1、Generated Task Forms
直接添加字段绑定先在Forms选择 Generated Task Forms类型然后在再下面flelds添加字段我这分别添加了leadAudit、leadDiscuss两个字段 重新提交查看
2.2.1.2、Camunda Forms方式
创建form表单 点击右上角添加一个form表单文件 在从左边添加输入方式 分别选择一个test的输入框和一个一个checkbox复选框 配置输入框 添加配置 配置复选框 复选框也一样复选框勾选表示true不勾选表示false 保存 点击空白地方给这个form添加一个id这个id用作给bpmn做绑定的
绑定form表单
在新添加的用户活动里面设置如图form reference表示 form表单的id 2.2.2提交
如果流程里面有活动绑定了form表单需要把表单绑定一起提交 提交后就可以重新回到web页面刷新页面选择最新的版本即可
2.3、给流程添加活动
2.3.1、curl添加
直接在命令行输入
curl -H Content-Type: application/json -X POST -d {variables: {duration: {value:2,type:integer}, reason: {value:休假}, name: {value:lisi} } } http://localhost:8080/engine-rest/process-definition/key/businessLeave/start
返回如下表示成功
2.3.2、REST Client
推荐使用一般我们也是会使用REST api接口方式添加。 添加的字段没要求限制只要格式正确可以给这个流程随意添加字段businessLeave表示流程的key。 可以看到流程被加入了两个任务。 双击即可查看任务详情查看添加到字段变量数据
2.4、处理用户活动
点击taskKlist 进入taskKlist处理活动 输入内容点击complete提交 流程查看任务 在回到流程查看刚刚那个任务就已经执行到下一步了 点击进入详情可以看到经理审核输入的变量也可以查看到 在回到taskKlist处理总经理用户活动发现不行因为处理用户指定的是zhangsan所以需要添加一个zhangsan用户来处理
2.5、添加用户 回到首页点击admin 在点击new user 添加基础信息注册 注册成功后即可看到多了刚刚注册的 再点击id进入详情选择group点击右上角的add绑定用户组 点击add 即可
2.5.1、继续处理用户活动
重新登陆zhangsan用户即可对刚刚不能处理的活动进行处理 处理完成即结束了刚刚的任务就表示执行完成了。
2.6、添加外部活动 添加活动指定为service task 配置外部活动 通过implementation配置再指定tpoic名称提供给外部监听这个tpoic 创建一个maven项目 添加依赖 !-- 版本为自己wab端的版本--dependencygroupIdorg.camunda.bpm/groupIdartifactIdcamunda-external-task-client/artifactIdversion7.20.0/version/dependencydependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion2.3.1/version/dependency添加监听的java代码 import org.camunda.bpm.client.ExternalTaskClient;public class ChargeCardWorker {public static void main(String[] args) {ExternalTaskClient client ExternalTaskClient.create().baseUrl(http://localhost:8080/engine-rest).asyncResponseTimeout(10000) // long polling timeout.build();// subscribe to an external task topic as specified in the processclient.subscribe(archivedFile).lockDuration(1000) // the default lock duration is 20 seconds, but you can override this.handler((externalTask, externalTaskService) - {// Put your business logic here// Get a process variableString reason externalTask.getVariable(reason);Integer duration externalTask.getVariable(duration);String name externalTask.getVariable(name);String leadDiscuss externalTask.getVariable(leadDiscuss);String generalManager externalTask.getVariable(generalManager);System.out.println();System.out.println(请假人name);System.out.println(请假理由reason);System.out.println(请假时长duration天);System.out.println(经理评价leadDiscuss);System.out.println(总经理评价generalManager);externalTaskService.complete(externalTask);}).open();}
}重新提交流程 重新提交后选择最新的版本再通过postman提交添加一个任务 把任务提交到外部任务这一步启动服务 查看外部服务 可以看到我们前面活动的数据和操作打开断点让它跑完则执行完毕了
2.7、添加网关 添加一个普通的排他网关 添加条件判断 在上面的路径name改一下便于查看在添加一个条件判断表达式 我们在一些其他的地方都可以通过${}表达式的方式获取流程中的任务传递的变量 方式同上修改变量即可 动态设置处理用户 提交添加任务 会根据时长去判断路由往哪走 经理审核通过后我们就可以看到因为请假时间是5天所以就会走到总经理审核的地方去。