Cvičení – vytvoření pracovního postupu pomocí Durable Functions

Dokončeno

V tomto cvičení se pomocí ukázkového scénáře z předchozí lekce naučíte vytvořit pracovní postup schválení na webu Azure Portal pomocí Durable Functions.

Vytvoření aplikace Function App

  1. Pomocí stejného účtu, kterým jste aktivovali sandbox, se přihlaste na Azure Portal.

  2. V nabídce webu Azure Portal nebo na domovské stránce v části Služby Azure vyberte Vytvořit prostředek. Zobrazí se podokno Vytvořit prostředek .

  3. Vyhledejte a vyberte Aplikaci funkcí. Vyberte Consumption a pak vyberte tlačítko Vybrat . Zobrazí se podokno Vytvořit aplikaci funkcí.

  4. Na kartě Základy zadejte pro každé nastavení následující hodnoty.

    Nastavení Hodnota Popis
    Podrobnosti projektu
    Předplatné Předplatné Concierge Určuje předplatné, pod kterým je tato nová aplikace funkcí vytvořena.
    Skupina prostředků V rozevíracím seznamu vyberte [název skupiny prostředků sandboxu] Určuje název skupiny prostředků, ve které chcete vytvořit aplikaci funkcí. Aplikaci funkcí vytvoříme ve skupině prostředků sandboxu, která byla přiřazena při aktivaci sandboxu, konkrétně [název skupiny prostředků sandboxu].
    Podrobnosti o instanci
    Název aplikace funkcí [Globálně jedinečný název] Určuje název identifikující novou aplikaci funkcí. Platné znaky jsou a-z, 0-9 a -.
    Publikovat Kód Určuje, že funkce používá kód místo kontejneru.
    Zásobník modulu runtime Node.js Určuje ukázkový kód v tomto modulu je napsaný v JavaScriptu.
    Verze 20 LTS Určuje verzi zásobníku modulu runtime.
    Oblast [Vyberte ze seznamu následujícího v této části] Zvolte oblast, která je k vám nejblíže, a to je také jedna z povolených oblastí sandboxu, které následují.
    Operační systém
    Operační systém Windows Určuje operační systém hostující aplikaci funkcí.
    Plán

    Bezplatný sandbox vám umožňuje vytvářet prostředky v podmnožině globálních oblastí Azure. Při vytváření prostředků vyberte oblast z následujícího seznamu:

    • Západní USA 2
    • Středojižní USA
    • Střední USA
    • East US
    • West Europe
    • Southeast Asia
    • Japonsko – východ
    • Brazílie – jih
    • Austrálie – jihovýchod
    • Indie – střed
  5. Vyberte Další: Úložiště.

  6. Na kartě Úložiště zadejte pro každé nastavení následující hodnoty.

    Nastavení Hodnota Popis
    Úložiště
    Účet úložiště [Globálně jedinečný název] Určuje název nového účtu úložiště používaného vaší aplikací funkcí (který se nemusí shodovat s globálně jedinečným názvem, který jste zadali pro funkci). Názvy účtů úložiště musí mít délku 3 až 24 znaků a můžou obsahovat jenom číslice a malá písmena. Tento dialog automaticky vyplní pole jedinečným názvem, který se generuje dynamicky. Můžete ale použít i jiný název nebo dokonce existující účet.
  7. Vyberte Další: Sítě. Přijměte výchozí hodnoty.

  8. Vyberte Další: Monitorování.

  9. Na kartě Monitorování zadejte následující hodnotu nastavení.

    Nastavení Hodnota Popis
    Application Insights
    Povolit Application Insights Ne Určuje, že Přehledy aplikace je pro tento modul zakázaná.
  10. Vyberte Zkontrolovat a vytvořit a zkontrolujte možnosti, které jste nakonfigurovali. Pokud jste s možnostmi spokojení, vyberte Vytvořit , abyste zřídili a nasadíte aplikaci funkcí.

Než budete pokračovat, počkejte, dokud nasazování neskončí. Nasazení může trvat několik minut.

Instalace balíčku durable-functions npm

Vzhledem k tomu, že vytváříme JavaScript Durable Functions, musíme nainstalovat durable-functions balíček npm. Provedete to pomocí následujících kroků.

  1. Vyberte Přejít k prostředku a vyberte aplikaci funkcí. Zobrazí se podokno Aplikace funkcí.

  2. V levém podokně nabídek v části Vývojové nástroje vyberte Editor služby App Service (Preview) a pak vyberte Otevřít editor. Podokno Rychlý start editoru služby App Service se zobrazí v novém okně prohlížeče.

  3. V levém podokně nabídek zvýrazněte složku WWWROOT .

  4. V nabídce levého panelu nástrojů vyberte ikonu Otevřít konzolu.

    Tato akce spustí konzolu. Pomocí této konzoly můžete získat přístup k webovému serveru, který hostuje vaše funkce, a napsat kód pro vaše funkce.

  5. Vytvořte nový soubor package.json .

    • Spuštěním následujících příkazů v konzole vytvořte nový soubor JSON a otevřete ho v editoru.

      touch package.json
      open package.json
      
    • Přidejte následující kód.

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

      Nahraďte example názvem balíčku. Můžete například použít globálně jedinečný název, kterým jste funkci pojmenovali v předchozích krocích.

  6. Stisknutím Ctrl+S soubor uložte a stisknutím Ctrl+Q ho zavřete.

  7. Vraťte se na Azure Portal.

  8. V levém řádku nabídek v části Vývojové nástroje vyberte Konzola. Zobrazí se podokno konzoly pro vaši aplikaci funkcí.

  9. Spusťte následující příkaz:

    npm install durable-functions
    

    Tento příkaz dává správci balíčků uzlů pokyn, aby nainstaloval durable-functions balíček a všechny požadované závislosti. Dokončení instalace může trvat několik minut a správce balíčků uzlů může zobrazit některá upozornění, která můžete ignorovat.

    Poznámka:

    Pokud se zobrazí výzva k instalaci novější verze npm, pomocí příkazu uvedenému v chybě nainstalujte novější verzi a po instalaci nové verze nainstalujte durable-functions balíček.

    Počkejte na dokončení instalace všech balíčků.

  10. V levém podokně nabídek se posuňte nahoru a vyberte Přehled a v horním řádku nabídek vyberte Restartovat a po zobrazení výzvy k restartování vyberte Ano .

    Než budete pokračovat, počkejte, dokud restartování neskončí.

Vytvoření funkce klienta pro odeslání návrhu

  1. V nabídce webu Azure Portal nebo na domovské stránce v části Poslední prostředky vyberte Zobrazit vše a pak vyberte svou aplikaci funkcí. Zobrazí se podokno Aplikace funkcí.

  2. Na stránce Přehled vyberte kartu Funkce uprostřed obrazovky.

  3. Vyberte tlačítko Vytvořit na webu Azure Portal. Zobrazí se podokno Vytvořit funkci .

  4. V části Vybrat šablonu v poli Filtr zadejte starter HTTP Durable Functions a vyberte tuto šablonu ze seznamu. Tato šablona vytvoří odolnou funkci, která běží v reakci na požadavek HTTP.

  5. V části Podrobnosti šablony zadejte pole Nová funkce , zadejte httpStart pro název funkce a do pole Úroveň autorizace vyberte Funkci a pak vyberte Vytvořit. Zobrazí se podokno HttpStart pro vaši funkci.

  6. V levém podokně nabídek v části Vývojář vyberte Kód + Test. Pro vaši funkci se zobrazí podokno Kód a testování .

    Kód souboru index.js se zobrazí v editoru. Soubor by měl vypadat jako na následujícím příkladu:

    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. V rozevíracím seznamu souborů ve vaší funkci vyberte function.json a zobrazte vazby přidružené k nové funkci. Tyto informace specifikují jakékoli požadavky na ověřování, společně s metodami HTTP, které mohou aktivovat danou funkci. Tento soubor také určuje, že funkce je klient, který spouští proces orchestrace. Soubor by měl vypadat jako na následujícím příkladu:

    {
      "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"
        }
      ]
    }
    

    Poznámka:

    Vazba přidruží triggeru prostředky a další položky. Jedná se o deklarativní mechanismus, který eliminuje potřebu pevně zakódovat odkazy na jiné služby a funkce v kódu.

Vytvoření funkce orchestrátoru

  1. V nabídce webu Azure Portal nebo na domovské stránce v části Poslední prostředky vyberte Zobrazit vše a pak vyberte svou aplikaci funkcí. Zobrazí se podokno Aplikace funkcí.

  2. Na stránce Přehled vyberte kartu Funkce uprostřed obrazovky.

  3. V řádku nabídek Funkce vyberte Vytvořit. Zobrazí se podokno Vytvořit funkci .

  4. V části Vybrat šablonu zadejte do pole Filtr orchestrátor Durable Functions a ze seznamu tuto šablonu vyberte. Tato šablona vytvoří odolnou funkci, která orchestruje provádění funkcí.

  5. V části Podrobnosti o šabloně zadejte pro pole Nová funkce název funkce OrchFunction a pak vyberte Vytvořit. Zobrazí se podokno funkce OrchFunction .

  6. V levém podokně nabídek v části Vývojář vyberte Kód + Test. Pro vaši funkci se zobrazí podokno Kód a testování .

    Kód souboru index.js se zobrazí v editoru.

  7. Nahraďte stávající kód následujícím kódem.

    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;
    });
    

    Tento kód volá funkci Aktivita s názvem Schválení, kterou vytvoříte krátce. Kód ve funkci orchestrátoru vyvolá funkci schválení Approval (Schválení) dvakrát. Poprvé simuluje přijetí návrhu a druhý čas testuje logiku zamítnutí návrhu.

    Hodnota, kterou každé volání vrátí, se zkombinuje a předá zpět do klientské funkce. V produkčním prostředí by funkce orchestrace volala řadu funkcí aktivity, které provádí rozhodnutí přijmout/odmítnout a vrátí výsledek těchto aktivit.

  8. V horním řádku nabídek vyberte Uložit a uložte novou funkci.

Vytvoření funkce aktivity

  1. V nabídce webu Azure Portal nebo na domovské stránce v části Poslední prostředky vyberte Zobrazit vše a pak vyberte svou aplikaci funkcí. Zobrazí se podokno Aplikace funkcí.

  2. Na stránce Přehled vyberte kartu Funkce uprostřed obrazovky.

  3. V řádku nabídek Funkce vyberte Vytvořit. Zobrazí se podokno Vytvořit funkci .

  4. V části Vybrat šablonu zadejte do pole Filtr aktivitu Durable Functions a vyberte tuto šablonu ze seznamu. Tato šablona vytvoří odolnou funkci, která se spustí, když je aktivita volána funkcí orchestrátoru.

  5. V části Podrobnosti šablony zadejte do pole Nová funkce schválení názvu funkce a pak vyberte Vytvořit. Zobrazí se podokno Schválení pro vaši aplikaci funkcí.

  6. V levém podokně nabídek v části Vývojář vyberte Kód + Test. Pro vaši funkci se zobrazí podokno Kód a testování .

    Kód souboru index.js se zobrazí v editoru.

  7. Nahraďte stávající kód následujícím kódem.

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

    Tato funkce vrátí zprávu indikující stav návrhu. Výraz context.bindings.name je buď Accepted nebo Rejectedv závislosti na parametru předaného funkci z orchestrátoru. V reálném scénáři byste přidali logiku, která zpracovává operace přijetí nebo odmítnutí v této funkci.

  8. V horním řádku nabídek vyberte Uložit a uložte novou funkci.

Ověření spuštění pracovního postupu Durable Functions

  1. V nabídce webu Azure Portal nebo na domovské stránce v části Poslední prostředky vyberte Zobrazit vše a pak vyberte svou aplikaci funkcí. Zobrazí se podokno Aplikace funkcí.

  2. Vyberte kartu Funkce uprostřed stránky.

  3. Vyberte funkci HttpStart. Zobrazí se podokno HttpStart pro vaši funkci.

  4. V horním řádku nabídek vyberte Získat adresu URL funkce a zkopírujte adresu URL. Konkrétní adresa URL by měla vypadat jako na následujícím příkladu:

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

    Tuto adresu URL použijete ke spuštění funkcí.

  5. Otevřete nové okno prohlížeče a přejděte na adresu URL, kterou jste zkopírovali. V adrese URL nahraďte zástupný text {functionName} výrazem OrchFunction podobně jako v následujícím příkladu:

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

    Zpráva odpovědi obsahuje sadu koncových bodů URI, které můžete použít k monitorování a správě spouštění. Měl by vypadat jako v následujícím příkladu:

    {
      "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. Zkopírujte hodnotu statusQueryGetUri a pomocí webového prohlížeče přejděte na tuto adresu URL. Měla by se zobrazit zpráva s odpovědí, která vypadá podobně jako následující příklad:

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

    Nezapomeňte, že funkce orchestrace spustí funkci aktivity dvakrát. Funkce aktivity poprvé označuje, že návrh projektu je přijat. Při druhém volání je návrh odmítnut. Funkce orchestrace kombinuje zprávy z obou volání funkce a vrací je do klientské funkce.