123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- 'use strict';
- var inherits = require('inherits');
- var PropertiesActivator = require('../../PropertiesActivator');
- var asyncCapableHelper = require('../../helper/AsyncCapableHelper'),
- ImplementationTypeHelper = require('../../helper/ImplementationTypeHelper');
- var is = require('bpmn-js/lib/util/ModelUtil').is;
- // bpmn properties
- var processProps = require('../../provider/bpmn/parts/ProcessProps'),
- eventProps = require('../../provider/bpmn/parts/EventProps'),
- linkProps = require('../../provider/bpmn/parts/LinkProps'),
- documentationProps = require('../../provider/bpmn/parts/DocumentationProps'),
- idProps = require('../../provider/bpmn/parts/IdProps'),
- nameProps = require('../../provider/bpmn/parts/NameProps'),
- executableProps = require('../../provider/bpmn/parts/ExecutableProps');
- // activiti properties
- var serviceTaskDelegateProps = require('./parts/ServiceTaskDelegateProps'),
- userTaskProps = require('./parts/UserTaskProps'),
- asynchronousContinuationProps = require('./parts/AsynchronousContinuationProps'),
- callActivityProps = require('./parts/CallActivityProps'),
- multiInstanceProps = require('./parts/MultiInstanceLoopProps'),
- conditionalProps = require('./parts/ConditionalProps'),
- scriptProps = require('./parts/ScriptTaskProps'),
- errorProps = require('./parts/ErrorEventProps'),
- formProps = require('./parts/FormProps'),
- startEventInitiator = require('./parts/StartEventInitiator'),
- variableMapping = require('./parts/VariableMappingProps'),
- versionTag = require('./parts/VersionTagProps');
- var listenerProps = require('./parts/ListenerProps'),
- listenerDetails = require('./parts/ListenerDetailProps'),
- listenerFields = require('./parts/ListenerFieldInjectionProps');
- var elementTemplateChooserProps = require('./element-templates/parts/ChooserProps'),
- elementTemplateCustomProps = require('./element-templates/parts/CustomProps');
- // Input/Output
- var inputOutput = require('./parts/InputOutputProps'),
- inputOutputParameter = require('./parts/InputOutputParameterProps');
- // Connector
- var connectorDetails = require('./parts/ConnectorDetailProps'),
- connectorInputOutput = require('./parts/ConnectorInputOutputProps'),
- connectorInputOutputParameter = require('./parts/ConnectorInputOutputParameterProps');
- // properties
- var properties = require('./parts/PropertiesProps');
- // job configuration
- var jobConfiguration = require('./parts/JobConfigurationProps');
- // history time to live
- var historyTimeToLive = require('./parts/HistoryTimeToLiveProps');
- // candidate starter groups/users
- var candidateStarter = require('./parts/CandidateStarterProps');
- // tasklist
- var tasklist = require('./parts/TasklistProps');
- // external task configuration
- var externalTaskConfiguration = require('./parts/ExternalTaskConfigurationProps');
- // field injection
- var fieldInjections = require('./parts/FieldInjectionProps');
- var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject,
- eventDefinitionHelper = require('../../helper/EventDefinitionHelper'),
- implementationTypeHelper = require('../../helper/ImplementationTypeHelper');
- // helpers ////////////////////////////////////////
- var isExternalTaskPriorityEnabled = function(element) {
- var businessObject = getBusinessObject(element);
- // show only if element is a process, a participant ...
- if (is(element, 'bpmn:Process') || is(element, 'bpmn:Participant') && businessObject.get('processRef')) {
- return true;
- }
- var externalBo = ImplementationTypeHelper.getServiceTaskLikeBusinessObject(element),
- isExternalTask = ImplementationTypeHelper.getImplementationType(externalBo) === 'external';
- // ... or an external task with selected external implementation type
- return !!ImplementationTypeHelper.isExternalCapable(externalBo) && isExternalTask;
- };
- var isJobConfigEnabled = function(element) {
- var businessObject = getBusinessObject(element);
- if (is(element, 'bpmn:Process') || is(element, 'bpmn:Participant') && businessObject.get('processRef')) {
- return true;
- }
- // async behavior
- var bo = getBusinessObject(element);
- if (asyncCapableHelper.isAsyncBefore(bo) || asyncCapableHelper.isAsyncAfter(bo)) {
- return true;
- }
- // timer definition
- if (is(element, 'bpmn:Event')) {
- return !!eventDefinitionHelper.getTimerEventDefinition(element);
- }
- return false;
- };
- var getInputOutputParameterLabel = function(param, translate) {
- if (is(param, 'activiti:InputParameter')) {
- return translate('Input Parameter');
- }
- if (is(param, 'activiti:OutputParameter')) {
- return translate('Output Parameter');
- }
- return '';
- };
- var getListenerLabel = function(param, translate) {
- if (is(param, 'activiti:ExecutionListener')) {
- return translate('Execution Listener');
- }
- if (is(param, 'activiti:TaskListener')) {
- return translate('Task Listener');
- }
- return '';
- };
- var PROCESS_KEY_HINT = 'This maps to the process definition key.';
- var TASK_KEY_HINT = 'This maps to the task definition key.';
- function createGeneralTabGroups(
- element, canvas, bpmnFactory,
- elementRegistry, elementTemplates, translate) {
- // refer to target element for external labels
- element = element.labelTarget || element;
- var generalGroup = {
- id: 'general',
- label: translate('General'),
- entries: []
- };
- var idOptions;
- var processOptions;
- if (is(element, 'bpmn:Process')) {
- idOptions = { description: PROCESS_KEY_HINT };
- }
- if (is(element, 'bpmn:UserTask')) {
- idOptions = { description: TASK_KEY_HINT };
- }
- if (is(element, 'bpmn:Participant')) {
- processOptions = { processIdDescription: PROCESS_KEY_HINT };
- }
- idProps(generalGroup, element, translate, idOptions);
- nameProps(generalGroup, element, bpmnFactory, canvas, translate);
- processProps(generalGroup, element, translate, processOptions);
- versionTag(generalGroup, element, translate);
- executableProps(generalGroup, element, translate);
- elementTemplateChooserProps(generalGroup, element, elementTemplates, translate);
- var customFieldsGroups = elementTemplateCustomProps(element, elementTemplates, bpmnFactory, translate);
- var detailsGroup = {
- id: 'details',
- label: translate('Details'),
- entries: []
- };
- serviceTaskDelegateProps(detailsGroup, element, bpmnFactory, translate);
- userTaskProps(detailsGroup, element, translate);
- scriptProps(detailsGroup, element, bpmnFactory, translate);
- linkProps(detailsGroup, element, translate);
- callActivityProps(detailsGroup, element, bpmnFactory, translate);
- eventProps(detailsGroup, element, bpmnFactory, elementRegistry, translate);
- errorProps(detailsGroup, element, bpmnFactory, translate);
- conditionalProps(detailsGroup, element, bpmnFactory, translate);
- startEventInitiator(detailsGroup, element, translate); // this must be the last element of the details group!
- var multiInstanceGroup = {
- id: 'multiInstance',
- label: translate('Multi Instance'),
- entries: []
- };
- multiInstanceProps(multiInstanceGroup, element, bpmnFactory, translate);
- var asyncGroup = {
- id : 'async',
- label: translate('Asynchronous Continuations'),
- entries : []
- };
- asynchronousContinuationProps(asyncGroup, element, bpmnFactory, translate);
- var jobConfigurationGroup = {
- id : 'jobConfiguration',
- label : translate('Job Configuration'),
- entries : [],
- enabled: isJobConfigEnabled
- };
- jobConfiguration(jobConfigurationGroup, element, bpmnFactory, translate);
- var externalTaskGroup = {
- id : 'externalTaskConfiguration',
- label : translate('External Task Configuration'),
- entries : [],
- enabled: isExternalTaskPriorityEnabled
- };
- externalTaskConfiguration(externalTaskGroup, element, bpmnFactory, translate);
- var candidateStarterGroup = {
- id: 'candidateStarterConfiguration',
- label: translate('Candidate Starter Configuration'),
- entries: []
- };
- candidateStarter(candidateStarterGroup, element, bpmnFactory, translate);
- var historyTimeToLiveGroup = {
- id: 'historyConfiguration',
- label: translate('History Configuration'),
- entries: []
- };
- historyTimeToLive(historyTimeToLiveGroup, element, bpmnFactory, translate);
- var tasklistGroup = {
- id: 'tasklist',
- label: translate('Tasklist Configuration'),
- entries: []
- };
- tasklist(tasklistGroup, element, bpmnFactory, translate);
- var documentationGroup = {
- id: 'documentation',
- label: translate('Documentation'),
- entries: []
- };
- documentationProps(documentationGroup, element, bpmnFactory, translate);
- var groups = [];
- groups.push(generalGroup);
- customFieldsGroups.forEach(function(group) {
- groups.push(group);
- });
- groups.push(detailsGroup);
- groups.push(externalTaskGroup);
- groups.push(multiInstanceGroup);
- groups.push(asyncGroup);
- groups.push(jobConfigurationGroup);
- groups.push(candidateStarterGroup);
- groups.push(historyTimeToLiveGroup);
- groups.push(tasklistGroup);
- groups.push(documentationGroup);
- return groups;
- }
- function createVariablesTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var variablesGroup = {
- id : 'variables',
- label : translate('Variables'),
- entries: []
- };
- variableMapping(variablesGroup, element, bpmnFactory, translate);
- return [
- variablesGroup
- ];
- }
- function createFormsTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var formGroup = {
- id : 'forms',
- label : translate('Forms'),
- entries: []
- };
- formProps(formGroup, element, bpmnFactory, translate);
- return [
- formGroup
- ];
- }
- function createListenersTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var listenersGroup = {
- id : 'listeners',
- label: translate('Listeners'),
- entries: []
- };
- var options = listenerProps(listenersGroup, element, bpmnFactory, translate);
- var listenerDetailsGroup = {
- id: 'listener-details',
- entries: [],
- enabled: function(element, node) {
- return options.getSelectedListener(element, node);
- },
- label: function(element, node) {
- var param = options.getSelectedListener(element, node);
- return getListenerLabel(param, translate);
- }
- };
- listenerDetails(listenerDetailsGroup, element, bpmnFactory, options, translate);
- var listenerFieldsGroup = {
- id: 'listener-fields',
- label: translate('Field Injection'),
- entries: [],
- enabled: function(element, node) {
- return options.getSelectedListener(element, node);
- }
- };
- listenerFields(listenerFieldsGroup, element, bpmnFactory, options, translate);
- return [
- listenersGroup,
- listenerDetailsGroup,
- listenerFieldsGroup
- ];
- }
- function createInputOutputTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var inputOutputGroup = {
- id: 'input-output',
- label: translate('Parameters'),
- entries: []
- };
- var options = inputOutput(inputOutputGroup, element, bpmnFactory, translate);
- var inputOutputParameterGroup = {
- id: 'input-output-parameter',
- entries: [],
- enabled: function(element, node) {
- return options.getSelectedParameter(element, node);
- },
- label: function(element, node) {
- var param = options.getSelectedParameter(element, node);
- return getInputOutputParameterLabel(param, translate);
- }
- };
- inputOutputParameter(inputOutputParameterGroup, element, bpmnFactory, options, translate);
- return [
- inputOutputGroup,
- inputOutputParameterGroup
- ];
- }
- function createConnectorTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var connectorDetailsGroup = {
- id: 'connector-details',
- label: translate('Details'),
- entries: []
- };
- connectorDetails(connectorDetailsGroup, element, bpmnFactory, translate);
- var connectorInputOutputGroup = {
- id: 'connector-input-output',
- label: translate('Input/Output'),
- entries: []
- };
- var options = connectorInputOutput(connectorInputOutputGroup, element, bpmnFactory, translate);
- var connectorInputOutputParameterGroup = {
- id: 'connector-input-output-parameter',
- entries: [],
- enabled: function(element, node) {
- return options.getSelectedParameter(element, node);
- },
- label: function(element, node) {
- var param = options.getSelectedParameter(element, node);
- return getInputOutputParameterLabel(param, translate);
- }
- };
- connectorInputOutputParameter(connectorInputOutputParameterGroup, element, bpmnFactory, options, translate);
- return [
- connectorDetailsGroup,
- connectorInputOutputGroup,
- connectorInputOutputParameterGroup
- ];
- }
- function createFieldInjectionsTabGroups(element, bpmnFactory, elementRegistry, translate) {
- var fieldGroup = {
- id: 'field-injections-properties',
- label: translate('Field Injections'),
- entries: []
- };
- fieldInjections(fieldGroup, element, bpmnFactory, translate);
- return [
- fieldGroup
- ];
- }
- function createExtensionElementsGroups(element, bpmnFactory, elementRegistry, translate) {
- var propertiesGroup = {
- id : 'extensionElements-properties',
- label: translate('Properties'),
- entries: []
- };
- properties(propertiesGroup, element, bpmnFactory, translate);
- return [
- propertiesGroup
- ];
- }
- // activiti Properties Provider /////////////////////////////////////
- /**
- * A properties provider for activiti related properties.
- *
- * @param {EventBus} eventBus
- * @param {Canvas} canvas
- * @param {BpmnFactory} bpmnFactory
- * @param {ElementRegistry} elementRegistry
- * @param {ElementTemplates} elementTemplates
- * @param {Translate} translate
- */
- function ActivitiPropertiesProvider(
- eventBus, canvas, bpmnFactory,
- elementRegistry, elementTemplates, translate) {
- PropertiesActivator.call(this, eventBus);
- this.getTabs = function(element) {
- var generalTab = {
- id: 'general',
- label: translate('General'),
- groups: createGeneralTabGroups(
- element, canvas, bpmnFactory,
- elementRegistry, elementTemplates, translate)
- };
- var variablesTab = {
- id: 'variables',
- label: translate('Variables'),
- groups: createVariablesTabGroups(element, bpmnFactory, elementRegistry, translate)
- };
- var formsTab = {
- id: 'forms',
- label: translate('Forms'),
- groups: createFormsTabGroups(element, bpmnFactory, elementRegistry, translate)
- };
- var listenersTab = {
- id: 'listeners',
- label: translate('Listeners'),
- groups: createListenersTabGroups(element, bpmnFactory, elementRegistry, translate),
- enabled: function(element) {
- return !eventDefinitionHelper.getLinkEventDefinition(element)
- || (!is(element, 'bpmn:IntermediateThrowEvent')
- && eventDefinitionHelper.getLinkEventDefinition(element));
- }
- };
- var inputOutputTab = {
- id: 'input-output',
- label: translate('Input/Output'),
- groups: createInputOutputTabGroups(element, bpmnFactory, elementRegistry, translate)
- };
- var connectorTab = {
- id: 'connector',
- label: translate('Connector'),
- groups: createConnectorTabGroups(element, bpmnFactory, elementRegistry, translate),
- enabled: function(element) {
- var bo = implementationTypeHelper.getServiceTaskLikeBusinessObject(element);
- return bo && implementationTypeHelper.getImplementationType(bo) === 'connector';
- }
- };
- var fieldInjectionsTab = {
- id: 'field-injections',
- label: translate('Field Injections'),
- groups: createFieldInjectionsTabGroups(element, bpmnFactory, elementRegistry, translate)
- };
- var extensionsTab = {
- id: 'extensionElements',
- label: translate('Extensions'),
- groups: createExtensionElementsGroups(element, bpmnFactory, elementRegistry, translate)
- };
- return [
- generalTab,
- variablesTab,
- connectorTab,
- formsTab,
- listenersTab,
- inputOutputTab,
- fieldInjectionsTab,
- extensionsTab
- ];
- };
- }
- ActivitiPropertiesProvider.$inject = [
- 'eventBus',
- 'canvas',
- 'bpmnFactory',
- 'elementRegistry',
- 'elementTemplates',
- 'translate'
- ];
- inherits(ActivitiPropertiesProvider, PropertiesActivator);
- module.exports = ActivitiPropertiesProvider;
|