@Override protected BaseElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { GraphicInfo graphicInfo = new GraphicInfo(); graphicInfo.setX(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_X))); graphicInfo.setY(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_Y))); graphicInfo.setWidth(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_WIDTH))); graphicInfo.setHeight(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_HEIGHT))); conversionHelper.getCurrentDiShape().setGraphicInfo(graphicInfo); return graphicInfo; }
protected void fillDiagramInfo(GraphicInfo graphicInfo, GraphicInfo diagramInfo) { double rightX = graphicInfo.getX() + graphicInfo.getWidth(); double bottomY = graphicInfo.getY() + graphicInfo.getHeight(); double middleX = graphicInfo.getX() + (graphicInfo.getWidth() / 2); if (middleX < diagramInfo.getX()) { diagramInfo.setX(middleX); } if (graphicInfo.getY() < diagramInfo.getY()) { diagramInfo.setY(graphicInfo.getY()); } if (rightX > diagramInfo.getWidth()) { diagramInfo.setWidth(rightX); } if (bottomY > diagramInfo.getHeight()) { diagramInfo.setHeight(bottomY); } } }
protected ObjectNode processCaseElements(CmmnModel pojoModel, Set<String> completedElements, Set<String> activeElements, Set<String> availableElements) { ObjectNode displayNode = objectMapper.createObjectNode(); GraphicInfo diagramInfo = new GraphicInfo(); diagramInfo.setX(9999); diagramInfo.setY(1000); displayNode.set("flows", associationArray); displayNode.put("diagramBeginX", diagramInfo.getX()); displayNode.put("diagramBeginY", diagramInfo.getY()); displayNode.put("diagramWidth", diagramInfo.getWidth()); displayNode.put("diagramHeight", diagramInfo.getHeight()); return displayNode;
@Override protected BaseElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) { GraphicInfo graphicInfo = new GraphicInfo(); graphicInfo.setX(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_X))); graphicInfo.setY(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_Y))); conversionHelper.getCurrentDiEdge().addWaypoint(graphicInfo); return graphicInfo; }
protected static void createCmmnEdge(CmmnModel model, String associationId, String sourceElementId, String targetElementId, XMLStreamWriter xtw) throws Exception { xtw.writeStartElement(CMMNDI_PREFIX, ELEMENT_DI_EDGE, CMMNDI_NAMESPACE); String edgeId = associationId; if (!edgeId.startsWith("CMMNEdge_")) { edgeId = "CMMNEdge_" + associationId; } xtw.writeAttribute(ATTRIBUTE_ID, edgeId); xtw.writeAttribute(ATTRIBUTE_DI_CMMN_ELEMENT_REF, sourceElementId); xtw.writeAttribute(ATTRIBUTE_DI_TARGET_CMMN_ELEMENT_REF, targetElementId); List<GraphicInfo> graphicInfoList = model.getFlowLocationGraphicInfo(associationId); for (GraphicInfo graphicInfo : graphicInfoList) { xtw.writeStartElement(OMGDI_PREFIX, ELEMENT_DI_WAYPOINT, OMGDI_NAMESPACE); xtw.writeAttribute(ATTRIBUTE_DI_X, String.valueOf(graphicInfo.getX())); xtw.writeAttribute(ATTRIBUTE_DI_Y, String.valueOf(graphicInfo.getY())); xtw.writeEndElement(); } // The xsd requires a CMMNLabel to be there, even though the spec text says it's optional xtw.writeStartElement(CMMNDI_PREFIX, ELEMENT_DI_LABEL, CMMNDI_NAMESPACE); xtw.writeEndElement(); xtw.writeEndElement(); } }
@RequestMapping(value = "/rest/models/{processModelId}/history/{processModelHistoryId}/model-json", method = RequestMethod.GET, produces = "application/json") public JsonNode getModelHistoryJSON(@PathVariable String processModelId, @PathVariable String processModelHistoryId) { ObjectNode displayNode = objectMapper.createObjectNode(); ModelHistory model = modelService.getModelHistory(processModelId, processModelHistoryId); if (model.getModelType() != null && AbstractModel.MODEL_TYPE_CMMN == model.getModelType()) { cmmnDisplayJsonConverter.processCaseElements(model, displayNode, new org.flowable.cmmn.model.GraphicInfo()); } else { bpmnDisplayJsonConverter.processProcessElements(model, displayNode, new GraphicInfo()); } return displayNode; } }
diagramInfo.setX(9999); diagramInfo.setY(1000); displayNode.set("flows", flowArray); displayNode.put("diagramBeginX", diagramInfo.getX()); displayNode.put("diagramBeginY", diagramInfo.getY()); displayNode.put("diagramWidth", diagramInfo.getWidth()); displayNode.put("diagramHeight", diagramInfo.getHeight());
@RequestMapping(value = "/rest/models/{modelId}/model-json", method = RequestMethod.GET, produces = "application/json") public JsonNode getModelJSON(@PathVariable String modelId) { ObjectNode displayNode = objectMapper.createObjectNode(); Model model = modelService.getModel(modelId); if (model.getModelType() != null && AbstractModel.MODEL_TYPE_CMMN == model.getModelType()) { cmmnDisplayJsonConverter.processCaseElements(model, displayNode, new org.flowable.cmmn.model.GraphicInfo()); } else { bpmnDisplayJsonConverter.processProcessElements(model, displayNode, new GraphicInfo()); } return displayNode; }
protected void fillDiagramInfo(GraphicInfo graphicInfo, GraphicInfo diagramInfo) { double rightX = graphicInfo.getX() + graphicInfo.getWidth(); double bottomY = graphicInfo.getY() + graphicInfo.getHeight(); double middleX = graphicInfo.getX() + (graphicInfo.getWidth() / 2); if (middleX < diagramInfo.getX()) { diagramInfo.setX(middleX); } if (graphicInfo.getY() < diagramInfo.getY()) { diagramInfo.setY(graphicInfo.getY()); } if (rightX > diagramInfo.getWidth()) { diagramInfo.setWidth(rightX); } if (bottomY > diagramInfo.getHeight()) { diagramInfo.setHeight(bottomY); } } }
protected static void createCmmnShape(CmmnModel model, String elementId, XMLStreamWriter xtw) throws Exception { xtw.writeStartElement(CMMNDI_PREFIX, ELEMENT_DI_SHAPE, CMMNDI_NAMESPACE); String shapeId = "CMMNShape_" + elementId; xtw.writeAttribute(ATTRIBUTE_ID, shapeId); xtw.writeAttribute(ATTRIBUTE_DI_CMMN_ELEMENT_REF, elementId); GraphicInfo graphicInfo = model.getGraphicInfo(elementId); xtw.writeStartElement(OMGDC_PREFIX, ELEMENT_DI_BOUNDS, OMGDC_NAMESPACE); xtw.writeAttribute(ATTRIBUTE_DI_HEIGHT, String.valueOf(graphicInfo.getHeight())); xtw.writeAttribute(ATTRIBUTE_DI_WIDTH, String.valueOf(graphicInfo.getWidth())); xtw.writeAttribute(ATTRIBUTE_DI_X, String.valueOf(graphicInfo.getX())); xtw.writeAttribute(ATTRIBUTE_DI_Y, String.valueOf(graphicInfo.getY())); xtw.writeEndElement(); // The xsd requires a CMMNLabel to be there, even though the spec text says it's optional xtw.writeStartElement(CMMNDI_PREFIX, ELEMENT_DI_LABEL, CMMNDI_NAMESPACE); xtw.writeEndElement(); xtw.writeEndElement(); }
@RequestMapping(value = "/rest/admin/case-definitions/{caseDefinitionId}/model-json", method = RequestMethod.GET, produces = "application/json") public JsonNode getCaseDefinitionModelJSON(@PathVariable String caseDefinitionId) { ServerConfig config = retrieveServerConfig(EndpointType.CMMN); ObjectNode displayNode = objectMapper.createObjectNode(); CmmnModel pojoModel = clientService.getCaseDefinitionModel(config, caseDefinitionId); if (!pojoModel.getLocationMap().isEmpty()) { try { GraphicInfo diagramInfo = new GraphicInfo(); processCaseElements(config, pojoModel, displayNode, diagramInfo); displayNode.put("diagramBeginX", diagramInfo.getX()); displayNode.put("diagramBeginY", diagramInfo.getY()); displayNode.put("diagramWidth", diagramInfo.getWidth()); displayNode.put("diagramHeight", diagramInfo.getHeight()); } catch (Exception e) { LOGGER.error("Error creating model JSON", e); } } return displayNode; }