package org.jbpm.sim.report.jasper; import java.util.HashMap; import java.util.Map; import org.jbpm.sim.def.JbpmSimulationExperiment; import org.jbpm.sim.exe.ExperimentReader; import org.jbpm.sim.report.ScenarioReport; /** * Report to show details of the simulation results of one scenario * * @author bernd.ruecker@camunda.com */ public class ScenarioDetailsReport extends AbstractBaseJasperReport { private ScenarioReport report; public ScenarioDetailsReport(ScenarioReport report) { this.report = report; } public Object[] getContent() { /** * we need one object, otherwise the report is empty */ return new Object[] {""}; } public Map getReportParameters() { HashMap params = new HashMap(); params.put("SCENARIO_REPORT", report); return params; } public String getReportPath() { return "/org/jbpm/sim/report/jasper/ScenarioDetails.jasper"; } public Map getSubreportPaths() { HashMap subreports = new HashMap(); subreports.put("SUBREPORT_WaitingTimeBeforeTask", "/org/jbpm/sim/report/jasper/WaitingTimeBeforeTask.jasper"); subreports.put("SUBREPORT_WaitingTimeForResource", "/org/jbpm/sim/report/jasper/WaitingTimeForResource.jasper"); subreports.put("SUBREPORT_ResourceUsageTime", "/org/jbpm/sim/report/jasper/ResourceUsageTime.jasper"); subreports.put("SUBREPORT_ResourcePools", "/org/jbpm/sim/report/jasper/ResourcePools.jasper"); // // SUBREPORT_ResourcePools return subreports; } public static void main(String[] args) { String processXml = "<process-definition name='test' start-distribution='start dist'>" + " <distribution name='start dist' sample-type='real' type='normal' mean='10' standardDeviation='5'/> " + " <distribution name='task dist' sample-type='real' type='normal' mean='20' standardDeviation='5'/> " + " <distribution name='task dist 2' sample-type='real' type='normal' mean='5' standardDeviation='25'/> " + " <distribution name='task dist 3' sample-type='real' type='normal' mean='15' standardDeviation='5'/> " + " <swimlane name='clerk' pool-size='10' />" + " <swimlane name='manager' />" + " <start-state name='start'>" + " <transition to='task one' />" + " </start-state>" + " <task-node name='task one'>" + " <task swimlane='clerk' time-distribution='task dist' />" + " <transition to='task two' />" + " </task-node>" + " <task-node name='task two'>" + " <task swimlane='manager' time-distribution='task dist 2' />" + " <transition to='task three' />" + " </task-node>" + " <task-node name='task three'>" + " <task swimlane='clerk' time-distribution='task dist 3' />" + " <transition to='end' />" + " </task-node>" + " <end-state name='end'/>" + "</process-definition>" ; String experimentConfiguration = "<experiment name='StaffingExperiment' run-time='1000'>" + " <scenario name='Three people'>" + " <resource-pool name='clerk' pool-size='2' />" + " <resource-pool name='manager' pool-size='1' />" + " <sim-process name='test' />" + " </scenario>" + "</experiment>"; ExperimentReader reader = new ExperimentReader(experimentConfiguration); reader.addProcessDefinition( "test", processXml ); JbpmSimulationExperiment experiment = reader.readExperiment(); experiment.setWriteDesmojHtmlOutput(true); experiment.run(); ScenarioDetailsReport report = new ScenarioDetailsReport(experiment.getSimulationReportForScenario("Three people")); report.show(); } }