flowable获取会签节点的flowable:collection
时间: 2024-10-17 12:00:29 浏览: 95
在Flowable流程引擎中,如果你想要获取任务列表(即会签节点),你可以通过`flowable:collection`命令查询历史任务或者当前的任务实例。这个命令通常用于查询条件集合,例如从用户组、任务候选人或任务分配策略中获取任务。具体的语法可能是:
```java
HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
query.flowable:collection("yourCollectionId");
List<HistoricTaskInstance> tasks = query.list(); // 获取所有会签节点
RuntimeTaskQuery runtimeQuery = taskService.createTaskQuery();
runtimeQuery.flowable:collection("yourCollectionId");
List<RuntimeTask> runtimeTasks = runtimeQuery.list(); // 获取当前状态的会签节点
```
这里,`"yourCollectionId"`需要替换为你实际使用的集合ID,它可能是一个用户组ID、查询表达式或者其他自定义的集合标识。
相关问题
flowable多人会签
### Flowable 工作流引擎中多人会签功能的实现与配置
#### 1. 多实例活动的概念
在 Flowable 中,多人会签可以通过多实例活动(Multi-Instance Activity)来实现。多实例活动允许在一个业务流程中为特定步骤定义重复执行的方式[^2]。这种机制类似于编程中的 `for-each` 结构,能够针对集合中的每一项按顺序或并行地执行某个任务。
#### 2. 配置方式
为了支持多人会签,在设计流程时需要对目标用户任务节点启用多实例特性。以下是具体的配置方法:
##### XML 定义
通过 BPMN 文件中的 `<userTask>` 节点添加多实例扩展属性即可实现。以下是一个简单的示例:
```xml
<userTask id="miUserTask" name="Multiple Instance User Task">
<multiInstanceLoopCharacteristics isSequential="false"
flowable:collection="${assignees}" flowable:elementVariable="assignee">
<!-- 设置并发模式 -->
</multiInstanceLoopCharacteristics>
</userTask>
```
在此示例中:
- 属性 `isSequential="false"` 表明该任务将以 **并行** 方式分配给多个参与者。
- 如果设置为 `true`,则表示任务将按照指定顺序逐一完成。
- 参数 `flowable:collection` 是一个多值数据源,通常是从上下文中获取的一个列表对象,比如参与者的 ID 列表。
- 参数 `flowable:elementVariable` 定义了每次迭代过程中使用的单个元素名称,这里指代每位具体参与者。
#### 3. 默认流程变量的作用
当启用了多实例特性之后,Flowable 自动提供了一些内置变量用于跟踪状态变化过程[^3]:
- `nrOfInstances`: 总共创建了多少个实例;
- `nrOfCompletedInstances`: 当前已完成的任务数;
- `nrOfActiveInstances`: 正处于活跃状态下的未结束任务数目;
这些信息可以帮助开发者监控整体进度以及判断何时满足条件从而继续后续逻辑处理。
#### 4. 示例代码展示如何动态加载参与者名单
假设我们需要根据实际场景计算得出最终审批人员,则可以在启动流程之前或者运行期间更新相关字段值。下面给出一段 Java 的伪代码演示这一操作:
```java
// 假设我们有一个服务类负责返回候选人数组
List<String> assignees = candidateService.getCandidatesForApproval();
Map<String, Object> variables = new HashMap<>();
variables.put("assignees", assignees); // 将候选人列表放入流程变量中
runtimeService.startProcessInstanceByKey("processKey", variables);
```
上述片段展示了怎样把外部获得的数据注入到正在构建的新实例里去供内部使用。
---
###
flowable多人会签、
### Flowable 中多人会签的实现与配置
#### 1. 多人会签的概念
多人会签是指在一个业务流程中,多个参与者共同审批同一个任务。只有当所有指定的参与人都完成了各自的审批操作后,该任务才会被标记为完成并继续执行下一个环节。
#### 2. 使用Flowable BPMN定义多人会签
为了在Flowable中实现多人会签功能,在BPMN文件里可以通过创建一个多实例子任务来达成目标。多实例意味着同一类型的活动会被重复多次直到满足特定条件为止。对于多人会签来说,则是要等待所有的相关人员都处理完毕才行[^1]。
```xml
<userTask id="multiInstanceUserTask" name="Multi Instance User Task">
<multiInstanceLoopCharacteristics isSequential="false"
flowable:collection="${assignees}" flowable:elementVariable="assignee"/>
</userTask>
```
这段XML片段展示了如何声明一个多实例用户任务节点,并指定了`isSequential=false`表示这些实例是可以并发运行;通过`${assignees}`表达式获取待分配人员列表,而每一个单独的任务将会绑定到具体的个人身上(`${assignee}`)。
#### 3. 设置流程变量以支持动态调整参与者名单
为了让系统能够灵活应对不同场景下的需求变化,可以在启动流程实例之前预先设定好相应的参数——即那些将来可能参与到某一轮审核当中的人选们的信息集合。这通常涉及到设置一些全局级别的流程变量,比如上面提到过的`assignees`数组对象[^2]。
```java
Map<String, Object> variables = new HashMap<>();
List<String> assignees = Arrays.asList("zhangsan", "lisi");
variables.put("assignees", assignees);
runtimeService.startProcessInstanceByKey("processKey", variables);
```
上述Java代码示范了怎样向新发起的一个流程传递一组预设好的候选人身份ID作为输入数据的一部分,从而使得后续步骤中的多实例逻辑得以正常运作起来。
#### 4. 利用Flowable Modeler简化设计过程
考虑到实际项目开发过程中可能会遇到复杂度较高的情况,手动编写完整的BPMN描述往往不是最优解法之一。此时就可以借助于像Flowable Modeler这样的图形化工具来进行辅助建模工作了。它允许开发者直观地拖拽组件构建出想要的效果图样,同时也提供了良好的用户体验和支持服务以便快速定位解决问题所在之处[^3]。
---
阅读全文
相关推荐















