package betsy.bpmn.engines.camunda;
import betsy.bpmn.engines.BPMNProcessInstanceOutcomeChecker;
import betsy.bpmn.engines.JsonHelper;
import org.json.JSONArray;
import org.json.JSONException;
public class CamundaApiBasedProcessInstanceOutcomeChecker implements BPMNProcessInstanceOutcomeChecker {
private final String restURL;
public CamundaApiBasedProcessInstanceOutcomeChecker() {
this.restURL = "http://localhost:8080/engine-rest/engine/default";
}
@Override
public ProcessInstanceOutcome checkProcessOutcome(String name) {
return isProcessDeployed(name) ? ProcessInstanceOutcome.OK : ProcessInstanceOutcome.UNDEPLOYED_PROCESS;
}
private boolean isProcessDeployed(String key) {
JSONArray result = JsonHelper.getJsonArray(restURL+"/process-definition", 200);
for(int i=0; i<result.length(); i++) {
try {
if((key+".bpmn").equals(result.getJSONObject(i).get("resource"))) {
return true;
}
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
return false;
}
}