2025年流程引擎概念_虚幻引擎4

流程引擎概念_虚幻引擎4目录 一 流程定义 二 查询流程定义 三 ID 与版本 四 挂起流程定义 五 流程实例 六 执行 七 活动实例 八 任务与任务定义 本部分说明了流程引擎的概念 一 流程定义 流程定义定义了流程的结构 Camunda BPM 使用 BPMN2 0 作为主要的建模语言 可以将 BPMN 2 0XML 格式部署到流程引擎中 二 查询流程定义 List processDefin


目录

一、流程定义

二、查询流程定义

三、ID与版本

四、挂起流程定义

五、流程实例

六、执行

七、活动实例

八、任务与任务定义

----

本部分说明了流程引擎的概念

一、流程定义

流程定义定义了流程的结构。

Camunda BPM使用BPMN2.0作为主要的建模语言,可以将BPMN 2.0XML格式部署到流程引擎中。

二、查询流程定义

List processDefinitions = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("invoice")
.orderByProcessDefinitionVersion()
.asc()
.list();

也支持通过RestAPI进行查询。

三、ID与版本

流程定义ID是流程定义的逻辑标识符,最主要是用于启动流程实例。


...

如果相同的ID不是多个,则为流程定义的多个版本。

四、挂起流程定义

使用RuntimeService支持挂起、激活流程定义,当处于挂起阶段时无法实例化流程定义。

五、流程实例

流程实例概念

流程实例是流程定义的单独执行。

流程引擎负责创建流程实例并管理状态。

启动流程实例

支持传入变量

Map variables = new HashMap();
variables.put("creditor", "Nice Pizza Inc.");
ProcessInstance instance = runtimeService.startProcessInstanceByKey("invoice", variables);

在任一活动中启动流程实例

创建流程实例使用startProcessInstanceByKey和startProcessInstanceById

ProcessInstance instance = runtimeService.createProcessInstanceByKey("invoice")
.startBeforeActivity("SendInvoiceReceiptTask")
.setVariable("creditor", "Nice Pizza Inc.")
.startBeforeActivity("DeliverPizzaSubProcess")
.setVariableLocal("destination", "12 High Street")
.execute();

返回变量

使用executeWithVariablesInReturn返回变量

ProcessInstanceWithVariables instance = runtimeService.createProcessInstanceByKey("invoice")
.startBeforeActivity("SendInvoiceReceiptTask")
.setVariable("creditor", "Nice Pizza Inc.")
.startBeforeActivity("DeliverPizzaSubProcess")
.setVariableLocal("destination", "12 High Street")
.executeWithVariablesInReturn();

查询流程实例

runtimeService.createProcessInstanceQuery()
.processDefinitionKey("invoice")
.variableValueEquals("creditor", "Nice Pizza Inc.")
.list();

流程实例操作

触发:继续执行。

取消:RuntimeService.deleteProcessInstance(…)。

开始\取消任何活动:修改流程实例。

挂起流程实例

单个实例:RuntimeService的suspendProcessInstanceById(…)来挂起流程实例。

流程定义下所有实例:RepositoryService的suspendProcessDefinitionById(…)。

六、执行

流程引擎在流程实例内部创建两个并发执行。

查询执行

runtimeService.createExecutionQuery()
.processInstanceId(someId)
.list();

七、活动实例

活动实例表示活动的单个实例。

检索活动实例

ActivityInstance rootActivityInstance = runtimeService.getActivityInstance(processInstance.getProcessInstanceId());

标识唯一性

每个活动实例都一个唯一的标识ID,是持久性的,相同的活动实例返回相同的ID。

与执行的关系

一个活动实例可能会有多个执行。

八、任务与任务定义

概念

流程定义包含一个Job Executor的组件,负责执行异步后台任务。

部署流程后,流程引擎会为流程中的每个活动创建任务定义,这将在运行时创建任务。

查询任务

managementService.createJobQuery()
.duedateHigherThan(someDate)
.list()

查询任务定义

managementService.createJobDefinitionQuery()
.processDefinitionKey("orderProcess")
.list()

挂起\激活任务执行

不同级别执行暂停:

任务实例级别;

任务定义级别。

List jobDefinitions = managementService.createJobDefinitionQuery()
.processDefinitionKey("orderProcess")
.activityIdIn("processPayment")
.list();

for (JobDefinition jobDefinition : jobDefinitions) {
managementService.suspendJobDefinitionById(jobDefinition.getId(), true);
}
编程小号
上一篇 2025-07-27 12:17
下一篇 2025-07-30 23:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/127140.html