feat(REQ-2924) - 完善转交功能的日志逻辑

This commit is contained in:
wangli 2024-09-06 18:31:31 +08:00
parent 25351ee93f
commit 155537c130
2 changed files with 19 additions and 18 deletions

View File

@ -15,7 +15,6 @@ import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.springframework.util.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
@ -76,9 +75,9 @@ public class CustomTransferUserTaskCmd extends AbstractCommand<Void> implements
@Override
public Void execute(CommandContext commandContext) {
ProcessEngineConfigurationImpl processEngineConfiguration =
CommandContextUtil.getProcessEngineConfiguration(commandContext);
CommandContextUtil.getProcessEngineConfiguration(commandContext);
HistoricTaskInstanceQuery taskQuery =
processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery();
processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery();
HistoricTaskInstance historicTaskInstance = taskQuery.taskId(originTaskId).singleResult();
TaskService taskService = processEngineConfiguration.getTaskService();
@ -88,16 +87,19 @@ public class CustomTransferUserTaskCmd extends AbstractCommand<Void> implements
validTaskAssignerDuplicated(commandContext, task, Lists.newArrayList(targetTaskAssignee));
// 修改节点对应的审批人集合快照信息
processAssignee(processEngineConfiguration, task);
// 对被转交的任务进行建议和附件的处理
resolveOriginTask(commandContext, taskService, task);
batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList,
originTaskAssignee);
originTaskAssignee);
addMultiTask(commandContext, (TaskEntity) task, targetTaskAssignee);
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus());
deleteMultiTask(commandContext, (TaskEntity) task);
// 生成转交任务
addMultiTask(commandContext, task, targetTaskAssignee);
task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus());
// 结束被转交任务
deleteMultiTask(commandContext, task);
return null;
}
@ -105,23 +107,22 @@ public class CustomTransferUserTaskCmd extends AbstractCommand<Void> implements
private void resolveOriginTask(CommandContext commandContext, TaskService taskService, TaskEntity task) {
BpmnTaskDelegateAssigner assigner = buildDummyAssigner("transfer", TASK_ASSIGNEE_SKIP_FLAT, "dummyApprover");
task.setAssignee(assigner.buildAssigneeId());
((TaskEntity) task).setScopeType("TRANSFER");
taskService.saveTask(task);
task.setScopeType("TRANSFER");
Authentication.setAuthenticatedUserId(originTaskAssignee.buildAssigneeId());
addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "转交给" + targetTaskAssignee.getAssignerName());
if (StringUtils.hasLength(advice)) {
addComment(commandContext, task, COMMENT_TYPE_ADVICE, advice);
}
addComment(commandContext, task, COMMENT_TYPE_ADVICE, advice);
Authentication.setAuthenticatedUserId(null);
taskService.saveTask(task);
}
public void processAssignee(ProcessEngineConfigurationImpl processEngineConfiguration, Task task) {
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
List<BpmnTaskDelegateAssigner> originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(),
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class);
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class);
Optional<BpmnTaskDelegateAssigner> exists = originAssingeeList.stream()
.filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny();
.filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny();
if (exists.isPresent()) {
throw new WorkflowEngineException(ASSIGNEE_HAS_BEEN_EXISTS);
}
@ -134,8 +135,8 @@ public class CustomTransferUserTaskCmd extends AbstractCommand<Void> implements
}
originAssingeeList.add(targetTaskAssignee);
runtimeService.setVariable(task.getProcessInstanceId(),
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
originAssingeeList);
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
originAssingeeList);
}
}

View File

@ -45,7 +45,7 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprova
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNodeType;
/**
* TODO
* 评论加签转交
*
* @author wangli
* @since 2024-09-06 00:02