Megosztás a következőn keresztül:


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.

Az ábrán a logikai alkalmazás hatókörének folyamata látható a

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.

  • A logikai alkalmazások alapszintű ismerete

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:

Minta logikai alkalmazás létrehozása

  • Ü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.

  1. Jelentkezzen be az Azure Portalra, ha még nem tette meg. Üres logikai alkalmazás létrehozása.

  2. 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"

    Az

    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.

  3. Adja hozzá a Bing Maps – Útvonal lekérése műveletet.

    1. 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.
    2. Állítsa be az Útvonal lekérése műveletet a kép alatti táblázatban látható módon:

      A

      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.
  4. 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:

    1. Nevezze át a feltételt ezzel a leírással: Ha a forgalmi idő meghaladja a megadott időt

    2. 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.

      Feltétel létrehozása

    3. A középső mezőben válassza ki ezt az operátort: nagyobb, mint

    4. 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:

      Befejezett feltétel

  5. 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:

    1. A Címzett mezőben adja meg az e-mail-címét tesztelés céljából.

    2. A Tárgy mezőbe írja be a következő szöveget:

    Time to leave: Traffic more than 10 minutes

    1. 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.

    1. A dinamikus tartalomlistában válassza a Kifejezés lehetőséget.

    2. Keresse meg és válassza ki a div() függvényt. Helyezze a kurzort a függvény zárójeleibe.

    3. 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.

    4. Az Útvonal lekérése szakaszban válassza a Forgalom időtartama forgalom mezőt.

      Válassza a

    5. 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:

      Befejezési kifejezés

    6. Amikor elkészült, válassza az OK lehetőséget.

    1. 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:

      Kész

  6. 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

  1. Ha még nem tette meg, nyissa meg a logikai alkalmazást a munkafolyamat-tervezőben.

  2. 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:

    1. 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.

      Hatókör hozzáadása

    2. 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

  1. 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:

    Hatókör hozzáadva

  2. 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

    Feltétel hozzáadása a hatókör állapotának ellenőrzéséhez

  3. 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.

    1. Másik sor hozzáadásához válassza a Hozzáadás lehetőséget.

    2. 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')

      Képernyőkép a

    3. Mindkét sor esetében a kijelölés operátorként egyenlő .

    4. 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őt Aborted:

      Ha elkészült, a feltétel a következő példához hasonlít:

      A hatókör állapotát ellenőrző kifejezés hozzáadása

      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.

    5. 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.

      RunAfter tulajdonság konfigurálása

    6. Válassza ki a hatókör összes állapotát: sikeres, sikertelen, kihagyott, és időtúllépés történt

      Hatókörállapotok kiválasztása

    7. Ha elkészült, válassza a Kész lehetőséget. A feltétel ekkor megjelenik egy "információ" ikonnal.

  4. 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.

    A hatókör állapota alapján végrehajtandó műveletek hozzáadása

  5. Mentse a logikai alkalmazást.

A kész logikai alkalmazás így néz ki:

Kész logikai alkalmazás hatókörrel

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": {}
  }
},

Következő lépések