朋友们~初学工作流,想请教一下activiti终止流程后,ACT_HI_TASKINST表的,Assignee字段为空。是咋回事呀,想存进去,有可以使用的API嘛
```java
public void cancelApply(String instanceId, String deleteReason) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(instanceId).singleResult();
applicationEventPublisher.publishEvent(new WorkflowEvent(this, processInstance, WorkflowEvent.EVENT_CANCEL_APPLY));
// 执行此方法后未审批的任务 act_ru_task 会被删除,流程历史 act_hi_taskinst 不会被删除,并且流程历史的状态为finished完成
runtimeService.deleteProcessInstance(instanceId, deleteReason);
}
```
该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:
在Activiti中,当流程实例结束(包括正常结束和终止结束)时,对应的历史任务记录会保存在ACT_HI_TASKINST表中。如果在流程实例终止时,历史任务的Assignee字段为空,可能是因为在流程实例终止前,该任务的Assignee被设置为了null,或者该任务本来就没有Assignee。
如果您想在流程实例终止时保存Assignee字段,可以考虑在终止流程实例前,通过Activiti的API获取所有未完成的任务,并将其Assignee字段设置为需要保存的值。
例如:
List<Task> tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
for (Task task : tasks) {
task.setAssignee(assignee);
taskService.saveTask(task);
}
这样,当流程实例终止时,对应的历史任务记录的Assignee字段就会保存为您设置的值。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话:在界面中添加监听器。
定义任务监听类,该类必须实现org.activiti.delegate.TaskListener
接口。
public class MyTaskListener implements TaskListener(){
@Override
public void notify(Delegate delegate){
//这里指定任务负责人
delegate.setAssignee("张三");
}
}