Flowable 如何在任务节点中添加抄送人员
时间: 2023-05-16 13:05:39 浏览: 774
您可以使用 Flowable 提供的 addCandidateUsers 方法来在任务节点中添加抄送人员。具体步骤如下:
1. 获取当前任务节点的 Task 对象。
2. 调用 Task 对象的 addCandidateUsers 方法,将抄送人员的 ID 添加到候选用户列表中。
3. 当任务节点被触发时,系统会自动将候选用户列表中的用户作为抄送人员发送通知。
以下是示例代码:
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
task.addCandidateUsers(Arrays.asList("user1", "user2", "user3"));
taskService.saveTask(task);
请注意,以上代码仅为示例,实际使用时需要根据具体情况进行调整。
相关问题
Flowable 如何在任务节点中添加抄送人员java代码实现
下面是两种在 Flowable 任务节点中添加抄送人员的 Java 代码实现方式:
1. 使用 MultiInstanceActivityBehavior
```java
public class CopyUserTaskBehavior extends AbstractBpmnActivityBehavior {
// 抄送人员集合
private List<String> copyUsers;
public CopyUserTaskBehavior(List<String> copyUsers) {
this.copyUsers = copyUsers;
}
@Override
public void execute(DelegateExecution execution) {
// 获取抄送任务集合
List<DelegateExecution> copyExecutions = new ArrayList<>();
for (String copyUser : copyUsers) {
DelegateExecution copyExecution = execution.getEngineServices().getRuntimeService()
.createExecutionQuery().activityId(execution.getCurrentActivityId())
.parentId(execution.getParentId()).singleResult();
copyExecution.setVariable("assignee", copyUser);
copyExecutions.add(copyExecution);
}
// 启动抄送任务集合
for (DelegateExecution copyExecution : copyExecutions) {
execution.getEngineServices().getRuntimeService().signal(copyExecution.getId());
}
// 设置主任务为已完成
execution.setVariable("assignee", execution.getVariable("initiator"));
leave(execution);
}
}
```
在上面的代码中,我们通过实现 `AbstractBpmnActivityBehavior` 接口来自定义任务节点的行为。在 `execute` 方法中,我们首先使用 `createExecutionQuery` 方法创建抄送任务的执行对象,然后通过设置 `assignee` 变量来指定抄送人员。接着,我们将所有抄送任务对象添加到一个列表中,并依次启动它们。最后,我们设置主任务的 `assignee` 变量为发起人,并将主任务设置为已完成。
2. 使用事件监听器
```java
public class CopyUserTaskListener implements ExecutionListener {
// 抄送人员集合
private List<String> copyUsers;
public CopyUserTaskListener(List<String> copyUsers) {
this.copyUsers = copyUsers;
}
@Override
public void notify(DelegateExecution execution) {
RuntimeService runtimeService = execution.getEngineServices().getRuntimeService();
for (String copyUser : copyUsers) {
// 创建抄送任务
Task copyTask = runtimeService.newTask();
copyTask.setName(execution.getCurrentActivityName() + "-Copy");
copyTask.setAssignee(copyUser);
copyTask.setParentTaskId(execution.getParentId());
copyTask.setProcessInstanceId(execution.getProcessInstanceId());
runtimeService.saveTask(copyTask);
// 触发抄送事件
runtimeService.signalEventReceived("CopyTask", copyTask.getId());
}
// 设置主任务为已完成
execution.setVariable("assignee", execution.getVariable("initiator"));
runtimeService.complete(execution.getId());
}
}
```
在上面的代码中,我们实现了 `ExecutionListener` 接口,并在 `notify` 方法中创建了抄送任务。接着,我们通过 `signalEventReceived` 方法触发抄送事件,并将抄送任务的 ID 作为参数传入。最后,我们设置主任务的 `assignee` 变量为发起人,并将主任务设置为已完成。
以上两种方式都可以实现任务节点的抄送功能,具体使用哪种方式取决于实际需求和场景。
flowable抄送
根据提供的引用内容,flowable抄送是指在flowable工作流引擎中,将任务抄送给其他人员进行查看或者处理的功能。在flowable中,可以通过添加抄送任务节点来实现抄送功能。抄送任务节点可以在流程图中添加,当流程执行到该节点时,会将任务抄送给指定的人员,这些人员可以查看任务的进展情况,但是不能对任务进行操作。抄送任务节点的配置方式与普通任务节点类似,可以指定抄送人员、抄送方式等信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)