aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorsebdet <sd378r@intl.att.com>2018-09-20 18:27:17 +0200
committersebdet <sd378r@intl.att.com>2018-09-20 18:27:17 +0200
commit57ea28b4de97b23a52254e9632e32c26652ef67d (patch)
tree1a1d6c17c7a4f2f57d14cef4828b7c0d020b2927 /src/test
parenta9cdc79ba7e928b38ed132d38426b6c8b70635bf (diff)
Add tests
Add some tests and fix event for Submit action Issue-ID: CLAMP-217 Change-Id: I1882a35da110130529085fad5524e82a509cd7e1 Signed-off-by: sebdet <sd378r@intl.att.com>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java73
-rw-r--r--src/test/resources/example/model-properties/tca_new/doc-text.yaml170
-rw-r--r--src/test/resources/example/model-properties/tca_new/model-properties.json359
-rw-r--r--src/test/resources/example/model-properties/tca_new/tca-img.xml309
-rw-r--r--src/test/resources/example/model-properties/tca_new/tca-template.xml95
5 files changed, 978 insertions, 28 deletions
diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
index 695aa2d15..9cca936c8 100644
--- a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
@@ -55,6 +55,7 @@ import org.onap.clamp.clds.model.CldsInfo;
import org.onap.clamp.clds.model.CldsModel;
import org.onap.clamp.clds.model.CldsServiceData;
import org.onap.clamp.clds.model.CldsTemplate;
+import org.onap.clamp.clds.model.DcaeEvent;
import org.onap.clamp.clds.service.CldsService;
import org.onap.clamp.clds.util.LoggingUtils;
import org.onap.clamp.clds.util.ResourceFileUtil;
@@ -85,22 +86,26 @@ public class CldsServiceItCase {
private String bpmnText;
private String imageText;
private String bpmnPropText;
+ private String docText;
+
@Autowired
private CldsDao cldsDao;
private Authentication authentication;
- private List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>();
+ private List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>();
private LoggingUtils util;
+
/**
* Setup the variable before the tests execution.
*
* @throws IOException
- * In case of issues when opening the files
+ * In case of issues when opening the files
*/
@Before
public void setupBefore() throws IOException {
- bpmnText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-template.xml");
- imageText = ResourceFileUtil.getResourceAsString("example/dao/image-template.xml");
- bpmnPropText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-prop.json");
+ bpmnText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/tca-template.xml");
+ imageText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/tca-img.xml");
+ bpmnPropText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/model-properties.json");
+ docText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/doc-text.yaml");
authList.add(new SimpleGrantedAuthority("permission-type-cl-manage|dev|*"));
authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read"));
@@ -108,7 +113,8 @@ public class CldsServiceItCase {
authList.add(new SimpleGrantedAuthority("permission-type-template|dev|read"));
authList.add(new SimpleGrantedAuthority("permission-type-template|dev|update"));
authList.add(new SimpleGrantedAuthority("permission-type-filter-vf|dev|*"));
- authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList);
+ authList.add(new SimpleGrantedAuthority("permission-type-cl-event|dev|*"));
+ authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList);
util = Mockito.mock(LoggingUtils.class);
Mockito.doNothing().when(util).entering(Matchers.any(HttpServletRequest.class), Matchers.any(String.class));
@@ -179,52 +185,63 @@ public class CldsServiceItCase {
newModel.setControlNamePrefix("ClosedLoop-");
newModel.setTemplateName(randomNameTemplate);
newModel.setTemplateId(newTemplate.getId());
- newModel.setDocText(newTemplate.getPropText());
+ newModel.setDocText(docText);
// Test the PutModel method
cldsService.putModel(randomNameModel, newModel);
// Verify whether it has been added properly or not
assertNotNull(cldsDao.getModel(randomNameModel));
- CldsModel model= cldsService.getModel(randomNameModel);
+ CldsModel model = cldsService.getModel(randomNameModel);
// Verify with GetModel
- assertEquals(model.getTemplateName(),randomNameTemplate);
- assertEquals(model.getName(),randomNameModel);
+ assertEquals(model.getTemplateName(), randomNameTemplate);
+ assertEquals(model.getName(), randomNameModel);
assertTrue(cldsService.getModelNames().size() >= 1);
// Should fail
- ResponseEntity<?> responseEntity = cldsService.putModelAndProcessAction(CldsEvent.ACTION_SUBMIT, randomNameModel, "true", model);
- assertTrue(responseEntity.getStatusCode().equals(HttpStatus.INTERNAL_SERVER_ERROR));
- model=(CldsModel)responseEntity.getBody();
- assertNull(model);
+ ResponseEntity<?> responseEntity = cldsService.putModelAndProcessAction(CldsEvent.ACTION_SUBMIT,
+ randomNameModel, "false", cldsService.getModel(randomNameModel));
+ assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK));
+ assertNotNull(responseEntity.getBody());
+ assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(((CldsModel) responseEntity.getBody()).getStatus()));
+ assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(cldsService.getModel(randomNameModel).getStatus()));
- responseEntity=cldsService.deployModel(randomNameModel, cldsService.getModel(randomNameModel));
+ responseEntity = cldsService.deployModel(randomNameModel, cldsService.getModel(randomNameModel));
assertNotNull(responseEntity);
- assertNotNull(responseEntity.getStatusCode());
- model=(CldsModel)responseEntity.getBody();
- assertNotNull(model);
+ assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK));
+ assertNotNull(responseEntity.getBody());
+ assertTrue(CldsModel.STATUS_ACTIVE.equals(((CldsModel) responseEntity.getBody()).getStatus()));
+ assertTrue(CldsModel.STATUS_ACTIVE.equals(cldsService.getModel(randomNameModel).getStatus()));
- responseEntity=cldsService.unDeployModel(randomNameModel, cldsService.getModel(randomNameModel));
+ responseEntity = cldsService.unDeployModel(randomNameModel, cldsService.getModel(randomNameModel));
assertNotNull(responseEntity);
- assertNotNull(responseEntity.getStatusCode());
- model=(CldsModel)responseEntity.getBody();
- assertNotNull(model);
+ assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK));
+ assertNotNull(responseEntity.getBody());
+ assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(((CldsModel) responseEntity.getBody()).getStatus()));
+ assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(cldsService.getModel(randomNameModel).getStatus()));
+
+ DcaeEvent dcaeEvent = new DcaeEvent();
+ dcaeEvent.setArtifactName("ClosedLoop_with-enough-characters_TestArtifact.yml");
+ dcaeEvent.setEvent(DcaeEvent.EVENT_CREATED);
+ dcaeEvent.setResourceUUID("1");
+ dcaeEvent.setServiceUUID("2");
+ assertEquals(cldsService.postDcaeEvent("false", dcaeEvent),
+ "event=created serviceUUID=2 resourceUUID=1 artifactName=ClosedLoop_with-enough-characters_TestArtifact.yml instance count=0 isTest=false");
}
@Test
public void testGetSdcProperties() throws IOException {
JSONAssert.assertEquals(
- ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-global.json"), cldsService.getSdcProperties(),
- true);
+ ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-global.json"),
+ cldsService.getSdcProperties(), true);
}
@Test
public void testGetSdcServices() throws GeneralSecurityException, DecoderException, JSONException, IOException {
String result = cldsService.getSdcServices();
JSONAssert.assertEquals(
- ResourceFileUtil.getResourceAsString("example/sdc/expected-result/all-sdc-services.json"), result,
- true);
+ ResourceFileUtil.getResourceAsString("example/sdc/expected-result/all-sdc-services.json"), result, true);
}
@Test
@@ -238,8 +255,8 @@ public class CldsServiceItCase {
String result = cldsService.getSdcPropertiesByServiceUUIDForRefresh("4cc5b45a-1f63-4194-8100-cd8e14248c92",
false);
JSONAssert.assertEquals(
- ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-4cc5b45a.json"),
- result, true);
+ ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-4cc5b45a.json"), result,
+ true);
// Now test the Cache effect
CldsServiceData cldsServiceDataCache = cldsDao.getCldsServiceCache("c95b0e7c-c1f0-4287-9928-7964c5377a46");
// Should not be there, so should be null
diff --git a/src/test/resources/example/model-properties/tca_new/doc-text.yaml b/src/test/resources/example/model-properties/tca_new/doc-text.yaml
new file mode 100644
index 000000000..947cfdb18
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca_new/doc-text.yaml
@@ -0,0 +1,170 @@
+{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3
+imports:
+ - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml"
+ - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dockerplugin/3.2.0/dockerplugin_types.yaml
+ - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/relationshipplugin/1.0.0/relationshipplugin_types.yaml
+ - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml
+
+inputs:
+ dh_override:
+ type: string
+ default: "component_dockerhost"
+ dh_location_id:
+ type: string
+ default: "zone1"
+ aaiEnrichmentHost:
+ type: string
+ default: "none"
+ aaiEnrichmentPort:
+ type: string
+ default: 8443
+ enableAAIEnrichment:
+ type: string
+ default: false
+ dmaap_host:
+ type: string
+ default: dmaap.onap-message-router
+ dmaap_port:
+ type: string
+ default: 3904
+ enableRedisCaching:
+ type: string
+ default: false
+ redisHosts:
+ type: string
+ tag_version:
+ type: string
+ default: "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0"
+ consul_host:
+ type: string
+ default: consul-server.onap-consul
+ consul_port:
+ type: string
+ default: "8500"
+ cbs_host:
+ type: string
+ default: "config-binding-service.dcae"
+ cbs_port:
+ type: string
+ default: "10000"
+ policy_id:
+ type: string
+ default: "none"
+ external_port:
+ type: string
+ description: "Port for CDAPgui to be exposed"
+ default: "32010"
+
+node_templates:
+ docker_service_host:
+ properties:
+ docker_host_override:
+ get_input: dh_override
+ location_id:
+ get_input: dh_location_id
+ type: dcae.nodes.SelectedDockerHost
+ tca_docker:
+ relationships:
+ - type: dcae.relationships.component_contained_in
+ target: docker_service_host
+ - target: tca_policy
+ type: cloudify.relationships.depends_on
+ type: dcae.nodes.DockerContainerForComponentsUsingDmaap
+ properties:
+ application_config:
+ app_config:
+ appDescription: DCAE Analytics Threshold Crossing Alert Application
+ appName: dcae-tca
+ tcaAlertsAbatementTableName: TCAAlertsAbatementTable
+ tcaAlertsAbatementTableTTLSeconds: '1728000'
+ tcaSubscriberOutputStreamName: TCASubscriberOutputStream
+ tcaVESAlertsTableName: TCAVESAlertsTable
+ tcaVESAlertsTableTTLSeconds: '1728000'
+ tcaVESMessageStatusTableName: TCAVESMessageStatusTable
+ tcaVESMessageStatusTableTTLSeconds: '86400'
+ thresholdCalculatorFlowletInstances: '2'
+ app_preferences:
+ aaiEnrichmentHost:
+ get_input: aaiEnrichmentHost
+ aaiEnrichmentIgnoreSSLCertificateErrors: 'true'
+ aaiEnrichmentPortNumber: '8443'
+ aaiEnrichmentProtocol: https
+ aaiEnrichmentUserName: DCAE
+ aaiEnrichmentUserPassword: DCAE
+ aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query
+ aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf
+ enableAAIEnrichment:
+ get_input: enableAAIEnrichment
+ enableRedisCaching:
+ get_input: enableRedisCaching
+ redisHosts:
+ get_input: redisHosts
+ enableAlertCEFFormat: 'false'
+ publisherContentType: application/json
+ publisherHostName:
+ get_input: dmaap_host
+ publisherHostPort:
+ get_input: dmaap_port
+ publisherMaxBatchSize: '1'
+ publisherMaxRecoveryQueueSize: '100000'
+ publisherPollingInterval: '20000'
+ publisherProtocol: http
+ publisherTopicName: unauthenticated.DCAE_CL_OUTPUT
+ subscriberConsumerGroup: OpenDCAE-c12
+ subscriberConsumerId: c12
+ subscriberContentType: application/json
+ subscriberHostName:
+ get_input: dmaap_host
+ subscriberHostPort:
+ get_input: dmaap_port
+ subscriberMessageLimit: '-1'
+ subscriberPollingInterval: '30000'
+ subscriberProtocol: http
+ subscriberTimeoutMS: '-1'
+ subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT
+ tca_policy_default: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}'
+ service_component_type: dcaegen2-analytics_tca
+ docker_config:
+ healthcheck:
+ endpoint: /healthcheck
+ interval: 15s
+ timeout: 1s
+ type: http
+ image:
+ get_input: tag_version
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ start:
+ inputs:
+ envs:
+ DMAAPHOST:
+ { get_input: dmaap_host }
+ DMAAPPORT:
+ { get_input: dmaap_port }
+ DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT"
+ DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT"
+ AAIHOST:
+ { get_input: aaiEnrichmentHost }
+ AAIPORT:
+ { get_input: aaiEnrichmentPort }
+ CONSUL_HOST:
+ { get_input: consul_host }
+ CONSUL_PORT:
+ { get_input: consul_port }
+ CBS_HOST:
+ { get_input: cbs_host }
+ CBS_PORT:
+ { get_input: cbs_port }
+ CONFIG_BINDING_SERVICE: "config_binding_service"
+ ports:
+ - concat: ["11011:", { get_input: external_port }]
+ stop:
+ inputs:
+ cleanup_image: true
+ tca_policy:
+ type: dcae.nodes.policy
+ properties:
+ policy_id:
+ get_input: policy_id
+
+"]}]} \ No newline at end of file
diff --git a/src/test/resources/example/model-properties/tca_new/model-properties.json b/src/test/resources/example/model-properties/tca_new/model-properties.json
new file mode 100644
index 000000000..c4299fa5a
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca_new/model-properties.json
@@ -0,0 +1,359 @@
+{
+ "global": [
+ {
+ "name": "service",
+ "value": [
+ "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+ ]
+ },
+ {
+ "name": "vf",
+ "value": [
+ "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+ ]
+ },
+ {
+ "name": "actionSet",
+ "value": [
+ "vnfRecipe"
+ ]
+ },
+ {
+ "name": "location",
+ "value": [
+ "DC1"
+ ]
+ },
+ {
+ "name": "deployParameters",
+ "value": {
+ "dh_override": "component_dockerhost",
+ "dh_location_id": "zone1",
+ "aaiEnrichmentHost": "none",
+ "aaiEnrichmentPort": 8443,
+ "enableAAIEnrichment": false,
+ "dmaap_host": "dmaap.onap-message-router",
+ "dmaap_port": 3904,
+ "enableRedisCaching": false,
+ "redisHosts": "",
+ "tag_version": "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0",
+ "consul_host": "consul-server.onap-consul",
+ "consul_port": "8500",
+ "cbs_host": "config-binding-service.dcae",
+ "cbs_port": "10000",
+ "external_port": "32010",
+ "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"
+ }
+ }
+ ],
+ "Policy_12lup3h": {
+ "policy1": [
+ {
+ "name": "pname",
+ "value": "policy1"
+ },
+ {
+ "name": "pid",
+ "value": "0"
+ },
+ {
+ "name": "timeout",
+ "value": "345"
+ },
+ {
+ "policyConfigurations": [
+ [
+ {
+ "name": "recipe",
+ "value": [
+ "restart"
+ ]
+ },
+ {
+ "name": "maxRetries",
+ "value": [
+ "3"
+ ]
+ },
+ {
+ "name": "retryTimeLimit",
+ "value": [
+ "180"
+ ]
+ },
+ {
+ "name": "_id",
+ "value": [
+ "6TtHGPq"
+ ]
+ },
+ {
+ "name": "parentPolicy",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "actor",
+ "value": [
+ "APPC"
+ ]
+ },
+ {
+ "name": "recipeInput",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "recipeLevel",
+ "value": [
+ "VM"
+ ]
+ },
+ {
+ "name": "targetResourceId",
+ "value": [
+ "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"
+ ]
+ },
+ {
+ "name": "targetResourceIdOther",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "enableGuardPolicy",
+ "value": [
+ "on"
+ ]
+ },
+ {
+ "name": "guardPolicyType",
+ "value": [
+ "FrequencyLimiter"
+ ]
+ },
+ {
+ "name": "guardTargets",
+ "value": [
+ ".*"
+ ]
+ },
+ {
+ "name": "minGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "maxGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "limitGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "timeUnitsGuard",
+ "value": [
+ "minute"
+ ]
+ },
+ {
+ "name": "timeWindowGuard",
+ "value": [
+ "10"
+ ]
+ },
+ {
+ "name": "guardActiveStart",
+ "value": [
+ "00:00:01-05:00"
+ ]
+ },
+ {
+ "name": "guardActiveEnd",
+ "value": [
+ "00:00:00-05:00"
+ ]
+ }
+ ],
+ [
+ {
+ "name": "recipe",
+ "value": [
+ "rebuild"
+ ]
+ },
+ {
+ "name": "maxRetries",
+ "value": [
+ "3"
+ ]
+ },
+ {
+ "name": "retryTimeLimit",
+ "value": [
+ "180"
+ ]
+ },
+ {
+ "name": "_id",
+ "value": [
+ "aulXWRT"
+ ]
+ },
+ {
+ "name": "parentPolicy",
+ "value": [
+ "6TtHGPq"
+ ]
+ },
+ {
+ "name": "parentPolicyConditions",
+ "value": [
+ "Failure"
+ ]
+ },
+ {
+ "name": "actor",
+ "value": [
+ "APPC"
+ ]
+ },
+ {
+ "name": "recipeInput",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "recipeLevel",
+ "value": [
+ "VM"
+ ]
+ },
+ {
+ "name": "targetResourceId",
+ "value": [
+ "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"
+ ]
+ },
+ {
+ "name": "targetResourceIdOther",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "guardPolicyType",
+ "value": [
+ "MinMax"
+ ]
+ },
+ {
+ "name": "guardTargets",
+ "value": [
+ ".*"
+ ]
+ },
+ {
+ "name": "minGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "maxGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "limitGuard",
+ "value": [
+ "1"
+ ]
+ },
+ {
+ "name": "timeUnitsGuard",
+ "value": [
+ "minute"
+ ]
+ },
+ {
+ "name": "timeWindowGuard",
+ "value": [
+ "10"
+ ]
+ },
+ {
+ "name": "guardActiveStart",
+ "value": [
+ "00:00:01-05:00"
+ ]
+ },
+ {
+ "name": "guardActiveEnd",
+ "value": [
+ "00:00:00-05:00"
+ ]
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "TCA_1d13unw": {
+ "tca1": [
+ {
+ "name": "tname",
+ "value": "tca1"
+ },
+ {
+ "name": "tuuid",
+ "value": "7f14fe1f-68ac-t628-8fff-7f1de86f7038"
+ },
+ {
+ "name": "tcaPol",
+ "value": "policy1"
+ },
+ {
+ "name": "eventName",
+ "value": "vLoadBalancer"
+ },
+ {
+ "name": "controlLoopSchemaType",
+ "value": "VM"
+ },
+ {
+ "name": "tcaPolId",
+ "value": "0"
+ },
+ {
+ "serviceConfigurations": [
+ [
+ "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value",
+ "GREATER",
+ "10",
+ "ONSET",
+ "undefined"
+ ],
+ [
+ "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta",
+ "GREATER_OR_EQUAL",
+ "20",
+ "ABATED",
+ "undefined"
+ ]
+ ]
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/src/test/resources/example/model-properties/tca_new/tca-img.xml b/src/test/resources/example/model-properties/tca_new/tca-img.xml
new file mode 100644
index 000000000..a2ec5af23
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca_new/tca-img.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="utf-8"?><!-- created with bpmn-js / http://bpmn.io --><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="924" height="92" viewBox="44 134 924 92" version="1.1">
+ <defs>
+ <marker viewBox="0 0 20 20" markerWidth="10" markerHeight="10"
+ orient="auto" refX="11" refY="10" id="markerSjdype4kmnw">
+ <path d="M 1 5 L 11 10 L 1 15 Z"
+ style="stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;"
+ fill="#000000" />
+ </marker>
+ <marker viewBox="0 0 20 20" markerWidth="20" markerHeight="20"
+ orient="auto" refX="6" refY="6" id="markerSjdype4kmny">
+ <circle cx="6" cy="6" r="3.5"
+ style="stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;"
+ fill="#ffffff" stroke="#000000" />
+ </marker>
+ <marker viewBox="0 0 20 20" markerWidth="20" markerHeight="20"
+ orient="auto" refX="8.5" refY="5" id="markerSjdype4kmo0">
+ <path d="m 1 5 l 0 -3 l 7 3 l -7 3 z"
+ style="stroke-width: 1; stroke-linecap: butt; stroke-dasharray: 10000, 1;"
+ fill="#ffffff" stroke="#000000" />
+ </marker>
+ <marker viewBox="0 0 20 20" markerWidth="10" markerHeight="10"
+ orient="auto" refX="11" refY="10" id="markerSjdype4kmo2">
+ <path d="M 1 5 L 11 10 L 1 15"
+ style="stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;"
+ fill="#ffffff" stroke="#000000" />
+ </marker>
+ <marker viewBox="0 0 20 20" markerWidth="10" markerHeight="10"
+ orient="auto" refX="-1" refY="10" id="markerSjdype4kmo4">
+ <path d="M 0 10 L 8 6 L 16 10 L 8 14 Z"
+ style="stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;"
+ fill="#ffffff" stroke="#000000" />
+ </marker>
+ <marker viewBox="0 0 20 20" markerWidth="10" markerHeight="10"
+ orient="auto" refX="-5" refY="10" id="markerSjdype4kmo6">
+ <path d="M 1 4 L 5 16"
+ style="stroke-width: 1; stroke-linecap: round; stroke-dasharray: 10000, 1;"
+ fill="#000000" stroke="#000000" />
+ </marker>
+ </defs>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="StartEvent_1"
+ transform="matrix(1,0,0,1,50,162)" style="display: block;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="48"
+ height="48"></rect>
+ <g class="djs-visual">
+ <circle cx="18" cy="18" r="18" style="stroke-width: 2;"
+ stroke="#000000" fill="#ffffff"></circle>
+ </g>
+ <rect x="0" y="0" width="36" height="36"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="StartEvent_1_label"
+ transform="matrix(1,0,0,1,23,198)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="VesCollector_1g9cmz0"
+ transform="matrix(1,0,0,1,207,140)" style="display: block;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
+ height="92"></rect>
+ <g class="djs-visual">
+ <rect x="0" y="0" width="120" height="80" rx="0" ry="0"
+ style="stroke-width: 2;" stroke="#000000" fill="#ffffff"></rect>
+ <polyline points="120,80 120,20 " style="stroke-width: 2;"
+ fill="none" stroke="#000000"></polyline>
+ <polyline points="20,0 20,80 " style="stroke-width: 2;"
+ fill="none" stroke="#000000"></polyline>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;">
+ <tspan x="5" y="14">V</tspan>
+ </text>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;">
+ <tspan x="5" y="26">E</tspan>
+ </text>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;">
+ <tspan x="5" y="38">S</tspan>
+ </text>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;"
+ class=" djs-label">
+ <tspan x="25.5" y="43.5">VesCollector</tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="120" height="80"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="TCA_1d13unw"
+ transform="matrix(1,0,0,1,453,140)" style="display: block;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
+ height="92"></rect>
+ <g class="djs-visual">
+ <rect x="0" y="0" width="120" height="80" rx="0" ry="0"
+ style="stroke-width: 2;" stroke="#000000" fill="#ffffff"></rect>
+ <polyline points="0,60 120,60 " style="stroke-width: 2;"
+ fill="none" stroke="#000000"></polyline>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;"
+ class=" djs-label">
+ <tspan x="48" y="43.5">TCA</tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="120" height="80"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="Policy_12lup3h"
+ transform="matrix(1,0,0,1,687,140)" style="display: block;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
+ height="92"></rect>
+ <g class="djs-visual">
+ <rect x="0" y="0" width="120" height="80" rx="0" ry="0"
+ style="stroke-width: 2;" stroke="#000000" fill="#ffffff"></rect>
+ <polyline points="0,40 60,0 " style="stroke-width: 2;"
+ fill="none" stroke="#000000"></polyline>
+ <text style="font-family: Arial,sans-serif; font-size: 12px;"
+ class=" djs-label">
+ <tspan x="43.5" y="43.5">Policy</tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="120" height="80"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape selected" data-element-id="EndEvent_16kg9fx"
+ transform="matrix(1,0,0,1,925,162)" style="display: block;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="48"
+ height="48"></rect>
+ <g class="djs-visual">
+ <circle cx="18" cy="18" r="18" style="stroke-width: 4;"
+ stroke="#000000" fill="#ffffff"></circle>
+ </g>
+ <rect x="0" y="0" width="36" height="36"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ <g class=" djs-resizer djs-resizer-nw" transform="matrix(1,0,0,1,0,0)">
+ <rect x="-7" y="-7" width="5" height="5" class=" djs-resizer-visual"></rect>
+ <rect x="-7" y="-7" width="20" height="20" class=" djs-resizer-hit"></rect>
+ </g>
+ <g class=" djs-resizer djs-resizer-ne" transform="matrix(0,1,-1,0,36,0)">
+ <rect x="-7" y="-7" width="5" height="5" class=" djs-resizer-visual"></rect>
+ <rect x="-7" y="-7" width="20" height="20" class=" djs-resizer-hit"></rect>
+ </g>
+ <g class=" djs-resizer djs-resizer-se" transform="matrix(-1,0,0,-1,36,36)">
+ <rect x="-7" y="-7" width="5" height="5" class=" djs-resizer-visual"></rect>
+ <rect x="-7" y="-7" width="20" height="20" class=" djs-resizer-hit"></rect>
+ </g>
+ <g class=" djs-resizer djs-resizer-sw" transform="matrix(0,-1,1,0,0,36)">
+ <rect x="-7" y="-7" width="5" height="5" class=" djs-resizer-visual"></rect>
+ <rect x="-7" y="-7" width="20" height="20" class=" djs-resizer-hit"></rect>
+ </g>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="EndEvent_16kg9fx_label"
+ transform="matrix(1,0,0,1,898,198)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-connection" data-element-id="SequenceFlow_1ahk7jg"
+ style="display: block;">
+ <rect fill="none" class="djs-outline" x="80" y="174" width="133"
+ height="12"></rect>
+ <g class="djs-visual">
+ <path d="m 86,180L207,180 "
+ style="stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);"
+ fill="none" stroke="#000000"></path>
+ </g>
+ <polyline points="86,180 207,180 " style="stroke-opacity: 0; stroke-width: 15;"
+ fill="none" stroke="#ffffff" class="djs-hit"></polyline>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="SequenceFlow_1ahk7jg_label"
+ transform="matrix(1,0,0,1,101.5,170)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-connection" data-element-id="SequenceFlow_18ahat1"
+ style="display: block;">
+ <rect fill="none" class="djs-outline" x="321" y="174" width="138"
+ height="12"></rect>
+ <g class="djs-visual">
+ <path d="m 327,180L453,180 "
+ style="stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);"
+ fill="none" stroke="#000000"></path>
+ </g>
+ <polyline points="327,180 453,180 " style="stroke-opacity: 0; stroke-width: 15;"
+ fill="none" stroke="#ffffff" class="djs-hit"></polyline>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="SequenceFlow_18ahat1_label"
+ transform="matrix(1,0,0,1,345,170)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-connection" data-element-id="SequenceFlow_1mo9gxb"
+ style="display: block;">
+ <rect fill="none" class="djs-outline" x="567" y="174" width="126"
+ height="12"></rect>
+ <g class="djs-visual">
+ <path d="m 573,180L687,180 "
+ style="stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);"
+ fill="none" stroke="#000000"></path>
+ </g>
+ <polyline points="573,180 687,180 " style="stroke-opacity: 0; stroke-width: 15;"
+ fill="none" stroke="#ffffff" class="djs-hit"></polyline>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="SequenceFlow_1mo9gxb_label"
+ transform="matrix(1,0,0,1,585,170)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-connection" data-element-id="SequenceFlow_1dgtrrq"
+ style="display: block;">
+ <rect fill="none" class="djs-outline" x="801" y="174" width="130"
+ height="12"></rect>
+ <g class="djs-visual">
+ <path d="m 807,180L925,180 "
+ style="stroke-width: 2; stroke-linejoin: round; marker-end: url(&quot;#markerSjdype4kmnw&quot;);"
+ fill="none" stroke="#000000"></path>
+ </g>
+ <polyline points="807,180 925,180 " style="stroke-opacity: 0; stroke-width: 15;"
+ fill="none" stroke="#ffffff" class="djs-hit"></polyline>
+ </g>
+ </g>
+ <g class="djs-group" xmlns="http://www.w3.org/2000/svg">
+ <g class="djs-element djs-shape" data-element-id="SequenceFlow_1dgtrrq_label"
+ transform="matrix(1,0,0,1,821,170)" style="display: none;">
+ <rect fill="none" class="djs-outline" x="-6" y="-6" width="102"
+ height="32"></rect>
+ <g class="djs-visual">
+ <text style="font-family: Arial,sans-serif; font-size: 11px;"
+ class=" djs-label">
+ <tspan x="45" y="0"></tspan>
+ </text>
+ </g>
+ <rect x="0" y="0" width="90" height="20"
+ style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
+ class="djs-hit"></rect>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/src/test/resources/example/model-properties/tca_new/tca-template.xml b/src/test/resources/example/model-properties/tca_new/tca-template.xml
new file mode 100644
index 000000000..cc942ef9d
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca_new/tca-template.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
+ xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
+ <bpmn:process id="Process_1" isExecutable="false">
+ <bpmn:startEvent id="StartEvent_1">
+ <bpmn:outgoing>SequenceFlow_1ahk7jg</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:vesCollector id="VesCollector_1g9cmz0">
+ <bpmn:incoming>SequenceFlow_1ahk7jg</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_18ahat1</bpmn:outgoing>
+ </bpmn:vesCollector>
+ <bpmn:tCA id="TCA_1d13unw">
+ <bpmn:incoming>SequenceFlow_18ahat1</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1mo9gxb</bpmn:outgoing>
+ </bpmn:tCA>
+ <bpmn:policy id="Policy_12lup3h">
+ <bpmn:incoming>SequenceFlow_1mo9gxb</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1dgtrrq</bpmn:outgoing>
+ </bpmn:policy>
+ <bpmn:endEvent id="EndEvent_16kg9fx">
+ <bpmn:incoming>SequenceFlow_1dgtrrq</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_1ahk7jg"
+ sourceRef="StartEvent_1" targetRef="VesCollector_1g9cmz0" />
+ <bpmn:sequenceFlow id="SequenceFlow_18ahat1"
+ sourceRef="VesCollector_1g9cmz0" targetRef="TCA_1d13unw" />
+ <bpmn:sequenceFlow id="SequenceFlow_1mo9gxb"
+ sourceRef="TCA_1d13unw" targetRef="Policy_12lup3h" />
+ <bpmn:sequenceFlow id="SequenceFlow_1dgtrrq"
+ sourceRef="Policy_12lup3h" targetRef="EndEvent_16kg9fx" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2"
+ bpmnElement="StartEvent_1">
+ <dc:Bounds x="50" y="162" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="VesCollector_1g9cmz0_di"
+ bpmnElement="VesCollector_1g9cmz0">
+ <dc:Bounds x="207" y="140" width="120" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TCA_1d13unw_di"
+ bpmnElement="TCA_1d13unw">
+ <dc:Bounds x="453" y="140" width="120" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Policy_12lup3h_di"
+ bpmnElement="Policy_12lup3h">
+ <dc:Bounds x="687" y="140" width="120" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_16kg9fx_di"
+ bpmnElement="EndEvent_16kg9fx">
+ <dc:Bounds x="925" y="162" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="898" y="198" width="90" height="20" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ahk7jg_di"
+ bpmnElement="SequenceFlow_1ahk7jg">
+ <di:waypoint xsi:type="dc:Point" x="86" y="180" />
+ <di:waypoint xsi:type="dc:Point" x="207" y="180" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="101.5" y="170" width="90" height="20" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_18ahat1_di"
+ bpmnElement="SequenceFlow_18ahat1">
+ <di:waypoint xsi:type="dc:Point" x="327" y="180" />
+ <di:waypoint xsi:type="dc:Point" x="453" y="180" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="345" y="170" width="90" height="20" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1mo9gxb_di"
+ bpmnElement="SequenceFlow_1mo9gxb">
+ <di:waypoint xsi:type="dc:Point" x="573" y="180" />
+ <di:waypoint xsi:type="dc:Point" x="687" y="180" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="585" y="170" width="90" height="20" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1dgtrrq_di"
+ bpmnElement="SequenceFlow_1dgtrrq">
+ <di:waypoint xsi:type="dc:Point" x="807" y="180" />
+ <di:waypoint xsi:type="dc:Point" x="925" y="180" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="821" y="170" width="90" height="20" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+
+</bpmn:definitions> \ No newline at end of file