diff --git a/rules/id-required.js b/rules/id-required.js index 576e992..7a19aa1 100644 --- a/rules/id-required.js +++ b/rules/id-required.js @@ -26,8 +26,25 @@ module.exports = function() { ]); } + function isLoopCharacteristic(node) { + return isAny(node, [ + 'bpmn:MultiInstanceLoopCharacteristics', + 'bpmn:StandardLoopCharacteristics', + ]); + } + + function isDocumentation(node) { + return isAny(node, [ + 'bpmn:Documentation', + ]); + } + function check(node, reporter) { - if (is(node, 'bpmn:Definitions') || isNonBpmnType(node) || isEventDefinition(node)) { + if (is(node, 'bpmn:Definitions') + || isDocumentation(node) + || isEventDefinition(node) + || isLoopCharacteristic(node) + || isNonBpmnType(node)) { return; } diff --git a/test-diagrams/documentation.valid.bpmn b/test-diagrams/documentation.valid.bpmn new file mode 100644 index 0000000..aef47d4 --- /dev/null +++ b/test-diagrams/documentation.valid.bpmn @@ -0,0 +1,39 @@ + + + + + node_4 + + + <p>Test documentation</p> + node_4 + node_5 + + + node_5 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test-diagrams/loop-characteristics.valid.bpmn b/test-diagrams/loop-characteristics.valid.bpmn new file mode 100644 index 0000000..ec1b830 --- /dev/null +++ b/test-diagrams/loop-characteristics.valid.bpmn @@ -0,0 +1,99 @@ + + + + + node_4 + + + node_4 + node_5 + + + + node_5 + + + + + node_9 + node_12 + + + + node_9 + + + + node_12 + + + + node_15 + + + node_15 + node_17 + + + + + node_17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test.js b/test.js index 932e796..f8e5f67 100644 --- a/test.js +++ b/test.js @@ -89,6 +89,12 @@ RuleTester.verify('id-required', idRequiredRule, { }, { moddleElement: readModdle('./test-diagrams/event-definitions.valid.bpmn') + }, + { + moddleElement: readModdle('./test-diagrams/loop-characteristics.valid.bpmn') + }, + { + moddleElement: readModdle('./test-diagrams/documentation.valid.bpmn') } ], invalid: [