From d304f7d3a058b024ab413374e1a6065411903e3c Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Tue, 4 May 2021 17:34:03 -0400 Subject: EventManagerServices shouldn't be static Currently, the event manager uses a static EventManagerServices object, which precludes the possibility of configuring the actors, for each rule set, from using different properties. Modified the code to allow the rules to specify the event services to use on a per manager basis. Issue-ID: POLICY-3260 Change-Id: If493ae1b55cb752f11e0b2f72dced9c4f3883e34 Signed-off-by: Jim Hahn --- .../src/main/resources/usecases.drl | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'controlloop/common/controller-usecases/src/main/resources') diff --git a/controlloop/common/controller-usecases/src/main/resources/usecases.drl b/controlloop/common/controller-usecases/src/main/resources/usecases.drl index 49ab78d71..5074215bb 100644 --- a/controlloop/common/controller-usecases/src/main/resources/usecases.drl +++ b/controlloop/common/controller-usecases/src/main/resources/usecases.drl @@ -45,6 +45,7 @@ import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager; import org.onap.policy.controlloop.eventmanager.ClEventManagerWithSteps.State; import org.onap.policy.controlloop.eventmanager.ClEventManagerWithOutcome.OperationOutcome2; import org.onap.policy.controlloop.eventmanager.ClEventManagerWithEvent.NewEventStatus; +import org.onap.policy.controlloop.eventmanager.EventManagerServices; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; import org.slf4j.LoggerFactory; @@ -52,6 +53,27 @@ import org.slf4j.Logger; import org.onap.policy.drools.system.PolicyEngineConstants; + +/* +* Called at initial start-up, to create the event services that will be used by all +* event managers in this rule engine instance. +*/ +rule "CREATE.EVENT.SERVICES" + when + not (EventManagerServices()) + then + + Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); + logger.info("{}", drools.getRule().getName()); + + try { + insert(new EventManagerServices("event-manager")); + + } catch(RuntimeException e) { + logger.warn("{}: cannot create event services", drools.getRule().getName(), e); + } +end + /* * * Called when the ControlLoopParams object has been inserted into working memory from the PAP. @@ -114,6 +136,7 @@ rule "EVENT" when $params : ControlLoopParams( $clName : getClosedLoopControlName() ) $event : CanonicalOnset( closedLoopControlName == $clName ) + $services : EventManagerServices() not ( UsecasesEventManager( closedLoopControlName == $event.getClosedLoopControlName(), getEvent() == $event ) ) then @@ -144,7 +167,8 @@ rule "EVENT" notification.setPolicyVersion($params.getPolicyVersion()); } else { - UsecasesEventManager manager = new UsecasesEventManager($params, $event, drools.getWorkingMemory()); + UsecasesEventManager manager = + new UsecasesEventManager($services, $params, $event, drools.getWorkingMemory()); insert(manager); try { // load the first policy/step -- cgit 1.2.3-korg