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)
Ha egyéni integrációs feladatokat szeretne végrehajtani a standard munkafolyamattal az Azure Logic Appsben, közvetlenül hozzáadhat és futtathat C#-szkripteket a munkafolyamaton belül. Ehhez a feladathoz használja az Execute CSharp Script Code (CSharp-szkriptkód végrehajtása) nevű beágyazott kódműveletet. Ez a művelet visszaadja a szkript eredményeit, így ezt a kimenetet használhatja a munkafolyamat későbbi műveleteiben.
Ez a funkció a következő előnyöket nyújtja:
Saját szkripteket írhat a munkafolyamat-tervezőben, hogy az Azure Functions használata nélkül is megoldhassa az összetettebb integrációs kihívásokat. Nincs szükség más szolgáltatási csomagokra.
Ez az előny leegyszerűsíti a munkafolyamat-fejlesztést, és több szolgáltatás kezelésével csökkenti a bonyolultságot és a költségeket.
Hozzon létre egy dedikált kódfájlt, amely személyre szabott szkriptelési helyet biztosít a munkafolyamaton belül.
Szkriptek üzembe helyezése a munkafolyamatok mellett.
Ez az útmutató bemutatja, hogyan adhatja hozzá a műveletet a munkafolyamathoz, és hogyan adhatja hozzá a futtatni kívánt C#-szkriptkódot.
Előfeltételek
Azure-fiók és -előfizetés. Ingyenes Azure-fiók lekérése.
A Standard logikai alkalmazás munkafolyamata, amelyhez hozzá szeretné adni a C# szkriptet. A munkafolyamatnak már egy eseményindítóval kell kezdődnie. További információ: Példa standard logikai alkalmazás munkafolyamatainak létrehozása.
A forgatókönyvhöz bármilyen eseményindítót használhat, de ez az útmutató például a HTTP-kérések fogadása és a Válasz művelet neve alatt található Kérelem eseményindítót használja. A munkafolyamat akkor fut, amikor egy másik alkalmazás vagy munkafolyamat kérést küld az eseményindító végpontJÁNAK URL-címére. A mintaszkript a kódvégrehajtás eredményeit adja vissza kimenetként, amelyet a későbbi műveletekben használhat.
Példaforgatókönyvek
Az alábbi lista néhány példaforgatókönyvet ismertet, amelyekben szkripttel segíthet bizonyos integrációs feladatokban:
A beépített kifejezéseken és adatműveleti képességeken túl elemezheti és végezhet átalakításokat vagy manipulációkat egy hasznos adaton. Egy szkripttel például visszaadhat egy módosított sémát az alsóbb rétegbeli feldolgozáshoz.
Az Azure-erőforrások, például a virtuális gépek kezelése és indítása vagy lépése valamilyen üzleti logika alapján.
Futtasson egy tárolt eljárást egy SQL Serveren, amelyet ütemezés szerint kell futtatnia, és az eredményeket a SharePointban kell tárolnia.
Munkafolyamat-hibák naplózása részletes információkkal az Azure Storage-ba való mentéssel, vagy e-mailben vagy a csapat értesítésével.
Az API biztonsági szabványainak megfelelő adatok titkosítása és visszafejtése.
Adjon át egy fájlt a szkriptbe, hogy egy HTTP-kérést tömörítsen vagy bontsa ki.
Különböző API-kból és fájlokból származó adatok összesítése napi jelentések létrehozásához
Megfontolások
Az Azure Portal a szkriptet C# szkriptfájlként (.csx) menti a workflow.json fájllal megegyező mappába, amely tárolja a munkafolyamat JSON-definícióját, és üzembe helyezi a fájlt a logikai alkalmazás erőforrásában a munkafolyamat-definícióval együtt. Az Azure Logic Apps lefordítja ezt a fájlt, hogy a szkript végrehajtásra kész legyen.
A .csx fájlformátum lehetővé teszi, hogy kevesebb "kazánlemezt" írjon, és csak egy C# függvény írására összpontosítson. Átnevezheti a .csx fájlt a könnyebb felügyelet érdekében az üzembe helyezés során. Azonban minden alkalommal, amikor átnevezi a szkriptet, az új verzió felülírja az előző verziót.
A szkript helyi a munkafolyamatban. Ha ugyanazt a szkriptet más munkafolyamatokban szeretné használni, tekintse meg a szkriptfájlt a KuduPlus konzolon, majd másolja a szkriptet más munkafolyamatokban való újrahasználatra.
Korlátozások
| Név szerint | Határ | Jegyzetek |
|---|---|---|
| Szkriptfuttatás időtartama | 10 perc | Ha olyan forgatókönyvei vannak, amelyek hosszabb időtartamot igényelnek, a termékvisszajelzési lehetőséggel további információt kaphat az igényeiről. |
| Kimeneti méret | 100 MB | A kimeneti méret a műveletek kimeneti méretkorlátjától függ, amely általában 100 MB. |
A CSharp-szkriptkód végrehajtása művelet hozzáadása
Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását és munkafolyamatát a tervezőben.
Miután megnyílik a műveletinformációs panel, a Paraméterek lap Kódfájl mezőjében frissítse az előre feltöltött mintakódot saját szkriptkódjával.
A szkript tetején importálja a szükséges névtereket, és a szokásos módon adja hozzá a szükséges szerelvényhivatkozásokat.
RunA módszer implementálása:A
Runmetódus neve előre definiálva van, és a munkafolyamat csak a futtatási metódus futásidőben történő meghívásával hajtja végre.A munkafolyamatból származó adatok eléréséhez a
Runmetódus egy WorkflowContext típusú paraméteren keresztül fogadja el ezeket az adatokat. A WorkflowContext objektumot a következő feladatokhoz használhatja:Ha vissza szeretné adni a szkript eredményeit vagy egyéb adatait a munkafolyamatnak, implementálja a
Runmetódust egy visszatérési típussal. További információ: Adatok visszaküldése a munkafolyamatba.Ha c#-ban szeretné naplózni a szkript kimenetét, implementálja azt a
Runmetódust, amely egy függvénynaplózót fogad el egy típussal rendelkező paraméterenILoggerkeresztül, és argumentumnévként használjalogaz egyszerű azonosításhoz. Kerülje a szkriptbe való belevéséstConsole.Write.Fontos
Ha hosszú ideig futó szkripttel rendelkezik, amely kecses befejezést igényel a függvénygazda leállítása esetén, adjon meg egy szükséges lemondási jogkivonatot a függvénynaplózóhoz.
További információt a következő szakaszokban talál:
Az alábbi példa a művelet Paraméterek lapját mutatja be a példaszkript kódjával:
Az alábbi példa a példaszkriptkódot mutatja be:
/// Add the required libraries. #r "Newtonsoft.Json" #r "Microsoft.Azure.Workflows.Scripting" using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Logging; using Microsoft.Azure.Workflows.Scripting; using Newtonsoft.Json.Linq; /// <summary> /// Executes the inline C# code. /// </summary> /// <param name="context">The workflow context.</param> /// <remarks> The entry-point to your code. The function signature should remain unchanged.</remarks> public static async Task<Results> Run(WorkflowContext context, ILogger log) { var triggerOutputs = (await context.GetTriggerResults().ConfigureAwait(false)).Outputs; /// Dereferences the 'name' property from the trigger payload. var name = triggerOutputs?["body"]?["name"]?.ToString(); /// To get the outputs from a preceding action, you can uncomment and repurpose the following code. // var actionOutputs = (await context.GetActionResults("<action-name>").ConfigureAwait(false)).Outputs; /// The following logs appear in the Application Insights traces table. // log.LogInformation("Outputting results."); // var name = null; return new Results { Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action." }; } public class Results { public string Message {get; set;} }További információ: "#r" – Referencia külső szerelvényekre.
Ha végzett, mentse a munkafolyamatot.
A munkafolyamat futtatása után áttekintheti a munkafolyamat kimenetét az Application Insightsban, ha engedélyezve van. További információ: Naplók megtekintése az Application Insightsban.
Névterek importálása
A névterek importálásához tegye a szokásos módon a using záradékot. Az alábbi lista automatikusan importált névtereket tartalmaz, ezért nem kötelező, hogy szerepeljenek a szkriptben:
System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading.Tasks
Microsoft.Azure.WebJobs
Microsoft.Azure.WebJobs.Host
Külső szerelvényekre mutató hivatkozások hozzáadása
Az .NET-keretrendszer szerelvényekre való hivatkozáshoz használja az #r "<assembly-name> irányelvet, például:
/// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
public static async Task<Results> Run(WorkflowContext context)
{
<...>
}
public class Results
{
<...>
}
Az alábbi lista tartalmazza az Azure Functions üzemeltetési környezet által automatikusan hozzáadott szerelvényeket:
mscorlib
System
System.Core
System.Xml
System.Net.Http
Microsoft.Azure.WebJobs
Microsoft.Azure.WebJobs.Host
Microsoft.Azure.WebJobs.Extensions
System.Web.Http
System.Net.Http.Formatting
Newtonsoft.Json
Egyéb .csx fájlok belefoglalása
Ha már rendelkezik .csx fájlokkal, a CSharp-szkriptkód végrehajtása műveletben használhatja az ezekből a fájlokból származó osztályokat és metódusokat. Ehhez a feladathoz használhatja az irányelvet a #loadexecute_csharp_code.csx fájlban. Ez az irányelv csak .csx fájlokkal működik, nem .cs fájlokkal. A következő lehetőségek közül választhat:
Töltsön be egy .csx-fájlt közvetlenül a műveletbe.
A .csx fájlnak ugyanabban a mappában kell lennie, mint a CSharp-szkriptkód végrehajtása műveletet tartalmazó munkafolyamatnak. Lásd .csx közvetlen betöltése.
Hivatkozzon egy .csx fájlra, amely a logikai alkalmazás megosztott mappájában található.
A megosztott mappának a
site/wwwroot/logikai alkalmazás mappaútvonalában kell lennie. Lásd : .csx-fájl hivatkozása megosztott mappában.
.csx fájl betöltése közvetlenül
Az alábbi példa execute_csharp_code.csx fájl bemutatja, hogyan tölthet be egy loadscript.csx nevű szkriptfájlt egy CSharp-szkriptkód végrehajtása műveletbe az #load irányelv használatával:
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
#load "loadscript.csx"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
/// <summary>
/// Execute the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
/// <remarks> This is the entry-point to your code. The function signature should remain unchanged.</remarks>
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
var name = RunScript().ToString();
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action."
};
}
Hivatkozás .csx fájlra egy megosztott mappában
Az irányelv segítségével #load hivatkozhat egy .csx fájlra, amely a logikai alkalmazás erőforrásának megosztott mappájában található. Ennek a shared mappának a site/wwwroot/ logikaialkalmazás-erőforrás mappaútvonalában kell lennie.
Ha hozzá szeretné adni a szkriptfájlt a shared mappához, kövesse az alábbi lépéseket:
Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.
A logikai alkalmazás oldalsávján, a Fejlesztési eszközök területen válassza a Speciális eszközök lehetőséget.
A Speciális eszközök lapon válassza az Ugrás lehetőséget, amely megnyitja a Kudu+ konzolt.
Nyissa meg a Hibakeresési konzol menüjét, és válassza a CMD lehetőséget.
Nyissa meg a logikai alkalmazás gyökérhelyét: site/wwwroot
Lépjen a megosztott mappára. Ha ez a mappa nem létezik, hozza létre a mappát.
Az eszköztáron a mappa neve mellett válassza a pluszjelet (+), majd az Új mappát.
Adja meg
shareda mappa nevét.Nyissa meg az új
sharedmappát.
Húzza a szkriptfájlt a
sharedmappába az importáláshoz.
Az alábbi példa execute_csharp_code.csx fájl bemutatja, hogyan hivatkozhat az importcript.csx nevű feltöltött szkriptfájlra egy CSharp-szkriptkód végrehajtása műveletre az #load irányelv használatával:
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
#load "..\shared\importscript.csx"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
/// <summary>
/// Execute the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
/// <remarks> This is the entry-point to your code. The function signature should remain unchanged.</remarks>
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
var name = RunScript().ToString();
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action."
};
}
NuGet-csomagok importálása
A NuGet a Microsoft által támogatott módszer a .NET-kódtárak, úgynevezett csomagok létrehozására, közzétételére, üzemeltetésére, felderítésére, felhasználására és megosztására. A CSharp-szkriptkód végrehajtása művelet támogatja a NuGet-csomagok importálását a munkafolyamat-mappa gyökerében található function.prof fájllal, például:
site/wwwroot/<workflow-name>/workflow.json
site/wwwroot/<workflow-name>/function.proj
Például a következő function.proj fájllal importálhat NuGet-csomagokat a CSharp-szkriptkód végrehajtása műveletbe:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
</ItemGroup>
</Project>
C#-szkriptfájl (.csx) esetén a következőt kell beállítania
TargetFrameworknetstandard2.0: .Ez a követelmény nem jelenti azt, hogy a csomagverziók a
netstandard2.0korlátozottak. Továbbra is hivatkozhat a csomagokra anet6.0és a későbbi verziókhoz.A function.proj fájl inicializálásakor újra kell indítania a logikai alkalmazást, hogy az Azure Logic Apps-futtatókörnyezet felismerje és felhasználhassa a fájlt.
Az újraindítás befejeződése után a futtatókörnyezet automatikusan letölti a szükséges csomagokat a NuGet.org-ról, és elhelyezi azokat a szkript számára megfelelő mappába. Bár nem kell manuálisan betöltenie ezeket a szerelvényeket, ügyeljen arra, hogy közvetlenül hivatkozzon a kódban lévő csomagokra standard using utasítások használatával, például:
using System.Net;
using Newtonsoft.Json;
using Serilog;
public static async Task<Output> Run(WorkflowContext context)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
// Write log messages
Log.Information("Hello, Serilog with Console sink!");
Log.Warning("This is a warning message.");
var outputReturn = new Output()
{
Message = "Utilizing my serilog logger."
};
return outputReturn;
}
public class Output
{
public string Message { get; set; }
}
Naplókimenet streambe
Run A metódusban adjon meg egy típussal és ILogger névvel rendelkező log paramétert, például:
public static void Run(WorkflowContext context, ILogger log)
{
log.LogInformation($"C# script successfully executed.");
}
Naplókimenet az Application Insightsba
Ha egyéni metrikákat szeretne létrehozni az Application Insightsban, használja a LogMetric bővítménymetódust a következő helyen ILogger: .
Az alábbi példa egy mintametódus-hívást mutat be:
logger.LogMetric("TestMetric", 1234);
Munkafolyamat-eseményindítók és műveleti kimenetek elérése a szkriptben
A munkafolyamat adatainak eléréséhez használja a környezeti objektumhoz WorkflowContext elérhető alábbi módszereket:
GetTriggerResultsmódszerAz eseményindító kimeneteinek eléréséhez használja ezt a metódust az eseményindítót és kimeneteit képviselő objektum visszaadásához, amely a
Outputstulajdonságon keresztül érhető el. Ez az objektum JObject típusú, és indexelőként használhatja a szögletes zárójeleket ([]) az eseményindító kimeneteinek különböző tulajdonságainak eléréséhez.Az alábbi példa lekéri az adatokat a
bodytulajdonságból az eseményindító kimeneteiben:public static async Task<Results> Run(WorkflowContext context, ILogger log) { var triggerOutputs = (await context.GetTriggerResults().ConfigureAwait(false)).Outputs; var body = triggerOutputs["body"]; return new Results; } public class Results { <...> }GetActionResultsmódszerA műveletkimenetek eléréséhez ezzel a módszerrel visszaadhat egy objektumot, amely a műveletet és kimeneteit jelöli, amelyek a
Outputstulajdonságon keresztül érhetők el. Ez a metódus egy műveletnevet fogad el paraméterként. Az alábbi példa egybodyműveletnév nevű művelet kimenetében lévő tulajdonságból szerzi be az adatokat:public static async Task<Results> Run(WorkflowContext context, ILogger log) { var actionOutputs = (await context.GetActionResults("action-name").ConfigureAwait(false)).Outputs; var body = actionOutputs["body"]; return new Results; } public class Results { <...> }
Környezeti változók vagy alkalmazásbeállítási érték elérése
Környezeti változó vagy alkalmazásbeállítási érték lekéréséhez használja a System.Environment.GetEnvironmentVariable metódust, például:
public static void Run(WorkflowContext context, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
log.LogInformation(GetEnvironmentVariable("AzureWebJobsStorage"));
log.LogInformation(GetEnvironmentVariable("WEBSITE_SITE_NAME"));
}
public static string GetEnvironmentVariable(string name)
{
return name + ": " +
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
Adatok visszaküldése a munkafolyamatba
Ehhez a feladathoz hajtsa végre a metódust Run egy visszatérési típussal és return utasítással. Ha aszinkron verziót szeretne, implementálja a Run metódust egy Task<return-type> attribútummal és a async kulcsszóval. A visszatérési érték a szkriptművelet body kimeneti tulajdonságára van állítva, amelyre a későbbi munkafolyamat-műveletek hivatkozhatnak.
Az alábbi példa egy Run attribútumot, kulcsszót Task<Results> és utasítást tartalmazó async metódust return mutat be:
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Returning results with status message."
};
}
public class Results
{
public string Message {get; set;}
}
A szkriptfájl megtekintése
Az Azure Portalon nyissa meg a standard logikai alkalmazás erőforrását, amely rendelkezik a kívánt munkafolyamatokkal.
A logikai alkalmazás oldalsávján, a Fejlesztési eszközök területen válassza a Speciális eszközök lehetőséget.
A Speciális eszközök lapon válassza az Ugrás lehetőséget, amely megnyitja a KuduPlus-konzolt.
Nyissa meg a Hibakeresési konzol menüjét, és válassza a CMD lehetőséget.
Nyissa meg a logikai alkalmazás gyökérhelyét: site/wwwroot
Nyissa meg a munkafolyamat mappáját, amely tartalmazza a .csx fájlt a következő elérési út mentén: site/wwwroot/{workflow-name}
A fájl neve mellett válassza a Szerkesztés lehetőséget a fájl megnyitásához és megtekintéséhez.
Naplók megtekintése az Application Insightsban
Az Azure Portalon, a logikai alkalmazás oldalsávján, a Beállítások területen válassza az Application Insights lehetőséget. Válassza ki a logikai alkalmazást.
Az Application InsightsoldalsávJának Figyelés területén válassza a Naplók lehetőséget.
Hozzon létre egy lekérdezést a munkafolyamat végrehajtásából származó nyomkövetések vagy hibák megkereséséhez, például:
union traces, errors | project TIMESTAMP, message
Fordítási hibák
Ebben a kiadásban a webes szerkesztő korlátozott IntelliSense-támogatást tartalmaz, amely még fejlesztés alatt áll. A rendszer fordítási hibákat észlel a munkafolyamat mentésekor, és az Azure Logic Apps-futtatókörnyezet lefordítja a szkriptet. Ezek a hibák megjelennek a logikai alkalmazás hibanaplóiban.
Futtatókörnyezeti hibák
Ha a szkript végrehajtásakor hiba történik, az Azure Logic Apps végrehajtja az alábbi lépéseket:
- Visszaadja a hibát a munkafolyamatnak.
- A szkriptműveletet sikertelenként jelöli meg.
- Egy hibaobjektumot biztosít, amely a szkriptből kidobott kivételt jelöli.
Az alábbi példa egy mintahibát mutat be:
A "CSharp_MyLogicApp-InvalidAction_execute_csharp_script_code.csx" függvény "A nem létező művelet nem létezik a munkafolyamatban" hibával meghiúsult. a végrehajtás során. Ellenőrizze, hogy a függvénykód érvényes-e.
Példaszkriptek
Az alábbi példaszkriptek különböző feladatokat hajtanak végre, amelyeket
ZIP-fájl kibontása szövegfájlokkal HTTP-műveletből sztringtömbbe
// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using System;
using System.IO;
using System.IO.Compression;
using System.Text;
using System.Collections.Generic;
/// <summary>
/// Executes the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
public static async Task<List<string>> Run(WorkflowContext context)
{
var outputs = (await context.GetActionResults("HTTP_1").ConfigureAwait(false)).Outputs;
var base64zipFileContent = outputs["body"]["$content"].ToString();
// Decode base64 to bytes.
byte[] zipBytes = Convert.FromBase64String(base64zipFileContent);
List<string> fileContents = new List<string>();
// Creates an in-memory stream from the zip bytes.
using (MemoryStream zipStream = new MemoryStream(zipBytes))
{
// Extracts files from the zip archive.
using (ZipArchive zipArchive = new ZipArchive(zipStream))
{
foreach (ZipArchiveEntry entry in zipArchive.Entries)
{
// Read each file's content.
using (StreamReader reader = new StreamReader(entry.Open()))
{
string fileContent = reader.ReadToEnd();
fileContents.Add(fileContent);
}
}
}
}
return fileContents;
}
Adatok titkosítása az alkalmazásbeállításokból származó kulccsal
// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// Executes the inline csharp code.
/// </summary>
/// <param name="context">The workflow context.</param>
public static async Task<string> Run(WorkflowContext context)
{
var compose = (await context.GetActionResults("compose").ConfigureAwait(false)).Outputs;
var text = compose["sampleData"].ToString();
return EncryptString(text);
}
public static string EncryptString(string plainText)
{
var key = Environment.GetEnvironmentVariable("app-setting-key");
var iv = Environment.GetEnvironmentVariable("app-setting-iv");
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key);
aesAlg.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
WorkflowContext osztály
Munkafolyamat-környezetet jelöl.
Metódusok
GetActionResult(string actionName)
Lekéri a munkafolyamat egy adott műveletének eredményét.
Az aszinkron verzió a Feladatot<> használja visszatérési típusként, például:
Task<WorkflowOperationResult> GetActionResult(string actionName)
Paraméterek
actionName: A művelet neve.
Válaszok
Az aszinkron verzió egy Task olyan objektumot ad vissza, amely az aszinkron műveletet jelöli. A tevékenység eredménye egy objektumot WorkflowOperationResult tartalmaz. A WorkflowOperationResult objektum tulajdonságairól további információt a WorkflowOperationResult osztályban talál.
RunTriggerResult()
Lekéri a munkafolyamat eseményindítójának eredményét.
Az aszinkron verzió a Feladatot<> használja visszatérési típusként, például:
Task<WorkflowOperationResult> RunTriggerResult()
Paraméterek
Nincs.
Válaszok
Az aszinkron verzió egy Task olyan objektumot ad vissza, amely az aszinkron műveletet jelöli. A tevékenység eredménye egy objektumot WorkflowOperationResult tartalmaz. A WorkflowOperationResult objektum tulajdonságairól további információt a WorkflowOperationResult osztályban talál.
WorkflowOperationResult osztály
Munkafolyamat-művelet eredményét jelöli.
Tulajdonságok
| Név szerint | Típus | Leírás |
|---|---|---|
| Név | Sztring | Lekéri vagy beállítja a művelet nevét. |
| Bemenetek | JToken | Lekéri vagy beállítja a művelet végrehajtási bemeneteit. |
| Kimenetek | JToken | Lekéri vagy beállítja a műveletvégrehajtás kimeneteit. |
| StartTime | DateTime? | Lekéri vagy beállítja a művelet kezdési időpontját. |
| EndTime | DateTime? | Lekéri vagy beállítja a művelet befejezési idejét. |
| OperationTrackingId | Sztring | Lekéri vagy beállítja a műveletkövetési azonosítót. |
| Kód | Sztring | Lekéri vagy beállítja a művelet állapotkódját. |
| Állapot | Sztring | Lekéri vagy beállítja a művelet állapotát. |
| Hiba | JToken | Lekéri vagy beállítja a művelet hibáját. |
| TrackedProperties | JToken | Lekéri vagy beállítja a művelet nyomon követett tulajdonságait. |