package betsy.bpmn.engines.activiti; import java.nio.file.Path; import java.util.List; import java.util.Objects; import betsy.bpmn.engines.BPMNProcessInstanceOutcomeChecker; public class ActivitiLogBasedProcessInstanceOutcomeChecker implements BPMNProcessInstanceOutcomeChecker { private final Path logFile; public ActivitiLogBasedProcessInstanceOutcomeChecker(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.activiti.engine.ActivitiException: Errors while parsing:")) { return ProcessInstanceOutcome.UNDEPLOYED_PROCESS; } else if (line.contains("org.activiti.engine.ActivitiException")) { 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("No catching boundary event found for error with errorCode 'ERR-1'")) { return ProcessInstanceOutcome.PROCESS_INSTANCE_ABORTED_BECAUSE_ERROR_EVENT_THROWN; } } return ProcessInstanceOutcome.UNKNOWN; } }