update - 流程节点推测功能细化

This commit is contained in:
wangli 2024-04-16 18:35:49 +08:00
parent ddf2d3b26d
commit 3add4f209c
2 changed files with 40 additions and 10 deletions

View File

@ -124,8 +124,26 @@ public interface BpmnProcessInstanceService {
BpmPageResult<HistoricProcessInstanceVO> historicProcessInstancePage(HistoricProcessInstanceSearchDTO dto);
/**
* 流程实例全节点推测
*
* @param processInstanceId
* @param tenantId
* @return
*/
List<ProcessNodeDetailVO> getProcessInstanceNodeForecast(String processInstanceId, String tenantId);
/**
* 可过滤指定节点集合的剩余接地那推送
*
* @param processInstanceId
* @param tenantId
* @param allNode
* @param removeTaskDefinitionKeys
* @return
*/
List<ProcessNodeDetailVO> getProcessInstanceNodeForecast(String processInstanceId, String tenantId, Boolean allNode, List<String> removeTaskDefinitionKeys);
List<String> getTenantIds();

View File

@ -802,24 +802,36 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
return resultList;
}
/**
* 可过滤指定节点集合的剩余接地那推送
*
* @param processInstanceId
* @param tenantId
* @param allNode
* @param removeTaskDefinitionKeys
* @return
*/
@Override
public List<ProcessNodeDetailVO> getProcessInstanceNodeForecast(String processInstanceId, String tenantId, Boolean allNode, List<String> removeTaskDefinitionKeys) {
return Collections.emptyList();
}
private void parseServiceTask(String processInstanceId, ServiceTask i, ProcessNodeDetailVO node) {
// ServiceTask 主要作用于抄送
ServiceTask serviceTask = i;
node.setId(serviceTask.getId()).setName(serviceTask.getName());
getCarbonCopyConfigs(serviceTask).ifPresent(carbons ->
node.setId(i.getId()).setName(i.getName());
getCarbonCopyConfigs(i).ifPresent(carbons ->
node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor()
.execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons,
serviceTask, engineExecutionStartListener,
i, engineExecutionStartListener,
historicTaskInstanceConverter, serviceVersion))));
}
private void parseUserTask(String processInstanceId, UserTask i, ProcessNodeDetailVO node) {
UserTask userTask = i;
node.setFormKey(userTask.getFormKey());
node.setFormKey(i.getFormKey());
// 设置审批模式,
if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) {
if (i.getBehavior() instanceof MultiInstanceActivityBehavior) {
MultiInstanceActivityBehavior behavior =
(MultiInstanceActivityBehavior) userTask.getBehavior();
(MultiInstanceActivityBehavior) i.getBehavior();
node.setNodeMode(Objects.equals(AND_SIGN_EXPRESSION,
behavior.getCompletionCondition()) ?
AND : OR);
@ -832,10 +844,10 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
List<BpmnTaskDelegateAssigner> forecastAssigners =
springProcessEngineConfiguration.getCommandExecutor()
.execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId,
userTask, engineExecutionStartListener));
i, engineExecutionStartListener));
node.setForecastAssigners(forecastAssigners);
if (CollectionUtils.isEmpty(forecastAssigners)) {
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
getApproverEmptyHandleType(i).ifPresent(emptyHandleType -> {
switch (emptyHandleType) {
case autoPassed:
node.setApprovalMethod(autoPassed);