update - 重新利用扩展的任务表来记录状态
This commit is contained in:
parent
3f00bcaa2a
commit
a4354094cf
@ -67,7 +67,7 @@ public class CustomApproveTaskCmd implements Command<Void>, Serializable {
|
||||
|
||||
batchAddAttachment(commandContext, task.getProcessInstanceId(), taskId, attachmentList, approver);
|
||||
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, APPROVED.getStatus());
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + taskId, APPROVED.getStatus());
|
||||
|
||||
if (StringUtils.hasLength(task.getExecutionId())) {
|
||||
// 正常完成流程任务,审批通过
|
||||
|
||||
@ -91,7 +91,7 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command<Boolean>, Seri
|
||||
});
|
||||
|
||||
taskService.setAssignee(task.getId(), HIDDEN_ASSIGNEE_ID);
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, DELETED.getStatus());
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), DELETED.getStatus());
|
||||
CustomTaskHelper.deleteMultiTask(commandContext, (TaskEntity) task);
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,6 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_TENANT
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_USER_ID;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_END_USER_NAME;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_TYPE_CANCEL;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.ABORTED;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.CANCELLED;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS;
|
||||
@ -108,7 +107,8 @@ public class CustomCancelProcessInstanceCmd implements Command<Void>, Serializab
|
||||
// 添加自定义的节点,用于展示最后的操作
|
||||
Task task = createVirtualTask(commandContext, extAxHiTaskInstService, processInstanceId,
|
||||
"发起人撤销", CANCEL_ID, reason, initiator.buildAssigneeId(), CANCELLED.getStatus());
|
||||
runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), CANCELLED);
|
||||
// runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId()
|
||||
// , CANCELLED);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ public class CustomCountersignUserTaskCmd implements Command<Void>, Serializable
|
||||
CustomTaskHelper.batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList,
|
||||
originTaskAssignee);
|
||||
CustomTaskHelper.deleteMultiTask(commandContext, (TaskEntity) task);
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, COUNTERSIGN.getStatus());
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), COUNTERSIGN.getStatus());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -61,10 +61,11 @@ public class CustomRejectionTaskCmd implements Command<Void>, Serializable {
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
validTask((TaskEntity) task, approver);
|
||||
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, REJECTED.getStatus());
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED.getStatus());
|
||||
|
||||
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
||||
runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED);
|
||||
// runtimeService.setVariable(task.getProcessInstanceId(), TASK_COMPLETE_OPERATION_TYPE + task.getId()
|
||||
// , REJECTED);
|
||||
|
||||
createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(),
|
||||
task.getTaskDefinitionKey(), advice, approver.buildAssigneeId(), REJECTED.getStatus());
|
||||
|
||||
@ -79,7 +79,7 @@ public class CustomTransferUserTaskCmd implements Command<Void>, Serializable {
|
||||
addMultiTask(commandContext, (TaskEntity) task, targetTaskAssignee);
|
||||
deleteMultiTask(commandContext, (TaskEntity) task);
|
||||
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, TRANSFER.getStatus());
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), TRANSFER.getStatus());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -258,7 +258,7 @@ public class CustomTaskHelper {
|
||||
|
||||
CustomTaskHelper.createExtTaskInst(extAxHiTaskInstService, task.getProcessInstanceId(),
|
||||
task.getId(), task.getTaskDefinitionKey(), userId, extTaskInstStatus);
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, extTaskInstStatus);
|
||||
task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), extTaskInstStatus);
|
||||
|
||||
// 完成临时节点
|
||||
taskService.complete(task.getId());
|
||||
|
||||
@ -9,7 +9,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.task.service.delegate.DelegateTask;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED;
|
||||
|
||||
/**
|
||||
* Core 包内置的,可共用与 Jar 包集成和微服务集成
|
||||
@ -41,9 +44,19 @@ public class InternalTaskEventListener implements BpmnTaskEventListener {
|
||||
|
||||
@Override
|
||||
public void onDeleted(DelegateTask delegateTask) {
|
||||
Object operationType = delegateTask.getTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId());
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("taskId:{}, operationType:{}", delegateTask.getId(), operationType);
|
||||
}
|
||||
|
||||
ExtAxHiTaskInst taskInst = hiTaskInstService.getByTaskId(delegateTask.getId(),
|
||||
delegateTask.getProcessInstanceId());
|
||||
taskInst.setStatus(String.valueOf(delegateTask.getTransientVariable(TASK_COMPLETE_OPERATION_TYPE)));
|
||||
if (Objects.nonNull(operationType)) {
|
||||
taskInst.setStatus(String.valueOf(operationType));
|
||||
} else {
|
||||
// 多实例或签同意时,无法正确区分状态, 所以默认认为这种是无需展示在日志中的
|
||||
taskInst.setStatus(DELETED.getStatus());
|
||||
}
|
||||
hiTaskInstService.update(taskInst);
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,7 +56,8 @@ public class StartNodeAutoCompleteEventListener implements BpmnTaskEventListener
|
||||
BpmnTaskDelegateAssigner.class);
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
initiator);
|
||||
delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE, APPROVED.getStatus());
|
||||
delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(),
|
||||
APPROVED.getStatus());
|
||||
// 直接完成
|
||||
taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId()));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user