Camunda流程引擎概念

💖专栏简介

✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。

✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda

✔️请给snail-camunda 点颗星吧😘

💖流程定义

流程定义就是对流程的结构进行建模,Camunda是使用BPMN2.0来对流程定义进行建模。相关内容在认识BPMN2.0中也有提及。

💖挂起流程定义

挂起流程定义会暂时禁用它,即在挂起时无法实例化它。当然可以激活流程定义来撤消此效果。

💖Key和版本

流程定义的Key是它的标识符,也就是xml中的这个id,如果使用同一个Key多次部署流程定义,则流程引擎会视为同一个流程定义的不同版本。

Camunda流程引擎支持以下功能:

  • 每次部署相关Key的流程定义,则会在数据库中获得新版本。
  • 正在运行的流程实例将继续在启动它们的版本中运行。
  • 除非明确指定,否则新的流程实例将在新版本中运行。
  • 在特定限制范围内,支持将流程实例迁移到新版本。

💖流程实例

流程实例与流程定义的关系就像Java中对象和类之间的关系。【实例扮演着对象,定义扮演着类】。

流程引擎负责创建流程实例并管理其状态。如果启动包含等待状态的流程实例(例如用户任务),那么流程引擎必须确保捕获流程实例的状态并将其存储在数据库中,直到等待状态离开(用户任务完成)。

💖启动流程实例

可以在启动流程实例时传入一些变量。流程变量可用于流程实例中的所有任务【流程变量是全局变量】,并在流程实例达到等待状态时自动保存到数据库中。

Map<String, Object> variables = new HashMap<String,Object>();
variables.put("creditor", "武松");
ProcessInstance instance = runtimeService.startProcessInstanceByKey("invoice", variables);

💖返回变量

如果流程实例结束或达到等待状态,则返回。返回的对象包含流程实例和最新变量的信息。

ProcessInstanceWithVariables instance = runtimeService.createProcessInstanceByKey("invoice")
.startBeforeActivity("UserTaskOne")
.setVariable("creditor", "武磊")
.executeWithVariablesInReturn();

💖挂起流程实例

挂起流程实例可以确保它不会进一步执行。例如,如果流程变量处于不需要的状态,则可以挂起实例并安全地更改。具体来说,挂起意味着禁止所有更改实例令牌状态的操作(即当前执行的活动)。属于它的所有任务都将被挂起。因此,将无法再调用对任务生命周期有影响的操作(即用户分配、任务委派、任务完成等)。但是可以进行一些不影响令牌状态的操作,比如设置或删除变量以及添加注释。

💖执行

执行是分层的,流程实例中的所有执行组成树结构,流程实例是树中的根节点。注意:流程实例本身是一个执行。执行是可变范围的,这意味着动态数据可以与它们关联。可以查询返回给定流程实例的所有执行。

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

💖活动实例

活动实例概念与执行概念类似,但采用不同的视角。通常情况下【活动实例】与【执行】之间是1对多的关系,

多实例活动由一个multi-instance body和内部活动组成。多实例体是围绕内部活动的作用域,并收集内部活动的活动实例。

ProcessInstance
  receive payment - Multi-Instance Body
    receive payment
    receive payment
  ship order - Multi-Instance Body
    ship order

可以通过以下接口来检索活动实例

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

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoneWalker、

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值