CallActivityProps.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. 'use strict';
  2. var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject,
  3. is = require('bpmn-js/lib/util/ModelUtil').is;
  4. var entryFactory = require('../../../factory/EntryFactory');
  5. var callable = require('./implementation/Callable');
  6. var cmdHelper = require('../../../helper/CmdHelper');
  7. var flattenDeep = require('lodash/flattenDeep');
  8. var assign = require('lodash/assign');
  9. function getCallableType(element) {
  10. var bo = getBusinessObject(element);
  11. var boCalledElement = bo.get('calledElement'),
  12. boCaseRef = bo.get('activiti:caseRef');
  13. var callActivityType = '';
  14. if (typeof boCalledElement !== 'undefined') {
  15. callActivityType = 'bpmn';
  16. } else
  17. if (typeof boCaseRef !== 'undefined') {
  18. callActivityType = 'cmmn';
  19. }
  20. return callActivityType;
  21. }
  22. var DEFAULT_PROPS = {
  23. calledElement: undefined,
  24. 'activiti:calledElementBinding': 'latest',
  25. 'activiti:calledElementVersion': undefined,
  26. 'activiti:calledElementTenantId': undefined,
  27. 'activiti:variableMappingClass' : undefined,
  28. 'activiti:variableMappingDelegateExpression' : undefined,
  29. 'activiti:caseRef': undefined,
  30. 'activiti:caseBinding': 'latest',
  31. 'activiti:caseVersion': undefined,
  32. 'activiti:caseTenantId': undefined
  33. };
  34. module.exports = function(group, element, bpmnFactory, translate) {
  35. if (!is(element, 'activiti:CallActivity')) {
  36. return;
  37. }
  38. group.entries.push(entryFactory.selectBox({
  39. id : 'callActivity',
  40. label: translate('CallActivity Type'),
  41. selectOptions: [
  42. { name: 'BPMN', value: 'bpmn' },
  43. { name: 'CMMN', value: 'cmmn' }
  44. ],
  45. emptyParameter: true,
  46. modelProperty: 'callActivityType',
  47. get: function(element, node) {
  48. return {
  49. callActivityType: getCallableType(element)
  50. };
  51. },
  52. set: function(element, values, node) {
  53. var type = values.callActivityType;
  54. var props = assign({}, DEFAULT_PROPS);
  55. if (type === 'bpmn') {
  56. props.calledElement = '';
  57. }
  58. else if (type === 'cmmn') {
  59. props['activiti:caseRef'] = '';
  60. }
  61. return cmdHelper.updateProperties(element, props);
  62. }
  63. }));
  64. group.entries.push(callable(element, bpmnFactory, {
  65. getCallableType: getCallableType
  66. }, translate));
  67. group.entries = flattenDeep(group.entries);
  68. };