Share via


Logikai alkalmazásokhoz készült JSON-munkafolyamatdefiníciók létrehozása, szerkesztése, vagy kiterjesztése az Azure Logic Appsben

A következőkre vonatkozik: Azure Logic Apps (használat)

Amikor automatizált munkafolyamatokkal rendelkező vállalati integrációs megoldásokat hoz létre az Azure Logic Appsben, a mögöttes munkafolyamat-definíciók egyszerű és deklaratív JavaScript Object Notation -t (JSON) és a Munkafolyamat-definíciós nyelv (WDL) sémát használják leírásukhoz és ellenőrzésükhöz. Ezek a formátumok megkönnyítik a munkafolyamat-definíciók olvasását és megértését anélkül, hogy sokat tudnának a kódról. Ha automatizálni szeretné a logikai alkalmazás erőforrásainak létrehozását és üzembe helyezését, azure-beli erőforrásként is felvehet munkafolyamat-definíciókat az Azure-Resource Manager-sablonokba. Logikai alkalmazások létrehozásához, kezeléséhez és üzembe helyezéséhez használhatja az Azure PowerShell, az Azure CLI-t vagy az Azure Logic Apps REST API-kat.

A munkafolyamat-definíciók JSON-ban való használatához nyissa meg a Kódnézet szerkesztőt, amikor a Azure Portal vagy a Visual Studióban dolgozik, vagy másolja a definíciót a kívánt szerkesztőbe. Ha még csak most ismerkedik az Azure Logic Apps szolgáltatással, tekintse át a Példa használati logikai alkalmazás munkafolyamatának létrehozása című cikket.

Megjegyzés

Egyes Azure Logic Apps-képességek, például paraméterek és több eseményindító definiálása a munkafolyamat-definíciókban, csak a JSON-ban érhetők el, a munkafolyamat-tervezőben nem. Ezekhez a feladatokhoz tehát kódnézetben vagy más szerkesztőben kell dolgoznia.

JSON szerkesztése – Azure Portal

  1. Jelentkezzen be az Azure Portal.

  2. A bal oldali menüben válassza a Minden szolgáltatás lehetőséget. A keresőmezőben keresse meg a "logikai alkalmazások" kifejezést, majd a találatok közül válassza ki a logikai alkalmazást.

  3. A logikai alkalmazás menüjében, a Fejlesztői eszközök területen válassza a Logikai alkalmazás kódnézete lehetőséget.

    Megnyílik a Kódnézet szerkesztő, és JSON formátumban jeleníti meg a munkafolyamat-definíciót.

JSON szerkesztése – Visual Studio

Mielőtt dolgozhat a munkafolyamat-definíción a Visual Studióban, győződjön meg arról, hogy telepítette a szükséges eszközöket. Ha logikai alkalmazást szeretne létrehozni a Visual Studióval, tekintse át a következő rövid útmutatót: Feladatok és folyamatok automatizálása az Azure Logic Apps - Visual Studio használatával.

A Visual Studióban megnyithatja a létrehozott és üzembe helyezett logikai alkalmazásokat közvetlenül a Azure Portal vagy Azure Resource Manager-projektekként a Visual Studióból.

  1. Nyissa meg a logikai alkalmazást tartalmazó Visual Studio-megoldást vagy Azure Resource Group-projektet .

  2. Keresse meg és nyissa meg a munkafolyamat-definíciót, amely alapértelmezés szerint egy LogicApp.json nevű Resource Manager sablonban jelenik meg. Ezt a sablont különböző környezetekben való üzembe helyezéshez használhatja és testre szabhatja.

  3. Nyissa meg a munkafolyamat-definíció és -sablon helyi menüjét. Válassza a lehetőséget az elem megnyitására a Logikaialkalmazás-tervezővel.

    Logikai alkalmazás megnyitása Visual Studio-megoldásban

    Tipp

    Ha nem rendelkezik ezzel a paranccsal a Visual Studio 2019-ben, ellenőrizze, hogy rendelkezik-e a Visual Studio legújabb frissítéseivel.

  4. A munkafolyamat-tervező alján válassza a Kódnézet lehetőséget.

    Megnyílik a Kódnézet szerkesztő, és JSON formátumban jeleníti meg a munkafolyamat-definíciót.

  5. A Tervező nézetbe való visszatéréshez a Kódnézet szerkesztő alján válassza a Tervezés lehetőséget.

Paraméterek

Az üzembehelyezési életciklus általában különböző fejlesztési, tesztelési, előkészítési és éles környezetekkel rendelkezik. Ha olyan értékekkel rendelkezik, amelyeket újra fel szeretne használni a logikai alkalmazásban anélkül, hogy az üzembe helyezési igényektől függően változna, létrehozhat egy Azure-Resource Manager-sablont a munkafolyamat-definícióhoz, hogy a logikai alkalmazások üzembe helyezését is automatizálhassa.

Ezeket az általános lépéseket követve paraméterezheti vagy definiálhatja és használhatja a paramétereket ezekhez az értékekhez. Ezután megadhatja az értékeket egy külön paraméterfájlban, amely átadja ezeket az értékeket a sablonnak. Így egyszerűbben módosíthatja ezeket az értékeket anélkül, hogy frissítenie és újra üzembe kellene helyeznie a logikai alkalmazást. További részletekért lásd: Áttekintés: Logikai alkalmazások üzembe helyezésének automatizálása Azure Resource Manager-sablonokkal.

  1. A sablonban adja meg a sablonparamétereket és a munkafolyamat-definíciós paramétereket az üzembe helyezéskor és a futtatókörnyezetben használandó értékek elfogadásához.

    A sablonparaméterek a munkafolyamat-definíción kívüli paraméterek szakaszában vannak definiálva, míg a munkafolyamat-definíció paraméterei a munkafolyamat-definíción belüli paraméterek szakaszában vannak meghatározva.

  2. Cserélje le a rögzített értékeket azokra a kifejezésekre, amelyek ezekre a paraméterekre hivatkoznak. A sablonkifejezések a munkafolyamat-definíciós kifejezésektől eltérő szintaxist használnak.

    Ne bonyolítsa a kódot úgy, hogy nem használ sablonkifejezéseket, amelyeket az üzembe helyezéskor kiértékel a rendszer a futásidőben kiértékelt munkafolyamat-definíciós kifejezéseken belül. Csak a munkafolyamat-definíción kívüli sablonkifejezéseket használja. Csak munkafolyamat-definíciós kifejezéseket használjon a munkafolyamat-definícióban.

    Amikor megadja a munkafolyamat-definíciós paraméterek értékeit, a sablonparaméterekre a munkafolyamat-definíción kívül eső, de a logikai alkalmazás erőforrás-definíciójában lévő paraméterek szakasz használatával hivatkozhat. Így sablonparaméter-értékeket adhat át a munkafolyamat-definíciós paramétereknek.

  3. Tárolja a paraméterek értékeit egy külön paraméterfájlban , és foglalja bele a fájlt az üzembe helyezésbe.

Sztringek feldolgozása függvényekkel

Az Azure Logic Apps különböző függvényekkel rendelkezik a sztringek kezelésére. Tegyük fel például, hogy egy cégnevet szeretne átadni egy rendelésből egy másik rendszernek. A karakterkódolás megfelelő kezeléséről azonban nem biztos. Ezen a sztringen elvégezheti a base64 kódolást, de az URL-cím feloldásának elkerülése érdekében több karaktert is lecserélhet. Emellett csak a vállalat nevének részkarakterláncára van szükség, mert az első öt karaktert nem használja a rendszer.

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "order": {
      "defaultValue": {
        "quantity": 10,
        "id": "myorder1",
        "companyName": "NAME=Contoso"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "request": {
      "type": "Request",
      "kind": "Http"
    }
  },
  "actions": {
    "order": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
      }
    }
  },
  "outputs": {}
}

Ezek a lépések azt írják le, hogyan dolgozza fel ez a példa ezt a sztringet belülről kívülre:

"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"
  1. length() A cég nevének lekérése, így a karakterek teljes számát is lekérheti.

  2. Rövidebb sztring lekéréséhez vonja ki a karakterláncot 5.

  3. Most szerezze be a következőt substring(): . Kezdje az indexszel 5, és lépjen a sztring többi részéhez.

  4. Sztringgé alakíthatja ezt a részsztringet base64() .

  5. Most replace() az + összes karakter karakterrel - .

  6. replace() Végül az / összes karakter karakterrel._

Listaelemek leképezése tulajdonságértékekre, majd leképezések használata paraméterekként

Ha különböző eredményeket szeretne kapni egy tulajdonság értéke alapján, létrehozhat egy olyan térképet, amely megfelel az egyes tulajdonságértékek egy eredménynek, majd ezt a leképezést használja paraméterként.

Ez a munkafolyamat például paraméterekként definiál bizonyos kategóriákat, és egy térképet, amely megfelel ezeknek a kategóriáknak egy adott URL-címmel. Először a munkafolyamat lekéri a cikkek listáját. Ezután a munkafolyamat a térkép használatával megkeresi az egyes cikkek kategóriáinak megfelelő URL-címet.

  • A intersection() függvény ellenőrzi, hogy a kategória megfelel-e egy ismert definiált kategóriának.

  • Az egyező kategória lekérése után a példa szögletes zárójelek használatával lekéri az elemet a térképről: parameters[...]

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "specialCategories": {
      "defaultValue": [
        "science",
        "google",
        "microsoft",
        "robots",
        "NSA"
      ],
      "type": "Array"
    },
    "destinationMap": {
      "defaultValue": {
        "science": "https://www.nasa.gov",
        "microsoft": "https://www.microsoft.com/en-us/default.aspx",
        "google": "https://www.google.com",
        "robots": "https://en.wikipedia.org/wiki/Robot",
        "NSA": "https://www.nsa.gov/"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "Request": {
      "type": "Request",
      "kind": "http"
    }
  },
  "actions": {
    "getArticles": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=https://feeds.wired.com/wired/index"
      }
    },
    "forEachArticle": {
      "type": "foreach",
      "foreach": "@body('getArticles').responseData.feed.entries",
      "actions": {
        "ifGreater": {
          "type": "if",
          "expression": "@greater(length(intersection(item().categories, parameters('specialCategories'))), 0)",
          "actions": {
            "getSpecialPage": {
              "type": "Http",
              "inputs": {
                "method": "GET",
                "uri": "@parameters('destinationMap')[first(intersection(item().categories, parameters('specialCategories')))]"
              }
            }
          }
        }
      },
      "runAfter": {
        "getArticles": [
          "Succeeded"
        ]
      }
    }
  }
}

Adatok lekérése Date függvényekkel

Ha olyan adatforrásból szeretne adatokat lekérni, amely nem támogatja natív módon az eseményindítókat, használhatja a Date függvényeket az időpontok és dátumok kezeléséhez. Ez a kifejezés például azt állapítja meg, hogy mennyi ideig tart a munkafolyamat lépéseinek végrehajtása belülről kívülre:

"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
  1. A műveletből order bontsa ki a következőt startTime: .

  2. Az aktuális időpont lekérése a következővel: utcNow().

  3. Kivonás egy másodperccel:

    addseconds(..., -1)

    Más időegységeket is használhat, például minutes vagy hours.

  4. Most összehasonlíthatja ezt a két értéket.

    Ha az első érték kisebb, mint a második érték, akkor több mint egy másodperc telt el a rendelés első leadása óta.

A dátumok formázásához használhat sztringformaírókat. Az RFC1123 lekéréséhez például használja a következőt utcnow('r'): . További információ a dátumformázásról.

{
  "$schema": "https://schema.management.azure.com/schemas/2016-06-01/Microsoft.Logic.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "order": {
      "defaultValue": {
        "quantity": 10,
        "id": "myorder-id"
      },
      "type": "Object"
    }
  },
  "triggers": {
    "Request": {
      "type": "request",
      "kind": "http"
    }
  },
  "actions": {
    "order": {
      "type": "Http",
      "inputs": {
        "method": "GET",
        "uri": "https://www.example.com/?id=@{parameters('order').id}"
      }
    },
    "ifTimingWarning": {
      "type": "If",
      "expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
      "actions": {
        "timingWarning": {
          "type": "Http",
          "inputs": {
            "method": "GET",
            "uri": "https://www.example.com/?recordLongOrderTime=@{parameters('order').id}&currentTime=@{utcNow('r')}"
          }
        }
      },
      "runAfter": {
        "order": [
          "Succeeded"
        ]
      }
    }
  },
  "outputs": {}
}

Következő lépések