diff options
Diffstat (limited to 'docs/apex/APEX-User-Manual.rst')
-rw-r--r-- | docs/apex/APEX-User-Manual.rst | 444 |
1 files changed, 222 insertions, 222 deletions
diff --git a/docs/apex/APEX-User-Manual.rst b/docs/apex/APEX-User-Manual.rst index 01f74fab..97abd095 100644 --- a/docs/apex/APEX-User-Manual.rst +++ b/docs/apex/APEX-User-Manual.rst @@ -135,7 +135,7 @@ Get the APEX Source Code .. container:: content - .. code:: + .. code:: :number-lines: git clone https://gerrit.onap.org/r/policy/apex-pdp @@ -156,26 +156,26 @@ Build APEX - Cygwin: ``/cygdrive/c/dev/apex-pdp`` - .. important:: + .. important:: A Build requires ONAP Nexus - APEX has a dependency to ONAP parent projects. You might need to adjust your Maven M2 settings. The most current - settings can be found in the ONAP oparent repo: `Settings <https://git.onap.org/oparent/plain/settings.xml>`__. + APEX has a dependency to ONAP parent projects. You might need to adjust your Maven M2 settings. The most current + settings can be found in the ONAP oparent repo: `Settings <https://git.onap.org/oparent/plain/settings.xml>`__. - .. important:: - A Build needs Space - Building APEX requires approximately 2-3 GB of hard disc space, 1 GB for the actual build with full - distribution and 1-2 GB for the downloaded dependencies + .. important:: + A Build needs Space + Building APEX requires approximately 2-3 GB of hard disc space, 1 GB for the actual build with full + distribution and 1-2 GB for the downloaded dependencies - .. important:: + .. important:: A Build requires Internet (for first build) - During the build, several (a lot) of Maven dependencies will be downloaded and stored in the configured local Maven - repository. The first standard build (and any first specific build) requires Internet access to download those - dependencies. + During the build, several (a lot) of Maven dependencies will be downloaded and stored in the configured local Maven + repository. The first standard build (and any first specific build) requires Internet access to download those + dependencies. - .. important:: + .. important:: Building RPM distributions - RPM images are only build if the ``rpm`` package is installed (Unix). To install ``rpm`` run ``sudo apt-get install rpm``, - then build APEX. + RPM images are only build if the ``rpm`` package is installed (Unix). To install ``rpm`` run ``sudo apt-get install rpm``, + then build APEX. .. container:: paragraph @@ -211,7 +211,7 @@ Build APEX .. container:: content - .. code:: + .. code:: :number-lines: [INFO] tools .............................................. SUCCESS [ 0.248 s] @@ -365,9 +365,9 @@ Install with RPM and DPKG | .. container:: content | | | | .. code:: | -| :number-lines: | +| :number-lines: | | | -| # sudo dpkg -i apex-pdp-package-full-2.0.0-SNAPSHOT.deb | +| # sudo dpkg -i apex-pdp-package-full-2.0.0-SNAPSHOT.deb | | Selecting previously unselected package apex-uservice. | | (Reading database ... 288458 files and directories currently installed.) | | Preparing to unpack apex-pdp-package-full-2.0.0-SNAPSHOT.deb ... | @@ -402,7 +402,7 @@ Install Manually from Archive (Unix, Cygwin) .. container:: content - .. code:: + .. code:: :number-lines: # cd /opt @@ -466,7 +466,7 @@ Install Manually from Archive (Windows, 7Zip, CMD) .. container:: content - .. code:: + .. code:: :number-lines: >c: @@ -492,10 +492,10 @@ Build and Install Manually (Unix, Windows, Cygwin) from the created artifacts (``rpm``, ``deb``, ``tar.gz``, or copying manually). - .. important:: - Building RPM distributions - RPM images are only build if the ``rpm`` package is installed (Unix). To install ``rpm`` run - ``sudo apt-get install rpm``, then build APEX. + .. important:: + Building RPM distributions + RPM images are only build if the ``rpm`` package is installed (Unix). To install ``rpm`` run + ``sudo apt-get install rpm``, then build APEX. .. container:: paragraph @@ -509,7 +509,7 @@ Build and Install Manually (Unix, Windows, Cygwin) - Windows: ``C:\dev\apex`` - +-------------------------------------------------------+--------------------------------------------------------+ + +-------------------------------------------------------+--------------------------------------------------------+ | Unix, Cygwin | Windows | +=======================================================+========================================================+ | .. container:: | .. container:: | @@ -542,7 +542,7 @@ Build and Install Manually (Unix, Windows, Cygwin) .. container:: content - .. code:: + .. code:: :number-lines: [INFO] tools .............................................. SUCCESS [ 0.248 s] @@ -760,7 +760,7 @@ APEX User and Group .. container:: content - .. code:: + .. code:: :number-lines: # sudo groupadd apexuser @@ -807,19 +807,19 @@ Environment Settings: APEX_HOME and APEX_USER | | | | # export APEX_USER=apexuser | >set APEX_HOME=C:\apex\apex-full-2.0.0-SNAPSHOT | | # cd /opt/app/policy/apex-pdp | | - | # export APEX_HOME=`pwd` | | + | # export APEX_HOME=`pwd` | | | | | +------------------------------------------------+ | | .. container:: | | | | | | .. container:: content | | | | | - | .. code:: tcsh | | + | .. code::tcsh | | | :number-lines: | | | | | | # setenv APEX_USER apexuser | | | # cd /opt/app/policy/apex-pdp | | - | # setenv APEX_HOME `pwd` | | + | # setenv APEX_HOME `pwd` | | | | | +------------------------------------------------+---------------------------------------------------------+ | .. container:: | .. container:: | @@ -831,7 +831,7 @@ Environment Settings: APEX_HOME and APEX_USER | | | | # env | grep APEX | >set APEX_HOME | | # APEX_USER=apexuser | APEX_HOME=\apex\apex-full-2.0.0-SNAPSHOT | - | # APEX_HOME=/opt/app/policy/apex-pdp | | + | # APEX_HOME=/opt/app/policy/apex-pdp | | | | | +------------------------------------------------+---------------------------------------------------------+ @@ -981,7 +981,7 @@ Verify Installation - run Engine .. container:: content - .. code:: + .. code:: :number-lines: Starting Apex service with parameters [] . . . @@ -1021,12 +1021,12 @@ Verify Installation - run an Example .. container:: content - .. code:: + .. code:: :number-lines: - # $APEX_HOME/bin/apexEngine.sh -c $APEX_HOME/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (1) - # $APEX_HOME/bin/apexEngine.sh -c C:/apex/apex-full-2.0.0-SNAPSHOT/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (2) - >%APEX_HOME%\bin\apexEngine.bat -c %APEX_HOME%\examples\config\SampleDomain\Stdin2StdoutJsonEventJava.json :: (3) + # $APEX_HOME/bin/apexEngine.sh -c $APEX_HOME/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (1) + # $APEX_HOME/bin/apexEngine.sh -c C:/apex/apex-full-2.0.0-SNAPSHOT/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (2) + >%APEX_HOME%\bin\apexEngine.bat -c %APEX_HOME%\examples\config\SampleDomain\Stdin2StdoutJsonEventJava.json :: (3) .. container:: colist arabic @@ -1048,7 +1048,7 @@ Verify Installation - run an Example .. container:: content - .. code:: + .. code:: :number-lines: Starting Apex service with parameters [-c, v:/dev/ericsson/apex/onap/apex-pdp/packages/apex-pdp-package-full/target/install_hierarchy/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json] . . . @@ -1134,7 +1134,7 @@ Verify a Full Installation - REST Editor .. container:: content - .. code:: + .. code:: :number-lines: # $APEX_HOME/bin/apexApps.sh rest-editor @@ -1143,7 +1143,7 @@ Verify a Full Installation - REST Editor .. container:: content - .. code:: + .. code:: :number-lines: >%APEX_HOME%\bin\apexApps.bat rest-editor @@ -1160,7 +1160,7 @@ Verify a Full Installation - REST Editor .. container:: content - .. code:: + .. code:: :number-lines: Apex Editor REST endpoint (ApexEditorMain: Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], State=READY) starting at http://localhost:18989/apexservices/ . . . @@ -1343,7 +1343,7 @@ Build a Docker Image .. container:: content - .. code:: + .. code:: :number-lines: # @@ -1437,7 +1437,7 @@ General Configuration Format .. container:: content - .. code:: + .. code:: { "engineServiceParameters":{ @@ -1528,7 +1528,7 @@ Engine Service Parameters .. container:: content - .. code:: + .. code:: "engineServiceParameters" : { "name" : "AADMApexEngine", (1) @@ -1684,7 +1684,7 @@ Input and Output Interfaces .. container:: content - .. code:: + .. code:: "eventInputParameters": { (1) "FirstConsumer": { (2) @@ -1796,7 +1796,7 @@ Event Filters .. container:: content - .. code:: + .. code:: "eventInputParameters": { "Input1": { @@ -1866,7 +1866,7 @@ Configure the Javascript Executor .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -1891,7 +1891,7 @@ Configure the Jython Executor .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -1916,7 +1916,7 @@ Configure the JRuby Executor .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -1941,7 +1941,7 @@ Configure the Java Executor .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -1966,7 +1966,7 @@ Configure the MVEL Executor .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -2016,7 +2016,7 @@ Configure AVRO Schema Handler .. container:: content - .. code:: + .. code:: "engineServiceParameters":{ "engineParameters":{ @@ -2193,7 +2193,7 @@ Standard Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "FILE", (1) @@ -2231,7 +2231,7 @@ File Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "FILE", (1) @@ -2260,7 +2260,7 @@ File Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "FILE", (1) @@ -2297,7 +2297,7 @@ Event Requestor Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology": "EVENT_REQUESTOR" (1) @@ -2320,7 +2320,7 @@ Event Requestor Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology": "EVENT_REQUESTOR" (1) @@ -2342,7 +2342,7 @@ Peering Event Requestors .. container:: content - .. code:: + .. code:: "eventInputParameters": { "EventRequestorConsumer": { @@ -2442,7 +2442,7 @@ Kafka Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "KAFKA", (1) @@ -2500,7 +2500,7 @@ Kafka Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "KAFKA", (1) @@ -2570,7 +2570,7 @@ JMS Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "JMS", (1) @@ -2629,7 +2629,7 @@ JMS Output with Text .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "JMS", (1) @@ -2730,7 +2730,7 @@ Websocket Client .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "WEBSOCKET", (1) @@ -2768,7 +2768,7 @@ Websocket Server .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "WEBSOCKET", (1) @@ -2817,7 +2817,7 @@ REST Client Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "RESTCLIENT", (1) @@ -2851,7 +2851,7 @@ REST Client Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters" : { "carrierTechnology" : "RESTCLIENT", (1) @@ -2961,7 +2961,7 @@ REST Server Stand-alone .. container:: content - .. code:: + .. code:: "eventInputParameters": { "MyConsumer": { @@ -3016,7 +3016,7 @@ REST Server Stand-alone .. container:: content - .. code:: + .. code:: "eventOutputParameters": { "MyProducer": { @@ -3066,7 +3066,7 @@ REST Server Stand-alone in Servlet .. container:: content - .. code:: + .. code:: <servlet> ... @@ -3098,7 +3098,7 @@ REST Requestor Input .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters": { "carrierTechnology": "RESTREQUESTOR", (1) @@ -3131,7 +3131,7 @@ REST Requestor Input .. container:: content - .. code:: + .. code:: "eventName": "GuardResponseEvent", (1) "eventNameFilter": "GuardResponseEvent", (2) @@ -3165,7 +3165,7 @@ REST Requestor Output .. container:: content - .. code:: + .. code:: "carrierTechnologyParameters": { "carrierTechnology": "RESTREQUESTOR", (1) @@ -3187,7 +3187,7 @@ REST Requestor Output .. container:: content - .. code:: + .. code:: "eventNameFilter": "GuardRequestEvent", (1) "requestorMode": true, (2) @@ -3287,7 +3287,7 @@ JSON Event .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "JSON" @@ -3310,7 +3310,7 @@ JSON Event .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "JSON", @@ -3366,7 +3366,7 @@ APEX Event .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "APEX" @@ -3400,7 +3400,7 @@ JMS Text .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "JMSTEXT", @@ -3427,7 +3427,7 @@ JMS Object .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "JMSOBJECT", @@ -3462,7 +3462,7 @@ YAML Event .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "XML", @@ -3496,7 +3496,7 @@ XML Event .. container:: content - .. code:: + .. code:: "eventProtocolParameters":{ "eventProtocol" : "XML", @@ -3524,7 +3524,7 @@ A configuration example .. container:: content - .. code:: + .. code:: { "engineServiceParameters" : { @@ -3763,7 +3763,7 @@ The APEX Engine .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.service.engine.main.ApexMain [options...] options @@ -3852,7 +3852,7 @@ The APEX CLI Editor .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.auth.clieditor.ApexCLIEditorMain [options...] options @@ -3939,7 +3939,7 @@ The APEX REST Editor .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.client.editor.rest.ApexEditorMain [options...] -h,--help outputs the usage of this command @@ -3958,7 +3958,7 @@ The APEX REST Editor .. container:: content - .. code:: + .. code:: Apex Editor REST endpoint (ApexEditorMain: Config=[ApexEditorParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], State=READY) starting at http://localhost:18989/apexservices/ . . . Sep 05, 2018 11:24:30 PM org.glassfish.grizzly.http.server.NetworkListener start @@ -4012,7 +4012,7 @@ The APEX Monitoring Client .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.client.monitoring.rest.ApexMonitoringRestMain [options...] -h,--help outputs the usage of this command @@ -4028,7 +4028,7 @@ The APEX Monitoring Client .. container:: content - .. code:: + .. code:: Apex Services REST endpoint (ApexMonitoringRestMain: Config=[ApexMonitoringRestParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], State=READY) starting at http://localhost:18989/apexservices/ . . . Sep 05, 2018 11:26:20 PM org.glassfish.grizzly.http.server.NetworkListener start @@ -4082,7 +4082,7 @@ The APEX Deployment Client .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.client.deployment.rest.ApexDeploymentRestMain [options...] -h,--help outputs the usage of this command @@ -4098,7 +4098,7 @@ The APEX Deployment Client .. container:: content - .. code:: + .. code:: Apex Services REST endpoint (ApexDeploymentRestMain: Config=[ApexDeploymentRestParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], State=READY) starting at http://localhost:18989/apexservices/ . . . Sep 05, 2018 11:27:09 PM org.glassfish.grizzly.http.server.NetworkListener start @@ -4155,7 +4155,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: usage: org.onap.policy.apex.client.full.rest.ApexServicesRestMain [options...] -h,--help outputs the usage of this command @@ -4171,7 +4171,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: Apex Editor REST endpoint (ApexServicesRestMain: Config=[ApexServicesRestParameters: URI=http://localhost:18989/apexservices/, TTL=-1sec], State=READY) starting at http://localhost:18989/apexservices/ . . . Sep 05, 2018 11:28:28 PM org.glassfish.grizzly.http.server.NetworkListener start @@ -4240,7 +4240,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: apexApps.sh - runs APEX applications @@ -4260,7 +4260,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: apexApps.sh: supported applications: --> ws-echo engine eng-monitoring full-client eng-deployment tpl-event-json model-2-cli rest-editor cli-editor ws-console @@ -4274,7 +4274,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: apexApps.sh: application 'ws-console' --> a simple console sending events to APEX, connect to APEX consumer port @@ -4290,7 +4290,7 @@ The APEX Full Client .. container:: content - .. code:: + .. code:: apexApps.sh ws-echo -p 8888 @@ -4333,7 +4333,7 @@ Application: Create Event Templates .. container:: content - .. code:: + .. code:: gen-model2event v{release-version} - generates JSON templates for events generated from a policy model usage: gen-model2event @@ -4355,7 +4355,7 @@ Application: Create Event Templates .. container:: content - .. code:: + .. code:: apexApps.sh tpl-event-json -m $APEX_HOME/examples/models/SampleDomain/SamplePolicyModelJAVA.json -t stimuli @@ -4367,7 +4367,7 @@ Application: Create Event Templates .. container:: content - .. code:: + .. code:: gen-model2event: starting Event generator --> model file: examples/models/SampleDomain/SamplePolicyModelJAVA.json @@ -4407,7 +4407,7 @@ Application: Create Event Templates .. container:: content - .. code:: + .. code:: { "name" : "Event0000", @@ -4457,7 +4457,7 @@ Application: Convert a Policy Model to CLI Editor Commands .. container:: content - .. code:: + .. code:: usage: gen-model2cli -h,--help prints this help and usage screen @@ -4474,7 +4474,7 @@ Application: Convert a Policy Model to CLI Editor Commands .. container:: content - .. code:: + .. code:: apexApps.sh model-2-cli -m $APEX_HOME/examples/models/SampleDomain/SamplePolicyModelJAVA.json @@ -4486,7 +4486,7 @@ Application: Convert a Policy Model to CLI Editor Commands .. container:: content - .. code:: + .. code:: gen-model2cli: starting CLI generator --> model file: examples/models/SampleDomain/SamplePolicyModelJAVA.json @@ -4942,32 +4942,32 @@ Create the input event ``SALE_INPUT`` and the output event ``SALE_AUTH`` parameter fields. .. tip - - .. container:: title - - Field Schema types - - .. container:: paragraph - - APEX natively supports schema definitions in ``Java`` and ``Avro``. - - .. container:: paragraph - - ``Java`` schema definitions are simply the name of a Java Class. There are some restrictions: - - .. container:: ulist - - - the class must be instantiatable, i.e. not an Java interface or abstract class - - - primitive types are not supported, i.e. use ``java.lang.Integer`` instead of ``int``, etc. - - - it must be possible to find the class, i.e. the class must be contained in the Java classpath. - - .. container:: paragraph - - ``Avro`` schema definitions can be any valid `Avro <https://avro.apache.org/docs/current/spec.html>`__ - schema. For events using fields defined with ``Avro`` schemas, any incoming event containing that field must - contain a value that conforms to the Avro schema. + + .. container:: title + + Field Schema types + + .. container:: paragraph + + APEX natively supports schema definitions in ``Java`` and ``Avro``. + + .. container:: paragraph + + ``Java`` schema definitions are simply the name of a Java Class. There are some restrictions: + + .. container:: ulist + + - the class must be instantiatable, i.e. not an Java interface or abstract class + + - primitive types are not supported, i.e. use ``java.lang.Integer`` instead of ``int``, etc. + + - it must be possible to find the class, i.e. the class must be contained in the Java classpath. + + .. container:: paragraph + + ``Avro`` schema definitions can be any valid `Avro <https://avro.apache.org/docs/current/spec.html>`__ + schema. For events using fields defined with ``Avro`` schemas, any incoming event containing that field must + contain a value that conforms to the Avro schema. .. container:: paragraph @@ -5004,10 +5004,10 @@ Create the input event ``SALE_INPUT`` and the output event ``SALE_AUTH`` the event definition pane. .. tip:: - Optional Fields in APEX Events - Parameter fields can be *optional* in events. If a parameter is not marked as *optional* then by default it - is *mandatory*, so it must appear in any input event passed to APEX. If an *optional* field is not set - for an output event then value will be set to ``null``. + Optional Fields in APEX Events + Parameter fields can be *optional* in events. If a parameter is not marked as *optional* then by default it + is *mandatory*, so it must appear in any input event passed to APEX. If an *optional* field is not set + for an output event then value will be set to ``null``. .. container:: imageblock @@ -5217,7 +5217,7 @@ Create a new Policy and add the *"No Booze before 11:30"* check .. container:: content - .. code:: + .. code:: /* * ============LICENSE_START======================================================= @@ -5325,7 +5325,7 @@ Create a new Policy and add the *"No Booze before 11:30"* check .. container:: content - .. code:: + .. code:: /* * ============LICENSE_START======================================================= @@ -5494,60 +5494,60 @@ Create a new Policy and add the *"No Booze before 11:30"* check default task is automatically selected and no 'Task Selection Logic' is required. - .. note:: - .. container:: title - - State Output Mappings - - .. container:: paragraph - - In a 'Policy' 'State' a 'State Output Mapping' has 3 roles: - 1) Select which 'State' should be executed next, 2) Select - the type of the state’s 'Outgoing Event', and 3) - Populate the state’s 'Outgoing Event'. This is how states are - chained together to form a (`Directed Acyclic Graph - (DAG) <https://en.wikipedia.org/wiki/Directed_acyclic_graph>`__ ) - of states. The final state(s) of a policy are those that do - not select any 'next' state. Since a 'State' can only - accept a single type of event, the type of the event emitted - by a previous 'State' must be match the incoming event type - of the next 'State'. This is also how the last state(s) in - a policy can emit events of different types. The 'State - Output Mapping' is also responsible for taking the - fields that are output by the task executed in the state and - populating the state’s output event before it is emitted. - - .. container:: paragraph - - Each 'Task' referenced in 'State' must have a defined - 'Output Mapping' to take the output of the task, select an - 'Outgoing Event' type for the state, populate the state’s - outgoing event, and then select the next state to be - executed (if any). - - .. container:: paragraph - - There are 2 basic types of output mappings: - - .. container:: olist arabic - - #. **Direct Output Mappings** have a single value for - 'Next State' and a single value for 'State Output - Event'. The outgoing event for the state is - automatically created, any outgoing event parameters - that were present in the incoming event are copied - into the outgoing event, then any task output fields - that have the same name and type as parameters in the - outgoing event are automatically copied into - the outgoing event. - - #. **Logic-based State Output Mappings / Finalizers** - have some logic defined that dynamically selects - and creates the 'State Outgoing Event', manages - the population of the outgoing event parameters - (perhaps changing or adding to the outputs from the - task), and then dynamically selects the next state to - be executed (if any). + .. note:: + .. container:: title + + State Output Mappings + + .. container:: paragraph + + In a 'Policy' 'State' a 'State Output Mapping' has 3 roles: + 1) Select which 'State' should be executed next, 2) Select + the type of the state’s 'Outgoing Event', and 3) + Populate the state’s 'Outgoing Event'. This is how states are + chained together to form a (`Directed Acyclic Graph + (DAG) <https://en.wikipedia.org/wiki/Directed_acyclic_graph>`__ ) + of states. The final state(s) of a policy are those that do + not select any 'next' state. Since a 'State' can only + accept a single type of event, the type of the event emitted + by a previous 'State' must be match the incoming event type + of the next 'State'. This is also how the last state(s) in + a policy can emit events of different types. The 'State + Output Mapping' is also responsible for taking the + fields that are output by the task executed in the state and + populating the state’s output event before it is emitted. + + .. container:: paragraph + + Each 'Task' referenced in 'State' must have a defined + 'Output Mapping' to take the output of the task, select an + 'Outgoing Event' type for the state, populate the state’s + outgoing event, and then select the next state to be + executed (if any). + + .. container:: paragraph + + There are 2 basic types of output mappings: + + .. container:: olist arabic + + #. **Direct Output Mappings** have a single value for + 'Next State' and a single value for 'State Output + Event'. The outgoing event for the state is + automatically created, any outgoing event parameters + that were present in the incoming event are copied + into the outgoing event, then any task output fields + that have the same name and type as parameters in the + outgoing event are automatically copied into + the outgoing event. + + #. **Logic-based State Output Mappings / Finalizers** + have some logic defined that dynamically selects + and creates the 'State Outgoing Event', manages + the population of the outgoing event parameters + (perhaps changing or adding to the outputs from the + task), and then dynamically selects the next state to + be executed (if any). .. container:: paragraph @@ -5841,7 +5841,7 @@ Test Policy Step 1 .. container:: content - .. code:: + .. code:: #------------------------------------------------------------------------------- # ============LICENSE_START======================================================= @@ -6143,7 +6143,7 @@ Extend the Policy with the new Scenario .. container:: content - .. code:: + .. code:: /* * ============LICENSE_START======================================================= @@ -6320,7 +6320,7 @@ Extend the Policy with the new Scenario .. container:: content - .. code:: + .. code:: /* * ============LICENSE_START======================================================= @@ -6429,7 +6429,7 @@ Test Policy Step 2 .. container:: content - .. code:: + .. code:: { "engineServiceParameters" : { @@ -6633,7 +6633,7 @@ Policy 2 in CLI Editor .. container:: content - .. code:: + .. code:: #------------------------------------------------------------------------------- # ============LICENSE_START======================================================= @@ -7053,7 +7053,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: <configuration debug="false"> @@ -7075,7 +7075,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> @@ -7093,7 +7093,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: <root level="info"> @@ -7109,7 +7109,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: <appender name="FILE" class="ch.qos.logback.core.FileAppender"> @@ -7128,7 +7128,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: <appender name="CTXT_FILE" class="ch.qos.logback.core.FileAppender"> @@ -7151,7 +7151,7 @@ Standard Logging Configuration .. container:: content - .. code:: + .. code:: :number-lines: @@ -7176,7 +7176,7 @@ Adding Logback Status and Debug .. container:: content - .. code:: + .. code:: <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> @@ -7190,7 +7190,7 @@ Adding Logback Status and Debug .. container:: content - .. code:: + .. code:: <configuration debug="true"> ... @@ -7216,7 +7216,7 @@ Logging External Components .. container:: content - .. code:: + .. code:: <logger name="org.infinispan" level="INFO" additivity="false"> <appender-ref ref="STDOUT" /> @@ -7231,7 +7231,7 @@ Logging External Components .. container:: content - .. code:: + .. code:: <logger name="org.apache.zookeeper.ClientCnxn" level="INFO" additivity="false"> <appender-ref ref="STDOUT" /> @@ -7260,7 +7260,7 @@ Configuring loggers for Policy Logic .. container:: content - .. code:: + .. code:: <appender name="POLICY_APPENDER_STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> @@ -7282,7 +7282,7 @@ Configuring loggers for Policy Logic .. container:: content - .. code:: + .. code:: <logger name="org.onap.policy.apex.executionlogging.TaskExecutionLogging" level="TRACE" additivity="false"> <appender-ref ref="POLICY_APPENDER_STDOUT" /> @@ -7309,7 +7309,7 @@ Rolling File Appenders .. container:: content - .. code:: + .. code:: <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${VAR_LOG}/apex.log</file> @@ -7340,7 +7340,7 @@ Rolling File Appenders .. container:: content - .. code:: + .. code:: <appender name="CTXT-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> @@ -7378,7 +7378,7 @@ Example Configuration for Logging Logic .. container:: content - .. code:: + .. code:: <configuration debug="false"> <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> @@ -7437,7 +7437,7 @@ Example Configuration for a Production Server .. container:: content - .. code:: + .. code:: <configuration debug="false"> <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> @@ -7611,7 +7611,7 @@ A Websocket Configuration for the VPN Domain .. container:: content - .. code:: + .. code:: :number-lines: { @@ -7674,7 +7674,7 @@ Start APEX Engine .. container:: content - .. code:: + .. code:: :number-lines: #: $APEX_HOME/bin/apexEngine.sh -c $APEX_HOME/examples/config/VPN/Ws2WsServerAvroContextJsonEvent.json @@ -7683,7 +7683,7 @@ Start APEX Engine .. container:: content - .. code:: + .. code:: :number-lines: #: %APEX_HOME%\bin\apexEngine.bat -c %APEX_HOME%\examples\config\VPN\Ws2WsServerAvroContextJsonEvent.json @@ -7700,7 +7700,7 @@ Start APEX Engine .. container:: content - .. code:: + .. code:: :number-lines: 2017-07-28 13:17:20,834 Apex [main] INFO c.e.a.s.engine.runtime.EngineService - engine model VPNPolicyModelAvro:0.0.1 added to the engine-AxArtifactKey:(name=VPNApexEngine-0,version=0.0.1) @@ -7725,7 +7725,7 @@ Run the Websocket Echo Client .. important:: APEX engine needs to run first - The example assumes that an APEX engine configured for *produce* carrier technology Websocket and *JSON* event protocol is executed first. + The example assumes that an APEX engine configured for *produce* carrier technology Websocket and *JSON* event protocol is executed first. +---------------------------------------------------------+-----------------------------------------------------------+ | Unix, Cygwin | Windows | @@ -7768,7 +7768,7 @@ Run the Websocket Echo Client .. container:: content - .. code:: + .. code:: # $APEX_HOME/bin/apexApps.sh ws-echo -p 42452 (1) > %APEX_HOME%\bin\apexApps.bat ws-echo -p 42452 (2) @@ -7791,7 +7791,7 @@ Run the Websocket Echo Client .. container:: content - .. code:: + .. code:: ws-simple-echo: starting simple event echo --> server: localhost @@ -7815,8 +7815,8 @@ Run the Websocket Console Client .. important:: APEX engine needs to run first - The example assumes that an APEX engine configured for *consume* carrier technology Websocket and *JSON* event - protocol is executed first. + The example assumes that an APEX engine configured for *consume* carrier technology Websocket and *JSON* event + protocol is executed first. +------------------------------------------------------------+--------------------------------------------------------------+ | Unix, Cygwin | Windows | @@ -7859,7 +7859,7 @@ Run the Websocket Console Client .. container:: content - .. code:: + .. code:: # $APEX_HOME/bin/apexApps.sh ws-console -p 42450 (1) > %APEX_HOME%\bin\apexApps.sh ws-console -p 42450 (2) @@ -7882,7 +7882,7 @@ Run the Websocket Console Client .. container:: content - .. code:: + .. code:: ws-simple-console: starting simple event console --> server: localhost @@ -7921,7 +7921,7 @@ Send Events .. container:: content - .. code:: + .. code:: :number-lines: #: $APEX_HOME/examples/events/VPN @@ -7940,7 +7940,7 @@ Send Events .. container:: content - .. code:: + .. code:: :number-lines: {Link=L09, LinkUp=true} @@ -7982,7 +7982,7 @@ Send Events .. container:: content - .. code:: + .. code:: :number-lines: ws-simple-echo: received |