API - Escape the Variable-@

Hello, maybe you can help me out! I try to update a PL with an API PUT Call in a Python Processor.
As PL Variable I want to set a system variable. When I just use @sys_datetime@ as value, the actual value is set as variable (e.g. 2022-07-25 16:53:51). Escaping it with \@sys_pl_exec_no\@ does not work as well (\@sys_pl_exec_no\@ is set as Value). How can I escape the “@” or is there an other way to set a “variable as variable”?

  "productionLineVariables": [
    {
      "id": "045b20b3-a485-490a-9ea3-97a3f86df09d",
      "variableType": "integer",
      "displayName": "anzahl_simulationen",
      "value": {
        "selectionType": "SINGLE_VALUE",
        "variableValue": {
          "variableType": "integer",
          "value": 2
        }
      }
    },
    {
      "id": "e75cf019-9e9c-466f-be3b-3782cb4212f7",
      "variableType": "string",
      "displayName": "simulation_execution_no",
      "value": {
        "selectionType": "SINGLE_VALUE",
        "variableValue": {
          "variableType": "string",
          "value": "@sys_pl_exec_no@"
        }
      }
    },
    {
      "id": "735a465d-89b1-494f-b383-373ce6c1046a",
      "variableType": "string",
      "displayName": "simulation_execution_time",
      "value": {
        "selectionType": "SINGLE_VALUE",
        "variableValue": {
          "variableType": "string",
          "value": "@sys_datetime@"
        }
      }
    }
  ],

Given that I got your requirement correct, you want to have an updated version of the PL, where a system variable placeholder is put. To do so, you want to do a PUT call via a dedicated WF that - when using the variable there - would update the PL with current value of the system variable.

Well, there is a workaround due to the way variables are resolved in the current implementation: They are not resolved recursively.
This means, that, when you define a dummy variable in your WF and use it at the position of your system variable in the python script and give it the @sys_var@ key as current value via the variable manager, on execution your dummy variable will be replaced with the system variable without escaping needed.

This simple WF export shows the principle with a CIT processor:

JE9EQ0xCUkQkeyJvbmVkYXRhVmVyc2lvbiI6eyJjbGllbnRWZXJzaW9uIjoiMS4yMDkuMCIsInNlcnZlclZlcnNpb24iOiI1Mi4wLjEiLCJidW5kbGVWZXJzaW9uIjoiNC4wLjAifSwicmVwb3J0cyI6W10sIndvcmtmbG93Ijp7ImlkIjoiYzAxMTdiMjYtYjM3Yy00NzdkLWE4OGYtMjQzODc1ZmI1ZTgzIiwidmVyc2lvbk51bWJlciI6MSwibmFtZSI6IlZhcmlhYmxlIGluIFZhcmlhYmxlIiwidGFncyI6W10sImRlc2NyaXB0aW9uIjoiIiwibm90ZXMiOm51bGwsImNyZWF0ZWRBdCI6IjIwMjItMDctMjVUMTY6MDY6NTAuNTM2WiIsInVwZGF0ZWRBdCI6IjIwMjItMDctMjVUMTY6MDY6NTIuMzYxWiIsInByb2plY3RzIjpbeyJpZCI6ImZlNzk5NzFkLTAzOWEtNGYzZi1iN2QyLWY2MDQyNWZhYzlhYyIsInByb2plY3RUeXBlIjoiVVNFX0NBU0VTIiwib3duZXIiOiI5N2Q1ZWQ3MC0yYzdiLTQ3OTQtYjA3MC1hYzYzNDcxMzAyZDciLCJuYW1lIjoiUGxheWdyb3VuZCIsImRlc2NyaXB0aW9uIjoiRnJlZS1mb3ItYWxsIHNjcmF0Y2hwYWQgZm9yIHRoZSBhcmNoaXRlY3RzLiBVc2UgdGhpcyBwcm9qZWN0IHRvIHF1aWNrbHkgdGVzdCBpZGVhcyBhbmQgc2luZ2xlIHdvcmtmbG93cy4gQW55IHJlc291cmNlcyBjcmVhdGVkIGhlcmUgYXJlIHN1YmplY3QgdG8gZGVsZXRpb24gd2l0aG91dCBmdXJ0aGVyIG5vdGljZSEiLCJub3RlcyI6bnVsbCwidGFncyI6W10sImNyZWF0ZWRBdCI6IjIwMjItMDUtMjNUMTM6NTM6NDMuMTgwWiIsInVwZGF0ZWRBdCI6IjIwMjItMDUtMjVUMTI6NDE6NTQuNjMyWiIsInNlY3VyZWQiOmZhbHNlLCJvd25lckluZm9ybWF0aW9uIjpudWxsfV0sIm5vZGVzIjp7Ijk0YjhjZTJiLTM3YjYtNDVkZS05NmYwLTljZjY5ZWJjY2E2OSI6eyJpZCI6Ijk0YjhjZTJiLTM3YjYtNDVkZS05NmYwLTljZjY5ZWJjY2E2OSIsInByb2Nlc3NvciI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDE0LTAwMDAwMDAwMDAwMSIsImNvbmZpZyI6eyJ0YWtlIjo0MDAsInNvcnRCeSI6W10sImdyb3VwQnkiOltdLCJ0YWJsZW5hbWUiOiIiLCJvcmRlciI6WyJBU0MiXX0sInJlc3VsdCI6bnVsbCwib3B0aW9ucyI6eyJjb25maWdFZGl0RXhwZXJ0TW9kZUVuYWJsZWQiOmZhbHNlLCJ4IjotMzM1LCJ5IjotMTY1LCJuYW1lIjoiUmVzdWx0IFRhYmxlIiwiY29sb3IiOiIjMGQ0N2ExIn0sIm91dCI6e319LCJjNjg3MWY2MS1iZDE3LTRmZWMtYWQwZS1hNzkwZjJkMTYzYjkiOnsiaWQiOiJjNjg3MWY2MS1iZDE3LTRmZWMtYWQwZS1hNzkwZjJkMTYzYjkiLCJwcm9jZXNzb3IiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAyNC0wMDAwMDAwMDAwMDEiLCJjb25maWciOnsidGFibGVuYW1lIjoiIiwidGFibGUiOnsiaGVhZGVycyI6W3sibmFtZSI6ImNvbnRlbnQiLCJ1bml0IjoiMjc2MjYxMDctNjg1Yi00MWIwLWFjMDctYzZiY2FlNjhlM2EyIn1dLCJyb3dzIjpbWyJAZHVtbXlfdmFyQCJdXX19LCJyZXN1bHQiOm51bGwsIm9wdGlvbnMiOnsiY29uZmlnRWRpdEV4cGVydE1vZGVFbmFibGVkIjpmYWxzZSwieCI6LTMzNSwieSI6LTI2NSwibmFtZSI6IkN1c3RvbSBJbnB1dCBUYWJsZSIsImNvbG9yIjoiIzc4OTA5YyJ9LCJvdXQiOnsib3V0cHV0Ijp7Ijk0YjhjZTJiLTM3YjYtNDVkZS05NmYwLTljZjY5ZWJjY2E2OSI6ImRhdGEifX19fSwibm9kZU5vdGVzIjp7fSwib3duZXIiOiI5N2Q1ZWQ3MC0yYzdiLTQ3OTQtYjA3MC1hYzYzNDcxMzAyZDciLCJyZXNvdXJjZVR5cGUiOiJXT1JLRkxPVyIsImdyb3VwcyI6W10sImF1eGlsaWFyaWVzIjpbXSwidmFyaWFibGVzIjpbeyJpZCI6IjQ4ZTU3OGFlLWFkZTgtNDBiMS1iYzFlLTRkNjI3M2QzMDkyMCIsInZhcmlhYmxlVHlwZSI6InN0cmluZyIsIm5hbWUiOiJkdW1teV92YXIiLCJkaXNwbGF5TmFtZSI6IkR1bW15IFZhcmlhYmxlIiwiaGVscFRleHQiOiIiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiI6eyJ2aXN1YWxpemF0aW9uTW9kZSI6IkZSRUVfVEVYVCIsInRlY2huaWNhbFJldHVyblZhbHVlIjpudWxsLCJhbGxvd0VtcHR5U2VsZWN0aW9uIjpmYWxzZSwidmlzdWFsaXphdGlvbk9wdGlvbnMiOnsidmFsdWVUeXBlIjoiRVhBQ1RfVkFMVUUiLCJ2YXJpYWJsZUFsdGVybmF0aXZlcyI6W119fSwidmFsdWUiOnsic2VsZWN0aW9uVHlwZSI6IlNJTkdMRV9WQUxVRSIsInZhcmlhYmxlVmFsdWUiOnsidmFyaWFibGVUeXBlIjoic3RyaW5nIiwidmFsdWUiOiJAc3lzX2RhdGV0aW1lQCJ9fSwidmFyaWFibGVPcmlnaW4iOiJXT1JLRkxPVyJ9XSwicmVjZW50RXhlY3V0aW9uIjpudWxsLCJqb2JOYW1pbmdSdWxlIjoiI0BzeXNfam9iX3ZlcnNpb25AIiwib3duZXJJbmZvcm1hdGlvbiI6eyJ0eXBlIjoidXNlciIsIm93bmVySWQiOiI5N2Q1ZWQ3MC0yYzdiLTQ3OTQtYjA3MC1hYzYzNDcxMzAyZDciLCJmaXJzdE5hbWUiOiJGbG9yaWFuIiwibGFzdE5hbWUiOiJLYXNwYXIifSwiaG9tZVByb2plY3QiOm51bGwsInBlcm1pc3Npb25zIjpbIlJFQUQiLCJXUklURSIsIkNSRUFURSIsIkRFTEVURSIsIkVYRUNVVEUiLCJTSEFSRSJdLCJzaW5rcyI6W119fQ==

See below screenshots in case the export is not compatible with your target instance versionj (we are using 5.0.0):
image
image
image
image

Great, that seems to work. Thank you Flogge!