Udostępnij za pośrednictwem


Tworzenie, edytowanie lub rozszerzanie danych JSON dla definicji przepływu pracy aplikacji logiki w usłudze Azure Logic Apps

Dotyczy: Azure Logic Apps (Zużycie)

Podczas tworzenia rozwiązań integracji dla przedsiębiorstw z zautomatyzowanymi przepływami pracy w usłudze Azure Logic Apps podstawowe definicje przepływów pracy używają prostego i deklaratywnego kodu JavaScript Object Notation (JSON) wraz ze schematem języka WDL (Workflow Definition Language) na potrzeby ich opisu i walidacji. Te formaty ułatwiają odczytywanie i zrozumienie definicji przepływu pracy bez znajomości kodu. Jeśli chcesz zautomatyzować tworzenie i wdrażanie zasobów aplikacji logiki, możesz uwzględnić definicje przepływu pracy jako zasoby platformy Azure w szablonach usługi Azure Resource Manager. Aby tworzyć i wdrażać aplikacje logiki oraz zarządzać nimi, możesz użyć programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsów API REST usługi Azure Logic Apps.

Aby pracować z definicjami przepływu pracy w formacie JSON, otwórz edytor widoku kodu podczas pracy w witrynie Azure Portal lub programie Visual Studio Code. Możesz również skopiować i wkleić definicję do dowolnego edytora.

Uwaga

Niektóre funkcje usługi Azure Logic Apps, takie jak definiowanie parametrów i wielu wyzwalaczy w definicjach przepływu pracy, są dostępne tylko w formacie JSON, a nie w projektancie przepływu pracy. Dlatego w przypadku tych zadań należy pracować w widoku kodu lub innym edytorze.

Edytowanie kodu JSON — Witryna Azure Portal

  1. W polu wyszukiwania w witrynie Azure Portal wprowadź i wybierz pozycję Aplikacje logiki. Na stronie Aplikacje logiki wybierz odpowiedni zasób aplikacji logiki Zużycie.

  2. W menu aplikacji logiki w obszarze Narzędzia programistyczne wybierz pozycję Widok kodu aplikacji logiki.

    Zostanie otwarty edytor widoku kodu i zostanie wyświetlona definicja przepływu pracy aplikacji logiki w formacie JSON.

Edytowanie kodu JSON — Visual Studio Code

Zobacz Edytowanie wdrożonej aplikacji logiki w programie Visual Studio Code

Edytowanie kodu JSON — Visual Studio

Ważne

Rozszerzenie Azure Logic Apps Tools for Visual Studio jest przestarzałe i nie otrzymuje już aktualizacji. Aby utworzyć przepływy pracy aplikacji logiki i zarządzać nimi przy użyciu lokalnego środowiska deweloperskiego, zapoznaj się z następującą dokumentacją:

Przed rozpoczęciem pracy nad definicją przepływu pracy Zużycie w programie Visual Studio upewnij się, że zainstalowano wymagane narzędzia. W programie Visual Studio można otwierać aplikacje logiki, które zostały utworzone i wdrożone bezpośrednio z witryny Azure Portal lub jako projekty usługi Azure Resource Manager z poziomu programu Visual Studio.

  1. Otwórz rozwiązanie programu Visual Studio lub projekt grupy zasobów platformy Azure, który zawiera aplikację logiki.

  2. Znajdź i otwórz definicję przepływu pracy, która domyślnie jest wyświetlana w szablonie usługi Resource Manager o nazwie LogicApp.json.

    Możesz użyć tego szablonu i dostosować go do wdrożenia w różnych środowiskach.

  3. Otwórz menu skrótów dla definicji i szablonu przepływu pracy. Wybierz pozycję Otwórz przy użyciu Projektanta aplikacji logiki.

    Zrzut ekranu przedstawia otwartą aplikację logiki w rozwiązaniu programu Visual Studio.

    Napiwek

    Jeśli nie masz tego polecenia w programie Visual Studio 2019, upewnij się, że masz najnowsze aktualizacje programu Visual Studio.

  4. W dolnej części projektanta przepływu pracy wybierz pozycję Widok kodu.

    Zostanie otwarty edytor widoku kodu i zostanie wyświetlona definicja przepływu pracy w formacie JSON.

  5. Aby powrócić do widoku projektanta, w dolnej części edytora widoku kodu wybierz pozycję Projekt.

Parametry

Cykl życia wdrożenia zwykle ma różne środowiska programowania, testowania, przemieszczania i produkcji. Jeśli masz wartości, które mają być używane ponownie w całej aplikacji logiki bez trwałego kodowania lub różnią się w zależności od potrzeb związanych z wdrożeniem, możesz utworzyć szablon usługi Azure Resource Manager dla definicji przepływu pracy, aby można było również zautomatyzować wdrażanie aplikacji logiki.

Wykonaj następujące ogólne kroki, aby sparametryzować lub zdefiniować i użyć parametrów dla tych wartości. Następnie możesz podać wartości w osobnym pliku parametrów, który przekazuje te wartości do szablonu. Dzięki temu można łatwiej zmieniać te wartości bez konieczności aktualizowania i ponownego wdrażania aplikacji logiki. Aby uzyskać szczegółowe informacje, zobacz Omówienie: automatyzowanie wdrażania aplikacji logiki przy użyciu szablonów usługi Azure Resource Manager.

  1. W szablonie zdefiniuj parametry szablonu i parametry definicji przepływu pracy, aby zaakceptować wartości używane odpowiednio we wdrożeniu i środowisku uruchomieniowym.

    Parametry szablonu są definiowane w sekcji parametrów spoza definicji przepływu pracy, podczas gdy parametry definicji przepływu pracy są definiowane w sekcji parametrów, która znajduje się wewnątrz definicji przepływu pracy.

  2. Zastąp zakodowane na stałe wartości wyrażeniami odwołującymi się do tych parametrów. Wyrażenia szablonów używają składni, która różni się od wyrażeń definicji przepływu pracy.

    Unikaj komplikowania kodu, nie używając wyrażeń szablonu, które są oceniane we wdrożeniu, wewnątrz wyrażeń definicji przepływu pracy, które są oceniane w czasie wykonywania. Używaj tylko wyrażeń szablonów spoza definicji przepływu pracy. Używaj tylko wyrażeń definicji przepływu pracy wewnątrz definicji przepływu pracy.

    Po określeniu wartości parametrów definicji przepływu pracy można odwoływać się do parametrów szablonu przy użyciu sekcji parametrów spoza definicji przepływu pracy, ale nadal wewnątrz definicji zasobu dla aplikacji logiki. W ten sposób można przekazać wartości parametrów szablonu do parametrów definicji przepływu pracy.

  3. Zapisz wartości parametrów w osobnym pliku parametrów i dołącz ten plik do wdrożenia.

Przetwarzanie ciągów z funkcjami

Usługa Azure Logic Apps ma różne funkcje do pracy z ciągami. Załóżmy na przykład, że chcesz przekazać nazwę firmy z zamówienia do innego systemu. Nie masz jednak pewności co do prawidłowej obsługi kodowania znaków. Można wykonać kodowanie base64 w tym ciągu, ale aby uniknąć ucieczki w adresie URL, możesz zastąpić kilka znaków. Ponadto potrzebujesz tylko podciągu nazwy firmy, ponieważ pierwsze pięć znaków nie jest używanych.

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

W tych krokach opisano, jak ten przykład przetwarza ten ciąg, pracując z wewnątrz do zewnątrz:

"uri": "https://www.example.com/?id=@{replace(replace(base64(substring(parameters('order').companyName,5,sub(length(parameters('order').companyName), 5) )),'+','-') ,'/' ,'_' )}"

  1. length() Pobierz nazwę firmy, aby uzyskać łączną liczbę znaków.

  2. Aby uzyskać krótszy ciąg, odejmij 5.

  3. Teraz uzyskaj element substring(). Rozpocznij od indeksu 5i przejdź do pozostałej części ciągu.

  4. Przekonwertuj ten podciąg base64() na ciąg.

  5. Teraz replace() wszystkie + znaki z znakami - .

  6. replace() Na koniec wszystkie / znaki z znakami_.

Mapuj elementy listy na wartości właściwości, a następnie użyj map jako parametrów

Aby uzyskać różne wyniki na podstawie wartości właściwości, możesz utworzyć mapę zgodną z każdą wartością właściwości do wyniku, a następnie użyć tej mapy jako parametru.

Na przykład ten przepływ pracy definiuje niektóre kategorie jako parametry i mapę zgodną z tymi kategoriami z określonym adresem URL. Najpierw przepływ pracy pobiera listę artykułów. Następnie przepływ pracy używa mapy, aby znaleźć adres URL pasujący do kategorii dla każdego artykułu.

  • Funkcja intersection() sprawdza, czy kategoria jest zgodna ze znaną zdefiniowaną kategorią.

  • Po pobraniu pasującej kategorii przykład ściąga element z mapy przy użyciu nawiasów kwadratowych: 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"
        ]
      }
    }
  }
}

Pobieranie danych za pomocą funkcji Date

Aby pobrać dane ze źródła danych, które nie obsługuje natywnie wyzwalaczy, możesz zamiast tego użyć funkcji Date do pracy z godzinami i datami. Na przykład to wyrażenie znajduje, jak długo trwają kroki tego przepływu pracy, pracując z wewnątrz do zewnątrz:

"expression": "@less(actions('order').startTime,addseconds(utcNow(),-1))",
  1. order Z akcji wyodrębnij element startTime.

  2. Pobierz bieżącą godzinę z funkcją utcNow() .

  3. Odejmij jedną sekundę: addSeconds(..., -1)

    Możesz użyć innych jednostek czasu, takich jak minutes lub hours.

  4. Teraz możesz porównać te dwie wartości.

    Jeśli pierwsza wartość jest mniejsza niż druga, od momentu złożenia zamówienia przekazano więcej niż jedną sekundę.

Aby sformatować daty, można użyć formaterów ciągów. Aby na przykład uzyskać RFC1123, użyj polecenia utcnow('r'). Dowiedz się więcej na temat formatowania dat.

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