Camunda原理
简介
Camunda是一种工作流引擎。 Camunda BPM 是一个轻量级、开源灵活的工作流框架,是由Java开发的一个纯Java库。它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。
官方文档:https://docs.camunda.org
原理
动态探针
动态探针会在函数入口和出口插入一些断点,程序执行到断点时候会去执行对应的 handle,从而达到观测应用程序的目的。这里的中断是指 trap(陷阱),在X86体系是int3指令。 Camunda采用动态探针技术实现的动态追踪。用于监视生产系统中的事件。记录特定事件,跟踪问题等。
表介绍

初次启动Camunda,会创建49张表。主要类型有:
ACT_RE_: RE代表存repository。带有此前缀的表包含“静态”信息,例如流程定义和流程资源(图像、规则等)。 ACT_RU_: RU代表runtime。这些是运行时表,包含流程实例、用户任务、变量、作业等的运行时数据。引擎仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录。这使运行时表既小又快。 ACT_ID_: ID代表identity。这些表包含身份信息,例如用户、组等。 ACT_HI_: HI代表history。这些是包含历史数据的表,例如过去的流程实例、变量、任务等。 ACT_GE_* :GE代表 general一般数据,用于各种用例。
服务组件

运行时服务-RuntimeService
首先可以通过一个流程定义启动多个流程实例。也能用于处理检索和存储流程变量的服务
过滤器服务-FilterService
允许创建和管理过滤器。过滤器是像任务查询一样的存储查询。例如,过滤器被任务列表用来过滤用户任务
身份服务-IdentityService
是非常简单的。它允许对组和用户进行管理(创建、更新、删除、查询…)。重要的是要理解,核心引擎实际上在运行时并不对用户进行任何检查
表单服务-FormService
一个可选的服务。提供了表单功能
管理服务-ManagementService
它允许检索关于数据库表和表元数据的信息。此外,它暴露了查询功能和Job的管理操作。Job在引擎中被用于各种事情,如定时器、异步延续、延迟暂停/激活等。
案例服务-CaseService
与运行时服务(RuntimeService)类似,但用于案例实例。它处理启动案例定义的新案例实例并管理案例执行的生命周期。该服务也被用来检索和更新案例实例的流程变量。
外部任务服务-ExternalTaskService
提供对外部任务实例的访问。外部任务代表在外部处理的工作项目,独立于流程引擎。
历史服务-HistoryService
暴露了引擎收集的所有历史数据。当执行流程时,引擎可以保留很多数据(这是可配置的),如流程实例的开始时间、谁做了哪些任务、完成任务花了多长时间、每个流程实例遵循的路径等。该服务主要暴露了访问这些数据的查询功能。
决策服务-DecisionService
允许评估部署在引擎中的决策。它是评估独立于流程定义的业务规则任务中的决策的一种选择。
任务服务-TaskService
围绕用户审批操作的一切都会被归纳到TaskService。比如:查询分配给用户或组的任务,创建新的独立任务。这些是与流程实例无关的任务,操纵一个任务被分配给哪个用户,或者哪个用户以某种方式参与到任务中,声称并完成一项任务。声称意味着有人决定成为该任务的受让人,意味着这个用户将完成该任务。完成意味着 “完成任务的工作”等
仓库服务RepositoryService
提供了管理和操纵部署和流程定义的操作
camunda监听器
执行监听器
执行监听器的触发事件有:start、end、take;其中节点有start、end两种事件,而连线则有take事件。
任务监听器
任务监听器的触发事件有:create, assignment, update, complete, delete or timeout。

Last updated
Was this helpful?