小几休息啦 2023-04-04 09:43 采纳率: 0%
浏览 26

activiti终止流程

朋友们~初学工作流,想请教一下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);
    }

```

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-04-04 10:08
    关注

    该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:

    在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字段就会保存为您设置的值。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 4月4日