| // |
| // ============LICENSE_START======================================================= |
| // Copyright (C) 2016-2018 Ericsson. All rights reserved. |
| // ================================================================================ |
| // This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE |
| // Full license text at https://creativecommons.org/licenses/by/4.0/legalcode |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| // ============LICENSE_END========================================================= |
| // |
| // @author Sven van der Meer (sven.van.der.meer@ericsson.com) |
| // |
| |
| == Concept: Policy |
| |
| The __Policy__ concept defines a policy in APEX. |
| The definition is rather straightforward. |
| A policy is made up of a set of states with the flavor of the policy determining the structure of the policy states and the first state defining what state in the policy executes first. |
| __Policy__ concepts are keyed with an `ArtifactKey` key. |
| |
| The __PolicyFlavour__ of a __Policy__ concept specifies the structure that will be used for the states in the policy. |
| A number of commonly used policy patterns are supported as APEX policy flavors. |
| The standard policy flavors are: |
| |
| * The __MEDA__ flavor supports policies written to the link:https://www.researchgate.net/publication/282576518_Dynamically_Adaptive_Policies_for_Dynamically_Adaptive_Telecommunications_Networks[MEDA policy pattern] and require a sequence of four states: namely __Match__, __Establish__, __Decide__ and __Act__. |
| * The __OODA__ flavor supports policies written to the link:https://en.wikipedia.org/wiki/OODA_loop[OODA loop pattern] and require a sequence of four states: namely __Observe__, __Orient__, __Decide__ and __Act__. |
| * The __ECA__ flavor supports policies written to the link:https://en.wikipedia.org/wiki/Event_condition_action[ECA active rule pattern] and require a sequence of three states: namely __Event__, __Condition__ and __Action__ |
| * The __XACML__ flavor supports policies written in link:https://en.wikipedia.org/wiki/XACML[XACML] and require a single state: namely __XACML__ |
| * The __FREEFORM__ flavor supports policies written in an arbitrary style. |
| A user can define a __FREEFORM__ policy as an arbitrarily long chain of states. |
| |
| The __FirstState__ field of a __Policy__ definition is the starting point for execution of a policy. |
| Therefore, the trigger event of the state referenced in the __FirstState__ field is also the trigger event for the entire policy. |
| |