use of org.eclipse.bpmn2.Lane in project kie-wb-common by kiegroup.
the class AbstractProcessConverter method convertLaneSets.
private void convertLaneSets(List<LaneSet> laneSets, Map<String, BpmnNode> freeFloatingNodes, BpmnNode firstDiagramNode) {
laneSets.stream().flatMap(laneSet -> laneSet.getLanes().stream()).forEach(lane -> {
BpmnNode laneNode = converterFactory.laneConverter().convert(lane);
laneNode.setParent(firstDiagramNode);
lane.getFlowNodeRefs().forEach(node -> {
freeFloatingNodes.get(node.getId()).setParent(laneNode);
});
});
}
use of org.eclipse.bpmn2.Lane in project kie-wb-common by kiegroup.
the class Bpmn2JsonMarshaller method marshallLanes.
private List<String> marshallLanes(Lane lane, BPMNPlane plane, JsonGenerator generator, float xOffset, float yOffset, String preProcessingData, Definitions def) throws JsonGenerationException, IOException {
Bounds bounds = ((BPMNShape) findDiagramElement(plane, lane)).getBounds();
List<String> nodeRefIds = new ArrayList<String>();
if (bounds != null) {
generator.writeStartObject();
generator.writeObjectField("resourceId", lane.getId());
Map<String, Object> laneProperties = new LinkedHashMap<String, Object>();
if (lane.getName() != null) {
laneProperties.put(NAME, StringEscapeUtils.unescapeXml(lane.getName()));
} else {
laneProperties.put(NAME, "");
}
// overwrite name if elementname extension element is present
String elementName = Utils.getMetaDataValue(lane.getExtensionValues(), "elementname");
if (elementName != null) {
laneProperties.put(NAME, elementName);
}
putDocumentationProperty(lane, laneProperties);
Iterator<FeatureMap.Entry> iter = lane.getAnyAttribute().iterator();
boolean foundBgColor = false;
boolean foundBrColor = false;
boolean foundFontColor = false;
boolean foundSelectable = false;
while (iter.hasNext()) {
FeatureMap.Entry entry = iter.next();
if (entry.getEStructuralFeature().getName().equals("background-color") || entry.getEStructuralFeature().getName().equals("bgcolor")) {
laneProperties.put(BGCOLOR, entry.getValue());
foundBgColor = true;
}
if (entry.getEStructuralFeature().getName().equals("border-color") || entry.getEStructuralFeature().getName().equals("bordercolor")) {
laneProperties.put(BORDERCOLOR, entry.getValue());
foundBrColor = true;
}
if (entry.getEStructuralFeature().getName().equals("fontsize")) {
laneProperties.put(FONTSIZE, entry.getValue());
foundBrColor = true;
}
if (entry.getEStructuralFeature().getName().equals("color") || entry.getEStructuralFeature().getName().equals("fontcolor")) {
laneProperties.put(FONTCOLOR, entry.getValue());
foundFontColor = true;
}
if (entry.getEStructuralFeature().getName().equals("selectable")) {
laneProperties.put(ISSELECTABLE, entry.getValue());
foundSelectable = true;
}
}
if (!foundBgColor) {
laneProperties.put(BGCOLOR, defaultBgColor_Swimlanes);
}
if (!foundBrColor) {
laneProperties.put(BORDERCOLOR, defaultBrColor);
}
if (!foundFontColor) {
laneProperties.put(FONTCOLOR, defaultFontColor);
}
if (!foundSelectable) {
laneProperties.put(ISSELECTABLE, "true");
}
marshallProperties(laneProperties, generator);
generator.writeObjectFieldStart("stencil");
generator.writeObjectField("id", "Lane");
generator.writeEndObject();
generator.writeArrayFieldStart("childShapes");
for (FlowElement flowElement : lane.getFlowNodeRefs()) {
nodeRefIds.add(flowElement.getId());
if (coordianteManipulation) {
marshallFlowElement(flowElement, plane, generator, bounds.getX(), bounds.getY(), preProcessingData, def);
} else {
marshallFlowElement(flowElement, plane, generator, 0, 0, preProcessingData, def);
}
}
generator.writeEndArray();
generator.writeArrayFieldStart("outgoing");
Process process = (Process) plane.getBpmnElement();
writeAssociations(process, lane.getId(), generator);
generator.writeEndArray();
generator.writeObjectFieldStart("bounds");
generator.writeObjectFieldStart("lowerRight");
generator.writeObjectField("x", bounds.getX() + bounds.getWidth() - xOffset);
generator.writeObjectField("y", bounds.getY() + bounds.getHeight() - yOffset);
generator.writeEndObject();
generator.writeObjectFieldStart("upperLeft");
generator.writeObjectField("x", bounds.getX() - xOffset);
generator.writeObjectField("y", bounds.getY() - yOffset);
generator.writeEndObject();
generator.writeEndObject();
generator.writeEndObject();
} else {
// dont marshall the lane unless it has BPMNDI info (eclipse editor does not generate it for lanes currently.
for (FlowElement flowElement : lane.getFlowNodeRefs()) {
nodeRefIds.add(flowElement.getId());
// we dont want an offset here!
marshallFlowElement(flowElement, plane, generator, 0, 0, preProcessingData, def);
}
}
return nodeRefIds;
}
use of org.eclipse.bpmn2.Lane in project kie-wb-common by kiegroup.
the class SubProcessPropertyWriter method addLaneSet.
public void addLaneSet(List<LanePropertyWriter> lanes) {
if (lanes.isEmpty()) {
return;
}
LaneSet laneSet = bpmn2.createLaneSet();
List<org.eclipse.bpmn2.Lane> laneList = laneSet.getLanes();
lanes.forEach(l -> laneList.add(l.getElement()));
process.getLaneSets().add(laneSet);
lanes.forEach(l -> {
this.childElements.put(l.getElement().getId(), l);
});
}
use of org.eclipse.bpmn2.Lane in project kie-wb-common by kiegroup.
the class LanePropertyWriterTest method JBPM_7523_shouldPreserveNameChars.
@Test
public void JBPM_7523_shouldPreserveNameChars() {
Lane lane = bpmn2.createLane();
PropertyWriterFactory writerFactory = new PropertyWriterFactory();
LanePropertyWriter w = writerFactory.of(lane);
String aWeirdName = " XXX !!@@ <><> ";
String aWeirdDoc = " XXX !!@@ <><> Docs ";
w.setName(aWeirdName);
w.setDocumentation(aWeirdDoc);
assertThat(lane.getName()).isEqualTo(StringEscapeUtils.escapeXml10(aWeirdName.trim()));
assertThat(CustomElement.name.of(lane).get()).isEqualTo(asCData(aWeirdName));
assertThat(lane.getDocumentation().get(0).getText()).isEqualTo(asCData(aWeirdDoc));
}
use of org.eclipse.bpmn2.Lane in project kie-wb-common by kiegroup.
the class ProcessConverterDelegateTest method testConvertLanes.
@Test
public void testConvertLanes() {
Task task0_1 = mockTask("TASK0_1");
Task task0_2 = mockTask("TASK0_2");
Task task0_3 = mockTask("TASK0_3");
Task task1_1 = mockTask("TASK1_1");
Lane lane1 = mockLane("Lane1", "Lane1Name", task1_1);
Task task2_1 = mockTask("TASK2_1");
Lane lane2 = mockLane("Lane2", "Lane2Name", task2_1);
LaneSet laneSet1 = mockLaneSet("LaneSet1", lane1, lane2);
Task task3_2_1 = mockTask("TASK3_2_1");
Task task3_2_2 = mockTask("TASK3_2_2");
Lane lane3_2 = mockLane("Lane3_2", "Lane3_2Name", task3_2_1, task3_2_2);
Task task3_1_2_1 = mockTask("TASK3_1_2_1");
Lane lane3_1_2 = mockLane("Lane3_1_2", "Lane3_1_2Name", task3_1_2_1);
Task task3_1_1_1_1 = mockTask("task3_1_1_1_1");
Lane lane3_1_1_1 = mockLane("Lane3_1_1_1", "lane3_1_1_1Name", task3_1_1_1_1);
Task task3_1_1_2_1 = mockTask("task3_1_1_2_1");
Lane lane3_1_1_2 = mockLane("Lane3_1_1_2", "lane3_1_1_2Name", task3_1_1_2_1);
Lane lane3_1_1 = mockLane("Lane3_1_1", "Lane3_1_1Name", mockLaneSet("laneSet3_1_1", lane3_1_1_1, lane3_1_1_2));
Lane lane3_1 = mockLane("Lane3_1", "Lane3_1Name", mockLaneSet("laneSet3_1", lane3_1_1, lane3_1_2));
Lane lane3 = mockLane("Lane3", "Lane3Name", mockLaneSet("LaneSet3", lane3_1, lane3_2));
LaneSet laneSet2 = mockLaneSet("LaneSet2", lane3);
List<FlowElement> flowElements = Arrays.asList(task0_1, task0_2, task0_3, task1_1, task2_1, task3_1_1_1_1, task3_1_1_2_1, task3_1_2_1, task3_2_1, task3_2_2);
List<LaneSet> laneSets = Arrays.asList(laneSet1, laneSet2);
Result<Map<String, BpmnNode>> result = converterDelegate.convertChildNodes(parentNode, flowElements, laneSets);
Map<String, BpmnNode> nodes = result.value();
assertEquals(16, nodes.size());
assertEquals(9, parentNode.getChildren().size());
assertHasChildren(parentNode, task0_1.getId(), task0_2.getId(), task0_3.getId(), lane1.getId(), lane2.getId(), lane3_2.getId(), lane3_1_2.getId(), lane3_1_1_1.getId(), lane3_1_1_2.getId());
BpmnNode lane1Node = getChildById(parentNode, lane1.getId());
assertNotNull(lane1Node);
assertHasChildren(lane1Node, task1_1.getId());
BpmnNode lane2Node = getChildById(parentNode, lane2.getId());
assertNotNull(lane2Node);
assertHasChildren(lane2Node, task2_1.getId());
BpmnNode lane3_1_1_1Node = getChildById(parentNode, lane3_1_1_1.getId());
assertNotNull(lane3_1_1_1Node);
assertHasChildren(lane3_1_1_1Node, task3_1_1_1_1.getId());
BpmnNode lane3_1_1_2Node = getChildById(parentNode, lane3_1_1_2.getId());
assertNotNull(lane3_1_1_2Node);
assertHasChildren(lane3_1_1_2Node, task3_1_1_2_1.getId());
BpmnNode lane3_1_2Node = getChildById(parentNode, lane3_1_2.getId());
assertNotNull(lane3_1_2Node);
assertHasChildren(lane3_1_2Node, task3_1_2_1.getId());
BpmnNode lane3_2Node = getChildById(parentNode, lane3_2.getId());
assertHasChildren(lane3_2Node);
assertHasChildren(lane3_2Node, task3_2_1.getId(), task3_2_2.getId());
// assert messages for converted lane sets
List<MarshallingMessage> messages = result.messages();
assertEquals(4, messages.size());
assertTrue(messages.stream().map(MarshallingMessage::getMessageKey).allMatch(MarshallingMessageKeys.childLaneSetConverted::equals));
}
Aggregations