Activity服务类TaskService任务服务

一共72个接口

 

1.创建任务(2个方法)

创建与任何流程实例无关的新任务。

Task newTask();

使用用户定义的任务id创建一个新任务。

Task newTask(String taskId);

 

2.存任务(1个方法)

将给定的任务保存到持久数据存储中。

如果这个任务已经存在于持久化存储中,那么它将被更新。

在保存了新任务之后,传递给该方法的任务实例将使用新创建的任务的id进行更新。

void saveTask(Task task);

 

3.删除任务(6个方法)


删除给定的任务,而不是删除与此任务相关的历史信息。

void deleteTask(String taskId);

删除给定集合的所有任务,而不是删除与这些任务相关的历史信息。

void deleteTasks(Collection<String> taskIds);

删除给定的任务。

void deleteTask(String taskId, boolean cascade);

删除给定集合的所有任务

void deleteTasks(Collection<String> taskIds, boolean cascade);

删除给定的任务。

void deleteTask(String taskId, String deleteReason);

删除给定集合的所有任务

void deleteTasks(Collection<String> taskIds, String deleteReason);

4.任务操作

声明对任务的责任:给定的用户被指定为任务的受让人。

不检查用户是否被标识组件所知。

void claim(String taskId, String userId);

为了取消任务,使用null用户的{@link #claim}的快捷方式。

void unclaim(String taskId);

当任务成功执行时调用。

void complete(String taskId);

将任务委托给另一个用户。

这意味着设置了assignee并将委派状态设置为{@link委派状态#PENDING}。

如果没有设置所有者,则所有者将被设置为任务的当前受让人。

void delegateTask(String taskId, String userId);

标志着受让人完成了这项任务,并可以将其发回给所有者。

 只有当这个任务是{@link DelegationState#PENDING}委托时才能调用。

在此方法返回后,{@link Task# getdelegate state()将被设置为{@link DelegationState#RESOLVED}。

void resolveTask(String taskId);

标志着受让人完成了这项任务,提供了所需的变量,并且可以将其发回给所有者。

只有当这个任务是{@link DelegationState#PENDING}委托时才能调用。

在此方法返回后,{@link Task# getdelegate state()将被设置为{@link 

### Activity 工作流任务流转至结束节点的实现方式 在 Activiti 工作流引擎中,任务流转至结束节点的过程是由 BPMN(Business Process Model and Notation)定义文件中的配置决定的。以下是关于任务如何流向结束节点的具体说明: #### 1. **BPMN 定义的作用** - 在 BPMN 文件中,通过 `<endEvent>` 节点来表示流程的结束事件[^1]。当某个任务完成后,如果该任务指向的是 `endEvent`,那么整个流程实例会自动进入结束状态。 ```xml <!-- 示例:简单的 BPMN 结束事件 --> <process id="exampleProcess"> <startEvent id="startEvent"/> <userTask id="task1" name="First Task"/> <sequenceFlow sourceRef="startEvent" targetRef="task1"/> <endEvent id="endEvent"/> <sequenceFlow sourceRef="task1" targetRef="endEvent"/> </process> ``` #### 2. **任务完成触发条件** - 当调用 `TaskService.complete(taskId)` 方法时,Activiti 引擎会检查当前任务是否有后续的任务或活动节点[^3]。如果没有,则意味着下一个节点是 `endEvent`,此时流程实例会被标记为已结束。 #### 3. **数据库层面的变化** - 在底层数据库中,当流程到达结束节点时,`act_hi_procinst` 表中的记录会被更新,字段 `END_TIME_` 将被填充以表明流程已经结束[^4]。同时,与未完成任务相关的条目也会从运行时表(如 `act_ru_task` 和 `act_ru_execution`)中移除。 #### 4. **特殊情况处理** 如果需要重新启动已完成的流程并返回到特定任务节点,可以按照以下方法操作: - 创建一个新的流程实例,并手动调整其执行路径以模拟退回指定节点的行为。 - 使用自定义逻辑修改流程变量或者动态更改流程定义,从而控制任务流动方向。 --- ### 示例代码展示 下面是一个简单示例,用于演示如何让任务正常流转至结束节点: ```java // 初始化 ProcessEngine 并获取相关服务组件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); TaskService taskService = processEngine.getTaskService(); // 启动新流程实例 String processInstanceId = runtimeService.startProcessInstanceByKey("exampleProcess").getId(); // 获取第一个任务 ID 并完成它 List<Task> tasks = taskService.createTaskQuery().list(); if (!tasks.isEmpty()) { String taskId = tasks.get(0).getId(); taskService.complete(taskId); // 完成此任务后,流程将移动到下一节点直至 endEvent } ``` 上述代码片段展示了如何通过完成任务的方式使流程逐步向结束节点推进。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Trouble-Solver

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

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

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

打赏作者

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

抵扣说明:

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

余额充值