[POLICY-22] Reorganizing drools-apps
[policy/drools-applications.git] / controlloop / templates / template.demo.v1.0.0 / template.demo / src / main / resources / archetype-resources / src / main / resources / ControlLoopDemo__closedLoopControlName__.drl
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * demo
+ * archetype-closed-loop-demo-rules
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
@@ -18,8 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-
-package org.openecomp.policy.controlloop;
+package org.onap.policy.controlloop;
 
 import java.util.List;
 import java.util.LinkedList;
@@ -27,57 +26,57 @@ import java.util.Map;
 import java.util.HashMap;
 import java.util.UUID;
 
-import org.openecomp.policy.controlloop.VirtualControlLoopEvent;
-import org.openecomp.policy.controlloop.ControlLoopEventStatus;
-import org.openecomp.policy.controlloop.VirtualControlLoopNotification;
-import org.openecomp.policy.controlloop.ControlLoopNotificationType;
-import org.openecomp.policy.controlloop.ControlLoopOperation;
-import org.openecomp.policy.controlloop.ControlLoopOperationWrapper;
-import org.openecomp.policy.template.demo.ControlLoopException;
+import org.onap.policy.controlloop.VirtualControlLoopEvent;
+import org.onap.policy.controlloop.ControlLoopEventStatus;
+import org.onap.policy.controlloop.VirtualControlLoopNotification;
+import org.onap.policy.controlloop.ControlLoopNotificationType;
+import org.onap.policy.controlloop.ControlLoopOperation;
+import org.onap.policy.controlloop.ControlLoopOperationWrapper;
+import org.onap.policy.controlloop.ControlLoopException;
 
-import org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Request;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Response;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;
-import org.openecomp.policy.aai.util.Serialization;
+import org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;
+import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;
+import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;
+import org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;
+import org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;
+import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
+import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
+import org.onap.policy.aai.AAINQF199.AAINQF199Manager;
+import org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;
+import org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;
+import org.onap.policy.aai.AAINQF199.AAINQF199Request;
+import org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;
+import org.onap.policy.aai.AAINQF199.AAINQF199Response;
+import org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
+import org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;
+import org.onap.policy.aai.AAINQF199.AAINQF199Tenant;
+import org.onap.policy.aai.AAINQF199.AAINQF199VfModule;
+import org.onap.policy.aai.AAINQF199.AAINQF199VServer;
+import org.onap.policy.aai.util.Serialization;
 
-import org.openecomp.policy.appc.CommonHeader;
-import org.openecomp.policy.appc.Request;
-import org.openecomp.policy.appc.Response;
-import org.openecomp.policy.appc.ResponseCode;
-import org.openecomp.policy.appc.ResponseStatus;
-import org.openecomp.policy.appc.ResponseValue;
+import org.onap.policy.appc.CommonHeader;
+import org.onap.policy.appc.Request;
+import org.onap.policy.appc.Response;
+import org.onap.policy.appc.ResponseCode;
+import org.onap.policy.appc.ResponseStatus;
+import org.onap.policy.appc.ResponseValue;
 
-import org.openecomp.policy.template.demo.EventManager;
-import org.openecomp.policy.vnf.trafficgenerator.PGRequest;
-import org.openecomp.policy.vnf.trafficgenerator.PGStream;
-import org.openecomp.policy.vnf.trafficgenerator.PGStreams;
+import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
+import org.onap.policy.vnf.trafficgenerator.PGRequest;
+import org.onap.policy.vnf.trafficgenerator.PGStream;
+import org.onap.policy.vnf.trafficgenerator.PGStreams;
 
-import org.openecomp.policy.mso.MSOManager;
-import org.openecomp.policy.mso.MSORequest;
-import org.openecomp.policy.mso.MSORequestStatus;
-import org.openecomp.policy.mso.MSORequestDetails;
-import org.openecomp.policy.mso.MSOModelInfo;
-import org.openecomp.policy.mso.MSOCloudConfiguration;
-import org.openecomp.policy.mso.MSORequestInfo;
-import org.openecomp.policy.mso.MSORequestParameters;
-import org.openecomp.policy.mso.MSORelatedInstanceListElement;
-import org.openecomp.policy.mso.MSORelatedInstance;
-import org.openecomp.policy.mso.MSOResponse;
+import org.onap.policy.mso.MSOManager;
+import org.onap.policy.mso.MSORequest;
+import org.onap.policy.mso.MSORequestStatus;
+import org.onap.policy.mso.MSORequestDetails;
+import org.onap.policy.mso.MSOModelInfo;
+import org.onap.policy.mso.MSOCloudConfiguration;
+import org.onap.policy.mso.MSORequestInfo;
+import org.onap.policy.mso.MSORequestParameters;
+import org.onap.policy.mso.MSORelatedInstanceListElement;
+import org.onap.policy.mso.MSORelatedInstance;
+import org.onap.policy.mso.MSOResponse;
 
 //import org.openecomp.policy.drools.system.PolicyEngine;
 
@@ -102,7 +101,8 @@ end
 /*
 *
 * Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)
+* NOTE:  If this file is to be used as a template to be used with the policy BRMS GW, please comment out this line 
+* as the BRMS_GW already generates a SETUP rule
 *
 */
 rule "${policyName}.SETUP"
@@ -128,6 +128,7 @@ rule "${policyName}.SETUP"
                insert(params);
 end
 
+
 /*
 *
 * This rule responds to DCAE Events
@@ -137,7 +138,7 @@ rule "${policyName}.EVENT"
        when
         $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
         $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
+        not ( ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName ))
        then
                System.out.println("rule EVENT is triggered.");
                try {
@@ -172,7 +173,7 @@ rule "${policyName}.EVENT"
                                //
                                // Create an EventManager
                                //
-                               EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
+                               ControlLoopEventManager manager = new ControlLoopEventManager($params.getClosedLoopControlName(), $event.requestID);
                                //
                                // Determine if EventManager can actively process the event (i.e. syntax)
                                //
@@ -258,19 +259,19 @@ rule "${policyName}.EVENT.MANAGER"
        when
                $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
+               $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
        then
                System.out.println("rule EVENT.MANAGER is triggered.");
                //
                // Check which event this is.
                //
-               EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
+               ControlLoopEventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
                //
                // We only want the initial ONSET event in memory,
                // all the other events need to be retracted to support
                // cleanup and avoid the other rules being fired for this event.
                //
-               if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
+               if (eventStatus != ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
                        System.out.println("Retracting "+eventStatus+" Event.");
                        retract($event);
                        return;
@@ -443,7 +444,7 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199REQUEST"
        when
                $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+               $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
                $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
        then
                System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
@@ -612,6 +613,7 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199REQUEST"
                
                
                
+               
                //
                // Check AAI response
                //
@@ -644,7 +646,7 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199RESPONSE"
        when 
                $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+               $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
                $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
                $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
        then
@@ -652,7 +654,6 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199RESPONSE"
                //
                // Extract related fields out of AAINQF199RESPONSE
                //
-               //
                String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, 
                       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
                       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
@@ -944,7 +945,7 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199RESPONSE"
                                relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
                                relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
                                relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemPersonaModelVersion;
+                               relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
                                relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
                                //      
                                request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
@@ -985,6 +986,7 @@ rule "${policyName}.EVENT.MANAGER.AAINQF199RESPONSE"
                                        
                                        
                                        
+                                       
                                        //////////////////////////////////////////////////////////
                                        // Simulate a valid MSOResponse for junit test
                                        // Remove this for real deployment
@@ -1062,7 +1064,7 @@ rule "${policyName}.APPC.RESPONSE"
        when
                $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+               $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
                $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
                $request : Request( getCommonHeader().RequestID == $event.requestID )
                $response : Response( getCommonHeader().RequestID == $event.requestID ) 
@@ -1205,7 +1207,7 @@ rule "${policyName}.MSO.RESPONSE"
        when
                $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+               $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
                $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
                $request : MSORequest( requestId == $event.requestID.toString() )
                $response : MSOResponse( request.requestId == $event.requestID.toString() )     
@@ -1294,6 +1296,21 @@ rule "${policyName}.MSO.RESPONSE"
                        retract($response);
                        retract($event);
                        retract($manager);
-               }
-               
-end                            
+               }               
+end
+
+/*
+ * Sample Queries for illustration with and without arguments
+ * The results of the query can be introspected (and retracted if desired)
+ * through REST API.
+ */
+query "${policyName}.QUERY.EVENT.ONSET"
+       event : VirtualControlLoopEvent( closedLoopEventStatus == ControlLoopEventStatus.ONSET )
+end
+
+query "${policyName}.QUERY.MANAGER.RNA" (String aRequestId, Integer numOnsetsLowerBound, Boolean aActivated)
+       manager : ControlLoopEventManager( closedLoopControlName == "${closedLoopControlName}", 
+                               requestID.toString() == aRequestId, 
+                               numOnsets > numOnsetsLowerBound,
+                               activated == aActivated )
+end