Műveletek futtatása csoportállapot alapján hatókörök használatával az Azure Logic Appsben
A következőkre vonatkozik: Azure Logic Apps (Használat)
Ha csak egy másik műveletcsoport sikeres vagy sikertelen futtatása után szeretne műveleteket futtatni, csoportosítsa ezeket a műveleteket egy hatókörben. Ez a struktúra akkor hasznos, ha logikai csoportként szeretné rendszerezni a műveleteket, kiértékelni a csoport állapotát, és végrehajtani a hatókör állapotán alapuló műveleteket. Miután a hatókör összes művelete befejeződött, a hatókör saját állapotot is kap. A hatóköröket például akkor használhatja, ha kivétel- és hibakezelést szeretne megvalósítani.
A hatókör állapotának ellenőrzéséhez ugyanazokat a feltételeket használhatja, mint a logikai alkalmazások futtatási állapotának meghatározásához, például sikeres, sikertelen, megszakított stb. Alapértelmezés szerint, ha a hatókör összes művelete sikeres, a hatókör állapota sikeresként van megjelölve. Ha azonban a hatókör bármely művelete meghiúsul vagy megszakad, a hatókör állapota Sikertelenként van megjelölve. A hatókörökre vonatkozó korlátozásokért lásd : Korlátok és konfiguráció.
Itt látható például egy magas szintű logikai alkalmazás, amely egy hatókör használatával futtat bizonyos műveleteket, és egy feltételt a hatókör állapotának ellenőrzéséhez. Ha a hatókör bármely művelete váratlanul meghiúsul vagy váratlanul véget ér, a hatókör sikertelen vagy megszakított jelöléssel jelenik meg, és a logikai alkalmazás "A hatókör meghiúsult" üzenetet küld. Ha az összes hatókörrel rendelkező művelet sikeres, a logikai alkalmazás egy "Hatókör sikeres" üzenetet küld.
Előfeltételek
A cikkben szereplő példa követéséhez az alábbi elemekre van szüksége:
Azure-előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.
Bármely, a Logic Apps által támogatott e-mail-szolgáltatótól származó e-mail-fiók. Ez a példa Outlook.com használ. Ha másik szolgáltatót használ, az általános folyamat változatlan marad, de a felhasználói felület másként jelenik meg.
Bing Maps-kulcs. A kulcs lekéréséhez lásd : Bing Maps-kulcs lekérése.
Minta logikai alkalmazás létrehozása
Először hozza létre ezt a minta logikai alkalmazást, hogy később felvehet egy hatókört:
- Ütemezés – Ismétlődési eseményindító, amely a Bing Maps szolgáltatást a megadott időközönként ellenőrzi
- A Bing Maps – Útvonalművelet lekérése , amely ellenőrzi a két hely közötti utazási időt
- Feltételművelet, amely ellenőrzi, hogy az utazási idő meghaladja-e a megadott utazási időt
- Olyan művelet, amely e-mailben küldi el, hogy az aktuális utazási idő meghaladja a megadott időt
A logikai alkalmazást bármikor mentheti, így gyakran mentheti a munkáját.
Jelentkezzen be az Azure Portalra, ha még nem tette meg. Üres logikai alkalmazás létrehozása.
Adja hozzá az Ütemezés – Ismétlődési eseményindítót a következő beállításokkal: Interval = "1" és Frequency = "Minute"
Tipp.
Ha vizuálisan egyszerűsíteni szeretné a nézetet, és elrejtené az egyes műveletek részleteit a tervezőben, összecsukhatja az egyes műveletek alakzatait, miközben végighalad a lépéseken.
Adja hozzá a Bing Maps – Útvonal lekérése műveletet.
Ha még nem rendelkezik Bing Maps-kapcsolattal, a rendszer felkéri, hogy hozzon létre egy kapcsolatot.
Beállítás Érték Leírás Kapcsolat neve BingMapsConnection Adja meg a kapcsolat nevét. API-kulcs <saját-Bing-Térképek-kulcsa> Adja meg a korábban kapott Bing Térképek-kulcsot. Állítsa be az Útvonal lekérése műveletet a kép alatti táblázatban látható módon:
További információk ezekről a paraméterekről: Útvonal kiszámítása.
Beállítás Érték Leírás 1. útvonalpont <start> Adja meg az útvonal eredetét. 2. útvonalpont <vég> Adja meg az útvonal célját. Elkerülés Egyik sem Adja meg az útvonalon elkerülendő elemeket, például autópályákat, útdíjakat stb. A lehetséges értékekért lásd : Útvonal kiszámítása. Optimalizálás timeWithTraffic Válasszon ki egy paramétert az útvonal optimalizálásához, például a távolság, az aktuális forgalmi adatokkal töltött idő stb. Ez a példa a következő értéket használja: "timeWithTraffic" Távolság mértékegysége <igény-szerint> Adja meg a távolság mértékegységét az útvonal kiszámításához. Ez a példa a következő értéket használja: "Mérföld" Közlekedési mód Vezetés Adja meg az útvonal utazási módját. Ez a példa a "Vezetés" értéket használja Tranzit dátuma és időpontja Egyik sem Csak az átviteli módra vonatkozik. Tranzitdátumtípus típusa Egyik sem Csak az átviteli módra vonatkozik.
Adjon hozzá egy feltételt , amely ellenőrzi, hogy a forgalommal töltött aktuális utazási idő meghaladja-e a megadott időt. Ebben a példában kövesse az alábbi lépéseket:
Nevezze át a feltételt ezzel a leírással: Ha a forgalmi idő meghaladja a megadott időt
A bal szélső oszlopban válassza az Érték kiválasztása mezőben a dinamikus tartalomlista megjelenítéséhez. A listából válassza ki az Utazási időtartam forgalom mezőjét, amely másodpercben van megadva.
A középső mezőben válassza ki ezt az operátort: nagyobb, mint
A jobb szélső oszlopban adja meg ezt az összehasonlító értéket, amely másodpercben és 10 percnek felel meg: 600
Ha elkészült, a feltétel a következő példához hasonlít:
A True ágban adjon hozzá egy "e-mail küldése" műveletet az e-mail-szolgáltatóhoz. A művelet beállításához kövesse a képen látható lépéseket:
A Címzett mezőben adja meg az e-mail-címét tesztelés céljából.
A Tárgy mezőbe írja be a következő szöveget:
Time to leave: Traffic more than 10 minutes
- A Törzs mezőben adja meg ezt a szöveget egy záró szóközzel:
Travel time:
Amíg a kurzor megjelenik a Törzs mezőben, a dinamikus tartalomlista nyitva marad, így kiválaszthatja az ezen a ponton elérhető paramétereket.
A dinamikus tartalomlistában válassza a Kifejezés lehetőséget.
Keresse meg és válassza ki a div() függvényt. Helyezze a kurzort a függvény zárójeleibe.
Amíg a kurzor a függvény zárójelei között van, válassza a Dinamikus tartalom lehetőséget , hogy megjelenjen a dinamikus tartalomlista.
Az Útvonal lekérése szakaszban válassza a Forgalom időtartama forgalom mezőt.
Miután a mező JSON formátumúvá vált, adjon hozzá egy vesszőt (
,
) és egy számot60
, hogy másodpercről percre konvertálja a forgalom időtartamának értékét.div(body('Get_route')?['travelDurationTraffic'],60)
A kifejezés így néz ki:
Amikor elkészült, válassza az OK lehetőséget.
A kifejezés feloldása után adja hozzá a szöveget egy kezdő szóközzel:
minutes
A Törzs mező a következő példához hasonlóan néz ki:
Mentse a logikai alkalmazást.
Ezután adjon hozzá egy hatókört, hogy csoportosíthassa az adott műveleteket, és kiértékelhesse azok állapotát.
Hatókör hozzáadása
Ha még nem tette meg, nyissa meg a logikai alkalmazást a munkafolyamat-tervezőben.
Adjon hozzá egy hatókört a kívánt munkafolyamat-helyen. Ha például hatókört szeretne hozzáadni a logikai alkalmazás munkafolyamatának meglévő lépései között, kövesse az alábbi lépéseket:
Vigye az egérmutatót arra a nyílra, ahová fel szeretné venni a hatókört. Válassza ki a pluszjelet (+) >Művelet hozzáadása.
A keresőmezőbe írja be a "hatókört" szűrőként. Válassza ki a Hatókör műveletet.
Lépések hozzáadása a hatókörhöz
Most adja hozzá a lépéseket, vagy húzza a hatókörön belül futtatni kívánt meglévő lépéseket. Ebben a példában húzza az alábbi műveleteket a hatókörbe:
- Útvonal lekérése
- Ha a forgalmi idő meghaladja a megadott időt, amely magában foglalja a valódi és a hamis ágakat is
A logikai alkalmazás a következő példához hasonlóan néz ki:
A hatókör alatt adjon hozzá egy feltételt, amely ellenőrzi a hatókör állapotát. Nevezze át a feltételt a következő leírással: Ha a hatókör nem sikerült
A feltételben adja hozzá azokat a kifejezéseket, amelyek ellenőrzik, hogy a hatókör állapota megegyezik-e a "Sikertelen" vagy a "Megszakított" értékkel.
Másik sor hozzáadásához válassza a Hozzáadás lehetőséget.
Minden sorban válassza a bal oldali mezőben a dinamikus tartalomlista megjelenítéséhez. A dinamikus tartalomlistában válassza a Kifejezés lehetőséget. A szerkesztési mezőbe írja be ezt a kifejezést, majd kattintson az OK gombra:
action('Scope')
Mindkét sor esetében a kijelölés operátorként egyenlő .
Az összehasonlítási értékekhez az első sorban adja meg a következőt
Failed
: A második sorban adja meg a következőtAborted
:Ha elkészült, a feltétel a következő példához hasonlít:
Most állítsa be a feltétel tulajdonságát
runAfter
, hogy a feltétel ellenőrizze a hatókör állapotát, és futtassa a későbbi lépésekben definiált egyező műveletet.A Ha a hatókör sikertelen volt, válassza a három pont (...) gombot, majd válassza a Futtatás konfigurálása utána lehetőséget.
Válassza ki a hatókör összes állapotát: sikeres, sikertelen, kihagyott, és időtúllépés történt
Ha elkészült, válassza a Kész lehetőséget. A feltétel ekkor megjelenik egy "információ" ikonnal.
A True (Igaz) és a False (Hamis) ágakban adja hozzá az egyes hatókörállapotok alapján végrehajtandó műveleteket, például küldjön e-mailt vagy üzenetet.
Mentse a logikai alkalmazást.
A kész logikai alkalmazás így néz ki:
A munka tesztelése
A tervező eszköztáron válassza a Futtatás futtatása> lehetőséget. Ha az összes hatókörrel rendelkező művelet sikeres, egy "Hatókör sikeres" üzenet jelenik meg. Ha a hatókörrel rendelkező műveletek nem sikerülnek, "A hatókör nem sikerült" üzenet jelenik meg.
JSON-definíció
Ha kódnézetben dolgozik, a logikai alkalmazás JSON-definíciójában definiálhat hatókörstruktúrát. Itt látható például az előző logikai alkalmazás eseményindítóinak és műveleteinek JSON-definíciója:
"triggers": {
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Minute",
"interval": 1
}
}
}
"actions": {
"If_scope_failed": {
"type": "If",
"actions": {
"Scope_failed": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Scope failed. Scope status: @{action('Scope')}",
"Subject": "Scope failed",
"To": "<your-email@domain.com>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['outlook']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"else": {
"actions": {
"Scope_succeded": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Scope succeeded. Scope status: @{action('Scope')}",
"Subject": "Scope succeeded",
"To": "<your-email@domain.com>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['outlook']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
}
},
"expression": {
"or": [
{
"equals": [
"@action('Scope')",
"Failed"
]
},
{
"equals": [
"@action('Scope')",
"Aborted"
]
}
]
},
"runAfter": {
"Scope": [
"Failed",
"Skipped",
"Succeeded",
"TimedOut"
]
}
},
"Scope": {
"type": "Scope",
"actions": {
"Get_route": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['bingmaps']['connectionId']"
}
},
"method": "get",
"path": "/REST/V1/Routes/Driving",
"queries": {
"distanceUnit": "Mile",
"optimize": "timeWithTraffic",
"travelMode": "Driving",
"wp.0": "<start>",
"wp.1": "<end>"
}
},
"runAfter": {}
},
"If_traffic_time_is_more_than_specified_time": {
"type": "If",
"actions": {
"Send_mail_when_traffic_exceeds_10_minutes": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Travel time:@{div(body('Get_route')?['travelDurationTraffic'],60)} minutes",
"Subject": "Time to leave: Traffic more than 10 minutes",
"To": "<your-email@domain.com>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['outlook']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"expression": {
"and" : [
{
"greater": [
"@body('Get_route')?['travelDurationTraffic']",
600
]
}
]
},
"runAfter": {
"Get_route": [
"Succeeded"
]
}
}
},
"runAfter": {}
}
},