package org.activiti.crystalball.examples.mortages.costanalysis; import org.activiti.crystalball.simulator.SimulationEngine; import org.activiti.crystalball.simulator.impl.cfg.SimulationEngineConfigurationImpl; import org.activiti.crystalball.simulator.impl.persistence.entity.ResultEntity; import org.activiti.crystalball.simulator.result.ResultQuery; import org.activiti.crystalball.simulator.runtime.SimulationInstance; import org.junit.Test; import java.util.Calendar; import java.util.Date; import java.util.List; import static org.junit.Assert.assertEquals; /** * present simulation engine monitoring capabilities * */ public class CostAnalysisTest { /** * How is the probability that timer will expire? and escalation will occure? * @throws Exception */ @Test public void costAnalysisTest() throws Exception { SimulationEngine simulationEngine= SimulationEngineConfigurationImpl.createSimulationEngineConfigurationFromResource("/org/activiti/crystalball/examples/costsanalysis/crystalball.cfg.xml").buildSimulationEngine(); Calendar c = Calendar.getInstance(); Date start = c.getTime(); c.add(Calendar.HOUR, 3); Date end = c.getTime(); SimulationInstance simulationInstance = simulationEngine.getRuntimeService() .startSimulationInstanceByKey("CostAnalysis", "simple simulation to analyse costs", (String) null, start, end, 1, 1L, "/org/activiti/crystalball/examples/costsanalysis/mortages-costsanalysis-h2-context.xml"); // wait to finish simulation asynchronously do { // wait for simulation end. Thread.sleep(500); } while( simulationEngine.getRuntimeService().isRunning(simulationInstance.getId()) ); ResultQuery resultQuery = simulationEngine.getRuntimeService().createResultQuery().simulationInstanceId( simulationInstance.getId() ); List<ResultEntity> resultList = resultQuery.list(); assertEquals(30, resultList.size()); } }