Megosztás:


Sémahivatkozási útmutató az Azure Logic Apps munkafolyamat-definíciós nyelvéhez

Amikor logikaialkalmazás-munkafolyamatot hoz létre az Azure Logic Appsben, a munkafolyamat egy mögöttes JavaScript Object Notation (JSON) definícióval rendelkezik, amely leírja a munkafolyamatot futtató tényleges logikát. A munkafolyamat-definíció egy olyan struktúrát követ, amely a Munkafolyamatdefiníció nyelvi sémája alapján van érvényesítve. Ez a hivatkozás áttekintést nyújt erről a struktúráról, valamint arról, hogy a séma hogyan határozza meg az attribútumokat a munkafolyamat-definícióban.

Munkafolyamat-definíciós struktúra

A munkafolyamat-definíciók mindig tartalmaznak egy eseményindítót, amely példányosítja a munkafolyamatot, valamint egy vagy több olyan műveletet, amely az eseményindító elindítása után fut.

A munkafolyamat-definíciók magas szintű struktúrája a következő:

"definition": {
  "$schema": "<workflow-definition-language-schema-version>",
  "actions": { "<workflow-action-definitions>" },
  "contentVersion": "<workflow-definition-version-number>",
  "outputs": { "<workflow-output-definitions>" },
  "parameters": { "<workflow-parameter-definitions>" },
  "staticResults": { "<static-results-definitions>" },
  "triggers": { "<workflow-trigger-definitions>" }
}
Attribute Required Description
definition Yes A munkafolyamat-definíció kezdő eleme
$schema Csak akkor, ha külsőleg hivatkozik egy munkafolyamat-definícióra A munkafolyamat-definíció nyelvének verzióját leíró JSON-sémafájl helye, amelyet itt talál:

https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json
actions No A munkafolyamat-futtatókörnyezetben végrehajtandó egy vagy több művelet definíciói. További információ: Triggerek és műveletek.



Műveletek maximális száma: 250
contentVersion No A munkafolyamat-definíció verziószáma, amely alapértelmezés szerint "1.0.0.0". A munkafolyamat üzembe helyezésekor a megfelelő definíció azonosításához és megerősítéséhez adjon meg egy használandó értéket.
outputs No A munkafolyamat-futtatásból visszatérni kívánt kimenetek definíciói. További információ: Kimenetek.



Kimenetek maximális száma: 10
parameters No Egy vagy több paraméter definíciói, amelyek a logikai alkalmazás futtatókörnyezetében használandó értékeket adják át. További információért lásd: Paraméterek.



Maximális paraméterek: 50
staticResults No A műveletek által visszaadott egy vagy több statikus eredmény definíciói utánzatkimenetként, ha a statikus eredmények engedélyezve vannak ezeken a műveleteken. Minden műveletdefinícióban a runtimeConfiguration.staticResult.name attribútum a staticResults-en belüli megfelelő definícióra hivatkozik. További információ: Statikus eredmények.
triggers No A munkafolyamatot kiváltó egy vagy több trigger definíciója. Több eseményindítót is definiálhat, de csak a munkafolyamat-definíció nyelvével, vizuálisan nem a munkafolyamat-tervezőn keresztül. További információ: Triggerek és műveletek.



Maximális kiváltók: 10

Eseményindítók és műveletek

A munkafolyamat-definícióban a triggers és actions szakaszok határozzák meg a munkafolyamat végrehajtása során történő hívásokat. A szakaszok szintaxisát és további információit a Munkafolyamat-eseményindítók és -műveletek című témakörben találja.

Parameters

A telepítési életciklus általában különböző fejlesztési, tesztelési, előkészítési és éles környezetet tartalmaz. A logikai alkalmazások különböző környezetekben való üzembe helyezésekor valószínűleg különböző értékeket, például kapcsolati sztringeket szeretne használni az üzembe helyezés igényeinek megfelelően. Előfordulhat, hogy olyan értékekkel rendelkezik, amelyeket újra szeretne használni a munkafolyamatban anélkül, hogy kemény kódolást használna, vagy amelyek gyakran változnak. A munkafolyamat-definíció szakaszában meghatározhatja parameters vagy szerkesztheti a munkafolyamat futásidejében használt értékek paramétereit. Ezeket a paramétereket először meg kell határoznia, mielőtt hivatkozhat ezekre a paraméterekre a munkafolyamat-definíció más részein.

A paraméterdefiníció általános felépítése:

"parameters": {
   "<parameter-name>": {
      "type": "<parameter-type>",
      "defaultValue": <default-parameter-value>,
      "allowedValues": [ <array-with-permitted-parameter-values> ],
      "metadata": {
         "description": "<parameter-description>"
      }
   }
},
Attribute Required Típus Description
< paraméter neve> Yes String A definiálni kívánt paraméter neve
< paramétertípus> Yes int, float, string, bool, tömb, objektum, biztonságos karakterlánc, biztonságos objektum



Megjegyzés: Az összes jelszóhoz, kulcshoz és titkos kódhoz használja a securestring típusokat secureobject , mert a művelet nem adja vissza ezeket a GET típusokat. A paraméterek biztonságossá tételével kapcsolatos további információkért tekintse meg a műveleti és bemeneti paraméterek biztonsági ajánlásait.
A paraméter típusa
< default-parameter-value> Yes Akárcsak type Az alapértelmezett paraméterérték, amelyet akkor kell használni, ha a munkafolyamat példányosításakor nincs megadva érték. Az defaultValue attribútumra azért van szükség, hogy a munkafolyamat-tervező megfelelően tudja megjeleníteni a paramétert, de megadhat egy üres értéket.
< tömb-with-permitted-parameter-values> No Array A paraméter által elfogadható értékeket tartalmazó tömb
< paraméter leírása> No JSON-objektum Egyéb paraméteradatok, például a paraméter leírása

Ezután hozzon létre egy Azure Resource Manager-sablont a munkafolyamat-definícióhoz, definiáljon olyan sablonparamétereket, amelyek elfogadják az üzembe helyezéskor használni kívánt értékeket, cserélje le a rögzített értékeket sablon- vagy munkafolyamat-definíciós paraméterekre mutató hivatkozásokkal, és tárolja az üzembe helyezéskor használandó értékeket egy külön paraméterfájlban. Így egyszerűbben módosíthatja ezeket az értékeket a paraméterfájlon keresztül anélkül, hogy frissítenie és újra üzembe kellene helyeznie a logikai alkalmazást. A bizalmas vagy biztonságos információk, például felhasználónevek, jelszavak és titkos kódok esetén ezeket az értékeket az Azure Key Vaultban tárolhatja, és a paraméterfájl lekérheti ezeket az értékeket a kulcstartóból. További információ és példák a paraméterek sablon- és munkafolyamat-definíciós szinteken való definiálásáról: Áttekintés: A logikai alkalmazások üzembe helyezésének automatizálása Azure Resource Manager-sablonokkal.

Statikus eredmények

Az attribútumban staticResults adja meg a művelet mintaképét outputs , és status hogy a művelet akkor tér vissza, ha a művelet statikus eredménybeállítása be van kapcsolva. A művelet definíciójában az runtimeConfiguration.staticResult.name attribútum a belső staticResultsstatikus eredménydefiníció nevére hivatkozik. Megtudhatja, hogyan tesztelheti a logikai alkalmazás munkafolyamatait a modelladatokkal statikus eredmények beállításával.

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "<static-result-definition-name>": {
         "outputs": {
            <output-attributes-and-values-returned>,
            "headers": { <header-values> },
            "statusCode": "<status-code-returned>"
         },
         "status": "<action-status>"
      }
   },
   "triggers": { "<...>" }
}
Attribute Required Típus Description
< static-result-definition-name> Yes String Egy statikus eredménydefiníció neve, amelyre egy műveletdefiníció hivatkozhat egy runtimeConfiguration.staticResult objektumon keresztül. További információ: Futtatókörnyezet konfigurációs beállításai.

Tetszőleges egyedi nevet használhat. Ez az egyedi név alapértelmezés szerint egy számmal van hozzáfűzve, amely szükség szerint növekszik.
< output-attributes-and-values-returned> Yes Varies Az attribútumok követelményei a különböző feltételektől függően változnak. Például, amikor a statusSucceeded, a outputs attribútum olyan attribútumokat és értékeket tartalmaz, amelyeket a művelet tesztkimenetként ad vissza. Ha igen statusFailed, az outputs attribútum tartalmazza az errors attribútumot, amely egy vagy több hibaobjektumot message tartalmazó tömb, amely hibainformációval rendelkezik.
< fejlécértékek> No JSON A művelet által visszaadott fejlécértékek
< status-code-returned> Yes String A művelet által visszaadott állapotkód
< művelet állapota> Yes String A művelet állapota, például SucceededFailed

Ebben a HTTP-műveletdefinícióban például az attribútum annak az runtimeConfiguration.staticResult.name attribútumnak a HTTP0 hivatkozására hivatkozikstaticResults, amelyben a művelethez tartozó makettkimenetek definiálva vannak. Az runtimeConfiguration.staticResult.staticResultOptions attribútum azt adja meg, hogy a statikus eredménybeállítás a HTTP-műveleten van Enabled .

"actions": {
   "HTTP": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.microsoft.com"
      },
      "runAfter": {},
      "runtimeConfiguration": {
         "staticResult": {
            "name": "HTTP0",
            "staticResultOptions": "Enabled"
         }
      },
      "type": "Http"
   }
},

Az HTTP-művelet a HTTP0 definícióban lévő staticResults kimeneteket adja vissza. Ebben a példában az állapotkód esetében a makett kimenete OK. Fejlécértékek esetén a hamis kimenet "Content-Type": "application/JSON". A művelet állapota esetén a modell kimenete .Succeeded

"definition": {
   "$schema": "<...>",
   "actions": { "<...>" },
   "contentVersion": "<...>",
   "outputs": { "<...>" },
   "parameters": { "<...>" },
   "staticResults": {
      "HTTP0": {
         "outputs": {
            "headers": {
               "Content-Type": "application/JSON"
            },
            "statusCode": "OK"
         },
         "status": "Succeeded"
      }
   },
   "triggers": { "<...>" }
},

Expressions

A JSON használatával a tervezéskor meglévő literális értékekkel rendelkezhet, például:

"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7

Olyan értékekkel is rendelkezhet, amelyek futási időig nem léteznek. Ezeknek az értékeknek a megjelenítéséhez használhat kifejezéseket, amelyeket futásidőben értékelnek ki. A kifejezés olyan sorozat, amely egy vagy több függvényt, operátort, változót, explicit értéket vagy állandót tartalmazhat. A munkafolyamat-definícióban bármely JSON-sztring értékben használhat kifejezéseket a @ jel használatával. Egy JSON-értéket képviselő kifejezés kiértékelésekor a rendszer a @ karakter eltávolításával nyeri ki a kifejezés törzsét, és mindig egy másik JSON-értéket eredményez.

A korábban definiált customerName tulajdonság esetében például lekérheti a tulajdonság értékét a paraméterek() függvény használatával egy kifejezésben, és hozzárendelheti az értéket a accountName tulajdonsághoz:

"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"

A sztring interpolációja lehetővé teszi, hogy a @ karakter és a kapcsos zárójelek ({}) által burkolt sztringeken belül több kifejezést is használjon. A szintaxis a következő:

@{ "<expression1>", "<expression2>" }

Az eredmény mindig egy sztring, így ez a képesség hasonló a concat() függvényhez, például:

"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"

Ha egy szó szerinti karakterlánc kezdődik az @ karakterrel, akkor előtagként adjon hozzá egy másik @ karaktert a feloldáshoz: @@

Az alábbi példák a kifejezések kiértékelésének módját mutatják be:

JSON-érték Result
"Sophia Owen" Adja vissza a következő karaktereket: "Sophia Owen"
"array[1]" A következő karaktereket adja vissza: "tömb[1]"
"@@" Ezeket a karaktereket adja vissza egy karakteres sztringként: "@"
" @" Ezeket a karaktereket adja vissza két karakteres sztringként: ' @'

Ezekhez a példákhoz tegyük fel, hogy a "myBirthMonth" értéke "január" és "myAge" egyenlő a 42-es számmal:

"myBirthMonth": "January",
"myAge": 42

Az alábbi példák a következő kifejezések kiértékelésének módját mutatják be:

JSON-kifejezés Result
"@parameters('myBirthMonth')" Adja vissza ezt a karakterláncot: "január"
"@{parameters('myBirthMonth')}" Adja vissza ezt a karakterláncot: "január"
"@parameters('myAge')" Adja vissza ezt a számot: 42
"@{parameters('myAge')}" Adja vissza ezt a számot sztringként: "42"
"Az életkorom @{parameters('myAge')}" Adja meg ezt a karakterláncot: "Az életkorom 42"
"@concat('Az életkorom ', string(parameters('myAge')))" Adja meg ezt a karakterláncot: "Az életkorom 42"
"Az életkorom @@{parameters('myAge')}" Adja vissza ezt a sztringet, amely a következő kifejezést tartalmazza: "Az életkorom @{parameters('myAge')}"

Amikor vizuálisan dolgozik a munkafolyamat-tervezőben, kifejezéseket hozhat létre a kifejezésszerkesztővel, például:

Képernyőkép a munkafolyamat-tervezőről és a kifejezésszerkesztőről.

Ha elkészült, a kifejezés megjelenik a munkafolyamat-definíció megfelelő tulajdonságánál, például az itt lévő searchQuery tulajdonságnál.

"Search_tweets": {
  "inputs": {
    "host": {
      "connection": {
        "name": "@parameters('$connections')['x']['connectionId']"
      }
    }
  },
  "method": "get",
  "path": "/searchtweets",
  "queries": {
    "maxResults": 20,
    "searchQuery": "Azure @{concat('firstName','', 'LastName')}"
  }
},

Outputs

outputs A szakaszban adja meg azokat az adatokat, amelyeket a munkafolyamat a futtatás befejezésekor vissza tud adni. Ha például egy adott állapotot vagy értéket szeretne nyomon követni az egyes futtatásokból, adja meg, hogy a munkafolyamat kimenete ezeket az adatokat adja vissza.

Note

Amikor egy szolgáltatás REST API-jából érkező kérelmekre válaszol, ne használja outputs. Ehelyett használja a Response művelet típusát. További információ: Munkafolyamat-eseményindítók és műveletek.

A kimeneti definíciók általános struktúrája:

"outputs": {
  "<key-name>": {
    "type": "<key-type>",
    "value": "<key-value>"
  }
}
Attribute Required Típus Description
< kulcsnév> Yes String A kimeneti visszatérési érték kulcsneve
< kulcstípus> Yes int, float, string, securestring, bool, array, JSON object A kimeneti visszatérési érték típusa
< kulcs-érték> Yes Ugyanaz, mint a <kulcstípus> A kimeneti visszatérési érték

A munkafolyamat-futtatás kimenetének lekéréséhez tekintse át a logikai alkalmazás futtatási előzményeit és részleteit az Azure Portalon, vagy használja a Workflow REST API-t. A kimenetet külső rendszereknek is átadhatja, például a Power BI-t, hogy irányítópultokat hozhasson létre.

Operators

A kifejezésekben és függvényekben az operátorok meghatározott feladatokat hajtanak végre, például egy tulajdonságra vagy egy tömb értékének hivatkozására.

Operator Task
' Ha sztringkonstanst szeretne használni bemenetként vagy kifejezésekben és függvényekben, akkor a sztringet csak egyetlen idézőjellel kell körülvenni, például '<myString>'. Ne használjon idézőjeleket (""), amelyek ütköznek egy teljes kifejezés JSON-formázásával. Például:

Igen: length('Hello')
Nem: length("Hello")

Tömbök vagy számok átadásakor nincs szükség keretező írásjelekre. Például:

Igen: hossz([1, 2, 3])
Nem: hossz("[1, 2, 3]")
[] Ha egy tömbben vagy egy JSON-objektumon belül egy adott pozícióban (indexben) lévő értékre szeretne hivatkozni, használjon szögletes zárójeleket, például:

– A tömb második elemének lekérése:

myArray[1]

– JSON-objektum tulajdonságainak elérése:

1. példa:
setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>)

2. példa:
lastIndexOf(triggerBody()?['subject'],'some string')
. Ha egy objektum egyik tulajdonságára szeretne hivatkozni, használja a pont operátort. Például a name tulajdonság lekéréséhez egy customer JSON-objektumból:

"parameters('customer').name"
? Ha egy objektum tulajdonságára szeretne hivatkozni futásidejű hiba vagy a munkafolyamat meghibásodása nélkül, használja a tulajdonságot megelőző kérdőjel operátort (?más néven null figyelmen kívül hagyási operátort). Ez az operátor lehetővé teszi egy tulajdonság vagy tömbelem biztonságos elérését, ha a szülőobjektum vagy a hivatkozott tulajdonság tartalmazhatja null vagy hiányzik.

– Ha az operátor ? előtt null megjelenő szülőobjektum hiányzik vagy hiányzik a hivatkozott tulajdonságból, a teljes kifejezés a munkafolyamat meghiúsulása helyett ad visszanull.

– Ha az objektum vagy tulajdonság létezik, a kifejezés a tulajdonság értékét adja vissza.

Tegyük fel például, hogy a következő kifejezéssel rendelkezik:

triggerBody()?['ContentData']

- Ha triggerBody() egy objektumot ad vissza a ContentData tulajdonságból, az objektum értékét kapja meg.

- Ha triggerBody() hiányzik vagy hiányzik null a ContentData tulajdonság, a függvény a null hibaüzenettel adja vissza a függvény.

Az ? operátor a hozzáférési tulajdonságok biztonságos láncát is lehetővé teszi, és az alábbi esetekben hasznos:

– Az opcionális JSON-mezőkkel működő kifejezések kezelése.
– Olyan összekötőkimenetek kezelése, amelyek bizonyos tulajdonságokat kihagyhatnak.
- Kerülje a törékeny kifejezéseket a feltételes logikában.

A tulajdonsághozzáférés láncolásához és az eseményindítók null kimeneteinek kezeléséhez például a következő kifejezést használhatja:

coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>')

Functions

Egyes kifejezések olyan futtatókörnyezeti műveletekből szerzik be az értékeiket, amelyek még nem léteznek a munkafolyamat-definíció futtatásakor. Ha kifejezésben szeretne hivatkozni ezekre az értékekre, használhatja a munkafolyamat-definíciós nyelv által biztosított függvényeket .