目录
简单介绍
Camunda的本质是可以独立运行的一套流程引擎,流程引擎会根据预先设定(类似流程图内的流程图)好的规则和逻辑进行流程执行。
主要组件与名词介绍
常见名词解释
- BPMN :即业务流程模型和标记,是一种业界标准的流程建模语言。Camunda 支持完整的 BPMN 2.0 规范,包括事件、网关、任务、序列流、消息流等元素,可用于对各种业务流程进行建模和执行
- DMN :是决策建模和执行标准,可将决策和业务规则转化为可执行的决策表和决策模型。Camunda 支持完整的 DMN 规范,通过决策引擎来执行 DMN 模型,实现基于规则的决策自动化。
- CMMN :即案例管理模型和标记,是一种案例建模和执行标准。Camunda 支持 CMMN 规范,能够将业务场景和复杂流程转化为可执行的案例图和案例模型,适合处理灵活多变的业务场景。
- 流程定义 :是对业务流程的建模和描述,通常以 BPMN 2.0 XML 文件的形式存在。它定义了流程的步骤、流转规则、参与角色等信息,是流程引擎执行流程的依据。
- 流程实例 :是流程定义的一次具体执行。当流程引擎启动一个流程实例时,会根据流程定义中的规则和逻辑来执行相应的任务和操作,直到流程结束。
- 任务 :是流程中的一个具体工作单元,可以是自动任务(如服务任务)或人工任务(如用户任务)。任务的执行可以由系统自动完成,也可以由人工干预完成。
- 消息事件 :当流程引擎监听到特定的消息事件时,会触发相应的流程或任务,并调用对应的接口。例如,在一个订单状态更新流程中,当接收到订单状态变更的消息时,流程引擎会调用接口来更新订单状态并执行后续相关操作。
核心组件介绍
- Process Engine(流程引擎) :是 Camunda 的核心组件,负责解析、执行和管理业务流程。它实现了 BPMN 2.0 标准中定义的所有元素和规则,并提供了丰富的 API 和服务,包括服务如
RepositoryService
,用于管理和操作部署和流程定义;RuntimeService
,用于流程实例的启动、删除和搜索等操作;TaskService
,用于处理任务相关的操作,如完成、分发、认领等;HistoryService
,提供引擎搜集的历史数据;IdentityService
,用于用户认证和授权等。 - Decision Engine(决策引擎) :用于执行基于 DMN(决策模型和标记)标准的决策表。它可以与流程引擎一起使用,也可以作为独立的引擎使用,能够根据业务规则和数据进行决策,并将决策结果反馈到流程中。
- Modeler :是 Camunda 的流程建模工具,用于创建、编辑和部署 BPMN 2.0 流程图和 DMN 决策表。它提供了图形化界面,使用户能够通过拖拽等方式轻松地设计复杂的业务流程,并将设计好的流程图和决策表直接部署到流程引擎中执行。
- Rest API :提供了对流程引擎的访问和操作接口,支持 JSON 和 XML 格式的数据交换,方便外部系统与 Camunda 的集成。通过 Rest API,前端应用或其他服务可以与 Camunda 进行交互,如启动流程实例、查询状态、管理任务及部署定义等。
- Job Executor(作业执行器) :是一个调度组件,负责执行异步任务、定时任务、重试机制等,以确保流程引擎的稳定性和高可用性。例如,当流程中包含定时器事件时,作业执行器会在指定时间触发相应的任务。
一些思考
与前端的关系
是不是相当于之前可能需要前端控制的逻辑转移到了流程引擎这里,后端只需要写对应流程需要的接口即可,不需要关注中间的调用过程
在传统的系统设计中,前端需要对业务流程的逻辑进行大量的控制,例如判断用户当前处于哪个流程步骤、应该展示什么内容、在用户完成某个操作后应该调用哪个接口等。而引入流程引擎后,这种情况发生了变化:
前端逻辑的简化
- 前端主要负责用户界面的展示和用户交互。例如,展示流程任务列表、表单等界面元素,以及处理用户的点击、提交等操作。
- 对于流程的控制逻辑,如判断用户当前可以执行哪些任务、任务完成后应该进行什么操作等,前端不再需要过多地参与。前端只需要根据流程引擎返回的任务信息,展示相应的任务给用户,并在用户完成任务后将结果提交给流程引擎即可。
后端接口的专注
- 后端主要负责提供业务逻辑的实现,即编写各种接口来完成具体的业务操作。例如,用户注册接口、订单处理接口、数据查询接口等。
- 后端不再需要关注这些接口在业务流程中的调用顺序和条件,接口的调用逻辑由流程引擎根据流程定义来控制。这使得后端可以更加专注于接口功能的实现和优化。
流程引擎的控制作用
- 流程引擎作为核心的流程控制中心,负责解析流程定义、跟踪流程实例的执行状态,并根据预设的规则来决定何时调用哪个接口。
- 当流程执行到某个步骤时,流程引擎会根据流程定义中的配置,如服务任务、消息事件等,自动调用相应的后端接口来完成业务操作。
- 流程引擎还会将接口的执行结果反馈到流程中,以便流程继续执行后续的步骤,实现整个业务流程的自动化和高效执行。
数据和状态的管理
- 流程引擎负责流程实例和任务的状态管理,将这些状态信息持久化到数据库中。前后端可以根据流程引擎提供的 API 来获取流程和任务的状态信息,而不需要自己维护复杂的流程状态数据。
- 在前端,可以通过调用流程引擎的 API 来获取当前用户可执行的任务列表,然后展示给用户。在后端,可以通过流程引擎传递的参数和上下文信息,获取当前流程执行的上下文数据,以便正确地执行业务逻辑。
监控和管理的集中化
- 流程引擎提供对整个流程的监控和管理功能,方便管理员实时查看流程的执行情况、任务的分配和完成状态等。
- 通过流程引擎的管理界面或 API,可以对流程进行暂停、挂起、终止等操作,以便在需要时对流程进行干预和调整。这使得对业务流程的管理和监控更加集中和高效。
参考资料
Download Camunda | Get Started for Free
SpringBoot 优雅集成 Camunda 7以上 工作流引擎,保姆级教程!_springboot + camunda 教程-CSDN博客
下载 Camunda Modeler下载 Camunda BPMN / DMN 流程建模器 |卡蒙达