flowable 并行网关
时间: 2023-10-05 12:12:01 浏览: 272
并行网关是Flowable工作流引擎中的一个重要组件,用于同时执行多个并发的执行流。它可以将一个执行流分岔成多个同时执行的执行流,并将多个执行流合并为一个执行流。与其他网关不同的是,并行网关不会解析流条件,即使顺序流中定义了流条件,也会被忽略。并行网关可以同时具有分岔和合并两种行为,允许多个执行流到达该网关时被合并,然后再随机分岔为多个执行流。因此,并行网关在处理多个并发执行流时非常灵活和强大。
同时,包含网关也可以充当并行网关的角色。包含网关是排他网关和并行网关的结合体,可以选择多于一条顺序流,并且在执行流中具有分岔和合并的行为。当包含网关作为并行网关使用时,它遵循并行网关的特性,既有分岔行为也有合并行为。与并行网关不同的是,包含网关还可以解析流条件,并根据条件选择不同的顺序流进行执行。因此,包含网关在流程中的使用非常灵活,既可以用作排他网关,也可以用作并行网关。
总结来说,Flowable中的并行网关是一个同时执行多个并发执行流的组件,可以实现分岔和合并的行为,而包含网关则是排他网关和并行网关的结合体,既可以充当排他网关,也可以充当并行网关。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关问题
flowable并行网关详细设计路线
### Flowable 并行网关的设计实现详解
#### 1. 并行网关的核心功能
并行网关的主要作用是允许流程中的多个路径同时运行。当流程到达并行网关时,所有符合条件的顺序流会被激活,并以并行的方式执行[^2]。
#### 2. 技术实现细节
在 Flowable 中,并行网关通过以下机制来实现其核心功能:
- **分支处理**
当流程令牌(Token)进入并行网关时,引擎会分析所有的外出顺序流。如果没有任何条件附加到这些顺序流,则默认情况下所有顺序流都被激活[^3]。这意味着每个顺序流都将生成一个新的子流程实例,从而形成真正的并发执行路径。
- **汇聚逻辑**
在汇聚阶段,并行网关会等待所有对应的分支完成之后才继续后续操作。这种同步行为确保了只有当所有相关联的任务完成后,整个流程才会向前推进。
以下是简单的伪代码展示如何模拟这一过程:
```java
// 假设当前节点是一个并行网关
List<SequenceFlow> outgoingFlows = gateway.getOutgoingFlows();
for (SequenceFlow flow : outgoingFlows) {
if (!flow.hasCondition() || evaluateCondition(flow)) { // 如果无条件或者满足条件
createBranch(flow); // 创建新的分支
}
}
// 汇聚部分
void waitForAllBranches(List<Token> tokens, Gateway convergenceGateway) {
while (tokens.size() != getExpectedTokens(convergenceGateway)) {
Thread.sleep(INTERVAL);
}
}
```
上述代码片段展示了基本思路——对于每一个可能的方向进行评估和启动;而在汇合点处则持续监控直至预期数量的分叉均返回为止。
#### 3. 特殊情况考虑
需要注意的是,如果某些特定条件下希望控制哪些具体线路开启而非全开模式,则需给定相应布尔表达式的设定作为筛选依据之一。
---
flowable 并行网关退回
并行网关退回的情况有以下两种:
1. 如果并行网关所在的分支内部退回,那么只会影响该分支内的节点,不会影响其他分支。例如,如果节点4退回到节点3,那么节点6和节点8不变,任务节点变为节点3、节点6、节点8。
2. 如果并行网关所在的分支退回到上一级分支,那么同级分支会同步退回,不受影响。例如,如果节点4退回到节点2,那么节点6也会退回到节点2,而节点8不变,任务节点变为节点2、节点8。
阅读全文
相关推荐














