package org.activiti.crystalball.simulator.evaluator;
import org.activiti.crystalball.simulator.RuntimeService;
import org.activiti.crystalball.simulator.SimulationRunContext;
import org.activiti.crystalball.simulator.impl.context.SimulationContext;
import org.activiti.crystalball.simulator.impl.persistence.entity.SimulationRunEntity;
import java.util.HashMap;
import java.util.Map;
/**
* Did process instance reach given activity in the process execution or not?
*
*/
public class ActivityExistsEvaluator implements HistoryEvaluator {
protected String type = "activity_exists";
protected String processDefinitionId;
protected String activityId;
@Override
public void setType(String type) {
this.type = type;
}
@Override
public void evaluate(SimulationRunEntity simulationRun) {
if (simulationRun != null) {
long count = SimulationRunContext.getHistoryService().createHistoricActivityInstanceQuery()
.processDefinitionId( processDefinitionId)
.activityId(activityId)
.count();
if ( count> 0) {
RuntimeService runtimeService = SimulationContext.getSimulationEngineConfiguration().getRuntimeService();
Map<String, Object> resultVariables = new HashMap<String, Object>();
resultVariables.put("processDefinitionKey", processDefinitionId);
resultVariables.put("taskDefinitionKey", activityId);
resultVariables.put( "description", Long.toString( count));
runtimeService.saveResult(type, resultVariables);
}
}
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public String getActivityId() {
return activityId;
}
public void setActivityId(String activityId) {
this.activityId = activityId;
}
}