added ability to create new messages w/ burnettk cullerton

This commit is contained in:
jasquat 2022-08-24 12:04:47 -04:00
parent 8c64db1112
commit feb1d64a5a
7 changed files with 244 additions and 95 deletions

View File

@ -136,15 +136,6 @@ export function findCorrelationKeys(businessObject) {
for (const correlationKey in currentKeys) {
const currentCorrelation = rootElement.correlationKeys[correlationKey];
correlationKeys.push(currentCorrelation);
// const currentProperty = {};
// currentProperty.name = currentCorrelation.name;
// currentProperty.refs = [];
// for (const correlationProperty in currentCorrelation.correlationPropertyRef) {
// currentProperty.refs.push(
// currentCorrelation.correlationPropertyRef[correlationProperty]
// );
// }
// correlationKeys.push(currentProperty);
}
}
}

View File

@ -105,7 +105,6 @@ function CorrelationKeyTextField(props) {
function CorrelationPropertyText(props) {
const { id, parameter, correlationProperty } = props;
const debounce = useService('debounceInput');
const getValue = () => {

View File

@ -77,20 +77,6 @@ function MessageCorrelationTextField(props) {
id: value,
},
});
// Also update the label of all the references
// const references = findDataReferenceShapes(element, correlationProperty.id);
const references = ['hello1', 'hello2'];
for (const ref of references) {
commandStack.execute('element.updateProperties', {
element: ref,
moddleElement: ref.businessObject,
properties: {
name: value,
},
changed: [ref], // everything is already marked as changed, don't recalculate.
});
}
};
const getValue = (_parameter) => {

View File

@ -0,0 +1,132 @@
import { useService } from 'bpmn-js-properties-panel';
import { TextFieldEntry } from '@bpmn-io/properties-panel';
import {
findCorrelationKeys,
getRoot,
findMessageModdleElements,
} from '../MessageHelpers';
/**
* Provides a list of data objects, and allows you to add / remove data objects, and change their ids.
* @param props
* @constructor
*/
export function MessageArray(props) {
const { element, moddle, commandStack, translate } = props;
const messageElements = findMessageModdleElements(element.businessObject);
const items = messageElements.map((messageElement, index) => {
const id = `messageElement-${index}`;
return {
id,
label: messageElement.name,
entries: messageGroup({
id,
element,
messageElement,
commandStack,
translate,
}),
autoFocusEntry: id,
};
});
function add(event) {
event.stopPropagation();
if (element.type === 'bpmn:Collaboration') {
const newMessageElement = moddle.create('bpmn:Message');
const messageId = moddle.ids.nextPrefixed('Message_');
newMessageElement.id = messageId;
newMessageElement.name = messageId;
const rootElement = getRoot(element.businessObject);
const { rootElements } = rootElement;
rootElements.push(newMessageElement);
commandStack.execute('element.updateProperties', {
element,
moddleElement: moddle,
properties: {
messages: rootElements,
},
});
}
}
return { items, add };
}
function messageGroup(props) {
const { messageElement, commandStack, translate } = props;
const id = `message-${messageElement.name}`;
return [
{
id: `${id}-${messageElement.name}-key`,
component: MessageIdTextField,
messageElement,
commandStack,
translate,
},
{
id: `${id}-${messageElement.name}-key`,
component: MessageNameTextField,
messageElement,
commandStack,
translate,
},
];
}
function MessageIdTextField(props) {
const { id, element, messageElement, commandStack, translate } = props;
const debounce = useService('debounceInput');
const setValue = (value) => {
commandStack.execute('element.updateModdleProperties', {
element,
moddleElement: messageElement,
properties: {
id: value,
},
});
};
const getValue = () => {
return messageElement.id;
};
return TextFieldEntry({
element,
id: `${id}-id-textField`,
label: translate('ID'),
getValue,
setValue,
debounce,
});
}
function MessageNameTextField(props) {
const { id, element, messageElement, commandStack, translate } = props;
const debounce = useService('debounceInput');
const setValue = (value) => {
commandStack.execute('element.updateModdleProperties', {
element,
moddleElement: messageElement,
properties: {
name: value,
},
});
};
const getValue = () => {
return messageElement.name;
};
return TextFieldEntry({
element,
id: `${id}-name-textField`,
label: translate('Name'),
getValue,
setValue,
debounce,
});
}

View File

@ -5,6 +5,7 @@ import { MessageSelect } from './MessageSelect';
import { MessagePayload } from './MessagePayload';
import { MessageVariable } from './MessageVariable';
import { CorrelationPropertiesArray } from './CorrelationPropertiesArray';
import { MessageArray } from './MessageArray';
import { isMessageElement, canReceiveMessage } from '../MessageHelpers';
const LOW_PRIORITY = 500;
@ -20,7 +21,7 @@ export default function MessagesPropertiesProvider(
return function pushGroup(groups) {
if (is(element, 'bpmn:Collaboration')) {
groups.push(
createCollaborationGroup(
...createCollaborationGroup(
element,
translate,
moddle,
@ -79,12 +80,52 @@ function createCollaborationGroup(
moddle,
commandStack,
elementRegistry
) {
return [
{
id: 'correlation_keys',
label: translate('Correlation Keys'),
component: ListGroup,
...CorrelationKeysArray({
element,
moddle,
commandStack,
elementRegistry,
}),
},
{
id: 'messages',
label: translate('Messages'),
component: ListGroup,
...MessageArray({
element,
moddle,
commandStack,
elementRegistry,
translate,
}),
},
];
}
/**
* Adds a group to the properties panel for the script task that allows you
* to set the script.
* @param element
* @param translate
* @returns The components to add to the properties panel. */
function createMessageCollaborationGroup(
element,
translate,
moddle,
commandStack,
elementRegistry
) {
return {
id: 'correlation_keys',
label: translate('Correlation Keys'),
id: 'messages',
label: translate('Messages'),
component: ListGroup,
...CorrelationKeysArray({ element, moddle, commandStack, elementRegistry }),
...MessageArray({ element, moddle, commandStack, elementRegistry }),
};
}

128
package-lock.json generated
View File

@ -9,9 +9,9 @@
"version": "0.0.8",
"license": "MIT",
"dependencies": {
"@bpmn-io/properties-panel": "^0.18.0",
"bpmn-js": "^9.2.2",
"bpmn-js-properties-panel": "^1.2.0",
"@bpmn-io/properties-panel": "^0.19.0",
"bpmn-js": "^9.4.0",
"bpmn-js-properties-panel": "^1.5.0",
"diagram-js": "^8.5.0",
"inherits": "^2.0.4",
"inherits-browser": "^0.0.1",
@ -1929,9 +1929,9 @@
}
},
"node_modules/@bpmn-io/properties-panel": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/@bpmn-io/properties-panel/-/properties-panel-0.18.0.tgz",
"integrity": "sha512-2OCc6QplFKlCG8hmsAuUvd0JJTPjGvTJ6zxO73R9TpnUw7PKsXq2oIJjJfWsNdmvpmkxeyHoklOf5XpQXFjygw==",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/@bpmn-io/properties-panel/-/properties-panel-0.19.0.tgz",
"integrity": "sha512-cw+MfA2gpCBsa9Q0+JT3Gc7OvR1NGXuyQj4yOk5QoQHNzxuIMNuz6EX2NvDsCrf0oSzc9z0FapbzDuJB+DSC1g==",
"dependencies": {
"@bpmn-io/feel-editor": "0.2.0",
"classnames": "^2.3.1",
@ -3019,26 +3019,26 @@
"dev": true
},
"node_modules/bpmn-js": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-9.2.2.tgz",
"integrity": "sha512-Zs0e3fKEKIrnfVt+r4hkcqSg2XyMdXwp6x4xM0TDfGlduxyQWQ8rrqsjvnL4UEg4K0noBPqDce2vRawOilwReg==",
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-9.4.0.tgz",
"integrity": "sha512-7dusZBYCFognA0TmspWaKZ47UjFhyRT+//hMdyLtPCKY1M0uAPXHoFv73MohlsEa7a75h0q6zjCj5W0/RHBwvg==",
"dependencies": {
"bpmn-moddle": "^7.1.2",
"bpmn-moddle": "^7.1.3",
"css.escape": "^1.5.1",
"diagram-js": "^8.5.0",
"diagram-js": "^8.9.0",
"diagram-js-direct-editing": "^1.7.0",
"ids": "^1.0.0",
"inherits-browser": "0.0.1",
"min-dash": "^3.5.2",
"min-dom": "^3.2.0",
"min-dom": "^3.2.1",
"object-refs": "^0.3.0",
"tiny-svg": "^2.2.2"
"tiny-svg": "^2.2.4"
}
},
"node_modules/bpmn-js-properties-panel": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/bpmn-js-properties-panel/-/bpmn-js-properties-panel-1.4.0.tgz",
"integrity": "sha512-+15Yg7FohrdpDuKqegxU9OyGgYcH6sZM06DjwBLKrpqHgmXEXMA0yD0UI9Rc95P4mRfsT4rAzGpZjYnsYgOshg==",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bpmn-js-properties-panel/-/bpmn-js-properties-panel-1.5.0.tgz",
"integrity": "sha512-0VAPk6xK/u+GepjGjt8HAXtBa2ab5o4Dkn5II8UgnFMoQThpvrsLras3vh1il8j/2vPhngAsfiA8z7Y9nJ6/Hw==",
"dependencies": {
"@bpmn-io/element-templates-validator": "^0.9.0",
"@bpmn-io/extract-process-variables": "^0.5.0",
@ -3051,20 +3051,20 @@
"semver-compare": "^1.0.0"
},
"peerDependencies": {
"@bpmn-io/properties-panel": "0.18.x",
"@bpmn-io/properties-panel": "0.19.x",
"bpmn-js": "8.x || 9.x",
"camunda-bpmn-js-behaviors": "0.1.x",
"diagram-js": "7.x || 8.x"
}
},
"node_modules/bpmn-moddle": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-7.1.2.tgz",
"integrity": "sha512-Sax4LokRCTqlg26njjULN3ZGtCmwH5gZVUZTRF0jwJk+YpMQhSfSoUECxjNv8OROoLxu8Z+MjdOHIxgvJf7KwA==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-7.1.3.tgz",
"integrity": "sha512-ZcBfw0NSOdYTSXFKEn7MOXHItz7VfLZTrFYKO8cK6V8ZzGjCcdiLIOiw7Lctw1PJsihhLiZQS8Htj2xKf+NwCg==",
"dependencies": {
"min-dash": "^3.5.2",
"moddle": "^5.0.2",
"moddle-xml": "^9.0.5"
"moddle-xml": "^9.0.6"
}
},
"node_modules/brace-expansion": {
@ -3723,12 +3723,12 @@
"dev": true
},
"node_modules/diagram-js": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-8.5.0.tgz",
"integrity": "sha512-UHA/Zfs7kG22M9wXAifAyPb2OZ4lG4lFi0CZ0GC6/lXmOsSHwHVZ1s/h9UqaIXnzIKW8SnZoP3Rwqel1ZhZLzg==",
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-8.9.0.tgz",
"integrity": "sha512-577bUEbkwZ7id4SCXcD2qrlKoRPXry2SDSPt5T6tEOjwKrTllKr5d1HZoJzGws4VMQq5fmY51Gce1iFT9S4Dlw==",
"dependencies": {
"css.escape": "^1.5.1",
"didi": "^8.0.0",
"didi": "^8.0.1",
"hammerjs": "^2.0.1",
"inherits-browser": "0.0.1",
"min-dash": "^3.5.2",
@ -3751,9 +3751,9 @@
}
},
"node_modules/didi": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/didi/-/didi-8.0.0.tgz",
"integrity": "sha512-PwqTBaYzzfJSyxvpXPcTWF6nDdCKx2mFAU5eup1ZSb5wbaAS9a/HiKdtcAUdie/VMLHoFI50jkYZcA+bhUOugw=="
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/didi/-/didi-8.0.1.tgz",
"integrity": "sha512-7oXiXbp8DHE3FfQsVBkc2pwePo3Jy2uyGS9trAeBmfxiZAP4WV23LWokRpMmyl3hlu8OEAsyMxx19i5P6TVaJQ=="
},
"node_modules/diff": {
"version": "5.0.0",
@ -6622,9 +6622,9 @@
}
},
"node_modules/moddle-xml": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.5.tgz",
"integrity": "sha512-1t9N35ZMQZTYZmRDoh1mBVd0XwLB34BkBywNJ0+YlLLYxaDBjFR/I+fqwsY746ayYPBz6yNRg8JpLyFgNF+eHg==",
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.6.tgz",
"integrity": "sha512-tl0reHpsY/aKlLGhXeFlQWlYAQHFxTkFqC8tq8jXRYpQSnLVw13T6swMaourLd7EXqHdWsc+5ggsB+fEep6xZQ==",
"dependencies": {
"min-dash": "^3.5.2",
"moddle": "^5.0.2",
@ -8471,9 +8471,9 @@
"dev": true
},
"node_modules/tiny-svg": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.3.tgz",
"integrity": "sha512-u5KGg889pD1W2c9GlLrTnAGzIkAO00/VXZGyzeiGHw+b9er8McLO0SnhxPQQDwDqFO0MrJ825AEsRUoTiDZFuQ=="
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.4.tgz",
"integrity": "sha512-NOi39lBknf4UdDEahNkbEAJnzhu1ZcN2j75IS2vLRmIhsfxdZpTChfLKBcN1ShplVmPIXJAIafk6YY5/Aa80lQ=="
},
"node_modules/tinydate": {
"version": "1.3.0",
@ -10489,9 +10489,9 @@
}
},
"@bpmn-io/properties-panel": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/@bpmn-io/properties-panel/-/properties-panel-0.18.0.tgz",
"integrity": "sha512-2OCc6QplFKlCG8hmsAuUvd0JJTPjGvTJ6zxO73R9TpnUw7PKsXq2oIJjJfWsNdmvpmkxeyHoklOf5XpQXFjygw==",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/@bpmn-io/properties-panel/-/properties-panel-0.19.0.tgz",
"integrity": "sha512-cw+MfA2gpCBsa9Q0+JT3Gc7OvR1NGXuyQj4yOk5QoQHNzxuIMNuz6EX2NvDsCrf0oSzc9z0FapbzDuJB+DSC1g==",
"requires": {
"@bpmn-io/feel-editor": "0.2.0",
"classnames": "^2.3.1",
@ -11408,26 +11408,26 @@
}
},
"bpmn-js": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-9.2.2.tgz",
"integrity": "sha512-Zs0e3fKEKIrnfVt+r4hkcqSg2XyMdXwp6x4xM0TDfGlduxyQWQ8rrqsjvnL4UEg4K0noBPqDce2vRawOilwReg==",
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-9.4.0.tgz",
"integrity": "sha512-7dusZBYCFognA0TmspWaKZ47UjFhyRT+//hMdyLtPCKY1M0uAPXHoFv73MohlsEa7a75h0q6zjCj5W0/RHBwvg==",
"requires": {
"bpmn-moddle": "^7.1.2",
"bpmn-moddle": "^7.1.3",
"css.escape": "^1.5.1",
"diagram-js": "^8.5.0",
"diagram-js": "^8.9.0",
"diagram-js-direct-editing": "^1.7.0",
"ids": "^1.0.0",
"inherits-browser": "0.0.1",
"min-dash": "^3.5.2",
"min-dom": "^3.2.0",
"min-dom": "^3.2.1",
"object-refs": "^0.3.0",
"tiny-svg": "^2.2.2"
"tiny-svg": "^2.2.4"
}
},
"bpmn-js-properties-panel": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/bpmn-js-properties-panel/-/bpmn-js-properties-panel-1.4.0.tgz",
"integrity": "sha512-+15Yg7FohrdpDuKqegxU9OyGgYcH6sZM06DjwBLKrpqHgmXEXMA0yD0UI9Rc95P4mRfsT4rAzGpZjYnsYgOshg==",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bpmn-js-properties-panel/-/bpmn-js-properties-panel-1.5.0.tgz",
"integrity": "sha512-0VAPk6xK/u+GepjGjt8HAXtBa2ab5o4Dkn5II8UgnFMoQThpvrsLras3vh1il8j/2vPhngAsfiA8z7Y9nJ6/Hw==",
"requires": {
"@bpmn-io/element-templates-validator": "^0.9.0",
"@bpmn-io/extract-process-variables": "^0.5.0",
@ -11441,13 +11441,13 @@
}
},
"bpmn-moddle": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-7.1.2.tgz",
"integrity": "sha512-Sax4LokRCTqlg26njjULN3ZGtCmwH5gZVUZTRF0jwJk+YpMQhSfSoUECxjNv8OROoLxu8Z+MjdOHIxgvJf7KwA==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-7.1.3.tgz",
"integrity": "sha512-ZcBfw0NSOdYTSXFKEn7MOXHItz7VfLZTrFYKO8cK6V8ZzGjCcdiLIOiw7Lctw1PJsihhLiZQS8Htj2xKf+NwCg==",
"requires": {
"min-dash": "^3.5.2",
"moddle": "^5.0.2",
"moddle-xml": "^9.0.5"
"moddle-xml": "^9.0.6"
}
},
"brace-expansion": {
@ -11943,12 +11943,12 @@
"dev": true
},
"diagram-js": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-8.5.0.tgz",
"integrity": "sha512-UHA/Zfs7kG22M9wXAifAyPb2OZ4lG4lFi0CZ0GC6/lXmOsSHwHVZ1s/h9UqaIXnzIKW8SnZoP3Rwqel1ZhZLzg==",
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-8.9.0.tgz",
"integrity": "sha512-577bUEbkwZ7id4SCXcD2qrlKoRPXry2SDSPt5T6tEOjwKrTllKr5d1HZoJzGws4VMQq5fmY51Gce1iFT9S4Dlw==",
"requires": {
"css.escape": "^1.5.1",
"didi": "^8.0.0",
"didi": "^8.0.1",
"hammerjs": "^2.0.1",
"inherits-browser": "0.0.1",
"min-dash": "^3.5.2",
@ -11968,9 +11968,9 @@
}
},
"didi": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/didi/-/didi-8.0.0.tgz",
"integrity": "sha512-PwqTBaYzzfJSyxvpXPcTWF6nDdCKx2mFAU5eup1ZSb5wbaAS9a/HiKdtcAUdie/VMLHoFI50jkYZcA+bhUOugw=="
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/didi/-/didi-8.0.1.tgz",
"integrity": "sha512-7oXiXbp8DHE3FfQsVBkc2pwePo3Jy2uyGS9trAeBmfxiZAP4WV23LWokRpMmyl3hlu8OEAsyMxx19i5P6TVaJQ=="
},
"diff": {
"version": "5.0.0",
@ -14157,9 +14157,9 @@
}
},
"moddle-xml": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.5.tgz",
"integrity": "sha512-1t9N35ZMQZTYZmRDoh1mBVd0XwLB34BkBywNJ0+YlLLYxaDBjFR/I+fqwsY746ayYPBz6yNRg8JpLyFgNF+eHg==",
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-9.0.6.tgz",
"integrity": "sha512-tl0reHpsY/aKlLGhXeFlQWlYAQHFxTkFqC8tq8jXRYpQSnLVw13T6swMaourLd7EXqHdWsc+5ggsB+fEep6xZQ==",
"requires": {
"min-dash": "^3.5.2",
"moddle": "^5.0.2",
@ -15527,9 +15527,9 @@
"dev": true
},
"tiny-svg": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.3.tgz",
"integrity": "sha512-u5KGg889pD1W2c9GlLrTnAGzIkAO00/VXZGyzeiGHw+b9er8McLO0SnhxPQQDwDqFO0MrJ825AEsRUoTiDZFuQ=="
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.4.tgz",
"integrity": "sha512-NOi39lBknf4UdDEahNkbEAJnzhu1ZcN2j75IS2vLRmIhsfxdZpTChfLKBcN1ShplVmPIXJAIafk6YY5/Aa80lQ=="
},
"tinydate": {
"version": "1.3.0",

View File

@ -73,9 +73,9 @@
"webpack-cli": "^4.9.2"
},
"dependencies": {
"@bpmn-io/properties-panel": "^0.18.0",
"bpmn-js": "^9.2.2",
"bpmn-js-properties-panel": "^1.2.0",
"@bpmn-io/properties-panel": "^0.19.0",
"bpmn-js": "^9.4.0",
"bpmn-js-properties-panel": "^1.5.0",
"diagram-js": "^8.5.0",
"inherits": "^2.0.4",
"inherits-browser": "^0.0.1",