123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 'use strict';
- var is = require('bpmn-js/lib/util/ModelUtil').is;
- var entryFactory = require('../../../../factory/EntryFactory');
- var asyncCapableHelper = require('../../../../helper/AsyncCapableHelper');
- var elementHelper = require('../../../../helper/ElementHelper'),
- eventDefinitionHelper = require('../../../../helper/EventDefinitionHelper'),
- cmdHelper = require('../../../../helper/CmdHelper');
- function isAsyncBefore(bo) {
- return asyncCapableHelper.isAsyncBefore(bo);
- }
- function isAsyncAfter(bo) {
- return asyncCapableHelper.isAsyncAfter(bo);
- }
- function getFailedJobRetryTimeCycle(bo) {
- return asyncCapableHelper.getFailedJobRetryTimeCycle(bo);
- }
- function removeFailedJobRetryTimeCycle(bo, element) {
- return asyncCapableHelper.removeFailedJobRetryTimeCycle(bo, element);
- }
- function createExtensionElements(parent, bpmnFactory) {
- return elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, parent, bpmnFactory);
- }
- function createFailedJobRetryTimeCycle(parent, bpmnFactory, cycle) {
- return elementHelper.createElement('activiti:FailedJobRetryTimeCycle', { body: cycle }, parent, bpmnFactory);
- }
- module.exports = function(element, bpmnFactory, options, translate) {
- var getBusinessObject = options.getBusinessObject;
- var idPrefix = options.idPrefix || '',
- labelPrefix = options.labelPrefix || '';
- var retryTimeCycleEntry = entryFactory.textField({
- id: idPrefix + 'retryTimeCycle',
- label: labelPrefix + translate('Retry Time Cycle'),
- modelProperty: 'cycle',
- get: function(element, node) {
- var retryTimeCycle = getFailedJobRetryTimeCycle(getBusinessObject(element));
- var value = retryTimeCycle && retryTimeCycle.get('body');
- return {
- cycle: value
- };
- },
- set: function(element, values, node) {
- var newCycle = values.cycle;
- var bo = getBusinessObject(element);
- if (newCycle === '' || typeof newCycle === 'undefined') {
- // remove retry time cycle element(s)
- return removeFailedJobRetryTimeCycle(bo, element);
- }
- var retryTimeCycle = getFailedJobRetryTimeCycle(bo);
- if (!retryTimeCycle) {
- // add new retry time cycle element
- var commands = [];
- var extensionElements = bo.get('extensionElements');
- if (!extensionElements) {
- extensionElements = createExtensionElements(bo, bpmnFactory);
- commands.push(cmdHelper.updateBusinessObject(element, bo, { extensionElements: extensionElements }));
- }
- retryTimeCycle = createFailedJobRetryTimeCycle(extensionElements, bpmnFactory, newCycle);
- commands.push(cmdHelper.addAndRemoveElementsFromList(
- element,
- extensionElements,
- 'values',
- 'extensionElements',
- [ retryTimeCycle ],
- []
- ));
- return commands;
- }
- // update existing retry time cycle element
- return cmdHelper.updateBusinessObject(element, retryTimeCycle, { body: newCycle });
- },
- hidden: function(element) {
- var bo = getBusinessObject(element);
- if (bo && (isAsyncBefore(bo) || isAsyncAfter(bo))) {
- return false;
- }
- if (is(element, 'bpmn:Event')) {
- return !eventDefinitionHelper.getTimerEventDefinition(element);
- }
- return true;
- }
- });
- return [ retryTimeCycleEntry ];
- };
|