Example Parameters

Parameters Example: URI, Static, Dynamic, and Inheritance

Consider the following Plan layout:

Hierarchical-node plan, with Inheritance to child Action node in Config & Parms

Name: plan0
Description: planDesc
IsActive: true
Actions:
- Name: action0
  Handler:
    Type: Synapse.Core:Synapse.Core.Runtime.EmptyHandler
    Config:
      Name: ConfigSet00
      Type: Json
      Uri: file://C:/Synapse.UnitTests/Plans/Config/json_in.json
      Values:
        {
          "CNode0": "CValue0_inline",
          "CNode1": "CValue1_inline",
          "CNode3": {
            "CNode3_1": "CValue3_1_inline",
            "CNode3_2": "CValue3_2_inline",
          }
        }
      Dynamic:
      - Source: cnode0Dynamic
        Target: CNode0
      - Source: cnode2_1Dynamic
        Target: CNode2:CNode2_1
      - Source: cnode3_1Dynamic
        Target: CNode3:CNode3_1
  Parameters:
    Name: ParamSet00
    Type: Json
    Uri: file://C:/Synapse.UnitTests/Plans/Parms/json_in.json
    Values:
      {
        "PNode0": "PValue0_inline",
        "PNode1": "PValue1_inline",
        "PNode3": {
          "PNode3_1": "PValue3_1_inline",
          "PNode3_2": "PValue3_2_inline",
        }
      }
    Dynamic:
    - Source: pnode0Dynamic
      Target: PNode0
    - Source: pnode2_1Dynamic
      Target: PNode2:PNode2_1
    - Source: pnode3_1Dynamic
      Target: PNode3:PNode3_1
  Actions:
  - Name: action1
    Handler:
      Type: Synapse.Core:Synapse.Core.Runtime.EmptyHandler
      Config:
        Name: ConfigSet01
        InheritFrom: ConfigSet00
        Type: Json
        Values:
          {
            "CNode0": "CValue0_inline_1",
            "CNode3": {
              "CNode3_1": "CValue3_1_inline_1",
            },
          }
    Parameters:
      Name: ParamSet01
      InheritFrom: ParamSet00
      Type: Json
      Values:
        {
          "PNode1": "PValue1_inline_1",
          "PNode3": {
            "PNode3_2": "PValue3_2_inline_1",
          },
        }

Where: Config/json_in.json and Parms/json_in.json contain:

Config:
{
  "CNode0": "CValue0_file",
  "CNode1": "CValue1_file",
  "CNode2": {
    "CNode2_1": "CValue2_1_file",
    "CNode2_2": "CValue2_2_file"
  }
}
Parms:
{
  "PNode0": "PValue0_file",
  "PNode1": "PValue1_file",
  "PNode2": {
    "PNode2_1": "PValue2_1_file",
    "PNode2_2": "PValue2_2_file"
  }
}

action0 Parameter Results

The resulting Config/Parms for action0, before any Dynamic data is applied, is:

Config:
{
  "CNode0": "CValue0_inline",
  "CNode1": "CValue1_inline",
  "CNode2": {
    "CNode2_1": "CValue2_1_file",
    "CNode2_2": "CValue2_2_file"
  },
  "CNode3": {
    "CNode3_1": "CValue3_1_inline",
    "CNode3_2": "CValue3_2_inline"
  }
}
Parms:
{
  "PNode0": "PValue0_inline",
  "PNode1": "PValue1_inline",
  "PNode2": {
    "PNode2_1": "PValue2_1_file",
    "PNode2_2": "PValue2_2_file"
  },
  "PNode3": {
    "PNode3_1": "PValue3_1_inline",
    "PNode3_2": "PValue3_2_inline"
  }
}

The resulting Config/Parms for action0, after Dynamic data is applied, is:

//Key/Value pairs, as collected from an external source:
Dictionary<string, string> dynamicData = new Dictionary<string, string>();
dynamicData.Add( "cnode0Dynamic", "CValue0_dynamic" );
dynamicData.Add( "cnode2_1Dynamic", "CValue2_1_dynamic" );
dynamicData.Add( "cnode3_1Dynamic", "CValue3_1_dynamic" );
dynamicData.Add( "pnode0Dynamic", "PValue0_dynamic" );
dynamicData.Add( "pnode2_1Dynamic", "PValue2_1_dynamic" );
dynamicData.Add( "pnode3_1Dynamic", "PValue3_1_dynamic" );
Config:
{
  "CNode0": "CValue0_dynamic",
  "CNode1": "CValue1_inline",
  "CNode2": {
    "CNode2_1": "CValue2_1_dynamic",
    "CNode2_2": "CValue2_2_file"
  },
  "CNode3": {
    "CNode3_1": "CValue3_1_dynamic",
    "CNode3_2": "CValue3_2_inline"
  }
}
Parms:
{
  "PNode0": "PValue0_dynamic",
  "PNode1": "PValue1_inline",
  "PNode2": {
    "PNode2_1": "PValue2_1_dynamic",
    "PNode2_2": "PValue2_2_file"
  },
  "PNode3": {
    "PNode3_1": "PValue3_1_dynamic",
    "PNode3_2": "PValue3_2_inline"
  }
}

action1 Parameter Results

The resulting Config/Parms for action1, which inherits from its config/parms from action0, is:

Config:
{
  "PNode0": "PValue0_dynamic",
  "PNode1": "PValue1_inline",
  "PNode2": {
    "PNode2_1": "PValue2_1_dynamic",
    "PNode2_2": "PValue2_2_file"
  },
  "PNode3": {
    "PNode3_1": "PValue3_1_dynamic",
    "PNode3_2": "PValue3_2_inline"
  }
}
Parms:
{
  "PNode0": "PValue0_inline",
  "PNode1": "PValue1_inline_1",
  "PNode2": {
    "PNode2_1": "PValue2_1_file",
    "PNode2_2": "PValue2_2_file"
  },
  "PNode3": {
    "PNode3_1": "PValue3_1_inline",
    "PNode3_2": "PValue3_2_inline_1"
  }
}