提交 bf868f3b 编写于 作者: I Igor Dianov 提交者: mergify[bot]

fix: Support BPMN Message Events XML export/import for correlationKey and...

fix: Support BPMN Message Events XML export/import for correlationKey and messageExpression attributes (#2899)

* fix: add MessageEventDefinition  correlationKey BPMN XML converter tests

* fix: support messageExpression attribute BPMN Xml import/export
上级 559b3300
......@@ -477,6 +477,21 @@ public abstract class BaseBpmnXMLConverter implements BpmnXMLConstants {
}
}
writeDefaultAttribute(ATTRIBUTE_MESSAGE_REF, messageRef, xtw);
if (StringUtils.isNotEmpty(messageDefinition.getCorrelationKey())) {
xtw.writeAttribute(ACTIVITI_EXTENSIONS_PREFIX,
ACTIVITI_EXTENSIONS_NAMESPACE,
ATTRIBUTE_MESSAGE_CORRELATION_KEY,
messageDefinition.getCorrelationKey());
}
if (StringUtils.isNotEmpty(messageDefinition.getMessageExpression())) {
xtw.writeAttribute(ACTIVITI_EXTENSIONS_PREFIX,
ACTIVITI_EXTENSIONS_NAMESPACE,
ATTRIBUTE_MESSAGE_EXPRESSION,
messageDefinition.getMessageExpression());
}
boolean didWriteExtensionStartElement = BpmnXMLUtil.writeExtensionElements(messageDefinition, false, xtw);
if (didWriteExtensionStartElement) {
xtw.writeEndElement();
......
package org.activiti.editor.language.xml;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import org.activiti.bpmn.model.BoundaryEvent;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.EventSubProcess;
import org.activiti.bpmn.model.IntermediateCatchEvent;
import org.activiti.bpmn.model.Message;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.ThrowEvent;
import org.junit.Test;
public class MessageEventDefinitionConverterTest extends AbstractConverterTest {
@Test
public void convertXMLToModel() throws Exception {
BpmnModel bpmnModel = readXMLFile();
validateModel(bpmnModel);
}
@Test
public void convertModelToXML() throws Exception {
BpmnModel bpmnModel = readXMLFile();
BpmnModel parsedModel = exportAndReadXMLFile(bpmnModel);
validateModel(parsedModel);
}
private void validateModel(BpmnModel model) {
Message message = model.getMessage("Message_1");
assertThat(message).isNotNull()
.extracting(Message::getId,
Message::getName)
.contains("Message_1",
"catchMessage");
assertThat(model.getProcessById("intermediateCatchProcess")
.getFlowElements()).filteredOn(IntermediateCatchEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("intermediateThrowProcess")
.getFlowElements()).filteredOn(ThrowEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("endThrowProcess")
.getFlowElements()).filteredOn(EndEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("boundaryCatchProcess")
.getFlowElements()).filteredOn(BoundaryEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("startMessageEventSubprocess")
.getFlowElements()).filteredOn(EventSubProcess.class::isInstance)
.flatExtracting("flowElements")
.filteredOn(StartEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("startMessageProcess")
.getFlowElements()).filteredOn(StartEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", null));
assertThat(model.getProcessById("boundaryCatchSubrocess")
.getFlowElements()).filteredOn(BoundaryEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "correlationKey")
.contains(tuple("Message_1", "${correlationId}"));
assertThat(model.getProcessById("intermediateCatchMessageExpressionProcess")
.getFlowElements()).filteredOn(IntermediateCatchEvent.class::isInstance)
.flatExtracting("eventDefinitions")
.extracting("messageRef", "messageExpression", "correlationKey")
.contains(tuple(null, "catchMessage", "${correlationId}"));
}
protected String getResource() {
return "MessageEventDefinitionConverterTest.bpmn";
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册