PNF PnP now always waits 43/64443/2
authorbiniek <lukasz.biniek@nokia.com>
Tue, 4 Sep 2018 14:27:25 +0000 (16:27 +0200)
committerLukasz Biniek <lukasz.biniek@nokia.com>
Wed, 5 Sep 2018 14:54:30 +0000 (14:54 +0000)
Issue-ID: SO-797
Change-Id: I717b987e78680157c4a2c0bf8d497855d1890077
Signed-off-by: biniek <lukasz.biniek@nokia.com>
16 files changed:
bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionTestImpl.java
bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CreateAndActivatePnfResourceTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/bpmn/CreateAndActivatePnfResourceTest.java with 60% similarity]
bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/DmaapClientTestImpl.java
bpmn/so-bpmn-infrastructure-common/pom.xml
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CheckAaiForCorrelationIdDelegate.java
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfCheckInputs.java [moved from bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfCheckInputs.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionTestImpl.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionThrowingException.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionThrowingException.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CancelDmaapSubscriptionTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CancelDmaapSubscriptionTest.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CheckAaiForCorrelationIdDelegateTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CheckAaiForCorrelationIdDelegateTest.java with 74% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CreateAaiEntryWithPnfIdDelegateTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/CreateAaiEntryWithPnfIdDelegateTest.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/DmaapClientTestImpl.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/InformDmaapClientTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/InformDmaapClientTest.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfCheckInputsTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfCheckInputsTest.java with 100% similarity]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClientTest.java [moved from bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClientTest.java with 100% similarity]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn

index 7cb649d..201e791 100644 (file)
 
 package org.onap.so.bpmn.infrastructure.pnf.delegate;
 
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.infrastructure.pnf.implementation.AaiConnection;
+
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
-import org.onap.aai.domain.yang.Pnf;
-import org.onap.so.bpmn.infrastructure.pnf.implementation.AaiConnection;
 
 public class AaiConnectionTestImpl implements AaiConnection {
 
-    public static final String ID_WITH_ENTRY_AND_IP = "idWithEntryAndIp";
-    public static final String ID_WITH_IP_V6 = "idWithIpV6";
     public static final String ID_WITHOUT_ENTRY = "IdWithoutEntry";
-    public static final String ID_WITH_ENTRY_NO_IP = "idWithEntryNoIp";
-    public static final String DEFAULT_IP = "1.2.3.4";
-    public static final String DEFAULT_IP_V6 = "2001:db8::ff00:42:8329";
+    public static final String ID_WITH_ENTRY = "idWithEntryNoIp";
 
     private Map<String, Pnf> created = new HashMap<>();
 
     @Override
     public Optional<Pnf> getEntryFor(String correlationId) throws IOException {
-        if (Objects.equals(correlationId, ID_WITH_ENTRY_AND_IP)) {
-            Pnf pnf = new Pnf();
-            pnf.setIpaddressV4Oam(DEFAULT_IP);
-            return Optional.of(pnf);
-        } else if (Objects.equals(correlationId, ID_WITH_IP_V6)) {
-            Pnf pnf = new Pnf();
-            pnf.setIpaddressV6Oam(DEFAULT_IP_V6);
-            return Optional.of(pnf);
-        } else if (Objects.equals(correlationId, ID_WITH_ENTRY_NO_IP)) {
+        if (Objects.equals(correlationId, ID_WITH_ENTRY)) {
             return Optional.of(new Pnf());
         } else {
             return Optional.empty();
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.bpmn.infrastructure.pnf.delegate.bpmn;
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.camunda.bpm.engine.test.assertions.ProcessEngineAssertions.assertThat;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITHOUT_ENTRY;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_ENTRY_AND_IP;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_ENTRY_NO_IP;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.CORRELATION_ID;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import org.assertj.core.api.Assertions;
 import org.camunda.bpm.engine.RuntimeService;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
 import org.camunda.bpm.engine.runtime.ProcessInstance;
 import org.camunda.bpm.engine.test.Deployment;
 import org.camunda.bpm.engine.test.ProcessEngineRule;
+import org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions;
 import org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl;
-import org.onap.so.bpmn.infrastructure.pnf.delegate.DmaapClientTestImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.CORRELATION_ID;
+
 @RunWith(SpringRunner.class)
 @ContextConfiguration(locations = "/applicationContext_forPnfTesting.xml")
 public class CreateAndActivatePnfResourceTest {
@@ -65,47 +59,25 @@ public class CreateAndActivatePnfResourceTest {
 
     @Test
     @Deployment(resources = {"process/CreateAndActivatePnfResource.bpmn"})
-    public void shouldSaveCurrentIpToVariableIfItAlreadyExistsInAai() throws Exception {
+    public void shouldWaitForMessageFromDmaapAndUpdateAaiEntryWhenAaiEntryExists() {
         // given
         aaiConnection.reset();
         BpmnAwareTests.init(processEngineRule.getProcessEngine());
         Map<String, Object> variables = new HashMap<>();
         variables.put("timeoutForPnfEntryNotification", TIMEOUT_10_S);
-        variables.put(CORRELATION_ID, ID_WITH_ENTRY_AND_IP);
-        // when
-        ProcessInstance instance = runtimeService
-                .startProcessInstanceByKey("CreateAndActivatePnfResource", variables);
-        // then
-        assertThat(instance).isEnded().hasPassedInOrder(
-                "CreateAndActivatePnf_StartEvent",
-                "CheckAiiForCorrelationId",
-                "DoesAaiContainInfoAboutPnf",
-                "DoesAaiContainInfoAboutIp",
-                "AaiEntryAlreadyUpToDate"
-        );
-    }
-
-    @Test
-    @Deployment(resources = {"process/CreateAndActivatePnfResource.bpmn"})
-    public void shouldWaitForMessageFromDmaapAndUpdateAaiEntryWhenIpIsMissingInAaiEntry() throws Exception {
-        // given
-        aaiConnection.reset();
-        BpmnAwareTests.init(processEngineRule.getProcessEngine());
-        Map<String, Object> variables = new HashMap<>();
-        variables.put("timeoutForPnfEntryNotification", TIMEOUT_10_S);
-        variables.put(CORRELATION_ID, ID_WITH_ENTRY_NO_IP);
+        variables.put(CORRELATION_ID, AaiConnectionTestImpl.ID_WITH_ENTRY);
         // when
         ProcessInstance instance = runtimeService
                 .startProcessInstanceByKey("CreateAndActivatePnfResource", "businessKey", variables);
-        assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
+        BpmnAwareAssertions.assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
         dmaapClientTestImpl.sendMessage();
 
         // then
-        assertThat(instance).isEnded().hasPassedInOrder(
+        BpmnAwareAssertions.assertThat(instance).isEnded().hasPassedInOrder(
                 "CreateAndActivatePnf_StartEvent",
+                "CheckInputs",
                 "CheckAiiForCorrelationId",
                 "DoesAaiContainInfoAboutPnf",
-                "DoesAaiContainInfoAboutIp",
                 "AaiEntryExists",
                 "InformDmaapClient",
                 "WaitForDmaapPnfReadyNotification",
@@ -115,22 +87,23 @@ public class CreateAndActivatePnfResourceTest {
 
     @Test
     @Deployment(resources = {"process/CreateAndActivatePnfResource.bpmn"})
-    public void shouldCreateAaiEntryWaitForMessageFromDmaapAndUpdateAaiEntryWhenNoAaiEntry() throws Exception {
+    public void shouldCreateAaiEntryWaitForMessageFromDmaapAndUpdateAaiEntryWhenNoAaiEntryExists() {
         // given
         aaiConnection.reset();
         BpmnAwareTests.init(processEngineRule.getProcessEngine());
         Map<String, Object> variables = new HashMap<>();
         variables.put("timeoutForPnfEntryNotification", TIMEOUT_10_S);
-        variables.put(CORRELATION_ID, ID_WITHOUT_ENTRY);
+        variables.put(CORRELATION_ID, AaiConnectionTestImpl.ID_WITHOUT_ENTRY);
         // when
         ProcessInstance instance = runtimeService
                 .startProcessInstanceByKey("CreateAndActivatePnfResource", "businessKey", variables);
-        assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
+        BpmnAwareAssertions.assertThat(instance).isWaitingAt("WaitForDmaapPnfReadyNotification").isWaitingFor("WorkflowMessage");
         dmaapClientTestImpl.sendMessage();
 
         // then
-        assertThat(instance).isEnded().hasPassedInOrder(
+        BpmnAwareAssertions.assertThat(instance).isEnded().hasPassedInOrder(
                 "CreateAndActivatePnf_StartEvent",
+                "CheckInputs",
                 "CheckAiiForCorrelationId",
                 "DoesAaiContainInfoAboutPnf",
                 "CreateAndActivatePnf_CreateAaiEntry",
@@ -139,11 +112,6 @@ public class CreateAndActivatePnfResourceTest {
                 "WaitForDmaapPnfReadyNotification",
                 "AaiEntryUpdated"
         );
-        assertThat(aaiConnection.getCreated()).containsOnlyKeys(ID_WITHOUT_ENTRY);
-    }
-
-    private List<HistoricVariableInstance> getVariables(ProcessInstance instance) {
-        return processEngineRule.getHistoryService().createHistoricVariableInstanceQuery()
-                .processInstanceId(instance.getProcessInstanceId()).taskIdIn().list();
+        Assertions.assertThat(aaiConnection.getCreated()).containsOnlyKeys(AaiConnectionTestImpl.ID_WITHOUT_ENTRY);
     }
 }
index 9bc9cc5..ad51b3f 100644 (file)
                        <classifier>tests</classifier>
                        <scope>test</scope>
                </dependency>
+        <dependency>
+            <groupId>org.camunda.bpm.springboot</groupId>
+            <artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
+            <version>2.3.0</version>
+            <scope>test</scope>
+        </dependency>
        </dependencies>
 </project>
index 63db293..12ddf84 100644 (file)
@@ -67,7 +67,6 @@ public class CheckAaiForCorrelationIdDelegate implements JavaDelegate {
             AaiResponse aaiResponse = implementation.check(correlationId, aaiConnection);
 
             execution.setVariableLocal(AAI_CONTAINS_INFO_ABOUT_PNF, aaiResponse.getContainsInfoAboutPnf());
-            execution.setVariableLocal(AAI_CONTAINS_INFO_ABOUT_IP, aaiResponse.getContainsInfoAboutIp());
         } catch (IOException e) {
                LOGGER.error("IOException",e);
             new ExceptionUtil().buildAndThrowWorkflowException(execution, 9999, e.getMessage());
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionTestImpl.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AaiConnectionTestImpl.java
new file mode 100644 (file)
index 0000000..201e791
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.infrastructure.pnf.implementation.AaiConnection;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+public class AaiConnectionTestImpl implements AaiConnection {
+
+    public static final String ID_WITHOUT_ENTRY = "IdWithoutEntry";
+    public static final String ID_WITH_ENTRY = "idWithEntryNoIp";
+
+    private Map<String, Pnf> created = new HashMap<>();
+
+    @Override
+    public Optional<Pnf> getEntryFor(String correlationId) throws IOException {
+        if (Objects.equals(correlationId, ID_WITH_ENTRY)) {
+            return Optional.of(new Pnf());
+        } else {
+            return Optional.empty();
+        }
+    }
+
+    @Override
+    public void createEntry(String correlationId, Pnf entry) throws IOException {
+        created.put(correlationId, entry);
+    }
+
+    public Map<String, Pnf> getCreated() {
+        return created;
+    }
+
+    public void reset() {
+        created.clear();
+    }
+}
@@ -27,10 +27,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITHOUT_ENTRY;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_ENTRY_AND_IP;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_ENTRY_NO_IP;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_IP_V6;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.AAI_CONTAINS_INFO_ABOUT_IP;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.AaiConnectionTestImpl.ID_WITH_ENTRY;
 import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.AAI_CONTAINS_INFO_ABOUT_PNF;
 import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.CORRELATION_ID;
 
@@ -41,9 +38,6 @@ import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.onap.so.bpmn.core.WorkflowException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(Enclosed.class)
 public class CheckAaiForCorrelationIdDelegateTest {
@@ -80,37 +74,15 @@ public class CheckAaiForCorrelationIdDelegateTest {
             verify(execution).setVariableLocal(AAI_CONTAINS_INFO_ABOUT_PNF, false);
         }
 
-        @Test
-        public void shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnf() throws Exception {
-            shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnf(ID_WITH_ENTRY_AND_IP);
-        }
-
-        @Test
-        public void shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnfWithIpV6() throws Exception {
-            shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnf(ID_WITH_IP_V6);
-        }
-
-        private void shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnf(String id) throws Exception {
-            // given
-            DelegateExecution execution = mock(DelegateExecution.class);
-            when(execution.getVariable(CORRELATION_ID)).thenReturn(id);
-            // when
-            delegate.execute(execution);
-            // then
-            verify(execution).setVariableLocal(AAI_CONTAINS_INFO_ABOUT_PNF, true);
-            verify(execution).setVariableLocal(AAI_CONTAINS_INFO_ABOUT_IP, true);
-        }
-
         @Test
         public void shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnfWithoutIp() throws Exception {
             // given
             DelegateExecution execution = mock(DelegateExecution.class);
-            when(execution.getVariable(CORRELATION_ID)).thenReturn(ID_WITH_ENTRY_NO_IP);
+            when(execution.getVariable(CORRELATION_ID)).thenReturn(ID_WITH_ENTRY);
             // when
             delegate.execute(execution);
             // then
             verify(execution).setVariableLocal(AAI_CONTAINS_INFO_ABOUT_PNF, true);
-            verify(execution).setVariableLocal(AAI_CONTAINS_INFO_ABOUT_IP, false);
         }
     }
 
@@ -128,7 +100,7 @@ public class CheckAaiForCorrelationIdDelegateTest {
         public void shouldThrowExceptionWhenIoExceptionOnConnectionToAai() {
             // given
             DelegateExecution execution = mock(DelegateExecution.class);
-            when(execution.getVariable(CORRELATION_ID)).thenReturn(ID_WITH_ENTRY_NO_IP);
+            when(execution.getVariable(CORRELATION_ID)).thenReturn(ID_WITH_ENTRY);
             when(execution.getVariable("testProcessKey")).thenReturn("testProcessKey");
             // when, then
             assertThatThrownBy(() -> delegate.execute(execution)).isInstanceOf(BpmnError.class);
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/DmaapClientTestImpl.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/DmaapClientTestImpl.java
new file mode 100644 (file)
index 0000000..f2a4205
--- /dev/null
@@ -0,0 +1,63 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import org.onap.so.bpmn.infrastructure.pnf.dmaap.DmaapClient;
+import java.util.Objects;
+
+public class DmaapClientTestImpl implements DmaapClient {
+
+    private String correlationId;
+    private Runnable informConsumer;
+
+    @Override
+    public void registerForUpdate(String correlationId, Runnable informConsumer) {
+        this.correlationId = correlationId;
+        this.informConsumer = informConsumer;
+    }
+
+    @Override
+    public Runnable unregister(String correlationId) {
+        if (Objects.equals(this.correlationId, correlationId)) {
+            this.correlationId = null;
+            Runnable informConsumer = this.informConsumer;
+            this.informConsumer = null;
+            return informConsumer;
+        }
+        return null;
+    }
+
+    public String getCorrelationId() {
+        return correlationId;
+    }
+
+    public Runnable getInformConsumer() {
+        return informConsumer;
+    }
+
+    public void sendMessage() {
+        informConsumer.run();
+    }
+
+    public boolean haveRegisteredConsumer() {
+        return correlationId != null;
+    }
+}
index 8f2bf67..89d66bf 100644 (file)
@@ -1,5 +1,5 @@
 <?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.2">
   <bpmn:collaboration id="Collaboration_1d0w8lf">
     <bpmn:participant id="Participant_1egg397" name="SO&#10;Create and Activate Pnf Resource" processRef="CreateAndActivatePnfResource" />
     <bpmn:participant id="Participant_0atuyq0" name="AAI" />
     <bpmn:sequenceFlow id="SequenceFlow_1j4r3zt" sourceRef="CheckAiiForCorrelationId" targetRef="DoesAaiContainInfoAboutPnf" />
     <bpmn:sequenceFlow id="SequenceFlow_0j5ksz1" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="CheckInputs" />
     <bpmn:sequenceFlow id="SequenceFlow_1miyzfe" sourceRef="CancelDmaapClientSubscription" targetRef="ThrowTimeoutException" />
-    <bpmn:sequenceFlow id="SequenceFlow_1ls8pua" name="No" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryExists">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!aaiContainsInfoAboutIp}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1l1t6ak" name="Yes" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="DoesAaiContainInfoAboutIp">
+    <bpmn:sequenceFlow id="SequenceFlow_1l1t6ak" name="Yes" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="AaiEntryExists">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutPnf}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1h6yz62" name="Yes" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryAlreadyUpToDate">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutIp}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:endEvent id="AaiEntryUpdated" name="AAI entry updated">
-      <bpmn:incoming>SequenceFlow_0p09qgm</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:endEvent id="ThrowTimeoutException" name="Throw timeout exception">
-      <bpmn:incoming>SequenceFlow_1miyzfe</bpmn:incoming>
-      <bpmn:errorEventDefinition errorRef="Error_1" />
-    </bpmn:endEvent>
-    <bpmn:endEvent id="AaiEntryAlreadyUpToDate" name="AAI entry already up-to-date">
-      <bpmn:incoming>SequenceFlow_1h6yz62</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:startEvent id="CreateAndActivatePnf_StartEvent">
-      <bpmn:outgoing>SequenceFlow_0j5ksz1</bpmn:outgoing>
-    </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0967g8p" sourceRef="CheckInputs" targetRef="CheckAiiForCorrelationId" />
-    <bpmn:serviceTask id="CheckAiiForCorrelationId" name="Check AAI for correlation_id" camunda:delegateExpression="${checkAaiForCorrelationIdDelegate}">
-      <bpmn:incoming>SequenceFlow_0967g8p</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1j4r3zt</bpmn:outgoing>
+    <bpmn:serviceTask id="CheckInputs" name="Check inputs" camunda:delegateExpression="${pnfCheckInputs}">
+      <bpmn:incoming>SequenceFlow_0j5ksz1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0967g8p</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutPnf" name="Does AAI contain info about pnf?">
-      <bpmn:incoming>SequenceFlow_1j4r3zt</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1l1t6ak</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0v5ffpe</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
+    <bpmn:serviceTask id="CancelDmaapClientSubscription" name="Cancel DmaapClient subscription" camunda:delegateExpression="${cancelDmaapSubscription}">
+      <bpmn:incoming>SequenceFlow_1kc34bc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1miyzfe</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="InformDmaapClient" name="Inform DmaapClient about business key and corresponding pnf-id" camunda:delegateExpression="${informDmaapClient}">
+      <bpmn:incoming>SequenceFlow_17s9025</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1o8od8e</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:intermediateThrowEvent id="AaiEntryExists" name="AAI entry exists">
+      <bpmn:incoming>SequenceFlow_1qr6cmf</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1l1t6ak</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17s9025</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
     <bpmn:serviceTask id="CreateAndActivatePnf_CreateAaiEntry" name="Create AAI entry with pnf-id = correlation_id" camunda:delegateExpression="${createAaiEntryWithPnfIdDelegate}">
       <bpmn:incoming>SequenceFlow_0v5ffpe</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1qr6cmf</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutIp" name="Does AAI contain info about IPv4 or IPv6?">
-      <bpmn:incoming>SequenceFlow_1l1t6ak</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1h6yz62</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1ls8pua</bpmn:outgoing>
+    <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutPnf" name="Does AAI contain info about pnf?">
+      <bpmn:incoming>SequenceFlow_1j4r3zt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1l1t6ak</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0v5ffpe</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:intermediateThrowEvent id="AaiEntryExists" name="AAI entry exists, lacking IP">
-      <bpmn:incoming>SequenceFlow_1qr6cmf</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1ls8pua</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_17s9025</bpmn:outgoing>
-    </bpmn:intermediateThrowEvent>
-    <bpmn:serviceTask id="InformDmaapClient" name="Inform DmaapClient about business key and corresponding pnf-id" camunda:delegateExpression="${informDmaapClient}">
-      <bpmn:incoming>SequenceFlow_17s9025</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1o8od8e</bpmn:outgoing>
+    <bpmn:serviceTask id="CheckAiiForCorrelationId" name="Check AAI for correlation_id" camunda:delegateExpression="${checkAaiForCorrelationIdDelegate}">
+      <bpmn:incoming>SequenceFlow_0967g8p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1j4r3zt</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:startEvent id="CreateAndActivatePnf_StartEvent">
+      <bpmn:outgoing>SequenceFlow_0j5ksz1</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:endEvent id="ThrowTimeoutException" name="Throw timeout exception">
+      <bpmn:incoming>SequenceFlow_1miyzfe</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1" />
+    </bpmn:endEvent>
+    <bpmn:endEvent id="AaiEntryUpdated" name="AAI entry updated">
+      <bpmn:incoming>SequenceFlow_0p09qgm</bpmn:incoming>
+    </bpmn:endEvent>
     <bpmn:receiveTask id="WaitForDmaapPnfReadyNotification" name="Wait for DMAAP pnf-ready notification" messageRef="Message_13h1tlo">
       <bpmn:incoming>SequenceFlow_1o8od8e</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0p09qgm</bpmn:outgoing>
         <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">#{timeoutForPnfEntryNotification}</bpmn:timeDuration>
       </bpmn:timerEventDefinition>
     </bpmn:boundaryEvent>
-    <bpmn:serviceTask id="CancelDmaapClientSubscription" name="Cancel DmaapClient subscription" camunda:delegateExpression="${cancelDmaapSubscription}">
-      <bpmn:incoming>SequenceFlow_1kc34bc</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1miyzfe</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:serviceTask id="CheckInputs" name="Check inputs" camunda:delegateExpression="${pnfCheckInputs}">
-      <bpmn:incoming>SequenceFlow_0j5ksz1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0967g8p</bpmn:outgoing>
-    </bpmn:serviceTask>
+    <bpmn:association id="Association_0d7oxnz" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="TextAnnotation_1eyzes8" />
     <bpmn:textAnnotation id="TextAnnotation_1eyzes8">
-      <bpmn:text><![CDATA[Inputs:
+      <bpmn:text>Inputs:
  - timeoutForPnfEntryNotification - String
  - correlationId - String
-]]></bpmn:text>
+</bpmn:text>
     </bpmn:textAnnotation>
-    <bpmn:association id="Association_0d7oxnz" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="TextAnnotation_1eyzes8" />
   </bpmn:process>
   <bpmn:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
   <bpmn:message id="Message_13h1tlo" name="WorkflowMessage" />
       <bpmndi:BPMNShape id="ExclusiveGateway_1cttgdo_di" bpmnElement="DoesAaiContainInfoAboutPnf" isMarkerVisible="true">
         <dc:Bounds x="390" y="182" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="372" y="283" width="85" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0yamdfm_di" bpmnElement="DoesAaiContainInfoAboutIp" isMarkerVisible="true">
-        <dc:Bounds x="682" y="41" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="663" y="5" width="87" height="30" />
+          <dc:Bounds x="372" y="283" width="85" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0k52gr7_di" bpmnElement="AaiEntryUpdated">
         <dc:Bounds x="1312" y="189" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1286" y="230" width="89" height="10" />
+          <dc:Bounds x="1287" y="230" width="88" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_0j5ok9h_di" bpmnElement="CreateAndActivatePnf_StartEvent">
         <dc:Bounds x="511" y="167" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1j4r3zt_di" bpmnElement="SequenceFlow_1j4r3zt">
-        <di:waypoint xsi:type="dc:Point" x="319" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="390" y="207" />
+        <di:waypoint x="319" y="207" />
+        <di:waypoint x="390" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="309.5" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1l1t6ak_di" bpmnElement="SequenceFlow_1l1t6ak">
-        <di:waypoint xsi:type="dc:Point" x="415" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="415" y="66" />
-        <di:waypoint xsi:type="dc:Point" x="682" y="66" />
+        <di:waypoint x="415" y="207" />
+        <di:waypoint x="415" y="66" />
+        <di:waypoint x="707" y="66" />
+        <di:waypoint x="707" y="189" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="430" y="180.1206896551724" width="19" height="10" />
+          <dc:Bounds x="430" y="180" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0v5ffpe_di" bpmnElement="SequenceFlow_0v5ffpe">
-        <di:waypoint xsi:type="dc:Point" x="440" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="511" y="207" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="447.32911392405055" y="210" width="15" height="10" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1h6yz62_di" bpmnElement="SequenceFlow_1h6yz62">
-        <di:waypoint xsi:type="dc:Point" x="732" y="66" />
-        <di:waypoint xsi:type="dc:Point" x="1312" y="66" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="742.7435064935065" y="51" width="19" height="10" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ls8pua_di" bpmnElement="SequenceFlow_1ls8pua">
-        <di:waypoint xsi:type="dc:Point" x="707" y="91" />
-        <di:waypoint xsi:type="dc:Point" x="707" y="189" />
+        <di:waypoint x="440" y="207" />
+        <di:waypoint x="511" y="207" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="717" y="116.1917808219178" width="15" height="10" />
+          <dc:Bounds x="448" y="210" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qr6cmf_di" bpmnElement="SequenceFlow_1qr6cmf">
-        <di:waypoint xsi:type="dc:Point" x="611" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="689" y="207" />
+        <di:waypoint x="611" y="207" />
+        <di:waypoint x="689" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="605" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0j5ksz1_di" bpmnElement="SequenceFlow_0j5ksz1">
-        <di:waypoint xsi:type="dc:Point" x="-18" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="48" y="207" />
+        <di:waypoint x="-18" y="207" />
+        <di:waypoint x="48" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="-30" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
         <dc:Bounds x="123" y="523" width="502" height="60" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="MessageFlow_1h3xu88_di" bpmnElement="MessageFlow_1h3xu88">
-        <di:waypoint xsi:type="dc:Point" x="561" y="247" />
-        <di:waypoint xsi:type="dc:Point" x="561" y="523" />
+        <di:waypoint x="561" y="247" />
+        <di:waypoint x="561" y="523" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="531" y="380" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="MessageFlow_09ibv5a_di" bpmnElement="MessageFlow_09ibv5a">
-        <di:waypoint xsi:type="dc:Point" x="250" y="247" />
-        <di:waypoint xsi:type="dc:Point" x="250" y="523" />
+        <di:waypoint x="250" y="247" />
+        <di:waypoint x="250" y="523" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="220" y="380" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="MessageFlow_0vjul4t_di" bpmnElement="MessageFlow_0vjul4t">
-        <di:waypoint xsi:type="dc:Point" x="289" y="523" />
-        <di:waypoint xsi:type="dc:Point" x="289" y="247" />
+        <di:waypoint x="289" y="523" />
+        <di:waypoint x="289" y="247" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="259" y="380" width="90" height="10" />
         </bpmndi:BPMNLabel>
       <bpmndi:BPMNShape id="EndEvent_0wbx6tt_di" bpmnElement="ThrowTimeoutException">
         <dc:Bounds x="1312" y="345" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1305" y="382" width="70" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_00cy7r0_di" bpmnElement="AaiEntryAlreadyUpToDate">
-        <dc:Bounds x="1312" y="48" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1288" y="89" width="85" height="20" />
+          <dc:Bounds x="1305" y="382" width="70" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_0fjcdy4_di" bpmnElement="AaiEntryExists">
         <dc:Bounds x="689" y="189" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="670" y="235" width="80" height="20" />
+          <dc:Bounds x="672" y="235" width="77" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="TextAnnotation_1eyzes8_di" bpmnElement="TextAnnotation_1eyzes8">
         <dc:Bounds x="-37" y="70" width="243" height="54" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="Association_0d7oxnz_di" bpmnElement="Association_0d7oxnz">
-        <di:waypoint xsi:type="dc:Point" x="-36" y="189" />
-        <di:waypoint xsi:type="dc:Point" x="-36" y="124" />
+        <di:waypoint x="-36" y="189" />
+        <di:waypoint x="-36" y="124" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="MessageFlow_1vrcp2d_di" bpmnElement="MessageFlow_1vrcp2d">
-        <di:waypoint xsi:type="dc:Point" x="1026" y="523" />
-        <di:waypoint xsi:type="dc:Point" x="1026" y="247" />
+        <di:waypoint x="1060" y="523" />
+        <di:waypoint x="1060" y="247" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="996" y="380" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_17s9025_di" bpmnElement="SequenceFlow_17s9025">
-        <di:waypoint xsi:type="dc:Point" x="725" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="803" y="207" />
+        <di:waypoint x="725" y="207" />
+        <di:waypoint x="803" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="719" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="BoundaryEvent_15eo1k9_di" bpmnElement="WaitForDmaapTimeout">
-        <dc:Bounds x="1040" y="229" width="36" height="36" />
+        <dc:Bounds x="1074" y="229" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1071" y="260" width="40" height="10" />
+          <dc:Bounds x="1117" y="240" width="40" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1kc34bc_di" bpmnElement="SequenceFlow_1kc34bc">
-        <di:waypoint xsi:type="dc:Point" x="1058" y="265" />
-        <di:waypoint xsi:type="dc:Point" x="1058" y="363" />
-        <di:waypoint xsi:type="dc:Point" x="1145" y="363" />
+        <di:waypoint x="1092" y="265" />
+        <di:waypoint x="1092" y="363" />
+        <di:waypoint x="1145" y="363" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1028" y="309" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ReceiveTask_1sfysua_di" bpmnElement="WaitForDmaapPnfReadyNotification">
-        <dc:Bounds x="974" y="167" width="100" height="80" />
+        <dc:Bounds x="1008" y="167" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0p09qgm_di" bpmnElement="SequenceFlow_0p09qgm">
-        <di:waypoint xsi:type="dc:Point" x="1074" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="1312" y="207" />
+        <di:waypoint x="1108" y="207" />
+        <di:waypoint x="1312" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1148" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1o8od8e_di" bpmnElement="SequenceFlow_1o8od8e">
-        <di:waypoint xsi:type="dc:Point" x="903" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="974" y="207" />
+        <di:waypoint x="903" y="207" />
+        <di:waypoint x="1008" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="893.5" y="187" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="MessageFlow_0tg4hw9_di" bpmnElement="MessageFlow_0tg4hw9">
-        <di:waypoint xsi:type="dc:Point" x="853" y="247" />
-        <di:waypoint xsi:type="dc:Point" x="853" y="523" />
+        <di:waypoint x="853" y="247" />
+        <di:waypoint x="853" y="523" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="823" y="380" width="90" height="10" />
         </bpmndi:BPMNLabel>
         <dc:Bounds x="803" y="167" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1miyzfe_di" bpmnElement="SequenceFlow_1miyzfe">
-        <di:waypoint xsi:type="dc:Point" x="1245" y="363" />
-        <di:waypoint xsi:type="dc:Point" x="1312" y="363" />
+        <di:waypoint x="1245" y="363" />
+        <di:waypoint x="1312" y="363" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1233.5" y="343" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="MessageFlow_1py54jr_di" bpmnElement="MessageFlow_1py54jr">
-        <di:waypoint xsi:type="dc:Point" x="1195" y="403" />
-        <di:waypoint xsi:type="dc:Point" x="1195" y="523" />
+        <di:waypoint x="1195" y="403" />
+        <di:waypoint x="1195" y="523" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1165" y="458" width="90" height="10" />
         </bpmndi:BPMNLabel>
         <dc:Bounds x="1145" y="323" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0967g8p_di" bpmnElement="SequenceFlow_0967g8p">
-        <di:waypoint xsi:type="dc:Point" x="148" y="207" />
-        <di:waypoint xsi:type="dc:Point" x="219" y="207" />
+        <di:waypoint x="148" y="207" />
+        <di:waypoint x="219" y="207" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="183.5" y="187" width="0" height="10" />
         </bpmndi:BPMNLabel>