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: [