diff options
author | YuanHu <yuan.hu1@zte.com.cn> | 2018-03-15 16:17:00 +0800 |
---|---|---|
committer | YuanHu <yuan.hu1@zte.com.cn> | 2018-03-16 09:07:21 +0800 |
commit | 0246959aeb2bd4cb04e00649a0378a846116fbf9 (patch) | |
tree | 9d5a26ff5e3203a81b72f231197ee0d63f41c87a /sdc-workflow-designer-server/src/main/java | |
parent | 9d5b872a75cdfcad2a97a702e56a46730a653734 (diff) |
Generate bpmn for extend activities
Modify BPMN Convertor to support conversion of extend activities.
Change copyright year from 2017 to 2017-2018
Issue-ID: SDC-679
Change-Id: I835fee3901302d53a948e50d2c2a03736f524e4b
Signed-off-by: YuanHu <yuan.hu1@zte.com.cn>
Diffstat (limited to 'sdc-workflow-designer-server/src/main/java')
8 files changed, 181 insertions, 77 deletions
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java index 6420a160..762d480b 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
@@ -15,7 +15,16 @@ import java.util.List; public class Element {
public enum TYPE {
- startEvent, endEvent, errorStartEvent, errorEndEvent, serviceTask, scriptTask, exclusiveGateway, parallelGateway, restTask, intermediateCatchEvent
+ startEvent,
+ endEvent,
+ errorStartEvent,
+ errorEndEvent,
+ serviceTask,
+ scriptTask,
+ exclusiveGateway,
+ parallelGateway,
+ restTask,
+ intermediateCatchEvent
};
private String id;
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java index 173c4da5..8a8da55a 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
@@ -18,29 +18,29 @@ import org.onap.sdc.workflowdesigner.config.Config; public class RestServiceTask extends ServiceTask {
private static String handler = Config.PROPERTIES.getProperty(Config.HANDLER_ClASS);
- private String restConfigId;
- public String getRestConfigId() {
- return restConfigId;
- }
- public void setRestConfigId(String restConfigId) {
- this.restConfigId = restConfigId;
- }
+// private String restConfigId;
+// public String getRestConfigId() {
+// return restConfigId;
+// }
+// public void setRestConfigId(String restConfigId) {
+// this.restConfigId = restConfigId;
+// }
private List<String> produces;
private List<String> consumes;
private List<Parameter> parameters;
- private String url;
+ private String baseUrl;
private String serviceName;
private String serviceVersion;
private String path;
private String method;
- public String getUrl() {
- return url;
+ public String getBaseUrl() {
+ return baseUrl;
}
- public void setUrl(String url) {
- this.url = url;
+ public void setBaseUrl(String url) {
+ this.baseUrl = url;
}
public String getMethod() {
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java index 01d224c8..3ccba04e 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java index 407ca059..90bc5d0e 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java @@ -11,6 +11,34 @@ */
package org.onap.sdc.workflowdesigner.model;
+import java.util.List;
+
public class ServiceTask extends Element {
+ private String className;
+ private List<Parameter> inputs;
+ private List<Parameter> outputs;
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public List<Parameter> getInputs() {
+ return inputs;
+ }
+
+ public void setInputs(List<Parameter> inputs) {
+ this.inputs = inputs;
+ }
+
+ public List<Parameter> getOutputs() {
+ return outputs;
+ }
+ public void setOutputs(List<Parameter> outputs) {
+ this.outputs = outputs;
+ }
}
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java index a78c8dd3..b24b0e22 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
@@ -13,8 +13,11 @@ package org.onap.sdc.workflowdesigner.model; import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
public class StartEvent extends Element {
- private List<Parameter> parameters;
+ @JsonProperty("parameters")
+ private List<Parameter> parameters;
public List<Parameter> getParameters() {
return parameters;
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java index d214b389..e98acfb7 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
@@ -65,7 +65,12 @@ public class Bpmn4ToscaJsonParser { JsonNode rootNode = MAPPER.readValue(jsonFileUrl.toURL(), JsonNode.class);
log.debug("Creating Process models...");
- JsonNode nodes = rootNode.get(JsonKeys.NODES);
+// JsonNode nodes = rootNode.get(JsonKeys.NODES);
+ JsonNode data = rootNode.get(JsonKeys.DATA);
+ if(null == data) {
+ return process;
+ }
+ JsonNode nodes = data.get(JsonKeys.NODES);
if (nodes == null) {
return process;
}
@@ -133,17 +138,17 @@ public class Bpmn4ToscaJsonParser { private List<SequenceFlow> getSequenceFlows(JsonNode jsonNode) {
List<SequenceFlow> flowList = new ArrayList<SequenceFlow>();
- JsonNode sequenceFlowNodes = jsonNode.get(JsonKeys.SEQUENCE_FLOWS);
+ String elementId = getValueFromJsonNode(jsonNode, JsonKeys.ID);
+ JsonNode connectionsNode = jsonNode.get(JsonKeys.CONNECTIONS);
- Iterator<JsonNode> iter = sequenceFlowNodes.iterator();
+ Iterator<JsonNode> iter = connectionsNode.iterator();
while (iter.hasNext()) {
JsonNode connectionEntry = (JsonNode) iter.next();
- String sourceRef = getValueFromJsonNode(connectionEntry, JsonKeys.SOURCE_REF);
String targetRef = getValueFromJsonNode(connectionEntry, JsonKeys.TARGET_REF);
String condition = getValueFromJsonNode(connectionEntry, JsonKeys.CONDITION);
SequenceFlow flow = new SequenceFlow();
- flow.setId(sourceRef + targetRef);
- flow.setSourceRef(sourceRef);
+ flow.setId(elementId + targetRef);
+ flow.setSourceRef(elementId);
flow.setTargetRef(targetRef);
flow.setCondition(condition);
flowList.add(flow);
@@ -183,7 +188,8 @@ public class Bpmn4ToscaJsonParser { element = MAPPER.readValue(jsonObject, ServiceTask.class);
break;
case "restTask":
- element = this.createRestServiceTask(jsonObject);
+ // element = this.createRestServiceTask(jsonObject);
+ element = MAPPER.readValue(jsonObject, RestServiceTask.class);
break;
case "scriptTask":
element = MAPPER.readValue(jsonObject, ScriptTask.class);
@@ -202,27 +208,6 @@ public class Bpmn4ToscaJsonParser { return element;
}
- private RestServiceTask createRestServiceTask(String jsonObject) throws JsonParseException, JsonMappingException, IOException {
- RestServiceTask restServiceTask = MAPPER.readValue(jsonObject, RestServiceTask.class);
-
- // add baseUrl to relative url
- String restConfigId = restServiceTask.getRestConfigId();
- JsonNode restConfig = this.restConfigMap.get(restConfigId);
-
- if(restConfig != null) { // while create a new rest task and didnot set method, the restconfig info may be null
- restServiceTask.setUrl(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_URL));
- restServiceTask.setServiceName(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_NAME));
- restServiceTask.setServiceVersion(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_VERSION));
- }
-
- for(Parameter parameter : restServiceTask.getParameters()) {
- if("body".equals(parameter.getPosition())) {
- parameter.setValueSource(null);
- }
- }
-
- return restServiceTask;
- }
private String getValueFromJsonNode(JsonNode jsonNode, String key) {
return jsonNode.get(key) == null ? null : jsonNode.get(key).asText();
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java index 2237d8dd..92390395 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java @@ -1,5 +1,5 @@ /**
- * Copyright (c) 2017 ZTE Corporation.
+ * Copyright (c) 2017-2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the Apache License, Version 2.0
* and the Eclipse Public License v1.0 which both accompany this distribution,
@@ -12,27 +12,81 @@ package org.onap.sdc.workflowdesigner.parser;
public interface JsonKeys {
- // workflow keys
- public static final String NODES = "nodes";
- public static final String CONFIGS = "configs";
-
- // configs keys
- public static final String REST_CONFIGS = "restConfigs";
- public static final String TYPE = "type";
-
- // workflow node keys
- public static final String SEQUENCE_FLOWS = "sequenceFlows";
-
- // sequence flow keys
- public static final String SOURCE_REF = "sourceRef";
- public static final String TARGET_REF = "targetRef";
- public static final String CONDITION = "condition";
-
-
- // microservice info
- public static final String MICROSERVICE_URL = "url";
- public static final String MICROSERVICE_NAME = "name";
- public static final String MICROSERVICE_VERSION = "version";
-
- public static final String ID = "id";
+
+
+ /*
+ * Field names of BPMN4Tosca Model
+ */
+ public static final String DATA = "data";
+ public static final String NODES = "nodes";
+ public static final String REST_CONFIGS = "restConfigs";
+ public static final String CONFIGS = "configs";
+
+
+ // microservice info
+ public static final String MICROSERVICE_URL = "url";
+ public static final String MICROSERVICE_NAME = "name";
+ public static final String MICROSERVICE_VERSION = "version";
+
+ public static final String NAME = "name";
+
+ public static final String ID = "id";
+
+ public static final String TYPE = "type";
+
+ public static final String INPUT = "input";
+
+ public static final String OUTPUT = "output";
+
+ public static final String VALUE = "value";
+
+ public static final String NODE_TEMPLATE = "node_template";
+
+ public static final String NODE_OPERATION = "node_operation";
+
+ public static final String NODE_INTERFACE_NAME = "interface";
+
+ public static final String CONNECTIONS = "connection";
+
+ public static final String SOURCE_REF = "sourceRef";
+
+ public static final String TARGET_REF = "targetRef";
+
+ public static final String CONDITIONS = "conditions";
+
+ public static final String CONDITION = "condition";
+
+ public static final String DEFAULT = "default";
+
+
+ /*
+ * Exclusive-Gateway, Event, Management-Task Types
+ *
+ */
+ public static final String NODE_TYPE_MGMT_TASK = "ToscaNodeManagementTask";
+
+ public static final String NODE_TYPE_START_EVENT = "StartEvent";
+
+ public static final String NODE_TYPE_END_EVENT = "EndEvent";
+
+ public static final String NODE_TYPE_GATEWAY_EXCLUSIVE = "ExclusiveGateway";
+
+ public static final String NODE_TYPE_GATEWAY_EXCLUSIVE_END = "ExclusiveGatewayEnd";
+
+
+ /*
+ * Parameter Types
+ */
+ public static final String PARAM_TYPE_VALUE_STRING = "string";
+
+ public static final String PARAM_TYPE_VALUE_TOPOLOGY = "topology";
+
+ public static final String PARAM_TYPE_VALUE_PLAN = "plan";
+
+ public static final String PARAM_TYPE_VALUE_CONCAT = "concat";
+
+ public static final String PARAM_TYPE_VALUE_IA = "implementation_artifact";
+
+ public static final String PARAM_TYPE_VALUE_DA = "deployment_artifact";
+
}
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java index 2ad4aeae..db9b80d3 100644 --- a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2017 ZTE Corporation. + * Copyright (c) 2017-2018 ZTE Corporation. * All rights reserved. This program and the accompanying materials * are made available under the Apache License, Version 2.0 * and the Eclipse Public License v1.0 which both accompany this distribution, @@ -13,6 +13,9 @@ package org.onap.sdc.workflowdesigner.resources; import java.io.IOException; +import java.net.URI; +import java.nio.file.Paths; +import java.util.UUID; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -24,8 +27,11 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.eclipse.jetty.http.HttpStatus; +import org.onap.sdc.workflowdesigner.model.Process; +import org.onap.sdc.workflowdesigner.parser.Bpmn4ToscaJsonParser; import org.onap.sdc.workflowdesigner.utils.FileCommonUtils; import org.onap.sdc.workflowdesigner.utils.RestUtils; +import org.onap.sdc.workflowdesigner.writer.BpmnPlanArtefactWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,9 +51,12 @@ import io.swagger.annotations.ApiResponses; @Api(tags = {"Workflow Modeler"}) public class WorkflowModelerResource { private static final Logger logger = LoggerFactory.getLogger(WorkflowModelerResource.class); + + private static final String WORKFLOW_JSON_TEMP_FILE_NAME = "temp_workflow.json"; + private static final String WORKFLOW_XML_TEMP_FILE_NAME = "temp_workflow.xml"; + /** - * test function. * * @return Response */ @@ -70,11 +79,13 @@ public class WorkflowModelerResource { String json = FileCommonUtils.readString(filePath); return Response.status(Response.Status.OK).entity(json).build(); } catch (IOException e) { - logger.error("getServiceTemplateById failed.", e); + logger.error("get workflow failed.", e); throw RestUtils.newInternalServerErrorException(e); } } + + @Path("/{id}") @PUT @Consumes(MediaType.APPLICATION_JSON) @@ -90,12 +101,26 @@ public class WorkflowModelerResource { @Timed public Response saveModel(@ApiParam(value = "id") @PathParam("id") String id, @ApiParam(value = "Model Content", required = true) String json) { - String filePath = "model.json"; try { - FileCommonUtils.write(filePath, json); + FileCommonUtils.write(WORKFLOW_JSON_TEMP_FILE_NAME, json); + + URI srcUri = Paths.get(".", WORKFLOW_JSON_TEMP_FILE_NAME).toUri(); + String processName = "plan_" + UUID.randomUUID().toString(); + Bpmn4ToscaJsonParser parser = new Bpmn4ToscaJsonParser(); + Process process = parser.parse(processName, srcUri); + + // transform bpmn template + BpmnPlanArtefactWriter writer = new BpmnPlanArtefactWriter(process); + String bpmn = writer.completePlanTemplate(); + + FileCommonUtils.write(WORKFLOW_XML_TEMP_FILE_NAME, bpmn); + return Response.status(Response.Status.OK).entity(json).build(); } catch (IOException e) { - logger.error("getServiceTemplateById failed.", e); + logger.error("save workflow failed.", e); + throw RestUtils.newInternalServerErrorException(e); + } catch (Exception e) { + logger.error("convert workflow from json to bpmn failed.", e); throw RestUtils.newInternalServerErrorException(e); } } |