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
Zaloguj się w witrynie Azure Portal.
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.
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.
Otwórz rozwiązanie programu Visual Studio lub projekt grupy zasobów platformy Azure, który zawiera aplikację logiki.
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.
Otwórz menu skrótów dla definicji i szablonu przepływu pracy. Wybierz pozycję Otwórz przy użyciu Projektanta aplikacji logiki.
Napiwek
Jeśli nie masz tego polecenia w programie Visual Studio 2019, sprawdź, czy masz najnowsze aktualizacje programu Visual Studio.
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.
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.
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.
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.
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) )),'+','-') ,'/' ,'_' )}"
length()
Pobierz nazwę firmy, aby uzyskać łączną liczbę znaków.Aby uzyskać krótszy ciąg, odejmij
5
ciąg .Teraz uzyskaj element
substring()
. Rozpocznij od indeksu5
i przejdź do pozostałej części ciągu.Przekonwertuj ten podciąg
base64()
na ciąg.Teraz
replace()
wszystkie+
znaki z znakami-
.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))",
order
Z akcji wyodrębnij elementstartTime
.Pobierz bieżącą godzinę za pomocą polecenia
utcNow()
.Odejmij jedną sekundę:
Możesz użyć innych jednostek czasu, takich jak
minutes
lubhours
.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}¤tTime=@{utcNow('r')}"
}
}
},
"runAfter": {
"order": [
"Succeeded"
]
}
}
},
"outputs": {}
}
Następne kroki
- Uruchamianie kroków na podstawie warunku (instrukcje warunkowe)
- Uruchamianie kroków na podstawie różnych wartości (instrukcje switch)
- Uruchamianie i powtarzanie kroków (pętle)
- Uruchamianie lub scalanie kroków równoległych (gałęzi)
- Uruchamianie kroków na podstawie stanu akcji pogrupowanej (zakresy)
- Dowiedz się więcej o schemacie języka definicji przepływu pracy dla usługi Azure Logic Apps
- Dowiedz się więcej o akcjach i wyzwalaczach przepływu pracy dla usługi Azure Logic Apps
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla