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 w programie Visual Studio albo skopiuj definicję do dowolnego edytora. Jeśli dopiero zaczynasz korzystać z usługi Azure Logic Apps, zapoznaj się z artykułem Tworzenie przykładowego przepływu pracy aplikacji logiki Zużycie.

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. Zaloguj się w witrynie Azure Portal.

  2. W menu po lewej stronie wybierz pozycję Wszystkie usługi. W polu wyszukiwania znajdź pozycję "Aplikacje logiki", a następnie z wyników wybierz aplikację logiki.

  3. 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 w formacie JSON.

Edytowanie kodu JSON — Visual Studio

Przed rozpoczęciem pracy nad definicją przepływu pracy w programie Visual Studio upewnij się, że zainstalowano wymagane narzędzia. Aby utworzyć aplikację logiki za pomocą programu Visual Studio, zobacz Szybki start: Automatyzowanie zadań i procesów za pomocą usługi Azure Logic Apps — Visual Studio.

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.

    Otwieranie aplikacji logiki w rozwiązaniu programu Visual Studio

    Napiwek

    Jeśli nie masz tego polecenia w programie Visual Studio 2019, sprawdź, czy 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 5ciąg .

  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 uzyskaniu 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ę za pomocą polecenia 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": {}
}

Następne kroki