feat(REQ-2752) - 调整部分数据同步 ES 的逻辑

This commit is contained in:
wangli 2024-10-14 15:44:39 +08:00
parent 9980807a86
commit db53a3fd40
4 changed files with 12 additions and 7 deletions

View File

@ -10,12 +10,14 @@ import cn.axzo.workflow.core.service.BpmnProcessInstanceForEsService;
import cn.axzo.workflow.es.model.ProcessInstanceDocument;
import cn.axzo.workflow.es.model.ProcessTaskDocument;
import cn.axzo.workflow.es.service.EsProcessInstanceService;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.history.HistoricProcessInstance;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
@ -66,6 +68,10 @@ public class AggregateProcessInstanceService {
processInstanceDocument.setBusinessStatus(hpi.getBusinessStatus());
Map<String, Object> variables = hpi.getProcessVariables();
if (CollectionUtils.isEmpty(variables)) {
variables.putAll(bpmnProcessInstanceForEsService.queryInstanceVariables(hpi.getId(),
Lists.newArrayList(WORKFLOW_ENGINE_VERSION, INTERNAL_PROCESS_WORKSPACE_TYPE, INTERNAL_PROCESS_AGENT)));
}
processInstanceDocument.setWorkflowEngineVersion(String.valueOf(variables.getOrDefault(WORKFLOW_ENGINE_VERSION, FLOW_SERVER_VERSION_121)));
processInstanceDocument.setProcessCategoryType(WorkspaceType.getType((Integer) variables.getOrDefault(INTERNAL_PROCESS_WORKSPACE_TYPE, WorkspaceType.UN_KNOW.getCode())).getDesc());

View File

@ -114,16 +114,14 @@ public class EsProcessInstanceServiceImpl implements EsProcessInstanceService {
LambdaEsQueryWrapper<ProcessInstanceDocument> wrapper = new LambdaEsQueryWrapper<>();
wrapper.hasChild("process_task_document",
w -> w.matchPhrase(StringUtils.hasText(dto.getAssigneeName()), FieldUtils.val(ProcessTaskDocument::getAssigneeName), dto.getAssigneeName())
// w -> w.like(StringUtils.hasText(dto.getAssigneeName()), FieldUtils.val(ProcessTaskDocument::getAssigneeName), dto.getAssigneeName())
.eq(StringUtils.hasText(dto.getTenantId()), FieldUtils.val(ProcessTaskDocument::getAssigneeTenantId), dto.getTenantId())
.eq(StringUtils.hasText(dto.getOuId()), FieldUtils.val(ProcessTaskDocument::getAssigneeOuId), dto.getOuId())
.eq(StringUtils.hasText(dto.getPersonId()), FieldUtils.val(ProcessTaskDocument::getAssigneePersonId), dto.getPersonId())
)
.eq(StringUtils.hasText(dto.getBusinessStatus()), FieldUtils.val(ProcessInstanceDocument::getBusinessStatus), dto.getBusinessStatus())
// .matchPhrase(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName())
.like(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName())
.matchPhrase(StringUtils.hasText(dto.getProcessInstanceName()), FieldUtils.val(ProcessInstanceDocument::getProcessInstanceName), dto.getProcessInstanceName())
.in(CollectionUtils.isEmpty(dto.getProcessInstanceIds()), FieldUtils.val(ProcessInstanceDocument::getInstanceId), dto.getProcessInstanceIds())
// .routing(ES_FIXED_ROUTING)
.routing(ES_FIXED_ROUTING)
.orderByDesc(FieldUtils.val(ProcessInstanceDocument::getInstanceStartTime))
;
EsPageInfo<ProcessInstanceDocument> pageInfo;

View File

@ -15,6 +15,8 @@ import org.springframework.util.StringUtils;
import java.util.Collection;
import java.util.List;
import static cn.axzo.workflow.common.constant.BpmnConstants.ES_FIXED_ROUTING;
/**
* 操作流程任务的 ES Service 实现
*
@ -60,9 +62,9 @@ public class EsProcessTaskServiceImpl implements EsProcessTaskService {
wrapper.eq(StringUtils.hasText(dto.getAssigneeOuId()), ProcessTaskDocument::getAssigneeOuId, dto.getAssigneeOuId())
.eq(StringUtils.hasText(dto.getAssigneeTenantId()), ProcessTaskDocument::getAssigneeTenantId, dto.getAssigneeTenantId())
.eq(StringUtils.hasText(dto.getAssigneePersonId()), ProcessTaskDocument::getAssigneePersonId, dto.getAssigneePersonId())
.eq(StringUtils.hasText(dto.getAssigneeName()), ProcessTaskDocument::getAssigneeName, dto.getAssigneeName())
.matchPhrase(StringUtils.hasText(dto.getAssigneeName()), ProcessTaskDocument::getAssigneeName, dto.getAssigneeName())
.parentId(StringUtils.hasText(dto.getProcessInstanceId()), dto.getProcessInstanceId(), "process_instance_document")
// .hasParent(StringUtils.hasText(dto.getProcessInstanceId()), "workflow_engine_test_process_instance_document", w -> w.eq(FieldUtils.val(ProcessInstanceDocument::getId), dto.getProcessInstanceId()))
.routing(ES_FIXED_ROUTING)
;
return esProcessTaskMapper.selectList(wrapper);
}

View File

@ -41,7 +41,6 @@ public class SyncEsTaskEntityEventHandle implements EntityEventHandle<TaskEntity
HistoryService historyService = processEngineConfiguration.getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(taskEntity.getProcessInstanceId())
.includeProcessVariables()
.singleResult();
aggregateProcessInstanceService.syncProcessInstance(historicProcessInstance);
}