summaryrefslogtreecommitdiffstats
path: root/bpmn
diff options
context:
space:
mode:
authorBenjamin, Max (mb388a) <mb388a@us.att.com>2019-02-01 18:13:35 -0500
committerBenjamin, Max (mb388a) <mb388a@us.att.com>2019-02-01 18:48:10 -0500
commit4e63348e5b0c9b8df287ee6eba33b69ffd5f2516 (patch)
treea6d806d3185efc62ff8af71bb572c02550aea2a2 /bpmn
parent62572d10fe5ea77726371c624b6bcbb33ff1707b (diff)
compare resources from openstack to aai
Address Review comments on pull request Update Unit test to have proper variable for testing update logic inside bpmn to reflect proper variable Update unit test to check property for audit Add flag to turn on and off audit behavior Add license headers, remove un-used files Update Building Block Tests and Activity Names Fix additional unit tests in so-bpmn-tasks layer Fix broken Junit Test, and correct Bug in if statement Add annotation to ignore class under test profile Additional bug fixes and unit tests for classes Add Additional JUNITS, add more sample data Add Openstack Audit functionality to Adapter Change-Id: I0492063271e991eefc608b56336a5cdf1d5a7778 Issue-ID: SO-1456 Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'bpmn')
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java87
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java6
-rw-r--r--bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java10
-rw-r--r--bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml4
-rw-r--r--bpmn/so-bpmn-building-blocks/pom.xml3
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn174
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn56
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn99
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/BaseBPMNTest.java9
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java35
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml7
-rw-r--r--bpmn/so-bpmn-building-blocks/src/test/resources/logback-test.xml2
-rw-r--r--bpmn/so-bpmn-tasks/pom.xml5
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java83
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java74
15 files changed, 478 insertions, 176 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
index d2e0b07dd1..b210b5ed2f 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
@@ -40,18 +40,19 @@ import org.springframework.stereotype.Component;
@Component
public class ExecuteBuildingBlockRainyDay {
-
- private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ExecuteBuildingBlockRainyDay.class);
+
+ private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL,
+ ExecuteBuildingBlockRainyDay.class);
public static final String HANDLING_CODE = "handlingCode";
-
+
@Autowired
private CatalogDbClient catalogDbClient;
@Autowired
private RequestsDbClient requestDbclient;
private static final String ASTERISK = "*";
-
+
@Autowired
- private Environment environment;
+ private Environment environment;
protected String retryDurationPath = "mso.rainyDay.retryDurationMultiplier";
protected String defaultCode = "mso.rainyDay.defaultCode";
@@ -67,7 +68,7 @@ public class ExecuteBuildingBlockRainyDay {
throw new BpmnError("Unknown error incrementing retry counter");
}
}
-
+
public void queryRainyDayTable(DelegateExecution execution, boolean primaryPolicy) {
try {
ExecuteBuildingBlock ebb = (ExecuteBuildingBlock) execution.getVariable("buildingBlock");
@@ -79,18 +80,20 @@ public class ExecuteBuildingBlockRainyDay {
boolean aLaCarte = (boolean) execution.getVariable("aLaCarte");
boolean suppressRollback = (boolean) execution.getVariable("suppressRollback");
String handlingCode = "";
- if(suppressRollback){
+ if (suppressRollback) {
handlingCode = "Abort";
- }else{
+ } else {
try {
- serviceType = gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0).getModelInfoServiceInstance().getServiceType();
+ serviceType = gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0)
+ .getModelInfoServiceInstance().getServiceType();
} catch (Exception ex) {
// keep default serviceType value
}
String vnfType = ASTERISK;
try {
- for(GenericVnf vnf : gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0).getVnfs()) {
- if(vnf.getVnfId().equalsIgnoreCase(lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID))) {
+ for (GenericVnf vnf : gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0)
+ .getVnfs()) {
+ if (vnf.getVnfId().equalsIgnoreCase(lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID))) {
vnfType = vnf.getVnfType();
}
}
@@ -104,58 +107,78 @@ public class ExecuteBuildingBlockRainyDay {
} catch (Exception ex) {
// keep default errorCode value
}
+ try {
+ errorCode = "" + (String) execution.getVariable("WorkflowExceptionCode");
+ } catch (Exception ex) {
+ // keep default errorCode value
+ }
+
String workStep = ASTERISK;
try {
workStep = workflowException.getWorkStep();
} catch (Exception ex) {
// keep default workStep value
}
- //Extract error data to be returned to WorkflowAction
- execution.setVariable("WorkflowExceptionErrorMessage", workflowException.getErrorMessage());
+
+ try {
+ // Extract error data to be returned to WorkflowAction
+ execution.setVariable("WorkflowExceptionErrorMessage", workflowException.getErrorMessage());
+ } catch (Exception e) {
+ msoLogger.error("No WorkflowException Found",e);
+ }
RainyDayHandlerStatus rainyDayHandlerStatus;
- rainyDayHandlerStatus = catalogDbClient.getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,serviceType,vnfType,errorCode,workStep);
- if(rainyDayHandlerStatus==null){
- rainyDayHandlerStatus = catalogDbClient.getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,ASTERISK,ASTERISK,ASTERISK,ASTERISK);
- if(rainyDayHandlerStatus==null){
+ rainyDayHandlerStatus = catalogDbClient
+ .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
+ serviceType, vnfType, errorCode, workStep);
+ if (rainyDayHandlerStatus == null) {
+ rainyDayHandlerStatus = catalogDbClient
+ .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
+ ASTERISK, ASTERISK, errorCode, ASTERISK);
+ }
+
+ if (rainyDayHandlerStatus == null) {
+ rainyDayHandlerStatus = catalogDbClient
+ .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
+ ASTERISK, ASTERISK, ASTERISK, ASTERISK);
+ if (rainyDayHandlerStatus == null) {
handlingCode = "Abort";
- }else{
- if(primaryPolicy){
+ } else {
+ if (primaryPolicy) {
handlingCode = rainyDayHandlerStatus.getPolicy();
- }else{
+ } else {
handlingCode = rainyDayHandlerStatus.getSecondaryPolicy();
}
}
- }else{
- if(primaryPolicy){
+ } else {
+ if (primaryPolicy) {
handlingCode = rainyDayHandlerStatus.getPolicy();
- }else{
+ } else {
handlingCode = rainyDayHandlerStatus.getSecondaryPolicy();
}
}
- if(!primaryPolicy){
- try{
+ if (!primaryPolicy) {
+ try {
InfraActiveRequests request = requestDbclient.getInfraActiveRequestbyRequestId(requestId);
request.setRetryStatusMessage("Retries have been exhausted.");
requestDbclient.updateInfraActiveRequests(request);
- } catch(Exception ex){
- msoLogger.debug(ex.toString());
- msoLogger.error("Failed to update Request Db Infra Active Requests with Retry Status");
+ } catch (Exception ex) {
+ msoLogger.error("Failed to update Request Db Infra Active Requests with Retry Status",ex);
}
}
- if(handlingCode.equals("RollbackToAssigned")&&!aLaCarte){
+ if (handlingCode.equals("RollbackToAssigned") && !aLaCarte) {
handlingCode = "Rollback";
}
}
msoLogger.debug("RainyDayHandler Status Code is: " + handlingCode);
execution.setVariable(HANDLING_CODE, handlingCode);
} catch (Exception e) {
- msoLogger.error("Failed to determine RainyDayHandler Status. Seting handlingCode = Abort");
+ msoLogger.error("Failed to determine RainyDayHandler Status. Seting handlingCode = Abort", e);
String code = this.environment.getProperty(defaultCode);
execution.setVariable(HANDLING_CODE, code);
}
}
-
- public void setHandlingStatusSuccess(DelegateExecution execution){
+
+ public void setHandlingStatusSuccess(DelegateExecution execution) {
execution.setVariable(HANDLING_CODE, "Success");
}
}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
index adffee6d42..459ef66e5b 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
@@ -78,7 +78,6 @@ public class ExceptionBuilder {
break;
}
}
-
msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, msg.toString());
execution.setVariable(errorVariable, exception.getMessage());
} catch (Exception ex){
@@ -108,6 +107,11 @@ public class ExceptionBuilder {
msoLogger.info("Throwing MSOWorkflowException");
throw new BpmnError("MSOWorkflowException");
}
+
+ public void buildAndThrowWorkflowException(DelegateExecution execution, String errorCode, String errorMessage) {
+ execution.setVariable("WorkflowExceptionErrorMessage", errorMessage);
+ throw new BpmnError(errorCode,errorMessage);
+ }
public String getProcessKey(DelegateExecution execution) {
String testKey = (String) execution.getVariable("testProcessKey");
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java
index cb5683dcc8..868aabf6a9 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java
@@ -93,7 +93,7 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
vnf.setVnfType("vnft1");
delegateExecution.setVariable("aLaCarte", true);
delegateExecution.setVariable("suppressRollback", false);
-
+ delegateExecution.setVariable("WorkflowExceptionCode", "7000");
RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
rainyDayHandlerStatus.setErrorCode("7000");
rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
@@ -116,7 +116,7 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
vnf.setVnfType("vnft1");
delegateExecution.setVariable("aLaCarte", true);
delegateExecution.setVariable("suppressRollback", false);
-
+ delegateExecution.setVariable("WorkflowExceptionCode", ASTERISK);
RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
rainyDayHandlerStatus.setErrorCode(ASTERISK);
rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
@@ -164,7 +164,7 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
vnf.setVnfType("vnft1");
delegateExecution.setVariable("aLaCarte", true);
delegateExecution.setVariable("suppressRollback", false);
-
+ delegateExecution.setVariable("WorkflowExceptionCode", "7000");
RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
rainyDayHandlerStatus.setErrorCode("7000");
rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
@@ -188,7 +188,7 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
vnf.setVnfType("vnft1");
delegateExecution.setVariable("aLaCarte", false);
delegateExecution.setVariable("suppressRollback", false);
-
+ delegateExecution.setVariable("WorkflowExceptionCode", "7000");
RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
rainyDayHandlerStatus.setErrorCode("7000");
rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
@@ -212,7 +212,7 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
vnf.setVnfType("vnft1");
delegateExecution.setVariable("aLaCarte", true);
delegateExecution.setVariable("suppressRollback", false);
-
+ delegateExecution.setVariable("WorkflowExceptionCode", "7000");
RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
rainyDayHandlerStatus.setErrorCode("7000");
rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
diff --git a/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml b/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml
index 203988a1a3..829fc12474 100644
--- a/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml
+++ b/bpmn/mso-infrastructure-bpmn/src/main/resources/application.yaml
@@ -2,7 +2,9 @@ server:
port: 8080
tomcat:
max-threads: 50
-
+mso:
+ infra:
+ auditInventory: true
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
diff --git a/bpmn/so-bpmn-building-blocks/pom.xml b/bpmn/so-bpmn-building-blocks/pom.xml
index 4fe02ee3ac..0971a9d54e 100644
--- a/bpmn/so-bpmn-building-blocks/pom.xml
+++ b/bpmn/so-bpmn-building-blocks/pom.xml
@@ -147,6 +147,7 @@
<artifactId>mariaDB4j</artifactId>
<version>2.2.3</version>
<scope>test</scope>
- </dependency>
+ </dependency>
+
</dependencies>
</project>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
index 3670676a84..fd24be100b 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
@@ -1,16 +1,17 @@
<?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="2.0.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.7.1">
<bpmn:process id="ActivateVfModuleBB" name="ActivateVfModuleBB" isExecutable="true">
<bpmn:startEvent id="ActivateVfModuleBB_Start">
<bpmn:outgoing>SequenceFlow_0ieafii</bpmn:outgoing>
</bpmn:startEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0ieafii" sourceRef="ActivateVfModuleBB_Start" targetRef="SetTimerDuration" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ieafii" sourceRef="ActivateVfModuleBB_Start" targetRef="CheckAuditVariable" />
<bpmn:endEvent id="ActivateVfModuleBB_End">
<bpmn:incoming>SequenceFlow_0xsp0pv</bpmn:incoming>
</bpmn:endEvent>
<bpmn:serviceTask id="ActivateVfModule" name="&#10;SDNC&#10;Activate&#10;(vf module)&#10;" camunda:expression="${SDNCActivateTasks.activateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
- <bpmn:incoming>SequenceFlow_0e44ywc</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1yzril6</bpmn:outgoing>
+ <bpmn:incoming>SequenceFlow_07ybdik</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0ee42yq</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1a495wm</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="UpdateVfModuleActiveStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn:incoming>SequenceFlow_1j4x1ej</bpmn:incoming>
@@ -24,90 +25,167 @@
<camunda:out source="WorkflowException" target="WorkflowException" />
<camunda:in source="mso-request-id" target="mso-request-id" />
</bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_1yzril6</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1a495wm</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1j4x1ej</bpmn:outgoing>
</bpmn:callActivity>
+ <bpmn:sequenceFlow id="SequenceFlow_1a495wm" sourceRef="ActivateVfModule" targetRef="CallActivity_sdncHandler" />
<bpmn:sequenceFlow id="SequenceFlow_1j4x1ej" sourceRef="CallActivity_sdncHandler" targetRef="UpdateVfModuleActiveStatus" />
- <bpmn:serviceTask id="SetTimerDuration" name="Set Timer Duration" camunda:expression="${ActivateVfModule.setTimerDuration(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:sequenceFlow id="SequenceFlow_0xndboi" sourceRef="Setup_AAI_Inventory_Audit" targetRef="Audit_AAI_Inventory" />
+ <bpmn:serviceTask id="Setup_AAI_Inventory_Audit" name="Setup Inventory Audit Variable" camunda:expression="${AuditTasks.setupAuditVariable(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn:incoming>SequenceFlow_0ghzwlo</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0xndboi</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Audit_AAI_Inventory" name="Validate A&#38;AI Inventory" camunda:type="external" camunda:topic="InventoryAudit">
+ <bpmn:incoming>SequenceFlow_0xndboi</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ee42yq</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:boundaryEvent id="BoundaryEvent_1nb1hw4" attachedToRef="Audit_AAI_Inventory">
+ <bpmn:outgoing>SequenceFlow_1t99ceh</bpmn:outgoing>
+ <bpmn:errorEventDefinition />
+ </bpmn:boundaryEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_1t99ceh" sourceRef="BoundaryEvent_1nb1hw4" targetRef="Task_0swpw3v" />
+ <bpmn:serviceTask id="Task_0swpw3v" name="Throw Exception" camunda:expression="${ExceptionBuilder.buildAndThrowWorkflowException(execution, &#34;AuditAAIInventoryFailure&#34;, &#34;Error Auditing Cloud Inventory in A&#38;AI&#34;)}" camunda:resultVariable="ExceptionBuilder">
+ <bpmn:incoming>SequenceFlow_1t99ceh</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_1v8bmbu" default="SequenceFlow_07ybdik">
+ <bpmn:incoming>SequenceFlow_1xqyur9</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_07ybdik</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0ghzwlo</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:sequenceFlow id="SequenceFlow_07ybdik" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="ActivateVfModule" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ghzwlo" sourceRef="ExclusiveGateway_1v8bmbu" targetRef="Setup_AAI_Inventory_Audit">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("auditInventoryNeeded").equals("true")}]]></bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:sequenceFlow id="SequenceFlow_0ee42yq" sourceRef="Audit_AAI_Inventory" targetRef="ActivateVfModule" />
+ <bpmn:serviceTask id="CheckAuditVariable" name="Check Audit Variable" camunda:expression="${AuditTasks.isAuditNeeded(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn:incoming>SequenceFlow_0ieafii</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0qc2sao</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1xqyur9</bpmn:outgoing>
</bpmn:serviceTask>
- <bpmn:intermediateCatchEvent id="Timer" name="Timer">
- <bpmn:incoming>SequenceFlow_0qc2sao</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0e44ywc</bpmn:outgoing>
- <bpmn:timerEventDefinition>
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">${execution.getVariable("vfModuleActivateTimerDuration")}</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:intermediateCatchEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0qc2sao" sourceRef="SetTimerDuration" targetRef="Timer" />
- <bpmn:sequenceFlow id="SequenceFlow_0e44ywc" sourceRef="Timer" targetRef="ActivateVfModule" />
- <bpmn:sequenceFlow id="SequenceFlow_1yzril6" sourceRef="ActivateVfModule" targetRef="CallActivity_sdncHandler" />
+ <bpmn:sequenceFlow id="SequenceFlow_1xqyur9" sourceRef="CheckAuditVariable" targetRef="ExclusiveGateway_1v8bmbu" />
</bpmn:process>
- <bpmn:error id="Error_0q258vt" name="gDelegateError" errorCode="7000" />
+ <bpmn:error id="Error_0q258vt" errorCode="7000" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateVfModuleBB">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="ActivateVfModuleBB_Start">
- <dc:Bounds x="173" y="102" width="36" height="36" />
+ <dc:Bounds x="73" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="179" y="138" width="24" height="12" />
+ <dc:Bounds x="46" y="138" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0ieafii_di" bpmnElement="SequenceFlow_0ieafii">
- <di:waypoint x="209" y="120" />
- <di:waypoint x="274" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="109" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="161" y="120" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="190.5" y="99" width="90" height="12" />
+ <dc:Bounds x="90" y="99" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_1v967li_di" bpmnElement="ActivateVfModuleBB_End">
- <dc:Bounds x="956" y="102" width="36" height="36" />
+ <dc:Bounds x="1104" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="710" y="142" width="90" height="12" />
+ <dc:Bounds x="935" y="142" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_0hawa84_di" bpmnElement="ActivateVfModule">
- <dc:Bounds x="490" y="80" width="100" height="80" />
+ <dc:Bounds x="539" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_175e9ul_di" bpmnElement="UpdateVfModuleActiveStatus">
- <dc:Bounds x="770" y="80" width="100" height="80" />
+ <dc:Bounds x="952" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0xsp0pv_di" bpmnElement="SequenceFlow_0xsp0pv">
- <di:waypoint x="870" y="120" />
- <di:waypoint x="956" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="1052" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="1104" y="120" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="673" y="99" width="90" height="12" />
+ <dc:Bounds x="1033" y="99" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="CallActivity_03jkesd_di" bpmnElement="CallActivity_sdncHandler">
- <dc:Bounds x="639" y="80" width="100" height="80" />
+ <dc:Bounds x="794" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1a495wm_di" bpmnElement="SequenceFlow_1a495wm">
+ <di:waypoint xsi:type="dc:Point" x="639" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="794" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="671.5" y="99" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1j4x1ej_di" bpmnElement="SequenceFlow_1j4x1ej">
- <di:waypoint x="739" y="120" />
- <di:waypoint x="770" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="894" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="952" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="878" y="99" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0xndboi_di" bpmnElement="SequenceFlow_0xndboi">
+ <di:waypoint xsi:type="dc:Point" x="365" y="256" />
+ <di:waypoint xsi:type="dc:Point" x="452" y="256" />
+ <di:waypoint xsi:type="dc:Point" x="452" y="256" />
+ <di:waypoint xsi:type="dc:Point" x="539" y="256" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="560" y="99" width="0" height="12" />
+ <dc:Bounds x="422" y="249.5" width="90" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_0tg4hn9_di" bpmnElement="SetTimerDuration">
- <dc:Bounds x="274" y="80" width="100" height="80" />
+ <bpmndi:BPMNShape id="ServiceTask_0krf1ur_di" bpmnElement="Setup_AAI_Inventory_Audit">
+ <dc:Bounds x="265" y="216" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="IntermediateCatchEvent_17kjdjp_di" bpmnElement="Timer">
- <dc:Bounds x="417" y="102" width="36" height="36" />
+ <bpmndi:BPMNShape id="ServiceTask_08rxjeb_di" bpmnElement="Audit_AAI_Inventory">
+ <dc:Bounds x="539" y="216" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="BoundaryEvent_0s7rszu_di" bpmnElement="BoundaryEvent_1nb1hw4">
+ <dc:Bounds x="575" y="278" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="421" y="145" width="29" height="14" />
+ <dc:Bounds x="548" y="317" width="90" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0qc2sao_di" bpmnElement="SequenceFlow_0qc2sao">
- <di:waypoint x="374" y="120" />
- <di:waypoint x="417" y="120" />
+ <bpmndi:BPMNEdge id="SequenceFlow_1t99ceh_di" bpmnElement="SequenceFlow_1t99ceh">
+ <di:waypoint xsi:type="dc:Point" x="593" y="314" />
+ <di:waypoint xsi:type="dc:Point" x="593" y="348" />
+ <di:waypoint xsi:type="dc:Point" x="593" y="348" />
+ <di:waypoint xsi:type="dc:Point" x="593" y="371" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="563" y="341.5" width="90" height="13" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0e44ywc_di" bpmnElement="SequenceFlow_0e44ywc">
- <di:waypoint x="453" y="120" />
- <di:waypoint x="490" y="120" />
+ <bpmndi:BPMNShape id="ServiceTask_0eujimg_di" bpmnElement="Task_0swpw3v">
+ <dc:Bounds x="543" y="371" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_1v8bmbu_di" bpmnElement="ExclusiveGateway_1v8bmbu" isMarkerVisible="true">
+ <dc:Bounds x="290" y="95" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="315" y="148" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_07ybdik_di" bpmnElement="SequenceFlow_07ybdik">
+ <di:waypoint xsi:type="dc:Point" x="340" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="539" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="439.5" y="98.5" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ghzwlo_di" bpmnElement="SequenceFlow_0ghzwlo">
+ <di:waypoint xsi:type="dc:Point" x="315" y="145" />
+ <di:waypoint xsi:type="dc:Point" x="315" y="216" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="330" y="174" width="0" height="13" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1yzril6_di" bpmnElement="SequenceFlow_1yzril6">
- <di:waypoint x="590" y="120" />
- <di:waypoint x="639" y="120" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0ee42yq_di" bpmnElement="SequenceFlow_0ee42yq">
+ <di:waypoint xsi:type="dc:Point" x="589" y="216" />
+ <di:waypoint xsi:type="dc:Point" x="589" y="193" />
+ <di:waypoint xsi:type="dc:Point" x="589" y="193" />
+ <di:waypoint xsi:type="dc:Point" x="589" y="160" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="604" y="186.5" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1eg5ryx_di" bpmnElement="CheckAuditVariable">
+ <dc:Bounds x="161" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1xqyur9_di" bpmnElement="SequenceFlow_1xqyur9">
+ <di:waypoint xsi:type="dc:Point" x="261" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="290" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="275.5" y="98.5" width="0" height="13" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn
index bd126de24e..08252f66b8 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn
@@ -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.10.0">
+<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.7.1">
<bpmn:process id="CreateVfModuleBB" name="CreateVfModuleBB" isExecutable="true">
<bpmn:startEvent id="CreateVfModuleBB_Start">
<bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
@@ -10,7 +10,7 @@
</bpmn:serviceTask>
<bpmn:sequenceFlow id="SequenceFlow_1xr6chl" sourceRef="CreateVfModuleBB_Start" targetRef="QueryVnf" />
<bpmn:endEvent id="CreateVfModuleBB_End">
- <bpmn:incoming>SequenceFlow_1stomxq</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1vbwdaw</bpmn:incoming>
</bpmn:endEvent>
<bpmn:serviceTask id="CreateVfModule" name="Create VF Module (VNF)" camunda:expression="${VnfAdapterCreateTasks.createVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn:incoming>SequenceFlow_15hn8si</bpmn:incoming>
@@ -34,15 +34,13 @@
<bpmn:incoming>SequenceFlow_16g4dz0</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0ecr393</bpmn:outgoing>
</bpmn:callActivity>
- <bpmn:sequenceFlow id="SequenceFlow_1stomxq" sourceRef="UpdateVfModuleStatus" targetRef="CreateVfModuleBB_End" />
<bpmn:serviceTask id="UpdateVfModuleStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
- <bpmn:incoming>SequenceFlow_0qqsilv</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1stomxq</bpmn:outgoing>
+ <bpmn:incoming>SequenceFlow_0rds4rj</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1vbwdaw</bpmn:outgoing>
</bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_0qqsilv" sourceRef="UpdateVfModuleHeatStackId" targetRef="UpdateVfModuleStatus" />
<bpmn:serviceTask id="UpdateVfModuleHeatStackId" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateHeatStackIdVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn:incoming>SequenceFlow_0ecr393</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0qqsilv</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0rds4rj</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:subProcess id="SubProcess_1getwnf" name="Error Handling&#10;&#10;" triggeredByEvent="true">
<bpmn:startEvent id="StartEvent_1c8o652">
@@ -55,6 +53,8 @@
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_0gcots6" sourceRef="StartEvent_1c8o652" targetRef="EndEvent_1emam1w" />
</bpmn:subProcess>
+ <bpmn:sequenceFlow id="SequenceFlow_0rds4rj" sourceRef="UpdateVfModuleHeatStackId" targetRef="UpdateVfModuleStatus" />
+ <bpmn:sequenceFlow id="SequenceFlow_1vbwdaw" sourceRef="UpdateVfModuleStatus" targetRef="CreateVfModuleBB_End" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleBB">
@@ -75,9 +75,9 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="CreateVfModuleBB_End">
- <dc:Bounds x="1278" y="88" width="36" height="36" />
+ <dc:Bounds x="1299" y="88" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1286" y="128" width="19" height="12" />
+ <dc:Bounds x="1272" y="128" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_1dgenhy_di" bpmnElement="CreateVfModule">
@@ -108,34 +108,20 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0ecr393_di" bpmnElement="SequenceFlow_0ecr393">
- <di:waypoint xsi:type="dc:Point" x="877" y="106" />
- <di:waypoint xsi:type="dc:Point" x="950" y="106" />
+ <di:waypoint xsi:type="dc:Point" x="877" y="107" />
+ <di:waypoint xsi:type="dc:Point" x="931" y="107" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="869" y="91" width="90" height="0" />
+ <dc:Bounds x="859" y="92" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="CallActivity_1i1pfzb_di" bpmnElement="VnfAdapter">
<dc:Bounds x="777" y="66" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1stomxq_di" bpmnElement="SequenceFlow_1stomxq">
- <di:waypoint xsi:type="dc:Point" x="1214" y="106" />
- <di:waypoint xsi:type="dc:Point" x="1278" y="106" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1201" y="91" width="90" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ServiceTask_0fpfn71_di" bpmnElement="UpdateVfModuleStatus">
- <dc:Bounds x="1114" y="66" width="100" height="80" />
+ <dc:Bounds x="1117" y="66" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0qqsilv_di" bpmnElement="SequenceFlow_0qqsilv">
- <di:waypoint xsi:type="dc:Point" x="1050" y="106" />
- <di:waypoint xsi:type="dc:Point" x="1114" y="106" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1037" y="91" width="90" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ServiceTask_04k1b85_di" bpmnElement="UpdateVfModuleHeatStackId">
- <dc:Bounds x="950" y="66" width="100" height="80" />
+ <dc:Bounds x="931" y="68" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="SubProcess_1getwnf_di" bpmnElement="SubProcess_1getwnf" isExpanded="true">
<dc:Bounds x="172" y="276" width="231" height="135" />
@@ -159,6 +145,20 @@
<dc:Bounds x="297.5" y="331" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0rds4rj_di" bpmnElement="SequenceFlow_0rds4rj">
+ <di:waypoint xsi:type="dc:Point" x="1031" y="107" />
+ <di:waypoint xsi:type="dc:Point" x="1117" y="107" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1074" y="85" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1vbwdaw_di" bpmnElement="SequenceFlow_1vbwdaw">
+ <di:waypoint xsi:type="dc:Point" x="1217" y="106" />
+ <di:waypoint xsi:type="dc:Point" x="1299" y="106" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1258" y="84" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn
index 9be4cd0473..943ce12a8a 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn
@@ -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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
+<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" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.1">
<bpmn:process id="ExecuteBuildingBlock" name="ExecuteBuildingBlock" isExecutable="true">
<bpmn:startEvent id="Start_ExecuteBuildingBlock" name="start">
<bpmn:outgoing>SequenceFlow_0rq4c5r</bpmn:outgoing>
@@ -37,7 +37,7 @@
<bpmn:subProcess id="SubProcess_0tv8zda" name="Error Handling&#10;&#10;" triggeredByEvent="true">
<bpmn:startEvent id="StartEvent_0tmcs9g">
<bpmn:outgoing>SequenceFlow_09synl9</bpmn:outgoing>
- <bpmn:errorEventDefinition />
+ <bpmn:errorEventDefinition camunda:errorCodeVariable="WorkflowExceptionCode" camunda:errorMessageVariable="WorkflowExceptionMessage" />
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_09synl9" sourceRef="StartEvent_0tmcs9g" targetRef="Task_QueryRainyDayTable" />
<bpmn:serviceTask id="Task_QueryRainyDayTable" name="QueryRainyDayTable" camunda:expression="${ExecuteBuildingBlockRainyDay.queryRainyDayTable(execution,true)}">
@@ -114,6 +114,11 @@
</bpmn:process>
<bpmn:error id="Error_0tnktdw" name="Error" errorCode="java.lang.Exception" />
<bpmn:error id="Error_17zcdbk" name="Bpmn Error" />
+ <bpmn:error id="Error_123q3fr" name="Error_1h13m8l" />
+ <bpmn:error id="Error_1ivyybb" name="Error_1e4p3cf" />
+ <bpmn:error id="Error_1c60d7i" name="Error_0qrs661" />
+ <bpmn:error id="Error_1owi18u" name="Error_2eiqdl7" />
+ <bpmn:error id="Error_0snha16" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ExecuteBuildingBlock">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_ExecuteBuildingBlock">
@@ -156,63 +161,63 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ExclusiveGateway_0ey4zpt_di" bpmnElement="ExclusiveGateway_0ey4zpt" isMarkerVisible="true">
- <dc:Bounds x="724" y="367" width="50" height="50" />
+ <dc:Bounds x="721" y="385" width="50" height="50" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="719" y="342" width="62" height="12" />
+ <dc:Bounds x="716" y="360" width="63" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="IntermediateCatchEvent_0qjyidb_di" bpmnElement="IntermediateCatchEvent_RetryTimer">
- <dc:Bounds x="968" y="374" width="36" height="36" />
+ <dc:Bounds x="965" y="392" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="959" y="349" width="55" height="12" />
+ <dc:Bounds x="956" y="367" width="55" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ExclusiveGateway_1aonzik_di" bpmnElement="ExclusiveGateway_1aonzik" isMarkerVisible="true">
- <dc:Bounds x="571" y="367" width="50" height="50" />
+ <dc:Bounds x="568" y="385" width="50" height="50" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="562" y="329" width="68" height="24" />
+ <dc:Bounds x="558" y="347" width="70" height="25" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1wbevp0_di" bpmnElement="SequenceFlow_1wbevp0">
- <di:waypoint xsi:type="dc:Point" x="774" y="392" />
- <di:waypoint xsi:type="dc:Point" x="839" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="771" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="836" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="790.2777777777778" y="367" width="18" height="12" />
+ <dc:Bounds x="788" y="385" width="18" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0fwsjva_di" bpmnElement="SequenceFlow_0fwsjva">
- <di:waypoint xsi:type="dc:Point" x="621" y="392" />
- <di:waypoint xsi:type="dc:Point" x="724" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="618" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="721" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="659" y="400" width="27" height="12" />
+ <dc:Bounds x="656" y="418" width="27" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0h8v45y_di" bpmnElement="SequenceFlow_0h8v45y">
- <di:waypoint xsi:type="dc:Point" x="596" y="417" />
- <di:waypoint xsi:type="dc:Point" x="596" y="473" />
+ <di:waypoint xsi:type="dc:Point" x="593" y="435" />
+ <di:waypoint xsi:type="dc:Point" x="593" y="491" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="603" y="438" width="84" height="12" />
+ <dc:Bounds x="600" y="456" width="85" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ServiceTask_1tifgqh_di" bpmnElement="Task_QueryRainyDayTable">
- <dc:Bounds x="428" y="352" width="100" height="80" />
+ <dc:Bounds x="425" y="370" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0ndt8ft_di" bpmnElement="SequenceFlow_0ndt8ft">
- <di:waypoint xsi:type="dc:Point" x="939" y="392" />
- <di:waypoint xsi:type="dc:Point" x="968" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="936" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="965" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="908.5" y="371" width="90" height="12" />
+ <dc:Bounds x="906" y="389" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_07a1ytc_di" bpmnElement="SequenceFlow_07a1ytc">
- <di:waypoint xsi:type="dc:Point" x="1004" y="392" />
- <di:waypoint xsi:type="dc:Point" x="1042" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="1001" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="1039" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="978" y="371" width="90" height="12" />
+ <dc:Bounds x="975" y="389" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ServiceTask_1obvxht_di" bpmnElement="Task_SetRetryTimer">
- <dc:Bounds x="839" y="352" width="100" height="80" />
+ <dc:Bounds x="836" y="370" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0kdjsnx_di" bpmnElement="Continue">
<di:waypoint xsi:type="dc:Point" x="508" y="180" />
@@ -238,38 +243,38 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0a62t4c_di" bpmnElement="SequenceFlow_0a62t4c">
- <di:waypoint xsi:type="dc:Point" x="528" y="392" />
- <di:waypoint xsi:type="dc:Point" x="571" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="525" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="568" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="505" y="371" width="90" height="13" />
+ <dc:Bounds x="502" y="389" width="90" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="SubProcess_0tv8zda_di" bpmnElement="SubProcess_0tv8zda" isExpanded="true">
- <dc:Bounds x="323" y="276" width="802" height="290" />
+ <dc:Bounds x="320" y="294" width="802" height="290" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="StartEvent_0tmcs9g_di" bpmnElement="StartEvent_0tmcs9g">
- <dc:Bounds x="343" y="374" width="36" height="36" />
+ <dc:Bounds x="340" y="392" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="226" y="410" width="90" height="12" />
+ <dc:Bounds x="223" y="428" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_09synl9_di" bpmnElement="SequenceFlow_09synl9">
- <di:waypoint xsi:type="dc:Point" x="379" y="392" />
- <di:waypoint xsi:type="dc:Point" x="428" y="392" />
+ <di:waypoint xsi:type="dc:Point" x="376" y="410" />
+ <di:waypoint xsi:type="dc:Point" x="425" y="410" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="359" y="371" width="90" height="12" />
+ <dc:Bounds x="356" y="389" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_0mvmk3i_di" bpmnElement="EndEvent_0mvmk3i">
- <dc:Bounds x="578" y="473" width="36" height="36" />
+ <dc:Bounds x="575" y="491" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="551" y="513" width="90" height="12" />
+ <dc:Bounds x="548" y="531" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_1aww7yx_di" bpmnElement="EndEvent_1sez2lh">
- <dc:Bounds x="1042" y="374" width="36" height="36" />
+ <dc:Bounds x="1039" y="392" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1052" y="414" width="18" height="12" />
+ <dc:Bounds x="1049" y="432" width="19" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_16lmcxp_di" bpmnElement="SequenceFlow_16lmcxp">
@@ -312,27 +317,27 @@
<dc:Bounds x="906" y="140" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0541bid_di" bpmnElement="SequenceFlow_0541bid">
- <di:waypoint xsi:type="dc:Point" x="749" y="417" />
- <di:waypoint xsi:type="dc:Point" x="749" y="441" />
+ <di:waypoint xsi:type="dc:Point" x="746" y="435" />
+ <di:waypoint xsi:type="dc:Point" x="746" y="459" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="760" y="418" width="12" height="12" />
+ <dc:Bounds x="757" y="436" width="13" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_12ps9at_di" bpmnElement="SequenceFlow_12ps9at">
- <di:waypoint xsi:type="dc:Point" x="799" y="481" />
- <di:waypoint xsi:type="dc:Point" x="871" y="481" />
+ <di:waypoint xsi:type="dc:Point" x="796" y="499" />
+ <di:waypoint xsi:type="dc:Point" x="868" y="499" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="835" y="460" width="0" height="12" />
+ <dc:Bounds x="787" y="478" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_05vw85n_di" bpmnElement="EndEvent_0ex9298">
- <dc:Bounds x="871" y="463" width="36" height="36" />
+ <dc:Bounds x="868" y="481" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="880" y="503" width="18" height="12" />
+ <dc:Bounds x="877" y="521" width="19" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_11f2c91_di" bpmnElement="Task_QuerySecondaryPolicy">
- <dc:Bounds x="699" y="441" width="100" height="80" />
+ <dc:Bounds x="696" y="459" width="100" height="80" />
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/BaseBPMNTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/BaseBPMNTest.java
index f501151ec9..79bade3cf3 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/BaseBPMNTest.java
+++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/BaseBPMNTest.java
@@ -23,7 +23,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
+import org.camunda.bpm.engine.ExternalTaskService;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.extension.mockito.mock.FluentJavaDelegateMock;
@@ -50,6 +50,7 @@ import org.onap.so.bpmn.infrastructure.adapter.vnf.tasks.VnfAdapterCreateTasks;
import org.onap.so.bpmn.infrastructure.adapter.vnf.tasks.VnfAdapterDeleteTasks;
import org.onap.so.bpmn.infrastructure.adapter.vnf.tasks.VnfAdapterImpl;
import org.onap.so.bpmn.infrastructure.appc.tasks.AppcRunTasks;
+import org.onap.so.bpmn.infrastructure.audit.AuditTasks;
import org.onap.so.bpmn.infrastructure.flowspecific.tasks.ActivateVfModule;
import org.onap.so.bpmn.infrastructure.flowspecific.tasks.AssignNetwork;
import org.onap.so.bpmn.infrastructure.flowspecific.tasks.AssignNetworkBBUtils;
@@ -94,6 +95,9 @@ public abstract class BaseBPMNTest {
protected RuntimeService runtimeService;
@Autowired
+ protected ExternalTaskService externalTaskService;
+
+ @Autowired
private RepositoryService repositoryService;
protected Map<String, Object> variables = new HashMap<>();
@@ -227,6 +231,9 @@ public abstract class BaseBPMNTest {
@MockBean
protected WorkflowActionBBFailure workflowActionBBFailure;
+
+ @MockBean
+ protected AuditTasks auditTasks;
@LocalServerPort
protected int port;
diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
index 1bce605076..9ffcd9d77a 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
+++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/ActivateVfModuleBBTest.java
@@ -21,9 +21,13 @@
package org.onap.so.bpmn.infrastructure.bpmn.subprocess;
import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import java.io.IOException;
+import java.util.List;
+
import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.externaltask.LockedExternalTask;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.junit.Before;
import org.junit.Test;
@@ -35,17 +39,25 @@ public class ActivateVfModuleBBTest extends BaseBPMNTest{
@Before
public void before() {
variables.put("vfModuleActivateTimerDuration", "PT2S");
+ variables.put("auditInventoryNeeded", "true");
}
@Test
public void sunnyDay() throws InterruptedException, IOException {
mockSubprocess("SDNCHandler", "My Mock Process Name", "GenericStub");
ProcessInstance pi = runtimeService.startProcessInstanceByKey("ActivateVfModuleBB", variables);
- while(runtimeService.createProcessInstanceQuery().processInstanceId(pi.getId()).singleResult() != null) {
- Thread.sleep(1000);
- }
+ List<LockedExternalTask> tasks = externalTaskService.fetchAndLock(100, "externalWorkerId")
+ .topic("InventoryAudit", 60L * 1000L).execute();
+ while (!tasks.isEmpty()) {
+ for (LockedExternalTask task : tasks) {
+ externalTaskService.complete(task.getId(), "externalWorkerId");
+ }
+ tasks = externalTaskService.fetchAndLock(100, "externalWorkerId")
+ .topic("InventoryAudit", 60L * 1000L).execute();
+ }
+
assertThat(pi).isNotNull();
- assertThat(pi).isStarted().hasPassedInOrder("ActivateVfModuleBB_Start", "SetTimerDuration", "Timer", "ActivateVfModule", "CallActivity_sdncHandler",
+ assertThat(pi).isStarted().hasPassedInOrder("ActivateVfModuleBB_Start","ExclusiveGateway_1v8bmbu","Setup_AAI_Inventory_Audit", "Audit_AAI_Inventory", "ActivateVfModule", "CallActivity_sdncHandler",
"UpdateVfModuleActiveStatus", "ActivateVfModuleBB_End");
assertThat(pi).isEnded();
}
@@ -55,11 +67,18 @@ public class ActivateVfModuleBBTest extends BaseBPMNTest{
mockSubprocess("SDNCHandler", "My Mock Process Name", "GenericStub");
doThrow(BpmnError.class).when(aaiUpdateTasks).updateOrchestrationStatusActivateVfModule(any(BuildingBlockExecution.class));
ProcessInstance pi = runtimeService.startProcessInstanceByKey("ActivateVfModuleBB", variables);
- while(runtimeService.createProcessInstanceQuery().processInstanceId(pi.getId()).singleResult() != null) {
- Thread.sleep(1000);
- }
+ List<LockedExternalTask> tasks = externalTaskService.fetchAndLock(100, "externalWorkerId")
+ .topic("InventoryAudit", 60L * 1000L).execute();
+ while (!tasks.isEmpty()) {
+ for (LockedExternalTask task : tasks) {
+ externalTaskService.complete(task.getId(), "externalWorkerId");
+ }
+ tasks = externalTaskService.fetchAndLock(100, "externalWorkerId")
+ .topic("InventoryAudit", 60L * 1000L).execute();
+ }
+
assertThat(pi).isNotNull().isStarted()
- .hasPassedInOrder("ActivateVfModuleBB_Start", "SetTimerDuration", "Timer", "ActivateVfModule", "UpdateVfModuleActiveStatus")
+ .hasPassedInOrder("ActivateVfModuleBB_Start","ExclusiveGateway_1v8bmbu","Setup_AAI_Inventory_Audit", "Audit_AAI_Inventory", "ActivateVfModule", "UpdateVfModuleActiveStatus")
.hasNotPassed("ActivateVfModuleBB_End");
}
}
diff --git a/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml b/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
index 1090ab7be4..c36172c3bf 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
+++ b/bpmn/so-bpmn-building-blocks/src/test/resources/application-test.yaml
@@ -31,6 +31,10 @@ log:
vnfAdapterCreateV1: 'true'
vnfAdapterRestV1: 'true'
mso:
+ infra:
+ auditInventory: true
+ customer:
+ id: testCustIdInfra
adapters:
completemsoprocess:
endpoint: http://localhost:28090/CompleteMsoProcess
@@ -96,9 +100,6 @@ mso:
healthcheck:
log:
debug: 'false'
- infra:
- customer:
- id: testCustIdInfra
logPath: logs
msoKey: 07a7159d3bf51a0e53be7a8f89699be7
po:
diff --git a/bpmn/so-bpmn-building-blocks/src/test/resources/logback-test.xml b/bpmn/so-bpmn-building-blocks/src/test/resources/logback-test.xml
index 64b6bfc81b..d8f6ba3930 100644
--- a/bpmn/so-bpmn-building-blocks/src/test/resources/logback-test.xml
+++ b/bpmn/so-bpmn-building-blocks/src/test/resources/logback-test.xml
@@ -26,5 +26,5 @@
</root>
<logger name="wiremock.org" level="DEBUG" />
-<logger name="org.camunda" level="DEBUG" />
+
</configuration> \ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/pom.xml b/bpmn/so-bpmn-tasks/pom.xml
index becb66a6dc..0243ce8ae6 100644
--- a/bpmn/so-bpmn-tasks/pom.xml
+++ b/bpmn/so-bpmn-tasks/pom.xml
@@ -121,6 +121,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>org.onap.so.adapters</groupId>
+ <artifactId>mso-adapter-utils</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.onap.sdnc.northbound</groupId>
<artifactId>generic-resource-api-client</artifactId>
<version>1.5.0-SNAPSHOT</version>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java
new file mode 100644
index 0000000000..aaa9e51d15
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/audit/AuditTasks.java
@@ -0,0 +1,83 @@
+/*-
+ * ============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.audit;
+
+
+import org.onap.so.audit.beans.AuditInventory;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+@Component
+public class AuditTasks {
+
+ private static final Logger logger = LoggerFactory.getLogger(AuditTasks.class);
+
+ @Autowired
+ private ExceptionBuilder exceptionUtil;
+
+ @Autowired
+ private ExtractPojosForBB extractPojosForBB;
+
+ @Autowired
+ private Environment env;
+
+ public void isAuditNeeded(BuildingBlockExecution execution) {
+ try {
+ logger.debug("auditInventoryNeeded Value: {}", env.getProperty("mso.infra.auditInventory"));
+ execution.setVariable("auditInventoryNeeded",env.getProperty("mso.infra.auditInventory"));
+ } catch (Exception ex) {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+ }
+ }
+
+ public void setupAuditVariable(BuildingBlockExecution execution) {
+ try {
+ execution.setVariable("auditInventory",createAuditInventory(execution));
+ } catch (Exception ex) {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+ }
+ }
+
+ private AuditInventory createAuditInventory(BuildingBlockExecution execution) throws BBObjectNotFoundException {
+ AuditInventory auditInventory = new AuditInventory();
+
+ GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
+ VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
+ CloudRegion cloudRegion = gBBInput.getCloudRegion();
+
+ auditInventory.setCloudOwner(cloudRegion.getCloudOwner());
+ auditInventory.setCloudRegion(cloudRegion.getLcpCloudRegionId());
+ auditInventory.setTenantId(cloudRegion.getTenantId());
+ auditInventory.setHeatStackName(vfModule.getVfModuleName());
+ return auditInventory;
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java
new file mode 100644
index 0000000000..7a9e2bb6cf
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/audit/AuditTasksTest.java
@@ -0,0 +1,74 @@
+/*-
+ * ============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.audit;
+
+import static com.shazam.shazamcrest.MatcherAssert.assertThat;
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.ArgumentMatchers;
+import org.mockito.InjectMocks;
+import org.onap.so.audit.beans.AuditInventory;
+import org.onap.so.bpmn.BaseTaskTest;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+
+public class AuditTasksTest extends BaseTaskTest{
+
+ @InjectMocks
+ private AuditTasks auditTasks = new AuditTasks();
+ private ServiceInstance serviceInstance;
+ private GenericVnf genericVnf;
+ private VfModule vfModule;
+
+
+ @Rule
+ public final ExpectedException exception = ExpectedException.none();
+
+ @Before
+ public void before() throws BBObjectNotFoundException {
+ serviceInstance = setServiceInstance();
+ genericVnf = setGenericVnf();
+ vfModule = setVfModule();
+ setCloudRegion();
+ when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
+ when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID), any())).thenReturn(vfModule);
+ when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID), any())).thenReturn(serviceInstance);
+ }
+
+ @Test
+ public void setupAuditVariableTest() throws Exception {
+ AuditInventory expectedAuditInventory = new AuditInventory();
+ expectedAuditInventory.setCloudOwner("testCloudOwner");
+ expectedAuditInventory.setCloudRegion("testLcpCloudRegionId");
+ expectedAuditInventory.setHeatStackName("testVfModuleName1");
+ expectedAuditInventory.setTenantId("testTenantId");
+ auditTasks.setupAuditVariable(execution);
+ assertThat((AuditInventory)execution.getVariable("auditInventory"), sameBeanAs(expectedAuditInventory));
+ }
+}