ExtensionElementsHelper.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. 'use strict';
  2. var cmdHelper = require('./CmdHelper'),
  3. elementHelper = require('./ElementHelper');
  4. var is = require('bpmn-js/lib/util/ModelUtil').is;
  5. var ExtensionElementsHelper = {};
  6. var getExtensionElements = function(bo) {
  7. return bo.get('extensionElements');
  8. };
  9. ExtensionElementsHelper.getExtensionElements = function(bo, type) {
  10. var extensionElements = getExtensionElements(bo);
  11. if (typeof extensionElements !== 'undefined') {
  12. var extensionValues = extensionElements.get('values');
  13. if (typeof extensionValues !== 'undefined') {
  14. var elements = extensionValues.filter(function(value) {
  15. return is(value, type);
  16. });
  17. if (elements.length) {
  18. return elements;
  19. }
  20. }
  21. }
  22. };
  23. ExtensionElementsHelper.addEntry = function(bo, element, entry, bpmnFactory) {
  24. var extensionElements = bo.get('extensionElements');
  25. // if there is no extensionElements list, create one
  26. if (!extensionElements) {
  27. // TODO: Ask Daniel which operation costs more
  28. extensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [entry] }, bo, bpmnFactory);
  29. return { extensionElements : extensionElements };
  30. } else {
  31. // add new failedJobRetryExtensionElement to existing extensionElements list
  32. return cmdHelper.addElementsTolist(element, extensionElements, 'values', [entry]);
  33. }
  34. };
  35. ExtensionElementsHelper.removeEntry = function(bo, element, entry) {
  36. var extensionElements = bo.get('extensionElements');
  37. if (!extensionElements) {
  38. // return an empty command when there is no extensionElements list
  39. return {};
  40. }
  41. return cmdHelper.removeElementsFromList(element, extensionElements, 'values', 'extensionElements', [entry]);
  42. };
  43. module.exports = ExtensionElementsHelper;