大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
目录
本部分说明了流程引擎的概念
一、流程定义
流程定义定义了流程的结构。
Camunda BPM使用BPMN2.0作为主要的建模语言,可以将BPMN 2.0XML格式部署到流程引擎中。
二、查询流程定义
List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("invoice")
.orderByProcessDefinitionVersion()
.asc()
.list();
也支持通过RestAPI进行查询。
三、ID与版本
流程定义ID是流程定义的逻辑标识符,最主要是用于启动流程实例。
<process id="invoice" name="invoice receipt" isExecutable="true">
...
</process>
如果相同的ID不是多个,则为流程定义的多个版本。
四、挂起流程定义
使用RuntimeService支持挂起、激活流程定义,当处于挂起阶段时无法实例化流程定义。
五、流程实例
- 流程实例概念
流程实例是流程定义的单独执行。
流程引擎负责创建流程实例并管理状态。
- 启动流程实例
支持传入变量
Map<String, Object> variables = new HashMap<String,Object>();
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<JobDefinition> jobDefinitions = managementService.createJobDefinitionQuery()
.processDefinitionKey("orderProcess")
.activityIdIn("processPayment")
.list();
for (JobDefinition jobDefinition : jobDefinitions) {
managementService.suspendJobDefinitionById(jobDefinition.getId(), true);
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179859.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...