update - 完善业务节点由业务指定审批人的逻辑,并自测通过
This commit is contained in:
parent
cce18515ec
commit
931c812cae
@ -6,6 +6,7 @@ import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
|||||||
import cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper;
|
import cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper;
|
||||||
import org.flowable.common.engine.impl.interceptor.Command;
|
import org.flowable.common.engine.impl.interceptor.Command;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.TaskService;
|
import org.flowable.engine.TaskService;
|
||||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||||
@ -18,6 +19,7 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.DUMMY_ASSIGNEE_ID;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.DUMMY_ASSIGNEE_ID;
|
||||||
|
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
||||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_BIZ_SET_ASSIGNEE_ERROR;
|
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_BIZ_SET_ASSIGNEE_ERROR;
|
||||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_CANT_SET_ASSIGNEE;
|
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_CANT_SET_ASSIGNEE;
|
||||||
|
|
||||||
@ -46,21 +48,44 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command<Boolean>, Seri
|
|||||||
Task task = taskService.createTaskQuery().executionId(executionId)
|
Task task = taskService.createTaskQuery().executionId(executionId)
|
||||||
.taskAssignee(DUMMY_ASSIGNEE_ID)
|
.taskAssignee(DUMMY_ASSIGNEE_ID)
|
||||||
.singleResult();
|
.singleResult();
|
||||||
|
|
||||||
validTask(task);
|
validTask(task);
|
||||||
|
|
||||||
|
changeAssigneeSnapshot(commandContext, task);
|
||||||
|
|
||||||
addAssignee(commandContext, taskService, task);
|
addAssignee(commandContext, taskService, task);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void changeAssigneeSnapshot(CommandContext commandContext, Task task) {
|
||||||
|
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||||
|
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||||
|
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
||||||
|
|
||||||
|
List<BpmnTaskDelegateAssigner> originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(),
|
||||||
|
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class);
|
||||||
|
|
||||||
|
for (BpmnTaskDelegateAssigner assigner : originAssingeeList) {
|
||||||
|
if (Objects.equals(assigner.buildAssigneeId(), DUMMY_ASSIGNEE_ID)) {
|
||||||
|
originAssingeeList.remove(assigner);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
originAssingeeList.addAll(addedAssigners);
|
||||||
|
runtimeService.setVariable(task.getProcessInstanceId(),
|
||||||
|
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
|
||||||
|
originAssingeeList);
|
||||||
|
}
|
||||||
|
|
||||||
private void addAssignee(CommandContext commandContext, TaskService taskService, Task task) {
|
private void addAssignee(CommandContext commandContext, TaskService taskService, Task task) {
|
||||||
if (CollectionUtils.isEmpty(addedAssigners)) {
|
if (CollectionUtils.isEmpty(addedAssigners)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addedAssigners.forEach(i -> {
|
addedAssigners.forEach(i -> {
|
||||||
if (Objects.equals(task.getAssignee(), DUMMY_ASSIGNEE_ID)) {
|
if (Objects.equals(task.getAssignee(), DUMMY_ASSIGNEE_ID)) {
|
||||||
task.setAssignee(i.buildAssigneeId());
|
taskService.setAssignee(task.getId(), i.buildAssigneeId());
|
||||||
taskService.saveTask(task);
|
|
||||||
} else {
|
} else {
|
||||||
CustomTaskHelper.addMultiTask(commandContext, (TaskEntity) task, i);
|
CustomTaskHelper.addMultiTask(commandContext, (TaskEntity) task, i);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,7 @@ public @interface RepeatSubmit {
|
|||||||
/**
|
/**
|
||||||
* 间隔时间(ms),小于此时间视为重复提交
|
* 间隔时间(ms),小于此时间视为重复提交
|
||||||
*/
|
*/
|
||||||
int interval() default 30000;
|
int interval() default 3000;
|
||||||
|
|
||||||
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
|
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static cn.axzo.workflow.common.constant.BpmnConstants.DUMMY_ASSIGNEE_ID;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_ASSIGNEE_SKIP_FLAT;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_ASSIGNEE_SKIP_FLAT;
|
||||||
|
|
||||||
@ -59,6 +60,10 @@ public class MessagePushTaskEventListener implements BpmnTaskEventListener, Orde
|
|||||||
pendingComplete(delegateTask);
|
pendingComplete(delegateTask);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (Objects.equals(DUMMY_ASSIGNEE_ID, delegateTask.getAssignee())) {
|
||||||
|
// 业务指定审批人, 不用发待办
|
||||||
|
return;
|
||||||
|
}
|
||||||
pendingPush(delegateTask);
|
pendingPush(delegateTask);
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("MessagePushTaskEventListener#onAssigned...end: {}", delegateTask.getTaskDefinitionKey());
|
log.debug("MessagePushTaskEventListener#onAssigned...end: {}", delegateTask.getTaskDefinitionKey());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user