De expressiesyntaxis geeft alle beschikbare mogelijkheden van expressies in Automation Assembler-sjablonen weer.

Opmerking: Automation Assembler-expressies zijn anders dan reguliere expressies (Regex).

De volgende syntaxis wordt slechts gedeeltelijk weergegeven in de voorbeelden die u ziet in Automation Assembler-expressies.

Literals

De volgende literals worden ondersteund:

  • Booleaans (waar of onwaar)
  • Geheel getal
  • Drijvende komma
  • Tekenreeks

    Backslash wordt gebruikt om dubbele aanhalingstekens, enkele aanhalingstekens en een backslash zelf aan te geven:

    " wordt met escapeteken aangegeven als \"

    ' wordt met escapeteken aangegeven als \'

    \ wordt met escapeteken aangegeven als \\

    De aanhalingstekens hoeven alleen met een escapeteken te worden aangegeven in een tekenreeks die is ingesloten tussen aanhalingstekens van hetzelfde type, zoals hieronder wordt weergegeven.

    "I am a \"double quoted\" string inside \"double quotes\"."

  • Null

Omgevingsvariabelen

Omgevingsnamen:

  • orgId
  • projectId
  • projectName
  • deploymentId
  • deploymentName
  • blueprintId
  • blueprintVersion
  • blueprintName
  • requestedBy (gebruiker)
  • requestedAt (tijd)

Syntaxis:

env.ENV_NAME

Voorbeeld:

${env.blueprintId}

Resourcevariabelen

Met resourcevariabelen kunt u vanuit andere resources binden aan resource-eigenschappen.

Syntaxis:

resource.RESOURCE_NAME.PROPERTY_NAME

Resourcenamen mogen geen dashjes of punten bevatten. Onderstrepingstekens zijn toegestaan.

Voorbeelden:

  • ${resource.db.id}
  • ${resource.db.networks[0].address}
  • ${resource.app.id} (De tekenreeks voor niet-geclusterde resources retourneren, waarbij aantal niet is opgegeven. De array voor geclusterde resources retourneren.)
  • ${resource.app[0].id} (De eerste invoer voor geclusterde resources retourneren.)

Self-variabelen voor resource

Self-variabelen voor resources zijn alleen toegestaan voor resources die de toewijzingsfase ondersteunen. Self-variabelen voor resources zijn alleen beschikbaar (of hebben alleen een ingestelde waarde) nadat de toewijzingsfase is voltooid.

Syntaxis:

self.property_name

Voorbeeld:

${self.address} (Retourneren het adres dat is toegewezen tijdens de toewijzingsfase.)

Voor een resource met de naam resource_x zijn self.property_name en resource.resource_x.property_name hetzelfde en beide worden beschouwd als zelfverwijzingen.

Voorwaarden

Syntaxis:

  • Gelijkheidsoperators zijn == en !=.
  • Relationele operators zijn < > <= en >=.
  • Logische operators zijn && || en !.
  • Conditionals gebruiken het patroon:

    condition-expression ? true-expression :false-expression

Voorbeelden:

${input.count < 5 && input.size == 'small'}

${input.count < 2 ? "small":"large"}

Clustertellerindex

Syntaxis:

count.index

Voorbeelden:

  • Het knooppunttype voor geclusterde resources retourneren:

    ${count.index == 0 ? "primary":"secondary"}

  • De grootte van elke schijf tijdens de toewijzing instellen:
    inputs:
      disks:
        type: array
        minItems: 0
        maxItems: 12
        items:
          type: object
          properties:
            size:
              type: integer
              title: Size (GB)
              minSize: 1
              maxSize: 2048
    resources:
      Cloud_vSphere_Disk_1:
        type: Cloud.vSphere.Disk
        allocatePerInstance: true
        properties:
          capacityGb: '${input.disks[count.index].size}'
          count: '${length(input.disks)}'
    
  • Zie Machine- en schijfclusters in Automation Assembler voor meer voorbeelden.

Rekenkundige operators

Syntaxis:

Operators zijn + / * en %.

Voorbeeld:

${(input.count + 5) * 2}

Samenvoeging van tekenreeks

Syntaxis:

${'ABC' + 'DEF'} resulteert in ABCDEF.

Operators [] en .

De expressie volgt het ECMAScript om de verwerking van de operators [] en . gelijk te schakelen.

Dus is expr.identifier gelijk aan expr["identifier"]. De id wordt gebruikt om een literal te maken waarvan de waarde de id is en vervolgens wordt de operator [] met die waarde gebruikt.

Voorbeeld:

${resource.app.networks[0].address}

Als een eigenschap een spatie bevat, moet u deze bovendien markeren met vierkante haakjes en dubbele aanhalingstekens in plaats van de puntnotatie te gebruiken.

Onjuist:

input.operating system

Juist:

input["operating system"]

Constructie van kaart

Syntaxis:

${{'key1':'value1', 'key2':input.key2}}

Constructie van array

Syntaxis:

${['key1','key2']}

Voorbeeld:

${[1,2,3]}

Functies

Syntaxis:

${functie(argumenten...)}

Voorbeeld:

${to_lower(resource.app.name)}

Tabel 1. Functies
Functie Beschrijving
abs(getal) Absolute getalwaarde
avg(array) Het gemiddelde van alle waarden van een array met getallen retourneren
base64_decode(tekenreeks) Gedecodeerde Base64-waarde retourneren
base64_encode(tekenreeks) Base64-gecodeerde waarde retourneren
ceil(getal) Retourneert de kleinste waarde (die negatieve oneindigheid het dichtst benadert) die groter is dan of gelijk is aan het argument en gelijk is aan een wiskundig geheel getal
contains(array, waarde) Controleren of de array een waarde bevat
contains(tekenreeks, waarde) Controleren of de tekenreeks een waarde bevat
digest(waarde, type) Samenvatting van waarde met ondersteund type (md5, sha1, sha256, sha384, sha512) retourneren
ends_with(onderwerp, achtervoegsel) Controleren of de onderwerptekenreeks eindigt op de achtervoegseltekenreeks
filter_by(array, filter)

Retourneert alleen de arrayvermeldingen die slagen voor de filterbewerking

filter_by([1,2,3,4], x => x >= 2 && x <= 3)

retourneert [2, 3]

filter_by({'key1':1, 'key2':2}, (k,v) => v != 1)

retourneert [{"key2": 2}]

floor(getal) Retourneert de grootste waarde (die positieve oneindigheid het dichtst benadert) die kleiner is dan of gelijk is aan het argument en gelijk is aan een wiskundig geheel getal
format(notatie, waarden...) Een opgemaakte tekenreeks met behulp van Java Class Formatter-notatie en -waarden retourneren.
from_json(tekenreeks) JSON-tekenreeks parseren
from_yaml(yamlText, decode_binary=true/false) Converteer YAML naar JSON-indeling.
join(array, scheidingsteken) Array van tekenreeksen met een scheidingsteken samenvoegen en een tekenreeks retourneren
json_path(waarde, pad) Het pad ten opzichte van de waarde evalueren met behulp van XPath voor JSON.
keys(toewijzing) Sleutels van toewijzing retourneren
length(array) Lengte van array retourneren
length(tekenreeks) Lengte van tekenreeks retourneren
map_by(array, bewerking)

Retourneert elke arrayvermelding met een bewerking die op deze vermelding is toegepast

map_by([1,2], x => x * 10)

retourneert [10, 20]

map_by([1,2], x => to_string(x))

retourneert ["1", "2"]

map_by({'key1':1, 'key2':2}, (k,v) => {k:v*10})

retourneert [{"key1":10},{"key2":20}]

map_to_object(array, sleutelnaam)

Retourneert een array met sleutelwaardeparen van de opgegeven sleutelnaam die zijn gekoppeld aan waarden uit een andere array

map_to_object(resource.Disk[*].id, "source")

Retourneert een array met sleutelwaardeparen die een sleutelveld heeft, bron genoemd, gekoppeld aan schijf-id-tekenreeksen.

map_by(resource.Disk[*].id, id => {'source':id}) retourneert hetzelfde resultaat.

Als meerdere argumenten worden doorgegeven aan de functie map_to_object, retourneert deze een array met geneste objecten, waarbij de sleutels deel uitmaken van het geneste object, en de waarden op de binnenste sleutel zijn ingesteld.

map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")

Retourneert een array met objecten in de volgende indeling:

 { 
          "ip" : {
               "addr" : <value>
          }
      }

De waarde van de meest onderliggende sleutel wordt gekoppeld aan het adres van een machine in het cluster Cloud_vSphere_Machine_1.

Er is één object per machine in het cluster. Als er drie machines in het cluster zijn, zijn er drie vermeldingen in het object:

{

    "ip":

{              "addr": <value>      }
,

    "ip":

{              "addr": <value>      }
,

    "ip":

{              "addr": <value>      }
}
matches(tekenreeks, regex) Controleren of de tekenreeks overeenkomt met een regex-expressie
max(array) Maximumwaarde van array met getallen retourneren
merge(toewijzing, toewijzing) Een samengevoegde toewijzing retourneren
min(array) Minimumwaarde uit array met getallen retourneren
not_null(array) De eerste vermelding retourneren die niet leeg is
now() Huidige tijd in ISO-8601-indeling retourneren
range(start, stop) Retourneert een reeks getallen in stappen van 1 die beginnen met het beginnummer en eindigen net vóór het stopnummer
replace(tekenreeks, doel, vervanging) Tekenreeks door doeltekenreeks vervangen
reverse(array) Vermeldingen in array omkeren
slice(array, begin, einde) Segment van array retourneren van beginindex tot eindindex
split(tekenreeks, scheidingsteken) Tekenreeks met scheidingsteken splitsen en array met tekenreeksen retourneren
starts_with(onderwerp, voorvoegsel) Controleren of de onderwerptekenreeks begint met de voorvoegseltekenreeks
substring(tekenreeks, begin, einde) Subtekenreeks van tekenreeks vanaf de beginindex tot de eindindex retourneren
sum(array) De som van alle waarden van de array met getallen retourneren
to_json(waarde) Waarde als JSON-tekenreeks serialiseren
to_lower(tekenreeks) Tekenreeks converteren naar kleine letters
to_number(tekenreeks) Tekenreeks als getal parseren
to_string(waarde) Tekenreeksweergave van de waarde retourneren
to_upper(tekenreeks) Tekenreeks converteren naar hoofdletters
to_yaml(jsonText): Converteer JSON terug naar YAML-indeling.
trim(tekenreeks) Voorloop- en volgspaties verwijderen
url_encode(tekenreeks) Tekenreeks coderen met behulp van URL-coderingsspecificatie
uuid() Willekeurig gegenereerde UUID retourneren
values(toewijzing) Waarden van toewijzing retourneren

Problemen oplossen

In de YAML-taal wordt een dubbelepunt en spatie (': ') gebruikt als scheidingsteken tussen sleutel en waarde in sleutelwaardeparen. De expressiesyntaxis is afhankelijk van YAML, zodat een spatie na een dubbelepunt er soms voor kan zorgen dat een expressie mislukt.

De spatie tussen "win" : en "lin" in de volgende expressie veroorzaakt bijvoorbeeld een fout.

${contains(input.image,"Windows") == true ? "win" : "lin"}

De werkende expressie laat de spatie weg.

${contains(input.image,"Windows") == true ? "win" :"lin"}

Als een expressie blijft mislukken, probeert u de volledige expressie binnen vinkjes te plaatsen, zoals weergegeven.

ezOS: '${contains(input.image,"Windows") == true ? "win" :"lin"}'