Version Differences for Number of Secondary Processes Per Time Period

Line 1:
    + This report is based on a date interval and lists out successes and failures. This report has to be used in conjunction with a report template such as the [[HTML Template]].  
       
    + ----  
       
    + ''Meta-Data Script:''  
       
    + <pre>import com.urbancode.anthill3.domain.reporting.*;  
    + import java.text.*;  
    + import java.util.*;  
       
    + ReportMetaData rmd = new ReportMetaData();  
       
    + SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss z");  
       
    + TextParamMetaData startDateParam = new TextParamMetaData();  
       
    + startDateParam.setName("startDateStr");  
    + startDateParam.setLabel("Start Date");  
    + startDateParam.setDescription("The Interval Start Date yyyy-MM-dd kk:mm:ss z");  
    + startDateParam.setRequired(true);  
       
    + Calendar cal = Calendar.getInstance();  
    + cal.add(Calendar.MONTH, -1);  
       
    + startDateParam.setDefaultValue(DATE_FORMAT.format(cal.getTime()));  
       
    + rmd.addParameter(startDateParam);  
       
    + TextParamMetaData endDateParam = new TextParamMetaData();  
       
    + endDateParam.setName("endDateStr");  
    + endDateParam.setLabel("End Date");  
    + endDateParam.setDescription("The Interval End Date yyyy-MM-dd kk:mm:ss z");  
    + endDateParam.setRequired(true);  
    + endDateParam.setDefaultValue(DATE_FORMAT.format(new Date()));  
       
    + rmd.addParameter(endDateParam);  
       
    + // Configure columns  
    + rmd.addColumn("Project");  
    + rmd.addColumn("Workflow");  
    + rmd.addColumn("Successes");  
    + rmd.addColumn("Failures");  
       
    + // Lastly, return the meta data  
    + return rmd; </pre>  
       
    + ----  
       
    + ''Report Script:''  
       
    + <pre>import com.urbancode.anthill3.dashboard.*;  
    + import com.urbancode.anthill3.domain.reporting.*;  
    + import com.urbancode.anthill3.domain.project.*;  
    + import com.urbancode.anthill3.domain.workflow.WorkflowStatusEnum;  
    + import java.util.*;  
    + import java.text.*;  
       
    + class WorkflowSummary {  
    + Long id = null;  
    + String name = null;  
    + int successes = 0;  
    + int failures = 0;  
    + }  
       
    + ReportOutput output = new ReportOutput(metaData);  
       
    + SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss z");  
       
    + Date startDate = DATE_FORMAT.parse(startDateStr);  
    + Date endDate = DATE_FORMAT.parse(endDateStr);  
    + Project[] projects = ProjectFactory.getInstance().restoreAllActive();  
       
    + for (int i = 0; i < projects.length; i++) {  
    + Project project = projects[i];  
    + Map workflowNameToSummary = new HashMap();  
       
    + BuildLifeWorkflowCaseSummary[] summaries = DashboardFactory.getInstance().getBuildLifeWorkflowSummaries(project.getId(), startDate, endDate);  
       
    + for (int j = 0; j < summaries.length; j++) {  
    + BuildLifeWorkflowCaseSummary summary = summaries[j];  
       
    + boolean failed = (summary.getStatus() == WorkflowStatusEnum.FAILED || summary.getStatus() == WorkflowStatusEnum.ERROR);  
    +  
    + WorkflowSummary wfSummary = null;  
    + if (workflowNameToSummary.containsKey(summary.getWorkflowName())) {  
    + wfSummary = (WorkflowSummary) workflowNameToSummary.get(summary.getWorkflowName());  
    + }  
    + else {  
    + wfSummary = new WorkflowSummary();  
    + wfSummary.name = summary.getWorkflowName();  
    + wfSummary.id = summary.getWorkflowId();  
    + workflowNameToSummary.put(summary.getWorkflowName(), wfSummary);  
    + }  
       
    + if (failed) {  
    + wfSummary.failures++;  
    + }  
    + else {  
    + wfSummary.successes++;  
    + }  
       
    + }  
       
    + Iterator itr = workflowNameToSummary.values().iterator();  
    + while (itr.hasNext()) {  
    + WorkflowSummary summary = (WorkflowSummary) itr.next();  
    + if (!project.getWorkflow(summary.id).isOriginating()) {  
    + ReportRow row = new ReportRow(output, project.getName() + "-" + summary.name);  
    + row.setColumnValue("Project", project.getName());  
    + row.setColumnValue("Workflow", summary.name);  
    + row.setColumnValue("Successes", summary.successes + "");  
    + row.setColumnValue("Failures", summary.failures + "");  
       
    + output.addRow(row);  
    + }  
    + }  
    +  
    + }  
    + return output;  
    + </pre>  
       
    + ----  
       
    + '''Related Content'''  
       
    + [[AnthillPro Template Reports]]<br/>  
    + [[Report Templates]]