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