Gyakorlat – Munkafolyamtat létrehozása a Durable Functions használatával

Befejeződött

Ebben a gyakorlatban az előző leckéből származó példaforgatókönyv segítségével megtudhatja, hogyan hozhat létre jóváhagyási munkafolyamatot az Azure Portalon a Durable Functions használatával.

Függvényalkalmazás létrehozása

  1. Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel a tesztkörnyezetet aktiválta.

  2. Az Azure Portal menüjében vagy a kezdőlapon, az Azure-szolgáltatások alatt válassza az Erőforrás létrehozása lehetőséget. Megjelenik az Erőforrás létrehozása panel.

  3. Keresse meg és válassza ki a függvényalkalmazást. Válassza a Felhasználás lehetőséget, majd a Kiválasztás gombot. Megjelenik a Függvényalkalmazás létrehozása panel.

  4. Az Alapszintű beállítások lapon adja meg az alábbi értékeket minden beállításhoz.

    Beállítás Érték Leírás
    Projekt részletei
    Előfizetés Concierge-előfizetés Megszabja az előfizetést, amelyben létrehozta az új függvényalkalmazást.
    Erőforráscsoport A legördülő listában válassza a [tesztkörnyezeti erőforráscsoport neve] lehetőséget Megszabja az erőforráscsoport nevét, amelyben létrehozza a függvényalkalmazást. A függvényalkalmazást a tesztkörnyezet aktiválásakor hozzárendelt tesztkörnyezeti erőforráscsoportban hozzuk létre, azaz [tesztkörnyezeti erőforráscsoport neve].
    Példány részletei
    Függvényalkalmazás neve [Globálisan egyedi név] Megszabja az új függvényalkalmazást azonosító nevet. Érvényes karakterek: a-z, 0-9 és -.
    Közzététel Kód Azt adja meg, hogy a függvény tároló helyett kódot használ.
    Futtatókörnyezet verme Node.js Megszabja, hogy a modulban szereplő mintakód JavaScript nyelven íródott.
    Verzió 20 LTS Megadja a futtatókörnyezet vermének verzióját.
    Régió [Válasszon a szakaszt követő listából] Válassza ki az Önhöz legközelebb eső régiót, amely szintén az engedélyezett tesztkörnyezeti régiók egyike.
    Operációs rendszer
    Operációs rendszer Windows Megszabja a függvényalkalmazást üzemeltető operációs rendszert.
    Terv

    Az ingyenes tesztkörnyezetben az Azure globális régióinak egy részében hozhat létre erőforrásokat. Az erőforrások létrehozásakor válasszon ki egy régiót az alábbi listából:

    • USA 2. nyugati régiója
    • USA déli középső régiója
    • USA középső régiója
    • USA keleti régiója
    • Nyugat-Európa
    • Délkelet-Ázsia
    • Kelet-Japán
    • Dél-Brazília
    • Délkelet-Ausztrália
    • Közép-India
  5. Válassza a Következő: Tárolás lehetőséget.

  6. A Tárolás lapon adja meg az alábbi értékeket minden beállításhoz.

    Beállítás Érték Leírás
    Tárolás
    Tárfiók [Globálisan egyedi név] Megadja a függvényalkalmazás által használt új tárfiók nevét (amelynek nem kell megegyeznie a függvényhez megadott globálisan egyedi névvel). A tárfiókok nevének 3 és 24 karakter közötti hosszúságúnak kell lennie, és csak számokat és kisbetűket tartalmazhat. Ez a párbeszédpanel automatikusan kitölti a mezőt egy dinamikusan generált egyedi névvel. Azonban más nevet, vagy akár egy meglévő fiókot is használhat helyette.
  7. Válassza a Következő: Hálózatkezelés lehetőséget. Fogadja el az alapértelmezett beállításokat.

  8. Válassza a Következő: Figyelés lehetőséget.

  9. A Figyelés lapon adja meg a beállítás alábbi értékét.

    Beállítás Érték Leírás
    Application Insights
    Az Application Insights engedélyezése Nem Megadja, hogy az alkalmazás Elemzések le van tiltva ehhez a modulhoz.
  10. Válassza a Véleményezés + a konfigurált beállítások létrehozása és áttekintése lehetőséget. Ha elégedett a beállításokkal, válassza a Létrehozás lehetőséget a függvényalkalmazás kiépítéséhez és üzembe helyezéséhez.

Folytatás előtt várja meg, amíg az üzembe helyezési folyamat befejeződik. Az üzembe helyezés eltarthat néhány percig.

A durable-functions npm-csomag telepítése

Mivel JavaScript Durable Functions-függvényeket hozunk létre, telepíteni kell az durable-functions npm-csomagot. Ehhez hajtsa végre a következő lépéseket.

  1. Válassza az Ugrás az erőforrásra lehetőséget a függvényalkalmazás kiválasztásához. Megjelenik a Függvényalkalmazás panel.

  2. A bal oldali menüpanel Fejlesztési eszközök csoportjában válassza az App Service-szerkesztő (előzetes verzió) lehetőséget, majd válassza a Szerkesztő megnyitása lehetőséget. Az App Service-szerkesztő Gyorsindítás panelje egy új böngészőablakban jelenik meg.

  3. A bal oldali menüablakban jelölje ki a WWWROOT mappát.

  4. A bal oldali eszköztár menüjében válassza a Konzol megnyitása ikont.

    Ez a művelet elindítja a konzolt. Ezzel a konzollal elérheti a függvényeket üzemeltető webkiszolgálót, és megírhatja a függvények kódját.

  5. Hozzon létre egy új package.json fájlt.

    • Futtassa a következő parancsokat a konzolon az új JSON-fájl létrehozásához és a szerkesztőben való megnyitásához.

      touch package.json
      open package.json
      
    • Adja hozzá a következő kódot.

      {
        "name": "example",
        "version": "1.0.0"
      }
      

      Cserélje le example a csomag nevére. Használhatja például a függvényhez korábban megadott globálisan egyedi nevet.

  6. Nyomja le a CTRL+S billentyűkombinációt a fájl mentéséhez, majd nyomja le a Ctrl+Q billentyűkombinációt a dokumentum bezárásához.

  7. Lépjen vissza az Azure Portalra.

  8. A bal oldali menüsáv Fejlesztési eszközök csoportjában válassza a Konzol lehetőséget. Megjelenik a Konzol panel a függvényalkalmazáshoz.

  9. Futtassa az alábbi parancsot:

    npm install durable-functions
    

    Ez a parancs utasítja a csomópontcsomag-kezelőt, hogy telepítse a csomagot és a durable-functions szükséges függőségeket. A telepítés eltarthat néhány percig, és a csomópontcsomag-kezelő figyelmeztetéseket jeleníthet meg, amelyeket figyelmen kívül hagyhat.

    Feljegyzés

    Ha a rendszer arra kéri, hogy telepítse az npm újabb verzióját, a hibaüzenetben megadott paranccsal telepítse az újabb verziót, majd telepítse a durable-functions csomagot az új verzió telepítése után.

    Várjon, amíg az összes csomag telepítése befejeződött.

  10. A bal oldali menüpanelen görgessen fel, és válassza az Áttekintés lehetőséget, majd a felső menüsávon válassza az Újraindítás lehetőséget, majd válassza az Igen lehetőséget, amikor a rendszer kéri az újraindítást.

    A folytatás előtt várja meg, amíg az újraindítás befejeződik.

A tervezési javaslat beküldésére szolgáló ügyfél-függvény létrehozása

  1. Az Azure Portal menüjében vagy a Kezdőlap Legutóbbi erőforrások területén válassza az Összes megtekintése lehetőséget, majd válassza ki a függvényalkalmazást. Megjelenik a Függvényalkalmazás panel.

  2. Az Áttekintés lapon válassza a Képernyő közepén található Függvények lapot.

  3. Válassza a Létrehozás az Azure Portalon gombot. Megjelenik a Függvény létrehozása panel.

  4. A Sablon kiválasztása területen a Szűrő mezőbe írja be a Durable Functions HTTP starter parancsot, és válassza ki a sablont a listából. A sablon egy olyan tartós függvényt hoz létre, amely egy HTTP-kérelemmel futtatható.

  5. A Sablon részletei területen az Új függvény mezőnél írja be a httpStart nevet a függvény nevéhez, majd az Engedélyezési szint mezőben válassza a Függvény, majd a Létrehozás lehetőséget. Megjelenik a httpStart panel a függvényhez.

  6. A bal oldali menüpanel Fejlesztőeszközök csoportjában válassza a Kód + Teszt lehetőséget. Megjelenik a Függvény Kód + Teszt panelje.

    A index.js fájl kódja megjelenik a szerkesztőben. A fájlnak az alábbi példához hasonlónak kell lennie:

    const df = require("durable-functions");
    
    module.exports = async function (context, req) {
        const client = df.getClient(context);
        const instanceId = await client.startNew(req.params.functionName, undefined, req.body);
    
        context.log(`Started orchestration with ID = '${instanceId}'.`);
    
        return client.createCheckStatusResponse(context.bindingData.req, instanceId);
    };
    
  7. A függvény fájljainak legördülő listájában válassza a function.json lehetőséget az új függvényhez társított kötések megtekintéséhez. Az itt található információk határozzák meg a hitelesítés követelményeit és azokat a HTTP-metódusokat, amelyek a függvényt aktiválják. A fájl emellett azt is meghatározza, hogy a függvény egy olyan ügyfél, amely elindítja a vezénylési folyamatot. A fájlnak az alábbi példához hasonlónak kell lennie:

    {
      "bindings": [
        {
          "authLevel": "function",
          "name": "req",
          "type": "httpTrigger",
          "direction": "in",
          "route": "orchestrators/{functionName}",
          "methods": [
            "post",
            "get"
          ]
        },
        {
          "name": "$return",
          "type": "http",
          "direction": "out"
        },
        {
          "name": "starter",
          "type": "orchestrationClient",
          "direction": "in"
        }
      ]
    }
    

    Feljegyzés

    A kötésekkel az erőforrásokat és egyéb elemeket lehet egy eseményindítóhoz hozzárendelni. Ez egy deklaratív mechanizmus, amely szükségtelenné teszi, hogy a kód más szolgáltatásaira és funkcióira való hivatkozásokat ne kelljen szigorúan kódolni.

A vezénylőfüggvény létrehozása

  1. Az Azure Portal menüjében vagy a Kezdőlap Legutóbbi erőforrások területén válassza az Összes megtekintése lehetőséget, majd válassza ki a függvényalkalmazást. Megjelenik a Függvényalkalmazás panel.

  2. Az Áttekintés lapon válassza a Képernyő közepén található Függvények lapot.

  3. A Függvények menüsávon válassza a Létrehozás lehetőséget. Megjelenik a Függvény létrehozása panel.

  4. A Sablon kiválasztása csoportban a Szűrő mezőbe írja be a Durable Functions vezénylőt, és válassza ki a sablont a listából. Ez a sablon egy olyan tartós függvényt hoz létre, amely összehangolja a függvények végrehajtását.

  5. A Sablon részletei területen az Új függvény mezőhöz írja be az OrchFunction nevet a függvény nevére, majd válassza a Létrehozás lehetőséget. Megjelenik az OrchFunction függvénypanel.

  6. A bal oldali menüpanel Fejlesztőeszközök csoportjában válassza a Kód + Teszt lehetőséget. Megjelenik a Függvény Kód + Teszt panelje.

    A index.js fájl kódja megjelenik a szerkesztőben.

  7. Cserélje le a meglévő kódot a következő kódra.

    const df = require("durable-functions");
    
    module.exports = df.orchestrator(function* (context) {
        const outputs = [];
    
        /*
        * We will call the approval activity with a reject and an approved to simulate both
        */
    
        outputs.push(yield context.df.callActivity("Approval", "Approved"));
        outputs.push(yield context.df.callActivity("Approval", "Rejected"));
    
        return outputs;
    });
    

    Ez a kód meghív egy Jóváhagyás nevű tevékenységfüggvényt, amelyet hamarosan létrehoz. A vezénylőfüggvény kódja kétszer hívja meg az Approval függvényt. Az első alkalommal szimulálja a javaslat elfogadását, a második alkalommal pedig a javaslat elutasítási logikáját.

    Az egyes hívások visszaadott értéke össze lesz adva, és visszakerül az ügyfélfüggvénybe. Éles környezet esetén a vezénylési függvény az elfogadás/elutasítás között döntő tevékenységfüggvények sorozatát hívná meg, és ezek eredményét adná vissza.

  8. A felső menüsávon válassza a Mentés lehetőséget az új függvény mentéséhez.

A tevékenységfüggvény létrehozása

  1. Az Azure Portal menüjében vagy a Kezdőlap Legutóbbi erőforrások területén válassza az Összes megtekintése lehetőséget, majd válassza ki a függvényalkalmazást. Megjelenik a Függvényalkalmazás panel.

  2. Az Áttekintés lapon válassza a Képernyő közepén található Függvények lapot.

  3. A Függvények menüsávon válassza a Létrehozás lehetőséget. Megjelenik a Függvény létrehozása panel.

  4. A Sablon kiválasztása csoportban a Szűrő mezőbe írja be a Durable Functions-tevékenységet, és válassza ki a sablont a listából. Ez a sablon létrehoz egy tartós függvényt, amely akkor fut, amikor egy tevékenységet vezénylő függvény hív meg.

  5. A Sablon részletei területen az Új függvény mezőben adja meg a függvény nevének jóváhagyását, majd válassza a Létrehozás lehetőséget. Megjelenik a Jóváhagyási panel a függvényalkalmazáshoz.

  6. A bal oldali menüpanel Fejlesztőeszközök csoportjában válassza a Kód + Teszt lehetőséget. Megjelenik a Függvény Kód + Teszt panelje.

    A index.js fájl kódja megjelenik a szerkesztőben.

  7. Cserélje le a meglévő kódot a következő kódra.

    module.exports = async function (context) {
        return `Your project design proposal has been -  ${context.bindings.name}!`;
    };
    

    A függvény a javaslat állapotát jelző üzenetet ad vissza. A kifejezés context.bindings.name vagy Accepted Rejecteda vezénylőtől a függvénynek átadott paramétertől függően. Egy valós forgatókönyvben hozzáadná azt a logikát, amely a függvény elfogadási vagy elutasítási műveleteit kezeli.

  8. A felső menüsávon válassza a Mentés lehetőséget az új függvény mentéséhez.

A Durable Functions-munkafolyamat elindulásának ellenőrzése

  1. Az Azure Portal menüjében vagy a Kezdőlap Legutóbbi erőforrások területén válassza az Összes megtekintése lehetőséget, majd válassza ki a függvényalkalmazást. Megjelenik a Függvényalkalmazás panel.

  2. Válassza a Függvények lapot a lap közepén.

  3. Válassza ki a HttpStart függvényt . Megjelenik a httpStart panel a függvényhez.

  4. A felső menüsávon válassza a Függvény URL-címének lekérése lehetőséget, és másolja ki az URL-címet. Az URL-címnek az alábbi példához hasonlónak kell lennie:

    https://example.azurewebsites.net/api/orchestrators/{functionName}?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Ezt az URL-címet használja a függvények futtatásához.

  5. Nyisson meg egy új böngészőablakot, és lépjen a másolt URL-címre. Az URL-címben írja felül a {functionName} helyőrzőt a OrchFunction névvel, az alábbi példához hasonlóan:

    https://example.azurewebsites.net/api/orchestrators/OrchFunction?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    A válaszüzenet URI-végpontok készletét fogja tartalmazni, amelyek a végrehajtás monitorozásához és szabályozásához használhatók fel hasonlóan a következő példához:

    {
      "id": "f0e1d2c3b4a5968778695a4b3c2d1e0f",
      "statusQueryGetUri": "https://example.azurewebsites.net/...",
      "sendEventPostUri": "https://example.azurewebsites.net/...",
      "terminatePostUri": "https://example.azurewebsites.net/...",
      "rewindPostUri": "https://example.azurewebsites.net/...",
      "purgeHistoryDeleteUri": "https://example.azurewebsites.net/..."
    }
    
  6. Másolja ki a statusQueryGetUri értéket, és a webböngészővel lépjen erre az URL-címre. Ekkor megjelenik egy válaszüzenet, amely az alábbi példához hasonlít:

    {
      "name": "OrchFunction",
      "instanceId": "f0e1d2c3b4a5968778695a4b3c2d1e0f",
      "runtimeStatus": "Completed",
      "input": null,
      "customStatus": null,
      "output": [
        "Your project design proposal has been -  Approved!",
        "Your project design proposal has been -  Rejected!"
      ],
      "createdTime": "2019-04-16T15:23:03Z",
      "lastUpdatedTime": "2019-04-16T15:23:35Z"
    }
    

    Ne felejtse el, hogy a vezénylési függvény kétszer fogja futtatni a tevékenységfüggvényt. A tevékenységfüggvény első alkalommal azt jelzi, hogy a projektjavaslat elfogadásra kerül. Második alkalommal pedig a javaslat elutasított lesz. A vezénylési függvény egyesíti a két függvényhívás üzeneteit, és visszaadja őket az ügyfélfüggvénynek.