.. This work is licensed under a Creative Commons Attribution 4.0
.. International License. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2019 IBM.

Workflow
========

A workflow defines an overall action to be taken on the service, hence is an entry-point for the run-time execution of the CBA package.

A workflow also defines inputs and outputs that will defined the payload contract of the request and response (see Dynamic API)

A workflow can be composed of one or multiple sub-actions to execute.

A CBA package can have as many workflows as needed.

Single action
-------------

The workflow is directly backed by a node_template of type tosca.nodes.Component

Multiple sub-actions
--------------------
The workflow is backed by Directed Graph engine, node_template of type dg-generic, and are imperative workflows.

A DG used as workflow for CDS is composed of multiple execute nodes; each individual execute node refers to a plugin, that is a node_template of type tosca.nodes.Component.

Below the properties of a workflow:



Workflow Example
----------------

::

   {
     "workflow": {
       "resource-assignment": {                                <- workflow-name
         "inputs": {
           "vnf-id": {                                         <- static inputs
             "required": true,
             "type": "string"
           },
           "resource-assignment-properties": {                    <- dynamic inputs
             "required": true,
             "type": "dt-resource-assignment-properties"
           }
         },
         "steps": {
           "call-resource-assignment": {                       <- step-name
             "description": "Resource Assignment Workflow",
             "target": "resource-assignment-process"           <- node_template targeted by the step
           }
         },
         "outputs": {
           "template-properties": {                            <- output
             "type": "json",                                   <- complex type
             "value": {
               "get_attribute": [                              <- uses expression to retrieve attribute from context
                 "resource-assignment",
                 "assignment-params"
               ]
             }
           }
         }
       }
     }
   }


TOSCA definition: http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454203
