Generate bpmn for extend activities 21/35921/3
authorYuanHu <yuan.hu1@zte.com.cn>
Thu, 15 Mar 2018 08:17:00 +0000 (16:17 +0800)
committerYuanHu <yuan.hu1@zte.com.cn>
Fri, 16 Mar 2018 01:07:21 +0000 (09:07 +0800)
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>
24 files changed:
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/Element.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/RestServiceTask.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ScriptTask.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/ServiceTask.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/model/StartEvent.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParser.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/parser/JsonKeys.java
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/resources/WorkflowModelerResource.java
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_dataObject_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_endEvent_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorEndEvent_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_errorStartEvent_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_exclusiveGateway_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_intermediateCatchEvent_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_parallelGateway_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_restTask_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_scriptTask_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_serviceTask_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_element_startEvent_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_sequenceFlow_template.xml
sdc-workflow-designer-server/src/main/resources/bpmn-templates/bpmn_template.xml
sdc-workflow-designer-server/src/test/java/org/onap/sdc/workflowdesigner/parser/Bpmn4ToscaJsonParserTest.java
sdc-workflow-designer-server/src/test/resources/workflow/template-test.bpmn20.xml
sdc-workflow-designer-server/src/test/resources/workflow/workflow.json

index 6420a16..762d480 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
@@ -15,7 +15,16 @@ import java.util.List;
 \r
 public class Element {\r
     public enum TYPE {\r
-        startEvent, endEvent, errorStartEvent, errorEndEvent, serviceTask, scriptTask, exclusiveGateway, parallelGateway, restTask, intermediateCatchEvent\r
+               startEvent, \r
+               endEvent, \r
+               errorStartEvent,\r
+               errorEndEvent,\r
+               serviceTask, \r
+               scriptTask,\r
+               exclusiveGateway, \r
+               parallelGateway, \r
+               restTask, \r
+               intermediateCatchEvent\r
     };\r
 \r
     private String id;\r
index 173c4da..8a8da55 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
@@ -18,29 +18,29 @@ import org.onap.sdc.workflowdesigner.config.Config;
 public class RestServiceTask extends ServiceTask {\r
     private static String handler = Config.PROPERTIES.getProperty(Config.HANDLER_ClASS);\r
        \r
-       private String restConfigId;\r
-       public String getRestConfigId() {\r
-               return restConfigId;\r
-       }\r
-       public void setRestConfigId(String restConfigId) {\r
-               this.restConfigId = restConfigId;\r
-       }\r
+//     private String restConfigId;\r
+//     public String getRestConfigId() {\r
+//             return restConfigId;\r
+//     }\r
+//     public void setRestConfigId(String restConfigId) {\r
+//             this.restConfigId = restConfigId;\r
+//     }\r
        private List<String> produces;\r
        private List<String> consumes;\r
        \r
        \r
        private List<Parameter> parameters;\r
-       private String url;\r
+       private String baseUrl;\r
        private String serviceName;\r
        private String serviceVersion;\r
        private String path;\r
        private String method;\r
        \r
-       public String getUrl() {\r
-               return url;\r
+       public String getBaseUrl() {\r
+               return baseUrl;\r
        }\r
-       public void setUrl(String url) {\r
-               this.url = url;\r
+       public void setBaseUrl(String url) {\r
+               this.baseUrl = url;\r
        }\r
        \r
        public String getMethod() {\r
index 01d224c..3ccba04 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
index 407ca05..90bc5d0 100644 (file)
  */\r
 package org.onap.sdc.workflowdesigner.model;\r
 \r
+import java.util.List;\r
+\r
 public class ServiceTask extends Element {\r
+       private String className;\r
+       private List<Parameter> inputs;\r
+       private List<Parameter> outputs;\r
+\r
+       public String getClassName() {\r
+               return className;\r
+       }\r
+\r
+       public void setClassName(String className) {\r
+               this.className = className;\r
+       }\r
+\r
+       public List<Parameter> getInputs() {\r
+               return inputs;\r
+       }\r
+\r
+       public void setInputs(List<Parameter> inputs) {\r
+               this.inputs = inputs;\r
+       }\r
+\r
+       public List<Parameter> getOutputs() {\r
+               return outputs;\r
+       }\r
 \r
+       public void setOutputs(List<Parameter> outputs) {\r
+               this.outputs = outputs;\r
+       }\r
 }\r
index a78c8dd..b24b0e2 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
@@ -13,8 +13,11 @@ package org.onap.sdc.workflowdesigner.model;
 \r
 import java.util.List;\r
 \r
+import com.fasterxml.jackson.annotation.JsonProperty;\r
+\r
 public class StartEvent extends Element {\r
-    private List<Parameter> parameters;\r
+    @JsonProperty("parameters")\r
+       private List<Parameter> parameters;\r
 \r
     public List<Parameter> getParameters() {\r
         return parameters;\r
index d214b38..e98acfb 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
@@ -65,7 +65,12 @@ public class Bpmn4ToscaJsonParser {
         JsonNode rootNode = MAPPER.readValue(jsonFileUrl.toURL(), JsonNode.class);\r
 \r
         log.debug("Creating Process models...");\r
-        JsonNode nodes = rootNode.get(JsonKeys.NODES);\r
+//      JsonNode nodes = rootNode.get(JsonKeys.NODES);\r
+        JsonNode data = rootNode.get(JsonKeys.DATA);\r
+        if(null == data) {\r
+            return process;\r
+        }\r
+        JsonNode nodes = data.get(JsonKeys.NODES);\r
         if (nodes == null) {\r
             return process;\r
         }\r
@@ -133,17 +138,17 @@ public class Bpmn4ToscaJsonParser {
 \r
     private List<SequenceFlow> getSequenceFlows(JsonNode jsonNode) {\r
         List<SequenceFlow> flowList = new ArrayList<SequenceFlow>();\r
-        JsonNode sequenceFlowNodes = jsonNode.get(JsonKeys.SEQUENCE_FLOWS);\r
+               String elementId = getValueFromJsonNode(jsonNode, JsonKeys.ID);\r
+               JsonNode connectionsNode = jsonNode.get(JsonKeys.CONNECTIONS);\r
 \r
-        Iterator<JsonNode> iter = sequenceFlowNodes.iterator();\r
+               Iterator<JsonNode> iter = connectionsNode.iterator();\r
         while (iter.hasNext()) {\r
             JsonNode connectionEntry = (JsonNode) iter.next();\r
-            String sourceRef = getValueFromJsonNode(connectionEntry, JsonKeys.SOURCE_REF);\r
             String targetRef = getValueFromJsonNode(connectionEntry, JsonKeys.TARGET_REF);\r
             String condition = getValueFromJsonNode(connectionEntry, JsonKeys.CONDITION);\r
             SequenceFlow flow = new SequenceFlow();\r
-            flow.setId(sourceRef + targetRef);\r
-            flow.setSourceRef(sourceRef);\r
+                       flow.setId(elementId + targetRef);\r
+                       flow.setSourceRef(elementId);\r
             flow.setTargetRef(targetRef);\r
             flow.setCondition(condition);\r
             flowList.add(flow);\r
@@ -183,7 +188,8 @@ public class Bpmn4ToscaJsonParser {
             element = MAPPER.readValue(jsonObject, ServiceTask.class);\r
             break;\r
         case "restTask":\r
-            element = this.createRestServiceTask(jsonObject);\r
+                       // element = this.createRestServiceTask(jsonObject);\r
+                       element = MAPPER.readValue(jsonObject, RestServiceTask.class);\r
             break;\r
         case "scriptTask":\r
             element = MAPPER.readValue(jsonObject, ScriptTask.class);\r
@@ -202,27 +208,6 @@ public class Bpmn4ToscaJsonParser {
         return element;\r
     }\r
     \r
-    private RestServiceTask createRestServiceTask(String jsonObject) throws JsonParseException, JsonMappingException, IOException {\r
-        RestServiceTask restServiceTask = MAPPER.readValue(jsonObject, RestServiceTask.class);\r
-        \r
-        // add baseUrl to relative url\r
-        String restConfigId = restServiceTask.getRestConfigId();\r
-        JsonNode restConfig = this.restConfigMap.get(restConfigId);\r
-        \r
-        if(restConfig != null) { // while create a new rest task and didnot set method, the restconfig info may be null\r
-            restServiceTask.setUrl(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_URL));\r
-            restServiceTask.setServiceName(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_NAME));\r
-            restServiceTask.setServiceVersion(getValueFromJsonNode(restConfig, JsonKeys.MICROSERVICE_VERSION));\r
-        }\r
-        \r
-        for(Parameter parameter : restServiceTask.getParameters()) {\r
-            if("body".equals(parameter.getPosition())) {\r
-                parameter.setValueSource(null);\r
-            }\r
-        }\r
-        \r
-        return restServiceTask;\r
-    }\r
 \r
     private String getValueFromJsonNode(JsonNode jsonNode, String key) {\r
         return jsonNode.get(key) == null ? null : jsonNode.get(key).asText();\r
index 2237d8d..9239039 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
 package org.onap.sdc.workflowdesigner.parser;\r
 \r
 public interface JsonKeys {\r
-    // workflow keys\r
-    public static final String NODES = "nodes";\r
-    public static final String CONFIGS = "configs";\r
-    \r
-    // configs keys\r
-    public static final String REST_CONFIGS = "restConfigs";\r
-    public static final String TYPE = "type";\r
-    \r
-    // workflow node keys\r
-    public static final String SEQUENCE_FLOWS = "sequenceFlows";\r
-    \r
-    // sequence flow keys\r
-    public static final String SOURCE_REF = "sourceRef";\r
-    public static final String TARGET_REF = "targetRef";\r
-    public static final String CONDITION = "condition";\r
-    \r
-    \r
- // microservice info\r
-    public static final String MICROSERVICE_URL = "url";\r
-    public static final String MICROSERVICE_NAME = "name";\r
-    public static final String MICROSERVICE_VERSION = "version";\r
-    \r
-    public static final String ID = "id";\r
+\r
+\r
+       /*\r
+        * Field names of BPMN4Tosca Model\r
+        */\r
+       public static final String DATA = "data";\r
+       public static final String NODES = "nodes";\r
+       public static final String REST_CONFIGS = "restConfigs";\r
+       public static final String CONFIGS = "configs";\r
+       \r
+       \r
+       // microservice info\r
+       public static final String MICROSERVICE_URL = "url";\r
+       public static final String MICROSERVICE_NAME = "name";\r
+       public static final String MICROSERVICE_VERSION = "version";\r
+       \r
+       public static final String NAME = "name";\r
+\r
+       public static final String ID = "id";\r
+\r
+       public static final String TYPE = "type";\r
+\r
+       public static final String INPUT = "input";\r
+\r
+       public static final String OUTPUT = "output";\r
+\r
+       public static final String VALUE = "value";\r
+\r
+       public static final String NODE_TEMPLATE = "node_template";\r
+\r
+       public static final String NODE_OPERATION = "node_operation";\r
+\r
+       public static final String NODE_INTERFACE_NAME = "interface";\r
+\r
+       public static final String CONNECTIONS = "connection";\r
+       \r
+       public static final String SOURCE_REF = "sourceRef";\r
+       \r
+       public static final String TARGET_REF = "targetRef";\r
+       \r
+       public static final String CONDITIONS = "conditions";\r
+       \r
+       public static final String CONDITION = "condition";\r
+       \r
+       public static final String DEFAULT = "default";\r
+\r
+\r
+       /*\r
+        * Exclusive-Gateway, Event, Management-Task Types\r
+        *\r
+        */\r
+       public static final String NODE_TYPE_MGMT_TASK = "ToscaNodeManagementTask";\r
+\r
+       public static final String NODE_TYPE_START_EVENT = "StartEvent";\r
+\r
+       public static final String NODE_TYPE_END_EVENT = "EndEvent";\r
+       \r
+       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE = "ExclusiveGateway";\r
+       \r
+       public static final String NODE_TYPE_GATEWAY_EXCLUSIVE_END = "ExclusiveGatewayEnd";\r
+\r
+\r
+       /*\r
+        * Parameter Types\r
+        */\r
+       public static final String PARAM_TYPE_VALUE_STRING = "string";\r
+\r
+       public static final String PARAM_TYPE_VALUE_TOPOLOGY = "topology";\r
+\r
+       public static final String PARAM_TYPE_VALUE_PLAN = "plan";\r
+\r
+       public static final String PARAM_TYPE_VALUE_CONCAT = "concat";\r
+\r
+       public static final String PARAM_TYPE_VALUE_IA = "implementation_artifact";\r
+\r
+       public static final String PARAM_TYPE_VALUE_DA = "deployment_artifact";\r
+\r
 }\r
index 2ad4aea..db9b80d 100644 (file)
@@ -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);
     }
   }
index 6e0721e..255e77e 100644 (file)
@@ -1,5 +1,5 @@
-<dataObject id="${dataObject.id}" name="${dataObject.name}">\r
-    <extensionElements>\r
-        <activiti:value><![CDATA[${dataObject.value}]]></activiti:value>\r
-    </extensionElements>\r
-</dataObject>\r
+               <dataObject id="${dataObject.id}" name="${dataObject.name}">\r
+                       <extensionElements>\r
+                               <activiti:value><![CDATA[${dataObject.value}]]></activiti:value>\r
+                       </extensionElements>\r
+               </dataObject>
\ No newline at end of file
index 223542c..8eb62f6 100644 (file)
@@ -1,3 +1,2 @@
-\r
-<endEvent id="${element.id}" name="${element.name}">\r
-</endEvent>\r
+               <endEvent id="${element.id}" name="${element.name}">\r
+               </endEvent>
\ No newline at end of file
index aef14d9..aecfbdf 100644 (file)
@@ -1,4 +1,3 @@
-
-<endEvent id="${element.id}" name="${element.name}">
-       <errorEventDefinition errorRef="${element.parameter.value}" />
-</endEvent>
+               <endEvent id="${element.id}" name="${element.name}">
+                       <errorEventDefinition errorRef="${element.parameter.value}" />
+               </endEvent>
\ No newline at end of file
index 56b0847..d73ee33 100644 (file)
@@ -1,4 +1,3 @@
-
-<startEvent id="${element.id}" name="${element.name}">
-       <errorEventDefinition errorRef="${element.parameter.value}" />
-</startEvent>
+               <startEvent id="${element.id}" name="${element.name}">
+                       <errorEventDefinition errorRef="${element.parameter.value}" />
+               </startEvent>
\ No newline at end of file
index d9ab461..68fc388 100644 (file)
@@ -1,2 +1 @@
-\r
-<exclusiveGateway id="${element.id}" name="${element.name}"></exclusiveGateway>
\ No newline at end of file
+               <exclusiveGateway id="${element.id}" name="${element.name}"></exclusiveGateway>
\ No newline at end of file
index cb95209..ee59185 100644 (file)
@@ -1,14 +1,13 @@
-\r
-<intermediateCatchEvent id="${element.id}" name="${element.name}">\r
-       <timerEventDefinition>\r
-               #if (${element.timerEventDefinition.timeDuration})\r
-               <timeDuration><![CDATA[${element.timerEventDefinition.timeDuration}]]></timeDuration>\r
-               #end\r
-               #if (${element.timerEventDefinition.timeDate})\r
-               <timeDate><![CDATA[${element.timerEventDefinition.timeDate}]]></timeDate>\r
-               #end\r
-               #if (${element.timerEventDefinition.timeCycle})\r
-               <timeCycle><![CDATA[${element.timerEventDefinition.timeCycle}]]></timeCycle>\r
-               #end\r
-       </timerEventDefinition>\r
-</intermediateCatchEvent>\r
+               <intermediateCatchEvent id="${element.id}" name="${element.name}">\r
+                       <timerEventDefinition>\r
+#if (${element.timerEventDefinition.timeDuration})\r
+                               <timeDuration><![CDATA[${element.timerEventDefinition.timeDuration}]]></timeDuration>\r
+#end\r
+#if (${element.timerEventDefinition.timeDate})\r
+                               <timeDate><![CDATA[${element.timerEventDefinition.timeDate}]]></timeDate>\r
+#end\r
+#if (${element.timerEventDefinition.timeCycle})\r
+                               <timeCycle><![CDATA[${element.timerEventDefinition.timeCycle}]]></timeCycle>\r
+#end\r
+                       </timerEventDefinition>\r
+               </intermediateCatchEvent>
\ No newline at end of file
index 7f26177..051c0ed 100644 (file)
@@ -1,33 +1,33 @@
-\r
-<serviceTask id="${element.id}" name="${element.name}" activiti:class="${element.handler}">\r
-       <extensionElements>\r
-               <activiti:field name="url">\r
-                       <activiti:string><![CDATA[$!{element.url}]]></activiti:string>\r
-               </activiti:field>\r
-               <activiti:field name="name">\r
-                       <activiti:string><![CDATA[$!{element.serviceName}]]></activiti:string>\r
-               </activiti:field>\r
-               <activiti:field name="version">\r
-                       <activiti:string><![CDATA[$!{element.serviceVersion}]]></activiti:string>\r
-               </activiti:field>\r
-               <activiti:field name="path">\r
-                       <activiti:string><![CDATA[$!{element.path}]]></activiti:string>\r
-               </activiti:field>\r
-               <activiti:field name="method">\r
-                       <activiti:string><![CDATA[$!{element.method}]]></activiti:string>\r
-               </activiti:field>\r
-               #if (${element.produces})\r
-               <activiti:field name="accept">\r
-                       <activiti:string><![CDATA[${element.produces}]]></activiti:string>\r
-               </activiti:field>\r
-               #end\r
-               #if (${element.consumes})\r
-               <activiti:field name="contentType">\r
-                       <activiti:string><![CDATA[${element.consumes}]]></activiti:string>\r
-               </activiti:field>\r
-               #end\r
-               <activiti:field name="parameters">\r
-                       <activiti:string><![CDATA[${element.parameters}]]></activiti:string>\r
-               </activiti:field>\r
-       </extensionElements>\r
-</serviceTask>\r
+               <serviceTask id="${element.id}" name="${element.name}"\r
+                       activiti:class="${element.handler}">\r
+                       <extensionElements>\r
+                               <activiti:field name="url">\r
+                                       <activiti:string><![CDATA[$!{element.baseUrl}]]></activiti:string>\r
+                               </activiti:field>\r
+                               <activiti:field name="name">\r
+                                       <activiti:string><![CDATA[$!{element.serviceName}]]></activiti:string>\r
+                               </activiti:field>\r
+                               <activiti:field name="version">\r
+                                       <activiti:string><![CDATA[$!{element.serviceVersion}]]></activiti:string>\r
+                               </activiti:field>\r
+                               <activiti:field name="path">\r
+                                       <activiti:string><![CDATA[$!{element.path}]]></activiti:string>\r
+                               </activiti:field>\r
+                               <activiti:field name="method">\r
+                                       <activiti:string><![CDATA[$!{element.method}]]></activiti:string>\r
+                               </activiti:field>\r
+#if (${element.produces})\r
+                               <activiti:field name="accept">\r
+                                       <activiti:string><![CDATA[${element.produces}]]></activiti:string>\r
+                               </activiti:field>\r
+#end\r
+#if (${element.consumes})\r
+                               <activiti:field name="contentType">\r
+                                       <activiti:string><![CDATA[${element.consumes}]]></activiti:string>\r
+                               </activiti:field>\r
+#end\r
+                               <activiti:field name="parameters">\r
+                                       <activiti:string><![CDATA[${element.parameters}]]></activiti:string>\r
+                               </activiti:field>\r
+                       </extensionElements>\r
+               </serviceTask>
\ No newline at end of file
index d50e4c4..2d9f691 100644 (file)
@@ -1,3 +1,3 @@
-<scriptTask id="${element.id}" name="${element.name}" scriptFormat="${element.scriptFormat}" activiti:autoStoreVariables="false">\r
-      <script><![CDATA[${element.script}]]></script>\r
-</scriptTask>\r
+               <scriptTask id="${element.id}" name="${element.name}" scriptFormat="${element.scriptFormat}" activiti:autoStoreVariables="false">\r
+                     <script><![CDATA[${element.script}]]></script>\r
+               </scriptTask>
\ No newline at end of file
index f5d63a2..2993310 100644 (file)
@@ -1,24 +1,14 @@
-\r
-<serviceTask id="${element.id}" name="${element.name}" activiti:class="${element.handler}">\r
-       <extensionElements>\r
-               <activiti:field name="uri">\r
-                       <activiti:string><![CDATA[${element.url}]]></activiti:string>\r
-               </activiti:field>\r
-               <activiti:field name="method">\r
-                       <activiti:string><![CDATA[${element.method}]]></activiti:string>\r
-               </activiti:field>\r
-               #if (${element.produces})\r
-               <activiti:field name="accept">\r
-                       <activiti:string><![CDATA[${element.produces}]]></activiti:string>\r
-               </activiti:field>\r
-               #end\r
-               #if (${element.consumes})\r
-               <activiti:field name="contentType">\r
-                       <activiti:string><![CDATA[${element.consumes}]]></activiti:string>\r
-               </activiti:field>\r
-               #end\r
-               <activiti:field name="parameters">\r
-                       <activiti:string><![CDATA[${element.parameters}]]></activiti:string>\r
-               </activiti:field>\r
-       </extensionElements>\r
-</serviceTask>\r
+               <serviceTask id="${element.id}" name="${element.name}" activiti:class="${element.className}">\r
+                       <extensionElements>\r
+#foreach( $input in ${element.inputs} )\r
+                               <activiti:field name="${input.name}">\r
+                                       <activiti:string><![CDATA[${input.value}]]></activiti:string>\r
+                               </activiti:field>\r
+#end\r
+#foreach( $output in ${element.outputs} )\r
+                               <activiti:field name="${output.name}">\r
+                                       <activiti:string><![CDATA[${output.value}]]></activiti:string>\r
+                               </activiti:field>\r
+#end\r
+                       </extensionElements>\r
+               </serviceTask>
\ No newline at end of file
index 1805315..150e26b 100644 (file)
@@ -1,9 +1,7 @@
-\r
-<startEvent id="${element.id}" name="${element.name}">\r
-    <extensionElements>\r
-        #foreach( $param in ${element.parameters} )\r
-        <activiti:formProperty id="${param.name}"\r
-            name="${param.name}" default="${param.value}" type="string"></activiti:formProperty>\r
-        #end\r
-    </extensionElements>\r
-</startEvent>\r
+               <startEvent id="${element.id}" name="${element.name}">\r
+                       <extensionElements>\r
+#foreach( $param in ${element.parameters} )\r
+                               <activiti:formProperty id="${param.name}" name="${param.name}" default="${param.value}" type="string"></activiti:formProperty>\r
+#end\r
+                       </extensionElements>\r
+               </startEvent>
\ No newline at end of file
index e95721f..d659eab 100644 (file)
@@ -1,5 +1,5 @@
-<sequenceFlow id="${sequenceFlow.id}" sourceRef="${sequenceFlow.sourceRef}" targetRef="${sequenceFlow.targetRef}">\r
+               <sequenceFlow id="${sequenceFlow.id}" sourceRef="${sequenceFlow.sourceRef}" targetRef="${sequenceFlow.targetRef}">\r
 #if(${sequenceFlow.condition} && ${sequenceFlow.condition} != '')\r
-  <conditionExpression xsi:type="tFormalExpression"><![CDATA[${sequenceFlow.condition}]]></conditionExpression>\r
+                       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${sequenceFlow.condition}]]></conditionExpression>\r
 #end\r
-</sequenceFlow>
\ No newline at end of file
+               </sequenceFlow>
\ No newline at end of file
index 66a5f1a..d336740 100644 (file)
@@ -1,31 +1,28 @@
+#set( $bpelvar = "$bpelvar" )\r
 <?xml version="1.0" encoding="UTF-8"?>\r
 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"\r
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-    xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"\r
-    xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"\r
-    typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath"\r
-    targetNamespace="http://www.activiti.org/test">\r
-    <process id="${process.id}" isExecutable="true">\r
-        <!-- dataObjects -->\r
-        #foreach( $dataObject in $process.dataObjectList)\r
-        #parse(\r
-        "${templatePath}bpmn_dataObject_template.xml"\r
-        )\r
-        #end\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"\r
+       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"\r
+       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"\r
+       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">\r
+       <process id="${process.id}" isExecutable="true">\r
+               <!-- dataObjects -->\r
+#foreach( $dataObject in $process.dataObjectList)\r
+#parse("${templatePath}bpmn_dataObject_template.xml")\r
 \r
-        <!-- Perform bpmn elements -->\r
-        #foreach( $element in $process.elementList)\r
-        #parse(\r
-        "${templatePath}bpmn_element_${element.type}_template.xml"\r
-        )\r
-        #end\r
+#end\r
+               \r
+               <!-- Perform bpmn elements -->\r
+#foreach( $element in $process.elementList)\r
+#parse("${templatePath}bpmn_element_${element.type}_template.xml")\r
+\r
+#end\r
 \r
                <!-- Perform bpmn sequence flow -->\r
-               #foreach( $sequenceFlow in $process.sequenceFlowList)\r
-               #parse(\r
-               "${templatePath}bpmn_sequenceFlow_template.xml"\r
-               )\r
-               #end\r
-    </process>\r
-</definitions>\r
+#foreach( $sequenceFlow in $process.sequenceFlowList)\r
+#parse("${templatePath}bpmn_sequenceFlow_template.xml")\r
 \r
+#end\r
+\r
+       </process>\r
+</definitions>\r
index 1f56efb..318301d 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Copyright (c) 2017 ZTE Corporation.\r
+ * Copyright (c) 2017-2018 ZTE Corporation.\r
  * All rights reserved. This program and the accompanying materials\r
  * are made available under the Apache License, Version 2.0\r
  * and the Eclipse Public License v1.0 which both accompany this distribution,\r
@@ -23,10 +23,10 @@ import java.util.List;
 \r
 import org.junit.Test;\r
 import org.onap.sdc.workflowdesigner.model.Element;\r
-import org.onap.sdc.workflowdesigner.model.EndEvent;\r
+import org.onap.sdc.workflowdesigner.model.Position;\r
 import org.onap.sdc.workflowdesigner.model.Process;\r
+import org.onap.sdc.workflowdesigner.model.ScriptTask;\r
 import org.onap.sdc.workflowdesigner.model.SequenceFlow;\r
-import org.onap.sdc.workflowdesigner.model.StartEvent;\r
 \r
 import com.fasterxml.jackson.core.JsonParseException;\r
 import com.fasterxml.jackson.databind.JsonMappingException;\r
@@ -112,24 +112,17 @@ public class Bpmn4ToscaJsonParserTest {
 \r
     private static Process createReferenceProcess() {\r
         Process process = new Process(PROCESS_NAME);\r
-\r
-        StartEvent startEvent = new StartEvent();\r
-        startEvent.setDocumentation("");\r
-        startEvent.setId("node0");\r
-        startEvent.setName("startEvent");\r
-        process.getElementList().add(startEvent);\r
-\r
-        EndEvent endEvent = new EndEvent();\r
-        endEvent.setDocumentation("");\r
-        endEvent.setId("node1");\r
-        endEvent.setName("endEvent");\r
-        process.getElementList().add(endEvent);\r
-\r
-        SequenceFlow flow2 = new SequenceFlow();\r
-        flow2.setId("node0node1");\r
-        flow2.setSourceRef("node0");\r
-        flow2.setTargetRef("node1");\r
-        process.getSequenceFlowList().add(flow2);\r
+        \r
+        ScriptTask scriptTask = new ScriptTask();\r
+        scriptTask.setId("scriptTask");\r
+        scriptTask.setName("Script Task");\r
+        Position position = new Position();\r
+        position.setLeft(328);\r
+        position.setTop(134);\r
+        scriptTask.setPosition(position);\r
+        scriptTask.setScript("");\r
+        scriptTask.setScriptFormat("JavaScript");\r
+        process.getElementList().add(scriptTask);\r
 \r
         return process;\r
     }\r
index 589ab71..5c022a2 100644 (file)
@@ -1,16 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"\r
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-    xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"\r
-    xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"\r
-    typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath"\r
-    targetNamespace="http://www.activiti.org/test">\r
-    <process id="templateTest" isExecutable="true">\r
-        <!-- dataObjects -->\r
-        \r
-        <!-- Perform bpmn elements -->\r
-        \r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"\r
+       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"\r
+       xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"\r
+       expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">\r
+       <process id="templateTest" isExecutable="true">\r
+               <!-- dataObjects -->\r
+               \r
+               <!-- Perform bpmn elements -->\r
+\r
                <!-- Perform bpmn sequence flow -->\r
-                   </process>\r
-</definitions>\r
 \r
+       </process>\r
+</definitions>\r
index 2042810..1fa3d10 100644 (file)
@@ -1,16 +1,28 @@
-{"nodes":[\r
-        {\r
-            "sequenceFlows":[\r
-                {"condition":"","sourceRef":"node0","targetRef":"node1"}\r
-            ],\r
-            "parameters":[],"id":"node0","name":"startEvent","type":"startEvent","parentId":"root",\r
-            "position":{"width":30,"height":30,"left":468,"top":55}\r
-        },\r
-        {\r
-            "sequenceFlows":[],\r
-            "input":[],"output":[],"template":{},"id":"node1","name":"endEvent",\r
-            "type":"endEvent","parentId":"root",\r
-            "position":{"width":252.08334350585938,"height":46.66666793823242,"left":432,"top":167}\r
-        }],\r
-"configs":{"restConfigs":[]}\r
+{\r
+    "id":"id12345",\r
+    "name":"test",\r
+    "scene":"abcd",\r
+    "data":{\r
+        "nodes":[\r
+            {\r
+                "id":"scriptTask",\r
+                "type":"scriptTask",\r
+                "typeId":"apds_script",\r
+                "icon":"apds_script",\r
+                "name":"Script Task",\r
+                "parentId":"root",\r
+                "position":{\r
+                    "left":328,\r
+                    "top":134,\r
+                    "width":56,\r
+                    "height":56\r
+                },\r
+                "connection":[\r
+\r
+                ],\r
+                "scriptFormat":"JavaScript",\r
+                "script":""\r
+            }\r
+        ]\r
+    }\r
 }
\ No newline at end of file