use of org.kie.workbench.common.stunner.bpmn.definition.EndCompensationEvent in project kie-wb-common by kiegroup.
the class EndCompensationEventPostConverter method process.
@Override
public void process(ProcessPropertyWriter processWriter, BasePropertyWriter nodeWriter, Node<View<? extends BPMNViewDefinition>, ?> node) {
final ThrowEvent throwEvent = (ThrowEvent) nodeWriter.getElement();
final String activityRef = ((EndCompensationEvent) node.getContent().getDefinition()).getExecutionSet().getActivityRef().getValue();
linkActivityRef(processWriter.getProcess(), throwEvent, activityRef);
}
use of org.kie.workbench.common.stunner.bpmn.definition.EndCompensationEvent in project kie-wb-common by kiegroup.
the class EndEventConverter method compensationEvent.
private PropertyWriter compensationEvent(Node<View<EndCompensationEvent>, ?> n) {
EndEvent event = bpmn2.createEndEvent();
event.setId(n.getUUID());
EndCompensationEvent definition = n.getContent().getDefinition();
ThrowEventPropertyWriter p = propertyWriterFactory.of(event);
BPMNGeneralSet general = definition.getGeneral();
p.setName(general.getName().getValue());
p.setDocumentation(general.getDocumentation().getValue());
p.setMetaData(definition.getAdvancedData().getMetaDataAttributes());
p.addCompensation();
p.setAbsoluteBounds(n);
return p;
}
use of org.kie.workbench.common.stunner.bpmn.definition.EndCompensationEvent in project kie-wb-common by kiegroup.
the class BPMNDirectDiagramMarshallerTest method testUnmarshallEndCompensationEvent.
@Test
@SuppressWarnings("unchecked")
public void testUnmarshallEndCompensationEvent() throws Exception {
Diagram<Graph, Metadata> diagram = unmarshall(BPMN_ENDCOMPENSATIONEVENT);
assertDiagram(diagram, 3);
assertEquals("EndCompensationEvent", diagram.getMetadata().getTitle());
Node<? extends Definition, ?> endEventNode = diagram.getGraph().getNode("_2AEA503B-26E5-4F11-A54D-3E275F8BFA6A");
assertNotNull(endEventNode);
EndCompensationEvent endCompensationEvent = (EndCompensationEvent) endEventNode.getContent().getDefinition();
assertNotNull(endCompensationEvent.getGeneral());
assertEquals("EndCompensationEventName", endCompensationEvent.getGeneral().getName().getValue());
assertEquals("EndCompensationEventDocumentation", endCompensationEvent.getGeneral().getDocumentation().getValue());
assertNotNull(endCompensationEvent.getExecutionSet());
assertEquals("_7795AFA7-E602-4D90-B4B6-249639C4D965", endCompensationEvent.getExecutionSet().getActivityRef().getValue());
}
use of org.kie.workbench.common.stunner.bpmn.definition.EndCompensationEvent in project kie-wb-common by kiegroup.
the class ProcessConverterDelegateTest method testPostConvertNodes.
@Test
@SuppressWarnings("unchecked")
public void testPostConvertNodes() {
TestingGraphMockHandler graphTestHandler = new TestingGraphMockHandler();
BPMNDiagramImpl bpmnDiagram = new BPMNDiagramImpl();
StartNoneEvent level0StartNode = new StartNoneEvent();
EndNoneEvent level0EndNode = new EndNoneEvent();
UserTask level0Node1 = new UserTask();
UserTask level0Node2 = new UserTask();
EmbeddedSubprocess level1SubProcess1 = new EmbeddedSubprocess();
ScriptTask level1Node1 = new ScriptTask();
IntermediateSignalEventThrowing level1Node2 = new IntermediateSignalEventThrowing();
AdHocSubprocess level2SubProcess1 = new AdHocSubprocess();
BusinessRuleTask level2Node1 = new BusinessRuleTask();
EndCompensationEvent level2Node2 = new EndCompensationEvent();
TestingGraphInstanceBuilder2.Level2Graph level2Graph = TestingGraphInstanceBuilder2.buildLevel2Graph(graphTestHandler, bpmnDiagram, level0StartNode, level0Node1, level0Node2, level0EndNode, level1SubProcess1, level1Node1, level1Node2, level2SubProcess1, level2Node1, level2Node2);
DefinitionsBuildingContext ctx = new DefinitionsBuildingContext(level2Graph.graph);
PropertyWriterFactory writerFactory = new PropertyWriterFactory();
ConverterFactory factory = spy(new ConverterFactory(ctx, writerFactory));
FlowElementPostConverter flowElementPostConverter = mock(FlowElementPostConverter.class);
when(factory.flowElementPostConverter()).thenReturn(flowElementPostConverter);
MyProcessConverter abstractProcessConverter = new MyProcessConverter(factory);
ProcessPropertyWriter processWriter = writerFactory.of(bpmn2.createProcess());
abstractProcessConverter.postConvertChildNodes(processWriter, ctx);
verify(flowElementPostConverter, times(10)).postConvert(anyObject(), anyObject(), nodeCaptor.capture());
Map<String, BPMNViewDefinition> nodes = new HashMap<>();
nodes.put(LEVEL0_START_NODE.uuid(), level0StartNode);
nodes.put(LEVEL0_NODE1.uuid(), level0Node1);
nodes.put(LEVEL0_NODE2.uuid(), level0Node2);
nodes.put(LEVEL0_END_NODE.uuid(), level0EndNode);
nodes.put(LEVEL1_SUB_PROCESS1.uuid(), level1SubProcess1);
nodes.put(LEVEL1_NODE1.uuid(), level1Node1);
nodes.put(LEVEL1_NODE2.uuid(), level1Node2);
nodes.put(LEVEL2_SUB_PROCESS1.uuid(), level2SubProcess1);
nodes.put(LEVEL2_NODE1.uuid(), level2Node1);
nodes.put(LEVEL2_NODE2.uuid(), level2Node2);
assertEquals(nodes.size(), nodeCaptor.getAllValues().size());
nodes.entrySet().forEach(entry -> {
Optional<Node<View<? extends BPMNViewDefinition>, ?>> processed = nodeCaptor.getAllValues().stream().filter(captured -> entry.getKey().equals(captured.getUUID())).findFirst();
assertTrue("Node: " + entry.getKey() + " was not present in result", processed.isPresent());
assertEquals(entry.getValue(), processed.get().getContent().getDefinition());
});
}
use of org.kie.workbench.common.stunner.bpmn.definition.EndCompensationEvent in project kie-wb-common by kiegroup.
the class ProcessCompensationRefProvider method getSelectorData.
@Override
@SuppressWarnings("unchecked")
public SelectorData getSelectorData(FormRenderingContext context) {
final Diagram diagram = sessionManager.getCurrentSession().getCanvasHandler().getDiagram();
final String rootUUID = diagram.getMetadata().getCanvasRootUUID();
final Node<?, ? extends Edge> selectedNode = getSelectedNode(diagram, sessionManager.getCurrentSession());
final Map<Object, String> values = new TreeMap<>(SafeComparator.TO_STRING_COMPARATOR);
if (selectedNode != null) {
Node<?, ? extends Edge> currentNode = selectedNode;
final List<Node> compensableNodes = new ArrayList<>();
Node<?, ? extends Edge> parentNode;
int levels = 0;
do {
parentNode = GraphUtils.getParent(currentNode).asNode();
compensableNodes.addAll(getCompensableNodes(parentNode));
if (rootUUID.equals(parentNode.getUUID())) {
levels = 2;
} else if (isSubProcess(parentNode)) {
currentNode = parentNode;
levels++;
} else if (isLane(parentNode)) {
currentNode = parentNode;
}
} while (levels < 2);
compensableNodes.stream().map(node -> buildPair(node.getUUID(), (BPMNDefinition) (((View) node.getContent()).getDefinition()))).forEach(pair -> values.put(pair.getK1(), pair.getK2()));
ActivityRef currentActivityRef = null;
if (isEndCompensationEvent(selectedNode)) {
currentActivityRef = ((EndCompensationEvent) ((View) selectedNode.getContent()).getDefinition()).getExecutionSet().getActivityRef();
} else if (isIntermediateCompensationEventThrowing(selectedNode)) {
currentActivityRef = ((IntermediateCompensationEventThrowing) ((View) selectedNode.getContent()).getDefinition()).getExecutionSet().getActivityRef();
}
if (currentActivityRef != null && !isEmpty(currentActivityRef.getValue()) && !values.containsKey(currentActivityRef.getValue())) {
Node configured = diagram.getGraph().getNode(currentActivityRef.getValue());
if (configured != null) {
Pair<Object, String> pair = buildPair(configured.getUUID(), (BPMNDefinition) ((View) configured.getContent()).getDefinition());
values.put(pair.getK1(), pair.getK2());
}
}
}
return new SelectorData(values, null);
}
Aggregations