protected ProcessorReport parseProcessorReport(JsonNode reportJson, Path workflowReportJson, WorkflowReport workflowReport, WorkflowBundle workflowBundle) throws ParseException { Processor p = (Processor) getSubject(reportJson, workflowBundle); ProcessorReport procReport = new ProcessorReport(p); procReport.setParentReport(workflowReport); procReport.setJobsQueued(reportJson.path("jobsQueued").asInt()); procReport.setJobsStarted(reportJson.path("jobsStarted").asInt()); procReport.setJobsCompleted(reportJson.path("jobsCompleted").asInt()); procReport.setJobsCompletedWithErrors(reportJson.path( "jobsCompletedWithErrors").asInt()); // TODO: procReport properties parseDates(reportJson, procReport); for (JsonNode invocJson : reportJson.path("invocations")) parseInvocation(invocJson, workflowReportJson, procReport); for (JsonNode actJson : reportJson.path("activityReports")) { ActivityReport activityReport = parseActivityReport(actJson, workflowReportJson, procReport, workflowBundle); procReport.addActivityReport(activityReport); } return procReport; }
private void addProcessor(StringBuilder sb, int max, int level, ProcessorReport processorReport, DateFormat dateFormat) { String processorName = processorReport.getSubject().getName(); spaces(sb, level); sb.append(processorName); spaces(sb, max - processorName.length() - level + 1); State processorState = processorReport.getState(); sb.append(processorState); spaces(sb, 10 - processorState.name().length()); String jobsQueued = String.valueOf(processorReport.getJobsQueued()); sb.append(jobsQueued); spaces(sb, 10 - jobsQueued.length()); String jobsStarted = String.valueOf(processorReport.getJobsStarted()); sb.append(jobsStarted); spaces(sb, 10 - jobsStarted.length()); String jobsCompleted = String.valueOf(processorReport.getJobsCompleted()); sb.append(jobsCompleted); spaces(sb, 10 - jobsCompleted.length()); String jobsCompletedWithErrors = String.valueOf(processorReport .getJobsCompletedWithErrors()); sb.append(jobsCompletedWithErrors); spaces(sb, 10 - jobsCompletedWithErrors.length()); addDates(sb, processorReport.getStartedDate(), processorReport.getCompletedDate(), dateFormat); for (ActivityReport activityReport : processorReport.getActivityReports()) { WorkflowReport nestedWorkflowReport = activityReport.getNestedWorkflowReport(); if (nestedWorkflowReport != null) for (ProcessorReport nestedProcessorReport : nestedWorkflowReport.getProcessorReports()) addProcessor(sb, max, level + 1, nestedProcessorReport, dateFormat); } }
private int getLongestName(WorkflowReport workflowReport, int level) { int result = 0; result = Math.max(result, getSubject().getName().length() + level); for (ProcessorReport processorReport : workflowReport.getProcessorReports()) { result = Math.max(result, processorReport.getSubject().getName().length()); for (ActivityReport activityReport : processorReport.getActivityReports()) { WorkflowReport nestedWorkflowReport = activityReport.getNestedWorkflowReport(); if (nestedWorkflowReport != null) result = Math.max(result, getLongestName(nestedWorkflowReport, level + 1)); } } return result; }
Processor processor = procRepo.getSubject(); assertTrue(wfBundle.getMainWorkflow().getProcessors().containsName(processor.getName())); assertEquals(1, procRepo.getJobsQueued()); assertEquals(2, procRepo.getJobsCompletedWithErrors()); assertEquals(3, procRepo.getJobsCompleted()); assertEquals(5, procRepo.getJobsStarted()); assertEquals(date(2013,2,1,00,00), procRepo.getCreatedDate()); assertEquals(date(2013,2,2,00,00), procRepo.getStartedDate()); assertEquals(date(2013,7,28,12,0), procRepo.getCompletedDate()); assertEquals(date(2013,2,5,0,0), procRepo.getPausedDate()); assertEquals(Arrays.asList(date(2013,2,3,0,0), date(2013,2,5,0,0)), procRepo.getPausedDates()); assertEquals(date(2013,2,6,0,0), procRepo.getResumedDate()); assertEquals(Arrays.asList(date(2013,2,4,0,0), date(2013,2,6,0,0)), procRepo.getResumedDates()); assertEquals(date(2013,7,28,12,0), procRepo.getCompletedDate()); assertEquals(1, procRepo.getInvocations().size()); Invocation pInvoc = procRepo.getInvocations().first(); assertEquals(date(2013,2,2,11,00), pInvoc.getStartedDate()); assertEquals(date(2013,2,2,13,00), pInvoc.getCompletedDate()); assertEquals(1, procRepo.getActivityReports().size()); for (ActivityReport actRepo : procRepo.getActivityReports()) { assertEquals(procRepo, actRepo.getParentReport()); assertEquals(State.CANCELLED, actRepo.getState());
ProcessorReport processorReport = new ProcessorReport(p); processorReport.setJobsQueued(1); processorReport.setJobsStarted(5); processorReport.setJobsCompleted(3); processorReport.setJobsCompletedWithErrors(2); processorReport.setCreatedDate(date(2013,2,1,0,0)); processorReport.setStartedDate(date(2013,2,2,0,0)); processorReport.setPausedDate(date(2013,2,3,0,0)); processorReport.setResumedDate(date(2013,2,4,0,0)); processorReport.setPausedDate(date(2013,2,5,0,0)); processorReport.setResumedDate(date(2013,2,6,0,0)); throw new Exception("Unexpected processor " + p); processorReport.addInvocation(pInvocation); processorReport.addActivityReport(activityReport); activityReport.setCreatedDate(date(2013,2,20,0,0)); activityReport.setStartedDate(date(2013,2,20,11,00)); processorReport.setCompletedDate(date(2013,7,28,12,00));
public WorkflowReport generateWorkflowReport(Workflow workflow) { WorkflowReport workflowReport = createWorkflowReport(workflow); for (Processor processor : workflow.getProcessors()) { ProcessorReport processorReport = createProcessorReport(processor); processorReport.setParentReport(workflowReport); workflowReport.addProcessorReport(processorReport); for (ProcessorBinding processorBinding : scufl2Tools.processorBindingsForProcessor( processor, profile)) { Activity boundActivity = processorBinding.getBoundActivity(); ActivityReport activityReport = createActivityReport(boundActivity); activityReport.setParentReport(processorReport); if (scufl2Tools.containsNestedWorkflow(processor, profile)) { Workflow nestedWorkflow = scufl2Tools.nestedWorkflowForProcessor(processor, profile); WorkflowReport nestedWorkflowReport = generateWorkflowReport(nestedWorkflow); nestedWorkflowReport.setParentReport(activityReport); activityReport.setNestedWorkflowReport(nestedWorkflowReport); } processorReport.addActivityReport(activityReport); } } return workflowReport; }