public SearchResult<WorkflowSummary> search(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchWorkflows(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflows = result.getResults().stream().parallel().map(workflowId -> { try { return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId,false)); } catch(Exception e) { logger.error("Error fetching workflow by id: {}", workflowId, e); return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
@Override public void indexWorkflow(Workflow workflow) { String workflowId = workflow.getWorkflowId(); WorkflowSummary summary = new WorkflowSummary(workflow); indexObject(indexName, WORKFLOW_DOC_TYPE, workflowId, summary); }
public SearchResult<WorkflowSummary> searchWorkflowByTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<TaskSummary> taskSummarySearchResult = searchTasks(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflowSummaries = taskSummarySearchResult.getResults().stream() .parallel() .map(taskSummary -> { try { String workflowId = taskSummary.getWorkflowId(); return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId, false)); } catch (Exception e) { logger.error("Error fetching workflow by id: {}", taskSummary.getWorkflowId(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = taskSummarySearchResult.getResults().size() - workflowSummaries.size(); long totalHits = taskSummarySearchResult.getTotalHits() - missing; return new SearchResult<>(totalHits, workflowSummaries); }
@Override public void indexWorkflow(Workflow workflow) { try { String id = workflow.getWorkflowId(); WorkflowSummary summary = new WorkflowSummary(workflow); byte[] doc = objectMapper.writeValueAsBytes(summary); UpdateRequest req = new UpdateRequest(indexName, WORKFLOW_DOC_TYPE, id); req.doc(doc, XContentType.JSON); req.upsert(doc, XContentType.JSON); req.retryOnConflict(5); updateWithRetry(req, "Index workflow into doc_type workflow"); } catch (Exception e) { logger.error("Failed to index workflow: {}", workflow.getWorkflowId(), e); } }
@Test public void testSearchWorkflows() { Workflow workflow = new Workflow(); workflow.setCorrelationId("c123"); WorkflowSummary workflowSummary = new WorkflowSummary(workflow); List<WorkflowSummary> listOfWorkflowSummary = new ArrayList<WorkflowSummary>() {{ add(workflowSummary); }}; SearchResult<WorkflowSummary> searchResult = new SearchResult<WorkflowSummary>(100, listOfWorkflowSummary); when(mockExecutionService.search(anyString(), anyString(), anyInt(), anyInt(), anyListOf(String.class))).thenReturn(searchResult); assertEquals(searchResult, workflowService.searchWorkflows(0,100,"asc", "*", "*")); }
public WorkflowSummary fromProto(WorkflowSummaryPb.WorkflowSummary from) { WorkflowSummary to = new WorkflowSummary(); to.setWorkflowType( from.getWorkflowType() ); to.setVersion( from.getVersion() ); to.setWorkflowId( from.getWorkflowId() ); to.setCorrelationId( from.getCorrelationId() ); to.setStartTime( from.getStartTime() ); to.setUpdateTime( from.getUpdateTime() ); to.setEndTime( from.getEndTime() ); to.setStatus( fromProto( from.getStatus() ) ); to.setInput( from.getInput() ); to.setOutput( from.getOutput() ); to.setReasonForIncompletion( from.getReasonForIncompletion() ); to.setExecutionTime( from.getExecutionTime() ); to.setEvent( from.getEvent() ); to.setFailedReferenceTaskNames( from.getFailedReferenceTaskNames() ); return to; }
public SearchResult<WorkflowSummary> search(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<String> result = executionDAOFacade.searchWorkflows(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflows = result.getResults().stream().parallel().map(workflowId -> { try { return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId,false)); } catch(Exception e) { logger.error("Error fetching workflow by id: {}", workflowId, e); return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); int missing = result.getResults().size() - workflows.size(); long totalHits = result.getTotalHits() - missing; return new SearchResult<>(totalHits, workflows); }
public SearchResult<WorkflowSummary> searchWorkflowByTasks(String query, String freeText, int start, int size, List<String> sortOptions) { SearchResult<TaskSummary> taskSummarySearchResult = searchTasks(query, freeText, start, size, sortOptions); List<WorkflowSummary> workflowSummaries = taskSummarySearchResult.getResults().stream() .parallel() .map(taskSummary -> { try { String workflowId = taskSummary.getWorkflowId(); return new WorkflowSummary(executionDAOFacade.getWorkflowById(workflowId, false)); } catch (Exception e) { logger.error("Error fetching workflow by id: {}", taskSummary.getWorkflowId(), e); return null; } }) .filter(Objects::nonNull) .collect(Collectors.toList()); int missing = taskSummarySearchResult.getResults().size() - workflowSummaries.size(); long totalHits = taskSummarySearchResult.getTotalHits() - missing; return new SearchResult<>(totalHits, workflowSummaries); }
public WorkflowSummary fromProto(WorkflowSummaryPb.WorkflowSummary from) { WorkflowSummary to = new WorkflowSummary(); to.setWorkflowType( from.getWorkflowType() ); to.setVersion( from.getVersion() ); to.setWorkflowId( from.getWorkflowId() ); to.setCorrelationId( from.getCorrelationId() ); to.setStartTime( from.getStartTime() ); to.setUpdateTime( from.getUpdateTime() ); to.setEndTime( from.getEndTime() ); to.setStatus( fromProto( from.getStatus() ) ); to.setInput( from.getInput() ); to.setOutput( from.getOutput() ); to.setReasonForIncompletion( from.getReasonForIncompletion() ); to.setExecutionTime( from.getExecutionTime() ); to.setEvent( from.getEvent() ); to.setFailedReferenceTaskNames( from.getFailedReferenceTaskNames() ); return to; }