@Override protected void writeAdditionalAttributes(BaseElement element, XMLStreamWriter xtw) throws Exception { ServiceTask serviceTask = (ServiceTask) element; if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(serviceTask.getImplementationType())) { writeQualifiedAttribute(ATTRIBUTE_TASK_SERVICE_CLASS, serviceTask.getImplementation(), xtw); } else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.equals( serviceTask.getImplementationType())) { writeQualifiedAttribute( ATTRIBUTE_TASK_SERVICE_EXPRESSION, serviceTask.getImplementation(), xtw); } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals( serviceTask.getImplementationType())) { writeQualifiedAttribute( ATTRIBUTE_TASK_SERVICE_DELEGATEEXPRESSION, serviceTask.getImplementation(), xtw); } if (StringUtils.isNotEmpty(serviceTask.getResultVariableName())) { writeQualifiedAttribute( ATTRIBUTE_TASK_SERVICE_RESULTVARIABLE, serviceTask.getResultVariableName(), xtw); } if (StringUtils.isNotEmpty(serviceTask.getType())) { writeQualifiedAttribute(ATTRIBUTE_TYPE, serviceTask.getType(), xtw); } if (StringUtils.isNotEmpty(serviceTask.getExtensionId())) { writeQualifiedAttribute( ATTRIBUTE_TASK_SERVICE_EXTENSIONID, serviceTask.getExtensionId(), xtw); } }
protected void convertElementToJson(ObjectNode propertiesNode, FlowElement flowElement) { ServiceTask serviceTask = (ServiceTask) flowElement; if ("mail".equalsIgnoreCase(serviceTask.getType())) { setPropertyFieldValue(PROPERTY_MAILTASK_TO, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_FROM, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_SUBJECT, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_CC, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_BCC, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_TEXT, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_HTML, serviceTask, propertiesNode); setPropertyFieldValue(PROPERTY_MAILTASK_CHARSET, serviceTask, propertiesNode); } else { if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals( serviceTask.getImplementationType())) { propertiesNode.put(PROPERTY_SERVICETASK_CLASS, serviceTask.getImplementation()); } else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.equals( serviceTask.getImplementationType())) { propertiesNode.put(PROPERTY_SERVICETASK_EXPRESSION, serviceTask.getImplementation()); } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals( serviceTask.getImplementationType())) { propertiesNode.put( PROPERTY_SERVICETASK_DELEGATE_EXPRESSION, serviceTask.getImplementation()); } if (StringUtils.isNotEmpty(serviceTask.getResultVariableName())) { propertiesNode.put( PROPERTY_SERVICETASK_RESULT_VARIABLE, serviceTask.getResultVariableName()); } addFieldExtensions(serviceTask.getFieldExtensions(), propertiesNode); } }
public void convertToJson( BaseElement baseElement, ActivityProcessor processor, BpmnModel model, FlowElementsContainer container, ArrayNode shapesArrayNode, double subProcessX, double subProcessY) { this.model = model; this.processor = processor; this.subProcessX = subProcessX; this.subProcessY = subProcessY; this.shapesArrayNode = shapesArrayNode; GraphicInfo graphicInfo = model.getGraphicInfo(baseElement.getId()); String stencilId = null; if (baseElement instanceof ServiceTask) { ServiceTask serviceTask = (ServiceTask) baseElement; if ("mail".equalsIgnoreCase(serviceTask.getType())) { stencilId = STENCIL_TASK_MAIL; } else if ("camel".equalsIgnoreCase(serviceTask.getType())) { stencilId = STENCIL_TASK_CAMEL; } else if ("mule".equalsIgnoreCase(serviceTask.getType())) { stencilId = STENCIL_TASK_MULE; } else { stencilId = getStencilId(baseElement); } } else { stencilId = getStencilId(baseElement); } flowElementNode = BpmnJsonConverterUtil.createChildShape( baseElement.getId(), stencilId, graphicInfo.getX() - subProcessX + graphicInfo.getWidth(), graphicInfo.getY() - subProcessY + graphicInfo.getHeight(), graphicInfo.getX() - subProcessX, graphicInfo.getY() - subProcessY); shapesArrayNode.add(flowElementNode); ObjectNode propertiesNode = objectMapper.createObjectNode(); propertiesNode.put(PROPERTY_OVERRIDE_ID, baseElement.getId()); if (baseElement instanceof FlowElement) { FlowElement flowElement = (FlowElement) baseElement; if (StringUtils.isNotEmpty(flowElement.getName())) { propertiesNode.put(PROPERTY_NAME, flowElement.getName()); } if (StringUtils.isNotEmpty(flowElement.getDocumentation())) { propertiesNode.put(PROPERTY_DOCUMENTATION, flowElement.getDocumentation()); } } convertElementToJson(propertiesNode, baseElement); flowElementNode.put(EDITOR_SHAPE_PROPERTIES, propertiesNode); ArrayNode outgoingArrayNode = objectMapper.createArrayNode(); if (baseElement instanceof FlowNode) { FlowNode flowNode = (FlowNode) baseElement; for (SequenceFlow sequenceFlow : flowNode.getOutgoingFlows()) { outgoingArrayNode.add(BpmnJsonConverterUtil.createResourceNode(sequenceFlow.getId())); } for (MessageFlow messageFlow : model.getMessageFlows().values()) { if (messageFlow.getSourceRef().equals(flowNode.getId())) { outgoingArrayNode.add(BpmnJsonConverterUtil.createResourceNode(messageFlow.getId())); } } } if (baseElement instanceof Activity) { Activity activity = (Activity) baseElement; for (BoundaryEvent boundaryEvent : activity.getBoundaryEvents()) { outgoingArrayNode.add(BpmnJsonConverterUtil.createResourceNode(boundaryEvent.getId())); } propertiesNode.put(PROPERTY_ASYNCHRONOUS, activity.isAsynchronous()); propertiesNode.put(PROPERTY_EXCLUSIVE, !activity.isNotExclusive()); if (activity.getLoopCharacteristics() != null) { MultiInstanceLoopCharacteristics loopDef = activity.getLoopCharacteristics(); if (StringUtils.isNotEmpty(loopDef.getLoopCardinality()) || StringUtils.isNotEmpty(loopDef.getInputDataItem()) || StringUtils.isNotEmpty(loopDef.getCompletionCondition())) { if (loopDef.isSequential() == false) { propertiesNode.put(PROPERTY_MULTIINSTANCE_TYPE, "Parallel"); } else { propertiesNode.put(PROPERTY_MULTIINSTANCE_TYPE, "Sequential"); } if (StringUtils.isNotEmpty(loopDef.getLoopCardinality())) { propertiesNode.put(PROPERTY_MULTIINSTANCE_CARDINALITY, loopDef.getLoopCardinality()); } if (StringUtils.isNotEmpty(loopDef.getInputDataItem())) { propertiesNode.put(PROPERTY_MULTIINSTANCE_COLLECTION, loopDef.getInputDataItem()); } if (StringUtils.isNotEmpty(loopDef.getElementVariable())) { propertiesNode.put(PROPERTY_MULTIINSTANCE_VARIABLE, loopDef.getElementVariable()); } if (StringUtils.isNotEmpty(loopDef.getCompletionCondition())) { propertiesNode.put(PROPERTY_MULTIINSTANCE_CONDITION, loopDef.getCompletionCondition()); } } } if (activity instanceof UserTask) { BpmnJsonConverterUtil.convertListenersToJson( ((UserTask) activity).getTaskListeners(), false, propertiesNode); } BpmnJsonConverterUtil.convertListenersToJson( activity.getExecutionListeners(), true, propertiesNode); if (CollectionUtils.isNotEmpty(activity.getDataInputAssociations())) { for (DataAssociation dataAssociation : activity.getDataInputAssociations()) { if (model.getFlowElement(dataAssociation.getSourceRef()) != null) { createDataAssociation(dataAssociation, true, activity); } } } if (CollectionUtils.isNotEmpty(activity.getDataOutputAssociations())) { for (DataAssociation dataAssociation : activity.getDataOutputAssociations()) { if (model.getFlowElement(dataAssociation.getTargetRef()) != null) { createDataAssociation(dataAssociation, false, activity); outgoingArrayNode.add( BpmnJsonConverterUtil.createResourceNode(dataAssociation.getId())); } } } } for (Artifact artifact : container.getArtifacts()) { if (artifact instanceof Association) { Association association = (Association) artifact; if (StringUtils.isNotEmpty(association.getSourceRef()) && association.getSourceRef().equals(baseElement.getId())) { outgoingArrayNode.add(BpmnJsonConverterUtil.createResourceNode(association.getId())); } } } if (baseElement instanceof DataStoreReference) { for (Process process : model.getProcesses()) { processDataStoreReferences(process, baseElement.getId(), outgoingArrayNode); } } flowElementNode.put("outgoing", outgoingArrayNode); }