package betsy.bpmn.engines.camunda;
import java.nio.file.Path;
import java.util.List;
import java.util.Objects;
import betsy.bpmn.engines.BPMNProcessInstanceOutcomeChecker;
public class CamundaLogBasedProcessInstanceOutcomeChecker implements BPMNProcessInstanceOutcomeChecker {
private final Path logFile;
public CamundaLogBasedProcessInstanceOutcomeChecker(Path logFile) {
this.logFile = Objects.requireNonNull(logFile);
}
@Override
public ProcessInstanceOutcome checkProcessOutcome(String name) {
List<String> lines = BPMNProcessInstanceOutcomeChecker.getLines(logFile);
for (String line : lines) {
if (line.contains("Ignoring unsupported activity type")) {
return ProcessInstanceOutcome.UNDEPLOYED_PROCESS;
} else if (line.contains("org.camunda.bpm.engine.ProcessEngineException: Unsupported")) {
return ProcessInstanceOutcome.UNDEPLOYED_PROCESS;
} else if (line.contains("org.camunda.bpm.engine.ProcessEngineException")) {
return ProcessInstanceOutcome.RUNTIME;
} else if (line.contains("EndEvent_2 throws error event with errorCode 'ERR-1'")) {
return ProcessInstanceOutcome.PROCESS_INSTANCE_ABORTED_BECAUSE_ERROR_EVENT_THROWN;
} else if (line.contains("'EndEvent_2' throws an error event with errorCode 'ERR-1'")) {
return ProcessInstanceOutcome.PROCESS_INSTANCE_ABORTED_BECAUSE_ERROR_EVENT_THROWN;
}
}
return ProcessInstanceOutcome.UNKNOWN;
}
}