* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2022 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2023 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.policy.controlloop;
+import java.time.Instant;
import java.util.Collections;
import java.util.stream.Collectors;
import org.onap.policy.controlloop.CanonicalOnset;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.actor.aai.AaiActor;
-import org.onap.policy.controlloop.actor.aai.AaiGetPnfOperation;
-import org.onap.policy.controlloop.actor.aai.AaiGetTenantOperation;
-import org.onap.policy.controlloop.actor.guard.GuardActor;
-import org.onap.policy.controlloop.actor.guard.DecisionOperation;
+import org.onap.policy.controlloop.actor.xacml.XacmlActor;
import org.onap.policy.controlloop.actorserviceprovider.Operation;
+import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationFinalResult;
import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
import org.onap.policy.controlloop.eventmanager.ActorConstants;
import org.onap.policy.controlloop.eventmanager.Step;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.FinalResult;
-import org.onap.policy.controlloop.policy.PolicyResult;
import org.onap.policy.controlloop.utils.ControlLoopUtils;
import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager;
-import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager.State;
-import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager.NewEventStatus;
-import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager.OperationOutcome2;
+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.ControlLoopEventManager;
+import org.onap.policy.controlloop.eventmanager.EventManagerServices;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.slf4j.LoggerFactory;
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().getPackageName());
+ 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.
$params : ControlLoopParams()
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {} : TOSCA-POLICY=[{}]", $params.getClosedLoopControlName(), $params.getPolicyName() + "."
+ drools.getRule().getName(), $params.getToscaPolicy());
end
$policy : ToscaPolicy()
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: [{}|{}|{}|{}]: CONTENT: {}", drools.getRule().getName(),
$policy.getType(), $policy.getTypeVersion(), $policy.getName(),
$policy.getVersion(), $policy);
not ( ToscaPolicy( getName() == $policyName, getVersion() == $policyVersion ) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: [{}|{}|{}]", drools.getRule().getName(),
$params.getPolicyScope(), $params.getPolicyName(), $params.getPolicyVersion());
when
$params : ControlLoopParams( $clName : getClosedLoopControlName() )
$event : CanonicalOnset( closedLoopControlName == $clName )
+ $services : EventManagerServices()
not ( UsecasesEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
getEvent() == $event ) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: event={}",
$clName, $params.getPolicyName(), drools.getRule().getName(),
$event);
notification.setNotification(ControlLoopNotificationType.REJECTED);
notification.setFrom("policy");
notification.setMessage("Missing requestId");
- notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($params.getPolicyName());
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
notification = manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.ACTIVE);
- notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($params.getPolicyName());
+ notification.setPolicyVersion($params.getPolicyVersion());
} else {
// Note: the notification will be generated lazily
notification = new VirtualControlLoopNotification($event);
notification.setNotification(ControlLoopNotificationType.REJECTED);
notification.setMessage("Exception occurred: " + e.getMessage());
- notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($params.getPolicyName());
notification.setPolicyVersion($params.getPolicyVersion());
}
//
getEvent() == $event )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: event={} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$event, $manager);
getSteps().isEmpty() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager);
logger.warn("{}: {}.{}: manager={} exception loading next policy",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to load next policy");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to load next policy");
}
update($manager);
!$step.isPreprocessed() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
logger.warn("{}: {}.{}: manager={} exception loading preprocessor steps",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to load preprocessing steps");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to load preprocessing steps");
}
update($manager);
$step.acceptsEvent() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.ACTIVE);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
$manager.deliver("POLICY-CL-MGT", notification, "notification", drools.getRule().getName());
} catch(RuntimeException e) {
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to accept the event");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to accept the event");
}
update($manager);
$step.isPreprocessed() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
$step.init();
$step.setProperties();
- if ($manager.executeStep()) {
+ boolean guardDisabled = "true".equalsIgnoreCase(
+ PolicyEngineConstants.getManager().getEnvironmentProperty(
+ ControlLoopEventManager.GUARD_DISABLED_PROPERTY));
+
+ if (guardDisabled && XacmlActor.NAME.equals($step.getActorName())) {
+ // guard is disabled - just enqueue a "SUCCESS" (i.e., "Permit")
+ OperationOutcome outcome = $step.getParams().makeOutcome();
+ outcome.setStart(Instant.now());
+ outcome.setEnd(outcome.getStart());
+
+ $manager.getOutcomes().add(outcome);
+ $manager.setState(State.AWAITING_OUTCOME);
+
+ } else if ($manager.executeStep()) {
$manager.setState(State.AWAITING_OUTCOME);
} else {
logger.warn("{}: {}.{}: manager={} exception executing a step",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to execute the next step");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to execute the next step");
}
update($manager);
$outcome.isFor("SDNR", $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
$outcome != null,
!isAbort($outcome),
$step : getSteps().peek(),
- "GUARD".equals($step.getActorName()),
- $outcome.isFor("GUARD", $step.getOperationName()) )
+ XacmlActor.NAME.equals($step.getActorName()),
+ $outcome.isFor($step.getActorName(), $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
try {
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.OPERATION);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory(Collections.emptyList());
// get actor/operation name from the policy step, not from the guard step
// it's a "start" operation
notification.setMessage("Sending guard query for " + step2.getActorName() + " " + step2.getOperationName());
- } else if ($outcome.getResult() == PolicyResult.SUCCESS) {
+ } else if ($outcome.getResult() == OperationResult.SUCCESS) {
notification.setMessage("Guard result for " + step2.getActorName() + " " + step2.getOperationName()
+ " is Permit");
} else {
$outcome.isFor($step.getActorName(), $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.OPERATION);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory(Collections.emptyList());
notification.setMessage($manager.getOperationMessage());
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'start' outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'start' outcome");
}
update($manager);
$outcome.isFor($step.getActorName(), $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle 'start' outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle 'start' outcome");
}
update($manager);
$outcome : getOutcomes().peek(),
$outcome != null,
$outcome.getEnd() != null,
- $outcome.getResult() == PolicyResult.SUCCESS,
+ $outcome.getResult() == OperationResult.SUCCESS,
$step : getSteps().peek(),
$step.isPolicyStep(),
$outcome.isFor($step.getActorName(), $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory($manager.getPartialHistory().stream().map(OperationOutcome2::getClOperation)
.collect(Collectors.toList()));
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'success' outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'success' outcome");
}
update($manager);
!isAbort($outcome),
$outcome.getEnd() != null,
$outcome.isFinalOutcome(),
- $outcome.getResult() != PolicyResult.SUCCESS,
+ $outcome.getResult() != OperationResult.SUCCESS,
$step : getSteps().peek() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
$manager.getOutcomes().remove();
if (!$outcome.isFor($step.getActorName(), $step.getOperationName())) {
- $outcome.setResult(PolicyResult.FAILURE_GUARD);
+ $outcome.setResult(OperationResult.FAILURE_GUARD);
$outcome.setMessage("Operation denied by " + $outcome.getActor());
}
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory($manager.getPartialHistory().stream().map(OperationOutcome2::getClOperation)
- .collect(Collectors.toList()));
+ .toList());
// trigger move to the next policy - clear all steps
$manager.getSteps().clear();
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'failure' outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'failure' outcome");
}
update($manager);
!isAbort($outcome),
$outcome.getEnd() != null,
$outcome.isFinalOutcome(),
- $outcome.getResult() != PolicyResult.SUCCESS,
+ $outcome.getResult() != OperationResult.SUCCESS,
$step : getSteps().peek() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.REJECTED);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory($manager.getPartialHistory().stream().map(OperationOutcome2::getClOperation)
- .collect(Collectors.toList()));
+ .toList());
$manager.deliver("POLICY-CL-MGT", notification, "notification", drools.getRule().getName());
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to reject event");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to reject event");
}
$manager.destroy();
!isAbort($outcome),
$outcome.getEnd() != null,
!$outcome.isFinalOutcome(),
- $outcome.getResult() != PolicyResult.SUCCESS,
+ $outcome.getResult() != OperationResult.SUCCESS,
$step : getSteps().peek(),
$step.isPolicyStep(),
$outcome.isFor($step.getActorName(), $step.getOperationName()) )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
VirtualControlLoopNotification notification = $manager.makeNotification();
notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
$manager.deliver("POLICY-CL-MGT", notification, "notification", drools.getRule().getName());
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'failure' outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle policy 'failure' outcome");
}
update($manager);
$step : getSteps().peek() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $outcome.getResult(), $manager);
// it's a completion for the step
// let the step record the response that's contained within the outcome
- if ($outcome.getResult() == PolicyResult.SUCCESS) {
+ if ($outcome.getResult() == OperationResult.SUCCESS) {
$step.success($outcome);
}
logger.warn("{}: {}.{}: manager={} exception processing operation outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle outcome");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle outcome");
}
update($manager);
$step : getSteps().peek() )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: {} manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$step, $manager);
break;
}
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE, msg);
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE, msg);
if ($step != null && "SDNR".equals($step.getActorName())
&& $outcome.isFor($step.getActorName(), $step.getOperationName())) {
logger.warn("{}: {}.{}: manager={} exception handling ABORT outcome",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager, e);
- $manager.abort(State.DONE, FinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle ABORT");
+ $manager.abort(State.DONE, OperationFinalResult.FINAL_FAILURE_EXCEPTION, "failed to handle ABORT");
}
update($manager);
!isActive() || getState() == State.DONE )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}.{}: manager={}",
$manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
$manager);
try {
VirtualControlLoopNotification notification = $manager.makeNotification();
- notification.setPolicyName($manager.getPolicyName() + "." + drools.getRule().getName());
+ notification.setPolicyScope(drools.getRule().getName());
+ notification.setPolicyName($manager.getPolicyName());
+ notification.setPolicyVersion($manager.getPolicyVersion());
notification.setHistory($manager.getFullHistory().stream().map(OperationOutcome2::getClOperation)
- .collect(Collectors.toList()));
+ .toList());
- FinalResult finalResult = $manager.getFinalResult();
+ OperationFinalResult finalResult = $manager.getFinalResult();
if (finalResult == null) {
- finalResult = ($manager.isActive() ? FinalResult.FINAL_SUCCESS : FinalResult.FINAL_FAILURE);
+ finalResult = ($manager.isActive() ? OperationFinalResult.FINAL_SUCCESS : OperationFinalResult.FINAL_FAILURE);
}
switch (finalResult) {
$event : VirtualControlLoopEvent( $clName: closedLoopControlName )
then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackageName());
logger.info("{}: {}", $clName, drools.getRule().getName());
logger.debug("{}: {}: orphan event={}",
$clName, drools.getRule().getName(), $event);