.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. _apex-DecisionMakerExample:

APEX Examples Decision Maker
****************************

            .. container:: sectionbody

                  Click on the link to find the contents of each file to generate the Decision Maker Example.

                  .. container:: ulist

                     -  |apexConfigRESTClient_link|
                     -  |apexConfigRESTServer_link|
                     -  |answerInitiationEvent_link|
                     -  |makeDecision_Client_link|
                     -  |makeDecision_Server_link|
                     -  |makeDecisionExtraMode_Client_link|
                     -  |makeDecisionExtraMode_Server_link|

                     -  APEX Model (Policies)

                          - |answerInitTask_link|
                          - |ditheringAnswerTask_link|
                          - |makeDecisionStateTSL_link|
                          - |optimisticAnswerTask_link|
                          - |pessimisticAnswerTask_link|
                          - |randomAnswerTask_link|
                          - |roundRobinAnswerTask_link|


   .. container::
      :name: footer-text

      2.3.0-SNAPSHOT
      Last updated 2020-04-08 16:04:24 IST

.. |File > New to create a new Policy Model| image:: images/mfp/MyFirstPolicy_P1_newPolicyModel1.png
.. |Create a new Policy Model| image:: images/mfp/MyFirstPolicy_P1_newPolicyModel2.png
.. |ONAP| image:: ../../../images/logos.png
   :class: builtBy
   :target: http://www.onap.org/
.. |apexConfigRESTClient_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/config/DecisionMaker/ApexConfigRESTClient.json" target="_blank">APEX Configuration: Rest Client</a>
.. |apexConfigRESTServer_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/config/DecisionMaker/ApexConfigRESTServer.json" target="_blank">APEX Configuration: Rest Server</a>

.. |answerInitiationEvent_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/config/DecisionMaker/AnswerInitiationEvent.json" target="_blank">Initiation Event</a>

.. |makeDecision_Client_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/html/DecisionMaker/MakeDecision_Client.html" target="_blank">HTML Client</a>

.. |makeDecision_Server_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/html/DecisionMaker/MakeDecision_Server.html" target="_blank">HTML Server</a>

.. |makeDecisionExtraMode_Client_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/html/DecisionMaker/MakeDecisionExtraMode_Client.html" target="_blank">HTML Client: Extra Mode</a>

.. |makeDecisionExtraMode_Server_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/examples/html/DecisionMaker/MakeDecisionExtraMode_Server.html" target="_blank">HTML Server: Extra Mode</a>
.. |answerInitTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/AnswerInitTask.js" target="_blank">Task Logic: Answer Init</a>

.. |ditheringAnswerTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/DitheringAnswerTask.js" target="_blank">Task Logic: Dithering Answer</a>

.. |makeDecisionStateTSL_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/MakeDecisionStateTSL.js" target="_blank">Task Selection Logic: Make Decision State</a>

.. |optimisticAnswerTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/OptimisticAnswerTask.js" target="_blank">Task Logic: Optimistic Answer</a>

.. |pessimisticAnswerTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/PessimisticAnswerTask.js" target="_blank">Task Logic: Pessimistic Answer</a>

.. |randomAnswerTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/RandomAnswerTask.js" target="_blank">Task Logic: Random Answer</a>

.. |roundRobinAnswerTask_link| raw:: html

  <a href="https://github.com/onap/policy-apex-pdp/blob/master/examples/examples-decisionmaker/src/main/resources/logic/RoundRobinAnswerTask.js" target="_blank">Task Logic: RoundRobin Answer</a>





