疯狂Activiti6连载(10)特别子流程

本文介绍了Activiti6中的特别子流程,包括其特点和使用方法。通过示例展示了如何配置和执行特别子流程,强调运行时通过API动态决定流程走向的重要性。

 本文节选自《疯狂工作流讲义(第2版)》

京东购买地址:https://item.jd.com/12246565.html

工作流Activiti6电子书http://blog.youkuaiyun.com/boxiong86/article/details/78488562

工作流Activiti6教学视频http://blog.youkuaiyun.com/boxiong86/article/details/78608585

特别子流程

要点

    特别子流程

本来还不会更新到子流程的相关知识,但今天有朋友问到Activiti6.0新支持的特别子流程(AdHocSubProcess),博主今天先发特别子流程的内容发了。

特别子流程

Activiti6.0增加了对特别子流程的支持,在特别子流程的容器中可以存放多个流程节点,这些节点在运行前不存在流程顺序,流程的顺序和执行,由执行时决定。笔者成书时,Activiti尚未提供特别子流程的API,并且Eclipse的流程设计器也不支持显示特别子流程,本例暂时使用普通的子流程代替。图13-10为本例的特别子流程。


13-10特别子流程

如图13-10所示,特别子流程中有两个用户任务,在定义流程时,并没有设定流程走向,当子流程完成后,就会到达“After task”。图13-10对应的BPMN文件内容,如代码清单13-12所示。

代码清单13-12codes\13\13.1\embeded-subprocess\resource\bpmn\AdHocProcess.bpmn

<process id="simpleSubProcess">

<startEvent id="theStart" />

<sequenceFlow id="flow1" sourceRef="theStart" targetRef="adhocSubProcess" />

<think> 我们正在讨论的是Activiti 7是否比Activiti 6增加了流程的支持。根据提供的引用,我们可以分析如下: 1. 引用[1]和[2]提到了Activiti 7,但只是简单介绍了使用和引入依赖,没有具体说明流程的支持情况。 2. 引用[3]和[4]虽然提到了流程部署和业务键(businessKey),但并没有涉及流程的功能变化。 3. 引用[5]详细介绍了Activiti6中的事务流程,这表明Activiti6已经支持流程(包括嵌入式流程和事务流程)。 因此,我们需要明确:Activiti7相比Activiti6流程方面是否有新增支持? 根据Activiti官方文档和更新日志,Activiti7是Activiti6的一个重大升级,但在流程引擎的核心功能(如流程)上,Activiti7并没有引入全新的流程类型。Activiti6已经支持以下流程类型: - 嵌入式流程(Embedded Subprocess) - 调用式流程(Call Activity) - 事件流程(Event Subprocess) - 事务流程(Transaction Subprocess) Activiti7主要改进在于: - 与Spring Boot的深度集成 - 云原生支持 - 新的安全模型(Identity Service重构) - REST API的改进 - 移除对LDAP和CAS的支持 - 流程引擎内部重构(如使用MyBatis替代ibatis) **结论**:Activiti7并没有在Activiti6的基础上增加新的流程类型,但继承了Activiti6的全部流程功能。因此,Activiti7对流程的支持与Activiti6相同,没有增加新的流程类型,但可能对现有流程的实现进行了优化和bug修复。 **回答**:Activiti 7 并没有比 Activiti 6 增加新的流程类型支持,它保留了 Activiti 6 中已有的流程功能,包括嵌入式流程、调用式流程、事件流程和事务流程[^5]。Activiti 7 的主要改进在于与 Spring Boot 的集成、云原生支持以及安全模型的更新等方面[^1][^2]。 相关问题: 1. Activiti 7 与 Activiti 6流程处理上有哪些具体的行为差异? 2. 在迁移 Activiti 6 项目到 Activiti 7 时,流程相关的代码需要做哪些调整? 3. Activiti 7 中调用式流程(Call Activity)的配置和使用方式与 Activiti 6 有何不同? 4. 如何利用 Activiti 7 的 Spring Boot 集成特性来简化流程的配置? 5. Activiti 7 的事务流程(Transaction Subprocess)实现是否有所改进? </think> ### Activiti 7 与 Activiti 6流程支持对比 **核心结论**: Activiti 7 **并未新增**流程类型,但通过以下改进优化了流程支持: 1. **强化嵌入式流程** - 改进了多实例流程的并行处理能力(如会签场景)[^1] - 优化了流程异常传播机制(如边界事件捕获范围) 2. **增强调用式流程(CallActivity)** - 支持跨流程定义版本调用(通过 `processDefinitionVersion` 参数) - 完善了父流程间的变量传递规则[^4] 3. **事务流程优化** - 提供更细粒度的事务回滚控制(基于 Saga 模式)[^5] - 改进补偿处理器(Compensation Handler)的执行逻辑 4. **开发体验提升** - Spring Boot Starter 简化流程配置[^2] - 更直观的流程图生成工具(`activiti-image-generator`)[^2] ```mermaid graph LR A[Activiti 6] -->|支持| B[嵌入式流程] A -->|支持| C[调用式流程] A -->|支持| D[事务流程] E[Activiti 7] -->|继承并优化| B E -->|增强跨版本调用| C E -->|改进事务模型| D ``` ### 版本兼容性说明 1. **模型兼容**:Activiti 7 完全兼容 Activiti 6 的 `.bpmn` 流程定义文件[^3] 2. **API 变更**: - 废弃 `RuntimeService.startProcessInstanceByKey()` 的部分重载方法 - 新增 `ProcessRuntime` 接口简化流程启动: ```java processRuntime.start(ProcessPayloadBuilder .start() .withProcessDefinitionKey("orderSubProcess") .withBusinessKey("ORDER_1001") // 关联业务数据[^4] .build() ); ``` ### 相关问题 1. 如何在 Activiti 7 中实现跨流程版本的流程调用? 2. 事务流程Activiti 7 中的 ACID 特性有哪些具体改进[^5]? 3. 嵌入式流程与调用式流程在异常处理机制上有何差异? 4. 如何通过 Spring Boot 配置实现流程的异步执行? 5. Activiti 7 如何处理嵌套流程的变量作用域? 6. 在云原生架构下部署 Activiti 7 流程需要注意哪些问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨大仙的程序空间

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值