Merge branch 'feature/REQ-2090' into 1.3.1-SNAPSHOT

This commit is contained in:
wangli 2024-04-03 19:06:31 +08:00
commit a1bd31aaba

View File

@ -116,7 +116,7 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
case approver_relation:
assigners.addAll(getApproverRelationUser(carbon, carbonCopyObjectType,
(DelegateExecution) list.get(0),
processEngineConfiguration.getHistoryService(), processInstanceId));
processEngineConfiguration, processInstanceId));
break;
case specify_user:
assigners.addAll(JSON.parseArray(carbon.getSpecifyValue(), BpmnTaskDelegateAssigner.class));
@ -131,13 +131,14 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
private List<BpmnTaskDelegateAssigner> getApproverRelationUser(BpmnCarbonCopyConf carbon,
CarbonCopyObjectType carbonCopyObjectType,
DelegateExecution execution,
HistoryService historyService,
ProcessEngineConfigurationImpl processEngineConfiguration,
String processInstanceId) {
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
List<String> values = JSON.parseArray(carbon.getSpecifyValue(), String.class)
.stream().map(JSON::parseObject)
.map(i -> i.getString("value"))
.collect(Collectors.toList());
HistoryService historyService = processEngineConfiguration.getHistoryService();
values.forEach(value -> {
CarbonCopyObjectType approverRelationConf = CarbonCopyObjectType.valueOfType(value);
switch (approverRelationConf) {
@ -147,7 +148,13 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
.processInstanceId(processInstanceId)
.variableName(INTERNAL_INITIATOR)
.singleResult();
assigners.add((BpmnTaskDelegateAssigner) historicVariableInstance.getValue());
if (Objects.isNull(historicVariableInstance)) {
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
BpmnTaskDelegateAssigner assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(processInstanceId, INTERNAL_INITIATOR);
assigners.add(assigner);
} else {
assigners.add((BpmnTaskDelegateAssigner) historicVariableInstance.getValue());
}
break;
case approver:
List<HistoricTaskInstance> taskInstances = historyService.createHistoricTaskInstanceQuery()