update - 调整推送接口返回模型属性异常的问题
This commit is contained in:
parent
ac718add6f
commit
73ba59e6dc
@ -270,8 +270,8 @@ public final class BpmnMetaParserHelper {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
public static Optional<ApprovalMethodEnum> getApprovalMethod(UserTask userTask) {
|
||||
return defaultValid(userTask, CONFIG_APPROVAL_METHOD).map(element -> ApprovalMethodEnum.valueOf(element.getAttributeValue(null, ELEMENT_ATTRIBUTE_VALUE)));
|
||||
public static Optional<ApprovalMethodEnum> getApprovalMethod(FlowElement flowElement) {
|
||||
return defaultValid(flowElement, CONFIG_APPROVAL_METHOD).map(element -> ApprovalMethodEnum.valueOf(element.getAttributeValue(null, ELEMENT_ATTRIBUTE_VALUE)));
|
||||
}
|
||||
|
||||
public static Optional<ApproverScopeEnum> getApproverScope(UserTask userTask) {
|
||||
|
||||
@ -743,6 +743,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
node.setForecastAssigners(Collections.emptyList());
|
||||
// 每个节点设置的按钮配置
|
||||
getButtonConfig(bpmnModel.getMainProcess(), i.getId()).ifPresent(node::setButtonConf);
|
||||
// 设置审批方式
|
||||
getApprovalMethod(i).ifPresent(node::setApprovalMethod);
|
||||
if (i instanceof UserTask) {
|
||||
UserTask userTask = (UserTask) i;
|
||||
node.setId(userTask.getId())
|
||||
@ -766,8 +768,6 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||
}
|
||||
|
||||
// 设置审批方式
|
||||
getApprovalMethod(userTask).ifPresent(node::setApprovalMethod);
|
||||
if (Objects.equals(node.getApprovalMethod(), human)) {
|
||||
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
|
||||
List<BpmnTaskDelegateAssigner> forecastAssigners =
|
||||
|
||||
@ -13,6 +13,9 @@ import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.RepositoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
import org.flowable.engine.impl.persistence.entity.ActivityInstanceEntity;
|
||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.service.delegate.DelegateTask;
|
||||
import org.springframework.core.Ordered;
|
||||
@ -20,6 +23,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -69,7 +73,7 @@ public class AutoOperatorEventListener implements BpmnTaskEventListener, Ordered
|
||||
log.debug("AutoOperatorEventListener#onCreated...{}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
|
||||
if (Objects.equals(NODE_STARTER.getType(), delegateTask.getId())) {
|
||||
if (Objects.equals(NODE_STARTER.getType(), delegateTask.getTaskDefinitionKey())) {
|
||||
BpmnTaskDelegateAssigner initiator = delegateTask.getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class);
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
@ -80,21 +84,29 @@ public class AutoOperatorEventListener implements BpmnTaskEventListener, Ordered
|
||||
taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId()));
|
||||
return;
|
||||
}
|
||||
|
||||
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
|
||||
// 优先判断节点的审批配置
|
||||
// 检测节点自身配置是否有自动操作
|
||||
checkApprovalMethod(delegateTask, userTask);
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("AutoOperatorEventListener#onCreated...end: {}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAssigned(DelegateTask delegateTask) {
|
||||
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
|
||||
boolean exists = checkApproverExists(delegateTask, userTask, mainProcess);
|
||||
if (exists) {
|
||||
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), COMMENT_TYPE_ADVICE,
|
||||
"同一审批人,自动过审");
|
||||
autoPass(delegateTask);
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("AutoOperatorEventListener#onCreated...end: {}", delegateTask.getTaskDefinitionKey());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -105,14 +117,15 @@ public class AutoOperatorEventListener implements BpmnTaskEventListener, Ordered
|
||||
* @param mainProcess
|
||||
*/
|
||||
private boolean checkApproverExists(DelegateTask delegateTask, UserTask userTask, Process mainProcess) {
|
||||
|
||||
AtomicBoolean exists = new AtomicBoolean(false);
|
||||
historyService.createHistoricActivityInstanceQuery()
|
||||
.processInstanceId(delegateTask.getProcessInstanceId())
|
||||
.orderByHistoricActivityInstanceStartTime()
|
||||
.desc().list().stream()
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
|
||||
processEngineConfiguration.getActivityInstanceEntityManager()
|
||||
.findActivityInstancesByProcessInstanceId(delegateTask.getProcessInstanceId(), false)
|
||||
.stream()
|
||||
.filter(i -> !Objects.equals(i.getActivityId(), userTask.getId()))
|
||||
.filter(i -> Objects.equals(i.getActivityType(), "userTask"))
|
||||
.findFirst()
|
||||
.filter(i -> !Objects.equals(i.getActivityType(), "sequenceFlow"))
|
||||
.max(Comparator.comparing(ActivityInstanceEntity::getStartTime))
|
||||
.ifPresent(i -> {
|
||||
// 与发起人比对
|
||||
if (Objects.equals(NODE_STARTER.getType(), i.getActivityId())) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user