package org.activiti.engine.test.regression; import java.util.ArrayList; import java.util.List; import org.activiti.bpmn.model.BpmnModel; import org.activiti.bpmn.model.FlowElement; import org.activiti.bpmn.model.Process; import org.activiti.bpmn.model.ServiceTask; import org.activiti.validation.ProcessValidator; import org.activiti.validation.ValidationError; import org.activiti.validation.validator.ValidatorSet; /** * Sample Process Validator for Activiti Test case. */ public class ActivitiTestCaseProcessValidator implements ProcessValidator { @Override public List<ValidationError> validate(BpmnModel bpmnModel) { List<ValidationError> errorList = new ArrayList<ValidationError>(); CustomParseValidator customParseValidator = new CustomParseValidator(); for (Process process : bpmnModel.getProcesses()) { customParseValidator.executeParse(bpmnModel, process); } for (String errorRef : bpmnModel.getErrors().keySet()) { ValidationError error = new ValidationError(); error.setValidatorSetName("Manual BPMN parse validator"); error.setProblem(errorRef); error.setActivityId(bpmnModel.getErrors().get(errorRef)); errorList.add(error); } return errorList; } @Override public List<ValidatorSet> getValidatorSets() { return null; } class CustomParseValidator { protected void executeParse(BpmnModel bpmnModel, Process element) { for (FlowElement flowElement : element.getFlowElements()) { if (!ServiceTask.class.isAssignableFrom(flowElement.getClass())) { continue; } ServiceTask serviceTask = (ServiceTask) flowElement; validateAsyncAttribute(serviceTask, bpmnModel, flowElement); } } void validateAsyncAttribute(ServiceTask serviceTask, BpmnModel bpmnModel, FlowElement flowElement) { if (!serviceTask.isAsynchronous()) { bpmnModel.addError("Please set value of 'activiti:async'" + "attribute as true for task:" + serviceTask.getName(), flowElement.getId()); } } } }