@Override public Collection<CheckerIssue> check(BpmnElement element) { final Collection<CheckerIssue> issues = new ArrayList<CheckerIssue>(); final BaseElement bpmnElement = element.getBaseElement(); final Map<String, Setting> settings = rule.getSettings(); final ArrayList<String> whiteList = rule.getWhiteList(); final Map<String, String> keyPairs = new HashMap<String, String>(); final ArrayList<Setting> optionalSettings = new ArrayList<Setting>(); final ArrayList<Setting> mandatorySettings = new ArrayList<Setting>(); // Retrieve extension key pair from bpmn model keyPairs.putAll(bpmnScanner.getKeyPairs(bpmnElement.getId())); // Create ArrayList for easier manipulation for (Map.Entry<String, Setting> settingsEntry : settings.entrySet()) { if (settingsEntry.getValue().getRequired()) { mandatorySettings.add(settingsEntry.getValue()); } else { optionalSettings.add(settingsEntry.getValue()); } } if (whiteList.contains(bpmnElement.getElementType().getInstanceType().getSimpleName())) { // Check for all mandatory extension pairs according to ruleset issues.addAll(checkManExtension(whiteList, mandatorySettings, keyPairs, bpmnElement, element)); // Check for all optional extension pairs issues.addAll(checkOptExtension(whiteList, optionalSettings, keyPairs, bpmnElement, element)); } checkMisconfiguration(); return issues; }
String bpmnInstance = convention.getName(); if (!matcher.matches() && baseElement.getElementType().getInstanceType().getSimpleName().toLowerCase() .equals(bpmnInstance.toLowerCase())) { issues.addAll(IssueWriter.createIssue(rule, CriticalityEnum.WARNING, element,
final BaseElement baseElement = element.getBaseElement(); if (baseElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_START_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_END_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_CATCH_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_THROW_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_BOUNDARY_EVENT)) { String.format(Messages.getString("SignalEventChecker.1"), //$NON-NLS-1$ CheckName.checkName(baseElement)))); } else if (baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_START_EVENT)) { issues.addAll(checkDoubleUsage(element, baseElement, signal));
if (bpmnElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_BOUNDARY_EVENT)) {
final BaseElement baseElement = element.getBaseElement(); if (baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_END_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_CATCH_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_THROW_EVENT) || baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_BOUNDARY_EVENT)) { } else if (baseElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_RECEIVE_TASK)) { } else if (baseElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_START_EVENT)) {
&& !bpmnElement.getElementType().getInstanceType().getSimpleName() .equals(BpmnConstants.SIMPLE_NAME_PROCESS) && !bpmnElement.getElementType().getInstanceType().getSimpleName() .equals(BpmnConstants.SIMPLE_NAME_SUB_PROCESS)) { Map<String, Setting> settings = rule.getSettings(); .getScriptTypes(bpmnElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID)); if (scriptTypes != null && !scriptTypes.isEmpty()) { if (!settings.containsKey(bpmnElement.getElementType().getInstanceType().getSimpleName())) { for (String place : scriptTypes) issues.addAll(IssueWriter.createIssue(rule, CriticalityEnum.ERROR, element, } else { ArrayList<String> allowedPlaces = settings .get(bpmnElement.getElementType().getInstanceType().getSimpleName()).getScriptPlaces(); if (!allowedPlaces.isEmpty()) for (String scriptType : scriptTypes)
/** * exit condition for path finding (ur anomaly) * * @param startNode * @param anomaly * @param currentPath * @param invalidPaths * @param in * @param out */ private List<Path> exitConditionUrAnomaly(final BpmnElement startNode, final AnomalyContainer anomaly, final LinkedList<BpmnElement> currentPath, final List<Path> invalidPaths, final Map<String, InOutState> in, final Map<String, InOutState> out) { // go back to the node, where the variable was deleted // or go back to the start if (anomaly.getAnomaly() == Anomaly.UR && (variableDeleted(anomaly, in, out) || ((startNode.getBaseElement().getElementType().getTypeName().equals(BpmnConstants.STARTEVENT) && startNode.getBaseElement().getParentElement().getElementType().getTypeName() .equals(BpmnConstants.PROCESS))))) { final List<BpmnElement> newPath = new ArrayList<BpmnElement>(currentPath); invalidPaths.add(new Path(newPath)); currentPath.remove(startNode); return invalidPaths; } return null; }
&& !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { issues.addAll(IssueWriter.createIssue(rule, CriticalityEnum.WARNING, element, String.format("Usage of expressions in '%s' is against best practices.", && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { addIssue(element, issues, baseElement); && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { issues.addAll(IssueWriter.createIssue(rule, CriticalityEnum.WARNING, element, String.format("Usage of expression in event '%s' is against best practices.", && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { addIssue(element, issues, baseElement); BpmnConstants.CAMUNDA_EXECUTIONLISTENER); if (!listener.isEmpty() && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { addIssue(element, issues, baseElement); BpmnConstants.CAMUNDA_EXECUTIONLISTENER); if (!listener.isEmpty() && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { addIssue(element, issues, baseElement); BpmnConstants.CAMUNDA_EXECUTIONLISTENER); if (!listener.isEmpty() && !settings.containsKey(baseElement.getElementType().getInstanceType().getSimpleName())) { addIssue(element, issues, baseElement);
final boolean isGateway = startNode.getBaseElement().getElementType().getBaseType() .getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_GATEWAY); final boolean isNodeParallelGateway = startNode.getBaseElement().getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_PARALLEL_GATEWAY); final boolean isEndEvent = startNode.getBaseElement().getElementType().getTypeName() .equals(BpmnConstants.ENDEVENT) && startNode.getBaseElement().getParentElement().getElementType().getTypeName()
if (setting.getType().equals(bpmnElement.getElementType().getInstanceType().getSimpleName())) { if (whiteList.contains(bpmnElement.getElementType().getInstanceType().getSimpleName())) { if (setting.getName() != null && keyPairs.containsKey(setting.getName())) { checkValue(keyPairs, bpmnElement, element, issues, setting, true);
if (bpmnElement.getElementType().getTypeName() .equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_THROW_EVENT) || bpmnElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_END_EVENT)) { final String tempImp = bpmnScanner.getEventImplementation(bpmnElement.getId()); if (tempImp != null && tempImp.contains("=")) { //$NON-NLS-1$ if (bpmnElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_INTERMEDIATE_THROW_EVENT) || bpmnElement.getElementType().getTypeName().equals(BpmnModelConstants.BPMN_ELEMENT_END_EVENT)) { bpmnElement.getElementType().getTypeName(), bpmnElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID))));
if (setting.getType().equals(bpmnElement.getElementType().getInstanceType().getSimpleName())) {