activiti中taskService.deleteTask(taskId)的sql语句
时间: 2023-07-03 17:08:14 浏览: 204
在Activiti中,执行`taskService.deleteTask(taskId)`方法时,会执行以下SQL语句:
```sql
delete from ACT_HI_TASKINST where TASK_ID_ = #{taskId}
delete from ACT_HI_COMMENT where TASK_ID_ = #{taskId}
delete from ACT_HI_IDENTITYLINK where TASK_ID_ = #{taskId}
delete from ACT_RU_TASK where ID_ = #{taskId}
delete from ACT_RU_IDENTITYLINK where TASK_ID_ = #{taskId}
delete from ACT_RU_VARIABLE where TASK_ID_ = #{taskId}
```
这些SQL语句的作用是删除与指定任务相关的历史任务实例、任务评论、任务参与者、运行时任务、运行时任务参与者和任务变量等信息。
相关问题
activiti中taskService.deleteTask(taskId)
这个方法是用来删除对应任务ID的任务。如果任务已经被完成,那么该方法会抛出异常,因为已经完成的任务不能被删除。
在删除任务时,如果任务关联了流程实例,那么该任务关联的历史记录也会被删除。如果任务关联了执行对象,那么该执行对象也会被删除。
需要注意的是,删除任务并不会直接影响流程的运行,而只是删除了任务本身及其相关的历史记录和执行对象。如果需要中止流程实例,需要使用`runtimeService.deleteProcessInstance(processInstanceId, deleteReason)`方法。
activiti中taskService.complete(taskId,pam),pam能为连续出线的条件参数么
在Activiti中,使用taskService.complete(taskId, variables)方法完成任务时,variables参数是一个Map类型的变量,用于设置任务完成时的变量值。在连续出线的条件参数方面,可以在variables参数中设置,然后在后续的任务节点中通过表达式来判断。
例如,在你的问题中,如果task1有两条出线a和b,它们的条件表达式分别为${param1 == 'A'}和${param2 == 'B'}。那么在使用taskService.complete(task1.getId(), variables)完成task1时,可以将连续出线的条件参数param1和param2设置到variables参数中,例如:
```java
Map<String, Object> variables = new HashMap<>();
variables.put("param1", "A");
variables.put("param2", "B");
taskService.complete(task1.getId(), variables);
```
然后,在后续的任务节点中,可以通过表达式来判断param1和param2的值,从而决定选择哪条出线。例如,在task2中,可以使用以下表达式来判断:
```xml
<sequenceFlow id="flowToP1" name="flowToP1" sourceRef="task2" targetRef="p1">
<conditionExpression xsi:type="tFormalExpression">
<![CDATA[${param1 == 'A'}]]>
</conditionExpression>
</sequenceFlow>
```
在排他网关中,也可以使用类似的方式判断连续出线的条件参数。例如,在p1的条件表达式中,可以使用以下表达式来判断:
```xml
<exclusiveGateway id="p1" name="p1">
<conditionExpression xsi:type="tFormalExpression">
<![CDATA[${param1 == 'C1'}]]>
</conditionExpression>
<outgoing>flowToD1</outgoing>
<outgoing>flowToD2</outgoing>
</exclusiveGateway>
```
总之,通过在variables参数中设置连续出线的条件参数,并在后续任务节点的表达式中进行判断,就可以实现连续出线的条件判断了。
阅读全文