Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Logic Apps (Standard)
Olyan integrációs megoldások esetén, ahol a Standard logikai alkalmazás munkafolyamatából kell létrehoznia és futtatnia a .NET-kódot, használhatja a Visual Studio Code-ot az Azure Logic Apps (Standard) bővítménysel. Ez a bővítmény a következő képességeket és előnyöket biztosítja:
- Saját kód megírásához olyan függvényeket hozhat létre, amelyek rugalmasságával és vezérlésével megoldhatja a legnagyobb kihívást jelentő integrációs problémákat.
- Kód helyi hibakeresése a Visual Studio Code-ban. Haladjon végig a kódon és a munkafolyamatokon ugyanabban a hibakeresési munkamenetben.
- Kódot helyezhet üzembe a munkafolyamatok mellett. Nincs szükség más szolgáltatási csomagokra.
- Támogatja a BizTalk Server migrálási forgatókönyveit, hogy az egyéni .NET-befektetéseket a helyszínről a felhőbe helyezhesse át.
A saját kód megírásának képességével olyan forgatókönyveket hajthat végre, mint a következők:
- Egyéni üzleti logika implementálása
- Egyéni elemzés egy bejövő üzenetből származó információk kinyeréséhez
- Adatérvényesítés és egyszerű átalakítások
- Üzenetformázás egy másik rendszerbe irányuló kimenő üzenetekhez, például API-hoz
- Számítások
Ez a képesség nem alkalmas olyan helyzetekre, mint például a következők:
- 10 percnél hosszabb időt igénylő folyamatok futtatása
- Nagyméretű üzenet- és adatátalakítások
- Összetett kötegelési és -feloldási forgatókönyvek
- BizTalk Server-folyamat összetevői, amelyek streamelést implementálnak
Az Azure Logic Apps korlátaival kapcsolatos további információkért lásd: Korlátok és konfiguráció – Azure Logic Apps.
Előfeltételek
Azure-fiók és -előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.
A legújabb Visual Studio Code az Azure Logic Apps (Standard) kiterjesztéssel. Ezeknek a követelményeknek való megfeleléshez tekintse meg az egybérlős Azure Logic Apps és a Visual Studio Code standard munkafolyamatainak létrehozásának előfeltételeit.
Az egyéni függvények képessége jelenleg csak Windows operációs rendszeren futó Visual Studio Code-ban érhető el.
Az egyéni függvények képessége jelenleg támogatja a .NET-keretrendszer és a .NET 8 meghívását az Azure által üzemeltetett logikai alkalmazások munkafolyamataihoz.
A kódprojekt létrehozásához használandó helyi mappa
Korlátozások
- Az egyéni függvények létrehozása jelenleg nem érhető el az Azure Portalon. Miután azonban üzembe helyezi a függvényeket a Visual Studio Code-ból az Azure-ba, kövesse a Kód meghívása az Azure Portal munkafolyamatából című témakörben leírt lépéseket. Ebben a logikai alkalmazásban a Helyi függvény meghívása nevű beépített művelet használatával választhat az üzembe helyezett egyéni függvényekből, és futtathatja a kódot. A munkafolyamat későbbi műveletei hivatkozhatnak ezekből a függvényekből származó kimenetekre, mint bármely más munkafolyamatban. Megtekintheti a beépített művelet futtatási előzményeit, bemeneteit és kimeneteit.
Kódprojekt létrehozása
A Visual Studio Code legújabb Azure Logic Apps (Standard) bővítménye tartalmaz egy kódprojekt-sablont, amely leegyszerűsíti a saját kód írását, hibakeresését és üzembe helyezését a munkafolyamatokkal. Ez a projektsablon létrehoz egy munkaterületfájlt és két mintaprojektet: egy projektet a kód megírásához, a másik projektet a munkafolyamatok létrehozásához.
Feljegyzés
Nem használhatja ugyanazt a projektmappát a kódhoz és a munkafolyamatokhoz.
Nyissa meg a Visual Studio Code-ot. A tevékenységsávon válassza az Azure ikont. (Billentyűzet: Shift+Alt+A)
A megnyíló Azure-ablakban, a Munkaterület szakasz eszköztárán, az Azure Logic Apps menüben válassza az Új logikaialkalmazás-munkaterület létrehozása lehetőséget.
A Mappa kiválasztása párbeszédpanelen keresse meg és válassza ki a projekthez létrehozott helyi mappát.
Amikor megjelenik az Új logikaialkalmazás-munkaterület létrehozása párbeszédpanel, adja meg a munkaterület nevét:
Ez a példa a MyLogicAppWorkspace használatával folytatódik.
Amikor megjelenik a Select a project template for your logic app workspace prompt box, válassza az egyéni kódprojekttel rendelkező Logikai alkalmazás lehetőséget.
Az Azure által üzemeltetett Standard logikai alkalmazás munkafolyamatai esetén kövesse az utasításokat a .NET-keretrendszer vagy a .NET 8 kiválasztásához.
Kövesse a következő utasításokat a következő példaértékek megadásához:
Elem Példaérték A .NET-függvényprojekt függvényneve WeatherForecast A .NET-függvényprojekt névterének neve Contoso.Enterprise Munkafolyamat-sablon:
- Állapotalapú munkafolyamat
- Állapot nélküli munkafolyamatÁllapotalapú munkafolyamat Munkafolyamat neve MyWorkflow Válassza a Megnyitás az aktuális ablakban lehetőséget.
A lépés befejezése után a Visual Studio Code létrehozza a munkaterületet, amely alapértelmezés szerint tartalmaz egy .NET-függvényprojektet és egy logikai alkalmazásprojektet, például:
Node Leírás < munkaterület neve> A .NET-függvényprojektet és a logikai alkalmazás munkafolyamat-projektét is tartalmazza. < függvény neve> A .NET-függvényprojekt összetevőit tartalmazza. A függvénynév.cs fájl például < < logic-app-name> Tartalmazza a logikai alkalmazásprojekt összetevőit, beleértve egy üres munkafolyamatot is.
Kód írása
A munkaterületen bontsa ki a Functions csomópontot, ha még nem bontotta ki.
Nyissa meg a <>.cs fájlt.
Alapértelmezés szerint ez a fájl mintakódot tartalmaz, amely a következő kódelemeket tartalmazza a korábban megadott példaértékekkel együtt, ha szükséges:
- Névtér neve
- Osztály neve
- Függvénynév
- Függvényparaméterek
- Visszatérési típus
- Összetett típus
Az alábbi példa a teljes mintakódot mutatja be:
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace Contoso.Enterprise { using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Azure.Functions.Extensions.Workflows; using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; /// <summary> /// Represents the WeatherForecast flow invoked function. /// </summary> public class WeatherForecast { private readonly ILogger<WeatherForecast> logger; public WeatherForecast(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<WeatherForecast>(); } /// <summary> /// Executes the logic app workflow. /// </summary> /// <param name="zipCode">The zip code.</param> /// <param name="temperatureScale">The temperature scale (e.g., Celsius or Fahrenheit).</param> [FunctionName("WeatherForecast")] public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale) { this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale); // Generate random temperature within a range based on the temperature scale Random rnd = new Random(); var currentTemp = temperatureScale == "Celsius" ? rnd.Next(1, 30) : rnd.Next(40, 90); var lowTemp = currentTemp - 10; var highTemp = currentTemp + 10; // Create a Weather object with the temperature information var weather = new Weather() { ZipCode = zipCode, CurrentWeather = $"The current weather is {currentTemp} {temperatureScale}", DayLow = $"The low for the day is {lowTemp} {temperatureScale}", DayHigh = $"The high for the day is {highTemp} {temperatureScale}" }; return Task.FromResult(weather); } /// <summary> /// Represents the weather information for WeatherForecast. /// </summary> public class Weather { /// <summary> /// Gets or sets the zip code. /// </summary> public int ZipCode { get; set; } /// <summary> /// Gets or sets the current weather. /// </summary> public string CurrentWeather { get; set; } /// <summary> /// Gets or sets the low temperature for the day. /// </summary> public string DayLow { get; set; } /// <summary> /// Gets or sets the high temperature for the day. /// </summary> public string DayHigh { get; set; } } } }A függvénydefiníció egy alapértelmezett
Runmetódust tartalmaz, amelyet az első lépésekhez használhat. Ez a mintametódusRunbemutatja az egyéni függvények funkcióval elérhető képességek némelyikét, például különböző bemenetek és kimenetek átadását, beleértve az összetett .NET-típusokat is.A <függvénynév>.cs fájl tartalmazza a
ILoggerfelületet is, amely támogatja az Application Insights-erőforrásokba történő naplózást. Nyomkövetési információkat küldhet az Application Insightsnak, és ezeket az információkat a munkafolyamatok nyomkövetési információi mellett tárolhatja, például:private readonly ILogger<WeatherForecast> logger; public WeatherForecast(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<WeatherForecast>(); } [FunctionName("WeatherForecast")] public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale) { this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale); <...> }Cserélje le a mintafüggvénykódot a sajátra, és szerkessze a saját forgatókönyvek alapértelmezett
Runmetódusát. Másolhatja a függvényt, beleértve a[FunctionName("<function-name>")]deklarációt is, majd átnevezheti a függvényt egyedi névvel. Ezután szerkesztheti az átnevezett függvényt az igényeinek megfelelően.
Ez a példa módosítások nélkül folytatódik a mintakóddal.
A kód fordítása és összeállítása
Miután befejezte a kód írását, lefordítva győződjön meg arról, hogy nincsenek buildelési hibák. A .NET-függvényprojekt automatikusan tartalmazza a buildelési feladatokat, amelyek lefordítják, majd hozzáadják a kódot a logikai alkalmazás projekt lib\egyéni mappájához, ahol a munkafolyamatok egyéni függvényeket keresnek a futtatáshoz. Ezek a feladatok a .NET-verzió alapján a lib\custom\net472 vagy lib\custom\net8 mappába helyezik a szerelvényeket.
A Visual Studio Code tevékenységsávján válassza az Explorer lehetőséget.
Az Explorer ablakban nyissa meg a Functions-projekt mappa helyi menüjét, és válassza a Függvények létrehozása projektet.
A build feladat végrehajtásra kerül a függvényprojektnél. Ha a build sikeres, a Terminál ablakban megjelenik a build sikerességét jelző üzenet.
Győződjön meg arról, hogy a következő elemek szerepelnek a logikai alkalmazás projektjében:
A munkaterületen bontsa ki a következő mappákat: LogicApp>lib\custom>net472 vagy net8, a .NET-verzió alapján. Ellenőrizze, hogy a net472 vagy net8 nevű almappá tartalmazza-e a kód futtatásához szükséges szerelvényfájlokat (DLL-fájlokat, beleértve a függvénynév<.
A munkaterületen bontsa ki a következő mappákat: LogicApp>lib\custom><function-name.> Győződjön meg arról, hogy a függvénynév< almappában található egy > fájl, amely tartalmazza az Ön által írt függvénykód metaadatait. A munkafolyamat-tervező ezzel a fájllal határozza meg a kód meghívásakor szükséges bemeneteket és kimeneteket.
Az alábbi példa a logikai alkalmazás projektjében létrehozott mintaszerelvényeket és más fájlokat mutatja be:
Kód meghívása munkafolyamatból
Miután meggyőződett arról, hogy a kód lefordítva van, és hogy a logikaialkalmazás-projekt tartalmazza a kód futtatásához szükséges fájlokat, nyissa meg a logikai alkalmazás projektjéhez tartozó alapértelmezett munkafolyamatot.
A munkaterületen a LogicApp alatt bontsa ki a< csomópontot, nyissa meg a workflow.json>, és válassza a Tervező megnyitása lehetőséget.
A megnyíló munkafolyamat-tervezőben a logikai alkalmazás projektjéhez tartozó alapértelmezett munkafolyamat a következő eseményindítóval és műveletekkel jelenik meg:
- A HTTP-kérés fogadásakor elnevezett beépített kérelem-eseményindító
- A logikai alkalmazás Helyi függvény meghívása nevű beépített művelete
- A Válasz nevű beépített válaszművelet, amellyel csak akkor válaszolhat a hívónak, ha a Kérés eseményindítót használja
Válassza ki a helyi függvény meghívása nevű műveletet ebben a logikai alkalmazásban.
A művelet információs panelje jobbra nyílik meg.
Ellenőrizze és ellenőrizze, hogy a függvénynév paraméter értéke a futtatni kívánt függvényre van-e beállítva. Tekintse át vagy módosítsa a függvény által használt egyéb paraméterértékeket.
A kód és a munkafolyamat hibakeresése
Az alábbi Azure Storage-szolgáltatások mindegyikéhez indítsa el az Azurite Storage emulátort:
- Azure Blob Service
- Az Azure üzenetsor-kezelési Queue szolgáltatása
- Microsoft Azure Táblaszolgáltatás
A Visual Studio Code View menüjében válassza a Parancskatalógus lehetőséget.
A megjelenő parancssorban keresse meg és válassza az Azurite: Blob Service indítása lehetőséget.
A megjelenő munkakönyvtár-listából válassza a LogicApp lehetőséget.
Ismételje meg az alábbi lépéseket az Azurite: Queue Service indítása és az Azurite: Táblaszolgáltatás indítása.
Sikeresnek bizonyul, ha a képernyő alján található Visual Studio Code tálcán látható a három futó tárolási szolgáltatás, például:
Csatolja a hibakeresőt a logikai alkalmazásprojekthez és a .NET-függvényprojekthez is az alábbi lépések végrehajtásával:
A Visual Studio Code tevékenységsávján válassza a Futtatás és hibakeresés lehetőséget. (Billentyűzet: Ctrl+Shift+D)
A Futtatás és hibakeresés listában válassza a Helyi függvényt (LogicApp) tartalmazó Futtatás/hibakeresés logikai alkalmazás lehetőséget, ha még nincs kijelölve, majd válassza a Lejátszás (zöld nyíl) lehetőséget.
Megnyílik a terminálablak , és megjeleníti az elindított hibakeresési folyamatot. Ekkor megjelenik a Hibakeresési konzol ablak, és megjeleníti a hibakeresési állapotokat. A Visual Studio Code alján a tevékenységsáv narancssárgára változik, ami azt jelzi, hogy a .NET-hibakereső be van töltve.
Töréspontok beállításához a függvénydefinícióban (<.cs) vagy munkafolyamat-definícióban (>) keresse meg azt a sorszámot, ahol a töréspontot használni szeretné, és válassza ki a bal oldali oszlopot, például:
Ha manuálisan szeretné futtatni a Kérelem eseményindítót a munkafolyamatban, nyissa meg a munkafolyamat Áttekintés lapját.
A logikai alkalmazás projektjében nyissa meg a workflow.json fájl helyi menüjét, és válassza az Áttekintés lehetőséget.
A munkafolyamat Áttekintés lapján a Futtatás eseményindító gomb érhető el, ha manuálisan szeretné elindítani a munkafolyamatot. A Munkafolyamat tulajdonságai területen a visszahívási URL-érték egy meghívható végpont URL-címe, amelyet a munkafolyamat Kérés eseményindítója hozott létre. Erre az URL-címre küldhet kéréseket a munkafolyamat más alkalmazásokból való aktiválásához, beleértve az egyéb logikai alkalmazások munkafolyamatait is.
Az Áttekintés lap eszköztárán válassza a Futtatás eseményindítót.
A munkafolyamat futtatása után a hibakereső aktiválja az első töréspontot.
A Futtatás menüben vagy a hibakereső eszköztáron válasszon egy hibakeresési műveletet.
A munkafolyamat futtatása után az Áttekintés lapon látható a futtatás befejeződött és a futtatás alapvető részletei.
A munkafolyamat futtatásával kapcsolatos további információk áttekintéséhez válassza ki a befejezett futtatás lehetőséget. Vagy az Időtartam oszlop melletti listából válassza a Futtatás megjelenítése lehetőséget.
A kód üzembe helyezése
Az egyéni függvényeket ugyanúgy helyezheti üzembe, mint a logikai alkalmazásprojektet. Akár a Visual Studio Code-ból telepít, akár CI/CD DevOps-folyamatot használ, a telepítés előtt győződjön meg arról, hogy létrehozza a kódot, és hogy az összes függő összeállítás szerepel-e a következő logikai alkalmazás projektmappájában:
.NET 4.7.2: lib/custom/net472 mappa
.NET 8: lib/custom/net8 mappa
További információ: Standard munkafolyamatok üzembe helyezése a Visual Studio Code-ból az Azure-ba.
Problémák elhárítása
Műveletinformációs ablaktábla hibája
A munkafolyamat-tervezőben, amikor kiválasztja a helyi függvény meghívása nevű beépített műveletet ebben a logikai alkalmazásban, a művelet információs paneljén a következő üzenet jelenik meg:
Failed to retrieve dynamic inputs. Error details:
Ebben a forgatókönyvben vizsgálja meg a logikai alkalmazásprojektet annak ellenőrzéséhez, hogy a LogicApp\lib\custom mappa üres-e. Ha üres, a Terminálbuildelési függvényeinek futtatása lehetőséget.
Jelenleg nem fut folyamat a megadott névvel
Ha ezt a hibaüzenetet kapja a munkafolyamat futtatásakor, valószínűleg a hibakereső folyamat a .NET Functionshez van csatlakoztatva a logikai alkalmazás helyett.
A probléma megoldásához válassza a Futtatás és hibakeresés listában a Csatolás a logikai alkalmazáshoz (LogicApp) lehetőséget, majd a Lejátszás (zöld háromszög) lehetőséget.
A csomag nincs megfelelően importálva
Ha a Kimenet ablak az alábbi üzenethez hasonló hibaüzenetet jelenít meg, győződjön meg arról, hogy legalább a .NET 6.0 telepítve van. Ha telepítve van ez a verzió, próbálja meg eltávolítani, majd újratelepíteni.
C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.targets(83,5): warning : The ExtensionsMetadataGenerator package was not imported correctly. Are you missing 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] WeatherForecast -> C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\\bin\Debug\net472\WeatherForecast.dll C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : It was not possible to find any compatible framework version [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The specified framework 'Microsoft.NETCore.App', version '6.0.0' was not found. [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : - Check application dependencies and target a framework version installed at: [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj]
Buildelési hibák
Ha a függvény nem tartalmaz változókat, és létrehozza a kódot, a Kimenet ablakban a következő hibaüzenetek jelenhetnek meg:
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
Build FAILED.
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
0 Warning(s)
2 Error(s)
A probléma megoldásához a kód metódusában Run fűzze hozzá a következő paramétert:
string parameter1 = null
Az alábbi példa bemutatja, hogyan jelenik meg a Run metódus aláírása:
public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)
Következő lépések
Standard munkafolyamatok létrehozása a Visual Studio Code használatával