update - 切换记录任务关联的审批人的实现方式, 采用字符串直接存 act_hi_varinst 表.
This commit is contained in:
parent
d0c996bc56
commit
f202d283d4
@ -187,9 +187,10 @@ public class CustomUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
||||
ExpressionManager expressionManager, DelegateExecution execution,
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration) {
|
||||
if (Objects.equals(NODE_STARTER.getType(), execution.getCurrentActivityId())) {
|
||||
BpmnTaskDelegateAssigner assigner = execution.getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class);
|
||||
assignee = assigner.buildAssigneeId();
|
||||
BpmnTaskDelegateAssigner assigner = BpmnTaskDelegateAssigner.toObjectCompatible(execution.getVariable(INTERNAL_INITIATOR));
|
||||
if (Objects.nonNull(assigner)) {
|
||||
assignee = assigner.buildAssigneeId();
|
||||
}
|
||||
}
|
||||
super.handleAssignments(taskService, assignee, owner, candidateUsers, candidateGroups, task,
|
||||
expressionManager, execution, processEngineConfiguration);
|
||||
|
||||
@ -149,10 +149,10 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
|
||||
.singleResult();
|
||||
if (Objects.isNull(historicVariableInstance)) {
|
||||
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
||||
BpmnTaskDelegateAssigner assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(processInstanceId, INTERNAL_INITIATOR);
|
||||
BpmnTaskDelegateAssigner assigner = BpmnTaskDelegateAssigner.toObjectCompatible(runtimeService.getVariable(processInstanceId, INTERNAL_INITIATOR));
|
||||
assigners.add(assigner);
|
||||
} else {
|
||||
assigners.add((BpmnTaskDelegateAssigner) historicVariableInstance.getValue());
|
||||
assigners.add(BpmnTaskDelegateAssigner.toObjectCompatible(historicVariableInstance.getValue()));
|
||||
}
|
||||
break;
|
||||
case approver:
|
||||
|
||||
@ -110,8 +110,7 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
||||
&& (Objects.equals(NODE_TASK, nodeType.get()) || Objects.equals(NODE_BUSINESS, nodeType.get()) || Objects.equals(NODE_STARTER, nodeType.get()))) {
|
||||
if (Objects.equals(NODE_STARTER, nodeType.get())) {
|
||||
// UserTask 多实例, 该变量用于引擎
|
||||
BpmnTaskDelegateAssigner initiator = execution.getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class);
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(execution.getVariable(INTERNAL_INITIATOR));
|
||||
|
||||
// 仅用于节点人员快照
|
||||
execution.setVariable(INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + currentActivityId,
|
||||
|
||||
@ -135,7 +135,7 @@ public class EngineProcessInstanceEventListener extends AbstractFlowableEngineEv
|
||||
.processInstanceId(event.getProcessInstanceId())
|
||||
.includeProcessVariables().singleResult();
|
||||
BpmnTaskDelegateAssigner assigner =
|
||||
(BpmnTaskDelegateAssigner) processInstance.getProcessVariables().getOrDefault(INTERNAL_INITIATOR, null);
|
||||
BpmnTaskDelegateAssigner.toObjectCompatible(processInstance.getProcessVariables().get(INTERNAL_INITIATOR));
|
||||
if (Objects.isNull(assigner)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -48,12 +48,12 @@ public class InternalExtAxTaskInstEvent_min_Listener implements BpmnTaskEventLis
|
||||
// 记录发起人
|
||||
if (Objects.equals(delegateTask.getTaskDefinitionKey(), NODE_STARTER.getType())) {
|
||||
BpmnTaskDelegateAssigner assigner =
|
||||
(BpmnTaskDelegateAssigner) runtimeService.getVariable(delegateTask.getProcessInstanceId(),
|
||||
INTERNAL_INITIATOR);
|
||||
BpmnTaskDelegateAssigner.toObjectCompatible(runtimeService.getVariable(delegateTask.getProcessInstanceId(),
|
||||
INTERNAL_INITIATOR));
|
||||
if (Objects.isNull(assigner)) {
|
||||
// 兼容历史数据
|
||||
assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(delegateTask.getProcessInstanceId(),
|
||||
OLD_INTERNAL_INITIATOR);
|
||||
assigner = BpmnTaskDelegateAssigner.toObjectCompatible(runtimeService.getVariable(delegateTask.getProcessInstanceId(),
|
||||
OLD_INTERNAL_INITIATOR));
|
||||
}
|
||||
assignee = assigner.buildAssigneeId();
|
||||
} else {
|
||||
|
||||
@ -278,7 +278,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
}
|
||||
}
|
||||
|
||||
dto.getVariables().put(INTERNAL_INITIATOR, dto.getInitiator());
|
||||
dto.getVariables().put(INTERNAL_INITIATOR, dto.getInitiator().toJson());
|
||||
dto.getVariables().put(BIZ_ORG_RELATION, dto.getCooperationOrg());
|
||||
dto.getVariables().put(WORKFLOW_ENGINE_VERSION, serviceVersion);
|
||||
dto.getVariables().put(PENDING_TEMPLATE_VARIABLE, dto.getPendingVariables());
|
||||
@ -323,7 +323,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
if (Objects.equals(SuspensionState.SUSPENDED.getStateCode(), definition.getSuspensionState())) {
|
||||
throw new WorkflowEngineException(PROCESS_DEFINITION_IS_SUSPENDED, dto.getProcessDefinitionKey());
|
||||
}
|
||||
dto.getVariables().put(INTERNAL_INITIATOR, dto.getInitiator());
|
||||
dto.getVariables().put(INTERNAL_INITIATOR, dto.getInitiator().toJson());
|
||||
|
||||
// 创建流程实例
|
||||
// 设置流程实例的开始人,参考https://wenku.baidu.com/view/5538062e7a563c1ec5da50e2524de518964bd3f9.html
|
||||
@ -544,12 +544,12 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
processInstance.getProcessDefinitionId());
|
||||
}
|
||||
|
||||
BpmnTaskDelegateAssigner assigner = null;
|
||||
Object tempAssigner = null;
|
||||
String version = null;
|
||||
if (dto.getHasVariable()) {
|
||||
assigner = (BpmnTaskDelegateAssigner) processInstance.getProcessVariables().get(INTERNAL_INITIATOR);
|
||||
if (Objects.isNull(assigner)) {
|
||||
assigner = (BpmnTaskDelegateAssigner) processInstance.getProcessVariables().get(OLD_INTERNAL_INITIATOR);
|
||||
tempAssigner = processInstance.getProcessVariables().get(INTERNAL_INITIATOR);
|
||||
if (Objects.isNull(tempAssigner)) {
|
||||
tempAssigner = processInstance.getProcessVariables().get(OLD_INTERNAL_INITIATOR);
|
||||
}
|
||||
version = (String) processInstance.getProcessVariables().get(WORKFLOW_ENGINE_VERSION);
|
||||
|
||||
@ -559,13 +559,14 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
for (HistoricVariableInstance i : variableInstances) {
|
||||
if (Objects.equals(i.getVariableName(), INTERNAL_INITIATOR) || Objects.equals(i.getVariableName(),
|
||||
OLD_INTERNAL_INITIATOR)) {
|
||||
assigner = (BpmnTaskDelegateAssigner) i.getValue();
|
||||
tempAssigner = i.getValue();
|
||||
}
|
||||
if (Objects.equals(i.getVariableName(), WORKFLOW_ENGINE_VERSION)) {
|
||||
version = (String) i.getValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Objects.isNull(version)) {
|
||||
version = FLOW_SERVER_VERSION_121;
|
||||
}
|
||||
@ -578,7 +579,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
|
||||
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
|
||||
return instanceConverter.toVo(processInstance, processDefinition, getButtonConfig(bpmnModel.getMainProcess())
|
||||
, assigner, version, categoryService.get(BPM_MODEL_CATEGORY,
|
||||
, BpmnTaskDelegateAssigner.toObjectCompatible(tempAssigner), version, categoryService.get(BPM_MODEL_CATEGORY,
|
||||
processInstance.getProcessDefinitionKey()), runningTasks);
|
||||
}
|
||||
|
||||
|
||||
@ -56,7 +56,7 @@ public class BasedInitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAs
|
||||
ApproverScopeDTO scopeDto) {
|
||||
// 获取发起人
|
||||
BpmnTaskDelegateAssigner initiator =
|
||||
(BpmnTaskDelegateAssigner) execution.getVariables().getOrDefault(INTERNAL_INITIATOR, null);
|
||||
BpmnTaskDelegateAssigner.toObjectCompatible(execution.getVariables().get(INTERNAL_INITIATOR));
|
||||
if (Objects.isNull(initiator)) {
|
||||
return super.invokeService(flowElement, execution, scopeDto);
|
||||
}
|
||||
|
||||
@ -236,8 +236,10 @@ public class RocketMqMessagePushEventListener implements BpmnMessagePushEventLis
|
||||
.filter(e -> Objects.nonNull(e.getKey()) && Objects.nonNull(e.getValue()))
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
|
||||
BpmnTaskDelegateAssigner initiator = (BpmnTaskDelegateAssigner) originVariables.getOrDefault(INTERNAL_INITIATOR,
|
||||
new BpmnTaskDelegateAssigner());
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(originVariables.get(INTERNAL_INITIATOR));
|
||||
if (Objects.isNull(initiator)) {
|
||||
initiator = new BpmnTaskDelegateAssigner();
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
variables.put(INTERNAL_INITIATOR, initiator);
|
||||
variables.put(VAR_PROCESS_TENANT_ID, event.getTenantId());
|
||||
|
||||
@ -70,8 +70,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(event.getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion())
|
||||
.setInitiator(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime())
|
||||
.setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId())
|
||||
@ -107,8 +106,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion())
|
||||
.setInitiator(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime())
|
||||
.setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId())
|
||||
@ -145,7 +143,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(event.getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion())
|
||||
.setInitiator(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime())
|
||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||
@ -182,7 +180,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(event.getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion())
|
||||
.setInitiator(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime())
|
||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||
@ -214,7 +212,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(event.getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getProcessDefinitionVersion())
|
||||
.setInitiator(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((FlowableProcessCancelledEventImpl) event).getExecution().getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime())
|
||||
.setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId())
|
||||
@ -259,8 +257,7 @@ public class RocketMqBpmnProcessEventListener implements BpmnProcessEventListene
|
||||
.setProcessDefinitionId(event.getProcessDefinitionId())
|
||||
.setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey())
|
||||
.setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion())
|
||||
.setInitiator(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(((ExecutionEntityImpl) event.getEntity()).getVariable(INTERNAL_INITIATOR)))
|
||||
.setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())
|
||||
.setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime())
|
||||
.setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId())
|
||||
|
||||
@ -79,10 +79,11 @@ public class AutoOperatorEvent_103_Listener implements BpmnTaskEventListener, Or
|
||||
}
|
||||
|
||||
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(),
|
||||
initiator.toJson());
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR));
|
||||
if (Objects.nonNull(initiator)) {
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
initiator.toJson());
|
||||
}
|
||||
delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(),
|
||||
APPROVED.getStatus());
|
||||
// 直接完成
|
||||
@ -129,9 +130,8 @@ public class AutoOperatorEvent_103_Listener implements BpmnTaskEventListener, Or
|
||||
.ifPresent(i -> {
|
||||
// 与发起人比对
|
||||
if (Objects.equals(NODE_STARTER.getType(), i.getActivityId())) {
|
||||
BpmnTaskDelegateAssigner initiator = delegateTask.getVariable(INTERNAL_INITIATOR,
|
||||
BpmnTaskDelegateAssigner.class);
|
||||
if (initiator.comparePersonIdToOther(delegateTask.getAssignee())) {
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR));
|
||||
if (Objects.nonNull(initiator) && initiator.comparePersonIdToOther(delegateTask.getAssignee())) {
|
||||
exists.compareAndSet(false, true);
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -122,7 +122,7 @@ public class RocketMqBpmnTaskEvent_101_Listener implements BpmnTaskEventListener
|
||||
.setCurrentElementKey(delegateTask.getTaskDefinitionKey())
|
||||
.setCurrentElementName(delegateTask.getName())
|
||||
.setProcessDefinitionId(delegateTask.getProcessDefinitionId())
|
||||
.setInitiator(delegateTask.getVariable(INTERNAL_INITIATOR, BpmnTaskDelegateAssigner.class))
|
||||
.setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR)))
|
||||
.setApprover(BpmnTaskDelegateAssigner.toObjectCompatible(
|
||||
delegateTask.getVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId())))
|
||||
.setVariables(delegateTask.getVariables())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user