1 .. This work is a derivative of https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts-100023263
2 .. This work is licensed under a Creative Commons Attribution 4.0
3 .. International License. http://creativecommons.org/licenses/by/4.0
4 .. Copyright (C) 2020 Deutsche Telekom AG.
13 **Workflow Scope within CDS Framework**
15 The workflow is within the scope of the micro provisioning and configuration
16 management in **controller domain** and does NOT account for the MACRO service orchestration workflow which is covered by the SO Project.
18 A workflow defines an overall action to be taken on the service, hence is an
19 entry-point for the run-time execution of the :ref:`CBA Package <cba>`.
21 A workflow also defines **inputs** and **outputs** that will defined the **payload contract**
22 of the **request** and **response** (see :ref:`dynamic_payload`)
24 A workflow can be **composed** of one or multiple **sub-actions** to execute.
26 A CBA package can have as **many workflows** as needed.
28 .. _workflow_single_action:
33 The workflow is directly backed by a component (see :ref:`node_type` -> Component).
35 In the example bellow, the target of the workflow's steps resource-assignment is ``resource-assignment``
36 which actually is the name of the ``node_template`` defined after, of type ``component-resource-resolution``.
39 <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/golden/Definitions/golden-blueprint.json#L40-L71>`_
45 "topology_template": {
47 "resource-assignment": {
49 "resource-assignment": {
50 "description": "Resource Assign Workflow",
51 "target": "resource-assignment"
56 "resource-assignment-properties": {
57 "description": "Dynamic PropertyDefinition for workflow(resource-assignment).",
59 "type": "dt-resource-assignment-properties"
67 "resource-assignment",
75 "resource-assignment": {
76 "type": "component-resource-resolution",
78 "ResourceResolutionComponent": {
82 "artifact-prefix-names": [
91 "vf-module-1-template": {
92 "type": "artifact-template-velocity",
93 "file": "Templates/vf-module-1-template.vtl"
95 "vf-module-1-mapping": {
96 "type": "artifact-mapping-resource",
97 "file": "Templates/vf-module-1-mapping.json"
104 .. _workflow_multiple_actions:
107 **********************
109 The workflow is backed by a Directed Graph engine, dg-generic (see :ref:`node_type` -> DG,
110 and is an **imperative** workflow.
112 A DG used as workflow for CDS is composed of multiple execute nodes; each individual
113 execute node refers to an modelled Component (see :ref:`node_type` -> Component) instance.
115 In the example above, you can see the target of the workflow's steps execute-script is
116 ``execute-remote-ansible-process``, which is a node_template of type ``dg_generic``
119 <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Definitions/remote_scripts.json#L184-L204>`_
122 :caption: **workflow plan example**
124 "topology_template": {
126 "execute-remote-ansible": {
129 "description": "Execute Remote Ansible Script",
130 "target": "execute-remote-ansible-process"
147 "execute-remote-ansible-properties": {
148 "description": "Dynamic PropertyDefinition for workflow(execute-remote-ansible).",
150 "type": "dt-execute-remote-ansible-properties"
154 "ansible-variable-resolution": {
158 "resolve-ansible-vars",
163 "prepare-environment-logs": {
167 "execute-remote-ansible",
168 "prepare-environment-logs"
172 "execute-command-logs": {
176 "execute-remote-ansible",
177 "execute-command-logs"
183 "execute-remote-ansible-process": {
184 "type": "dg-generic",
189 "dg-execute-remote-ansible-process"
192 "dependency-node-templates": [
193 "resolve-ansible-vars",
194 "execute-remote-ansible"
198 "dg-execute-remote-ansible-process": {
199 "type": "artifact-directed-graph",
200 "file": "Plans/CONFIG_ExecAnsiblePlaybook.xml"
208 Properties of a workflow
209 **************************
218 - Defines the name of the action that can be triggered by external system
220 - | They are two types of inputs, the dynamic ones, and the static one.
227 Specified at workflow level
229 * can be inputs for the Component(s), see the inputs section of the component of interest.
230 * represent inputs to derived custom logic within scripting
232 These will end up under ``${actionName}-request`` section of the payload (see Dynamic API)
236 Represent the resources defined as input (see :ref:`node_type` -> Source -> Input)
237 within mapping definition files (see :ref:`artifact_type` -> Mapping).
239 The **enrichment process** will (see :ref:`enrichment`)
241 * dynamically gather all of them under a data-type, named ``dt-${actionName}-properties``
242 * will add it as a input of the workflow, as follow using this name: ``${actionName}-properties``
244 Example for workflow named `resource-assignment`:
247 :caption: **dynamic input**
249 "resource-assignment-properties": {
251 "type": "dt-resource-assignment-properties"
255 - | Defines the outputs of the execution; there can be as many output as needed.
256 | Depending on the Component (see :ref:`node_type` -> Component) of use, some attribute might be retrievable.
264 * - data type (complex / primitive)
265 - value resolvable using :ref:`expression` -> get_attribute
267 - | Defines the actual step to execute as part of the workflow
278 - | a node_template implementing on of the supported Node Type (see :ref:`node_type` -> DG),
279 either a Component or a DG
280 | (see :ref:`workflow_single_action` or :ref:`workflow_multiple_actions`)
285 :caption: **workflow example**
289 "resource-assignment": { <- workflow-name
291 "vnf-id": { <- static inputs
295 "resource-assignment-properties": { <- dynamic inputs
297 "type": "dt-resource-assignment-properties"
301 "call-resource-assignment": { <- step-name
302 "description": "Resource Assignment Workflow",
303 "target": "resource-assignment-process" <- node_template targeted by the step
307 "template-properties": { <- output
308 "type": "json", <- complex type
310 "get_attribute": [ <- uses expression to retrieve attribute from context
311 "resource-assignment",
321 `TOSCA definition <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454203>`_