Fix/message variable name (#101)

* The variable name is still missing from the old models

* The variable name is still missing from the old models

* code rabbit suggestion and some linting

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
This commit is contained in:
Ayoub Ait Lachgar 2024-06-17 21:32:19 +01:00 committed by GitHub
parent ee86b31cd7
commit 7f7707838a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 44 additions and 14 deletions

View File

@ -1,7 +1,10 @@
import React from 'react';
import { useService } from 'bpmn-js-properties-panel';
import { TextFieldEntry } from '@bpmn-io/properties-panel';
import { getMessageElementForShapeElement, isMessageEvent } from '../../MessageHelpers';
import {
getMessageElementForShapeElement,
isMessageEvent,
} from '../../MessageHelpers';
/**
* Allows the creation, or editing of messageVariable at the bpmn:sendTask level of a BPMN document.
@ -15,13 +18,16 @@ export function MessageVariable(props) {
const getMessageVariableObject = () => {
if (element) {
const { extensionElements } = (isMessageEvent(element)) ? element.businessObject.eventDefinitions[0] : element.businessObject;
if (extensionElements) {
return extensionElements
const { extensionElements } = isMessageEvent(element)
? element.businessObject.eventDefinitions[0]
: element.businessObject;
if (extensionElements && extensionElements.get('values')) {
let variableResp = extensionElements
.get('values')
.filter(function getInstanceOfType(e) {
return e.$instanceOf('spiffworkflow:MessageVariable');
})[0];
return variableResp;
}
}
return null;
@ -32,25 +38,49 @@ export function MessageVariable(props) {
if (messageVariableObject) {
return messageVariableObject.value;
}
// Check : for old models where messageVariable exists on message level
const bo = isMessageEvent(element)
? element.businessObject.eventDefinitions[0]
: element.businessObject;
const { messageRef } = bo;
if (messageRef) {
const { extensionElements } = messageRef;
const messageResp = extensionElements
? extensionElements.get('values').filter(function getInstanceOfType(e) {
return e.$instanceOf('spiffworkflow:MessageVariable');
})[0]
: undefined;
if (messageResp) {
setValue(messageResp.value);
return messageResp.value;
}
}
return '';
};
const setValue = (value) => {
var extensions = (isMessageEvent(element)) ?
element.businessObject.eventDefinitions[0].get('extensionElements') || moddle.create('bpmn:ExtensionElements') :
element.businessObject.get('extensionElements') || moddle.create('bpmn:ExtensionElements');
var extensions = isMessageEvent(element)
? element.businessObject.eventDefinitions[0].get('extensionElements') ||
moddle.create('bpmn:ExtensionElements')
: element.businessObject.get('extensionElements') ||
moddle.create('bpmn:ExtensionElements');
let messageVariableObject = getMessageVariableObject();
if (!messageVariableObject) {
messageVariableObject = moddle.create(
'spiffworkflow:MessageVariable'
);
extensions
.get('values')
.push(messageVariableObject);
messageVariableObject = moddle.create('spiffworkflow:MessageVariable');
extensions.get('values').push(messageVariableObject);
}
messageVariableObject.value = value;
(isMessageEvent(element)) ? element.businessObject.eventDefinitions[0].set('extensionElements', extensions) : element.businessObject.set('extensionElements', extensions);
isMessageEvent(element)
? element.businessObject.eventDefinitions[0].set(
'extensionElements',
extensions
)
: element.businessObject.set('extensionElements', extensions);
commandStack.execute('element.updateProperties', {
element,
properties: {},