package org.jbpm.sim.tutorial;
import java.util.Iterator;
import org.jbpm.sim.def.JbpmSimulationExperiment;
import org.jbpm.sim.exe.ExperimentReader;
import org.jbpm.sim.report.ExperimentReport;
import org.jbpm.sim.report.ScenarioReport;
import org.jbpm.sim.report.dto.ValueStatisticResult;
import org.jbpm.sim.report.jasper.ScenarioComparisionReport;
import org.jbpm.sim.report.jasper.ScenarioDetailsReport;
import org.xml.sax.InputSource;
/**
* Main class to run the tutorial, can be used instead of the Eclipse run time
* configuration, to see how it works or if you don't run Eclipse.
*
* @author bernd.ruecker@camunda.com
*/
public class ExperimentRunner {
public static void main(String[] args) {
// String experimentConf = "/org/jbpm/sim/tutorial/business//simulationExperiment.xml";
// String experimentConf = "/org/jbpm/sim/tutorial/business//simulationExperimentChristmas.xml";
String experimentConf = "/org/jbpm/sim/tutorial/business/simulationExperimentAlternatives.xml";
// the following code is also contained in the
// ready to use JbpmSimulationExperimentRunner
ExperimentReader reader = new ExperimentReader(
new InputSource(ExperimentRunner.class.getResourceAsStream(experimentConf)));
JbpmSimulationExperiment experiment = reader.readExperiment();
experiment.setWriteDesmojHtmlOutput(true);
experiment.setRememberEndedProcessInstances(false);
experiment.run(); // can take some time
ExperimentReport report = experiment.getReport();
ScenarioComparisionReport r = new ScenarioComparisionReport(report);
r.show();
// ScenarioDetailsReport detailsReport1 = new ScenarioDetailsReport(report.getScenarioReport("status_quo_normal_case"));
// detailsReport1.show();
// ScenarioDetailsReport detailsReport2 = new ScenarioDetailsReport(report.getScenarioReport("christmas_normal_case"));
// detailsReport2.show();
printOnConsole(report);
}
private static void printOnConsole(ExperimentReport report) {
for (Iterator iterator = report.getScenarioReports().iterator(); iterator.hasNext();) {
ScenarioReport result = (ScenarioReport) iterator.next();
System.out.println( "----\n" );
System.out.print( result.getScenarioName() + "\t" );
System.out.print( result.getWorstAverageResourceWaitingTime().getName() + "\t" );
System.out.print( result.getAverageResourceUtilization() + "\t" );
System.out.print( result.getResourceAmount() + "\t" );
System.out.print( result.getCost() + "\t" );
// System.out.println( result.getDescription() + "\t" );
System.out.println( "\n" );
for (Iterator iterator2 = result.getCycleTimesValueStatistics().iterator(); iterator2.hasNext();) {
ValueStatisticResult vsr = (ValueStatisticResult) iterator2.next();
System.out.print( "\t\t\t\t\t" );
System.out.print( vsr.getName() + "\t" );
System.out.print( vsr.getMean() + "\n" );
}
}
}
}