적용 대상: Azure Logic Apps(표준)
Azure Logic Apps에서 표준 워크플로와 인라인으로 사용자 지정 통합 작업을 수행하려면 워크플로 내에서 C# 스크립트를 직접 추가하고 실행할 수 있습니다. 이 작업의 경우 CSharp 스크립트 코드 실행이라는 인라인 코드 작업을 사용합니다. 이 작업은 워크플로의 후속 작업에서 이 출력을 사용할 수 있도록 스크립트의 결과를 반환합니다.
이 기능은 다음과 같은 이점을 제공합니다.
Azure Functions를 사용하지 않고도 더 복잡한 통합 문제를 해결할 수 있도록 워크플로 디자이너 내에서 고유한 스크립트를 작성합니다. 다른 서비스 계획은 필요하지 않습니다.
이 혜택은 워크플로 개발을 간소화하고 더 많은 서비스를 관리하는 복잡성과 비용을 줄입니다.
워크플로 내에서 개인 설정된 스크립팅 공간을 제공하는 전용 코드 파일을 생성합니다.
워크플로와 함께 스크립트를 배포합니다.
이 가이드에서는 워크플로에 작업을 추가하고 실행하려는 C# 스크립트 코드를 추가하는 방법을 보여 줍니다.
필수 조건
Azure 계정 및 구독 무료 Azure 계정을 가져옵니다.
C# 스크립트를 추가하려는 표준 논리 앱 워크플로입니다. 워크플로는 이미 트리거로 시작해야 합니다. 자세한 내용은 예제 표준 논리 앱 워크플로 만들기를 참조하세요.
시나리오에 대해 모든 트리거를 사용할 수 있지만, 예를 들어 이 가이드에서는 HTTP 요청을 받을 때라는 요청 트리거와 응답 작업을 사용합니다. 워크플로는 다른 애플리케이션 또는 워크플로가 트리거의 엔드포인트 URL에 요청을 보낼 때 실행됩니다. 샘플 스크립트는 코드 실행의 결과를 후속 작업에서 사용할 수 있는 출력으로 반환합니다.
예제 시나리오
다음 목록에서는 스크립트를 사용하여 특정 통합 작업을 도울 수 있는 몇 가지 예제 시나리오를 설명합니다.
기본 제공 식 및 데이터 작업 기능을 넘어 페이로드에서 변환 또는 조작을 구문 분석하고 수행합니다. 예를 들어 스크립트를 사용하여 다운스트림 처리를 위해 수정된 스키마를 반환할 수 있습니다.
가상 머신과 같은 Azure 리소스를 관리하고 일부 비즈니스 논리에 따라 시작하거나 단계별로 실행합니다.
일정에 따라 실행해야 하는 SQL Server에서 저장 프로시저를 실행하고 결과를 SharePoint에 저장합니다.
Azure Storage에 저장하거나 팀에 전자 메일을 보내거나 알려 자세한 정보를 사용하여 워크플로 오류를 기록합니다.
API 보안 표준을 준수하도록 데이터를 암호화하고 암호 해독합니다.
HTTP 요청에 대한 압축 또는 압축을 풀기 위해 스크립트에 파일을 전달합니다.
다양한 API 및 파일의 데이터를 집계하여 일간 보고서 만들기
고려 사항
Azure Portal은 스크립트를 workflow.json 파일과 동일한 폴더에 C# 스크립트 파일(.csx)로 저장하고, 워크플로에 대한 JSON 정의를 저장하고, 워크플로 정의와 함께 논리 앱 리소스에 파일을 배포합니다. Azure Logic Apps는 스크립트를 실행할 준비가 되도록 이 파일을 컴파일합니다.
.csx 파일 형식을 사용하면 "상용구"를 적게 쓰고 C# 함수 작성에만 집중할 수 있습니다. 배포하는 동안 보다 쉽게 관리할 수 있는 .csx 파일의 이름을 바꿀 수 있습니다. 그러나 스크립트 이름을 바꿀 때마다 새 버전이 이전 버전을 덮어씁니다.
스크립트는 워크플로에 로컬입니다. 다른 워크플로에서 동일한 스크립트를 사용하려면 KuduPlus에서 콘솔 스크립트 파일을 확인한 다음 스크립트를 복사하여 다른 워크플로에서 다시 사용합니다.
제한 사항
| 속성 | 한도 | 주의 |
|---|---|---|
| 스크립트 실행 기간 | 10분 | 더 긴 기간이 필요한 시나리오가 있는 경우 제품 피드백 옵션을 사용하여 요구 사항에 대한 자세한 정보를 제공합니다. |
| 출력 크기 | 100MB | 출력 크기는 일반적으로 100MB인 작업의 출력 크기 제한에 따라 달라집니다. |
CSharp 스크립트 코드 실행 작업 추가
Azure Portal의 디자이너에서 표준 논리 앱 리소스 및 워크플로를 엽니다.
디자이너에서 다음 일반 단계에 따라 CSharp 스크립트 코드 실행이라는 인라인 코드 작업 작업을 워크플로에 추가합니다.
작업 정보 창이 열리면 매개 변수 탭의 코드 파일 상자에서 미리 채워진 샘플 코드를 사용자 고유의 스크립트 코드로 업데이트합니다.
스크립트 맨 위에서 필요한 네임스페이스를 가져오고필요한 어셈블리 참조를 평소처럼 추가할 수 있습니다.
Run메서드를 구현합니다.Run메서드 이름은 미리 정의되며 워크플로는 런타임에 이 Run 메서드를 호출해야만 실행됩니다.워크플로에서 들어오는 데이터에 액세스하기 위해
Run메서드는 WorkflowContext 형식의 매개 변수를 통해 이 데이터를 허용합니다. 다음 작업에 WorkflowContext 개체를 사용할 수 있습니다.스크립트의 결과 또는 다른 데이터를 워크플로에 반환하려면 반환 형식으로
Run메서드를 구현합니다. 자세한 내용은 워크플로에 데이터 반환을 참조하세요.스크립트의 출력을 C#으로 기록하려면
Run메서드를 구현하여ILogger형식의 매개 변수를 통해 함수 로거를 수락하고log인수 이름으로 사용하여 쉽게 식별할 수 있습니다. 스크립트에Console.Write을(를) 포함하지 않습니다.Important
함수 호스트가 종료될 경우 정상 종료가 필요한 장기 실행 스크립트가 있는 경우 함수 로거와 함께 필요한 취소 토큰을 포함합니다.
자세한 내용은 다음 섹션을 참조하세요.
다음 예제에서는 샘플 스크립트 코드가 있는 작업의 매개 변수 탭을 보여 줍니다.
다음 예제에서는 샘플 스크립트 코드를 보여줍니다.
/// 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;} }자세한 내용은 "#r" - 외부 어셈블리 참조를 참조하세요.
완료되면 워크플로를 저장합니다.
워크플로를 실행한 후 사용하도록 설정된 경우 Application Insights에서 워크플로 출력을 검토할 수 있습니다. 자세한 내용은 Application Insights에서 로그 보기를 참조하세요.
네임스페이스 가져오기
네임스페이스를 가져오려면 평소와 같이 using 절을 사용합니다. 다음 목록에는 자동으로 가져온 네임스페이스가 포함되어 있으므로 스크립트에 포함할 수 있는 선택 사항입니다.
System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading.Tasks
Microsoft.Azure.WebJobs
Microsoft.Azure.WebJobs.Host
외부 어셈블리에 참조 추가
.NET Framework 어셈블리를 참조하려면 다음 예제와 같이 #r "<assembly-name> 지시문을 사용합니다.
/// 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
{
<...>
}
다음 목록에는 Azure Functions 호스팅 환경에서 자동으로 추가되는 어셈블리가 포함됩니다.
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
다른 .csx 파일 포함
기존 .csx 파일이 있는 경우 CSharp 스크립트 코드 실행 작업에서 해당 파일의 클래스와 메서드를 사용할 수 있습니다. 이 작업을 위해 #load 지시문을 execute_csharp_code.csx 파일에서 사용할 수 있습니다. 이 지시문은 .cs 파일이 아닌 .csx 파일에서만 작동합니다. 다음과 같은 옵션이 있습니다.
작업에 직접 .csx 파일을 로드합니다.
.csx 파일은 CSharp 스크립트 코드 실행 작업을 포함하는 워크플로와 동일한 폴더에 있어야 합니다. .csx를 직접 로드하기를 참조하세요.
논리 앱의 공유 폴더에 있는 .csx 파일을 참조합니다.
공유 폴더는 논리 앱의
site/wwwroot/폴더 경로에 있어야 합니다. 공유 폴더의 참조 .csx 파일을 참조하세요.
.csx 파일을 직접 로드
다음 예제 execute_csharp_code.csx 파일은 지시문을 사용하여 loadscript.csx라는 스크립트 파일을 #load 작업에 로드하는 방법을 보여 줍니다.
// 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."
};
}
공유 폴더에서 .csx 파일 참조
지시문을 사용하여 #load 논리 앱 리소스에 대한 공유 폴더에 있는 .csx 파일을 참조할 수 있습니다. 이 shared 폴더는 논리 앱 리소스의 site/wwwroot/ 폴더 경로에 있어야 합니다.
폴더에 스크립트 파일을 shared 추가하려면 다음 단계를 수행합니다.
Azure Portal에서 표준 논리 앱 리소스를 엽니다.
논리 앱 사이드바의 개발 도구에서 고급 도구를 선택합니다.
고급 도구 페이지에서 Go를 선택하면 Kudu+ 콘솔이 열립니다.
디버그 콘솔 메뉴를 열고 CMD를 선택합니다.
논리 앱의 루트 위치인 site/wwwroot로 이동합니다.
공유 폴더로 이동합니다. 이 폴더가 없으면 폴더를 만듭니다.
도구 모음에서 폴더 이름 옆에 있는 더하기 기호(+)를 선택한 다음 새 폴더를 선택합니다.
폴더 이름을 입력
shared합니다.새
shared폴더를 엽니다.
스크립트 파일을 끌어 폴더로 가져옵니다
shared.
다음 예제 execute_csharp_code.csx 파일은 지시문을 사용하여 importcript.csx라는 업로드된 스크립트 파일을 #load 작업으로 참조하는 방법을 보여 줍니다.
// 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 패키지 가져오기
NuGet 은 패키지라는 .NET 코드 라이브러리를 만들고, 게시하고, 호스트하고, 검색하고, 사용하고, 공유하는 Microsoft 지원 방법입니다. CSharp 스크립트 코드 실행 작업은 워크플로 폴더의 루트에 있는 function.prof 파일을 사용하여 NuGet 패키지를 가져오는 기능을 지원합니다. 예를 들면 다음과 같습니다.
site/wwwroot/<workflow-name>/workflow.json
site/wwwroot/<workflow-name>/function.proj
예를 들어 다음 function.proj 파일을 사용하여 NuGet 패키지를 CSharp 스크립트 코드 실행 작업으로 가져올 수 있습니다.
<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# 스크립트(.csx) 파일의 경우,
TargetFramework를netstandard2.0로 설정해야 합니다.이 요구 사항이 패키지 버전이 .로
netstandard2.0제한된다는 의미는 아닙니다.net6.0및 이후 버전의 패키지를 계속 참조할 수 있습니다.function.proj 파일이 초기화되면 Azure Logic Apps 런타임이 파일을 인식하고 사용할 수 있도록 논리 앱을 다시 시작해야 합니다.
다시 시작이 완료되면 런타임은 NuGet.org 필요한 어셈블리를 자동으로 가져오고 스크립트에서 사용할 적절한 폴더에 어셈블리를 배치합니다. 이러한 어셈블리를 수동으로 로드할 필요는 없지만 표준 using 문을 사용하여 코드의 패키지를 직접 참조해야 합니다. 예를 들면 다음과 같습니다.
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; }
}
스트림에 출력 기록
Run 메서드에서 다음과 같이 ILogger 유형과 log을(를) 이름으로 하는 매개 변수를 포함합니다.
public static void Run(WorkflowContext context, ILogger log)
{
log.LogInformation($"C# script successfully executed.");
}
Application Insights에 로그 출력
Application Insights에서 사용자 지정 메트릭을 만들려면 LogMetric의 ILogger 확장 메서드를 사용합니다.
다음 예제에서는 샘플 메서드 호출을 보여줍니다.
logger.LogMetric("TestMetric", 1234);
스크립트에서 워크플로 트리거 및 작업 출력에 액세스
워크플로에서 데이터에 액세스하려면 WorkflowContext 컨텍스트 개체에 사용할 수 있는 다음 메서드를 사용합니다.
GetTriggerResults메서드트리거 출력에 액세스하려면 이 메서드를 사용하여
Outputs속성을 통해 사용할 수 있는 트리거 및 해당 출력을 나타내는 개체를 반환합니다. 이 개체에는 JObject 형식이 있으며 대괄호([])를 인덱서로 사용하여 트리거 출력의 다양한 속성에 액세스할 수 있습니다.다음 예제에서는 트리거 출력의
body속성에서 데이터를 가져옵니다.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 { <...> }GetActionResults메서드작업 출력에 액세스하려면 이 메서드를 사용하여
Outputs속성을 통해 사용할 수 있는 작업 및 해당 출력을 나타내는 개체를 반환합니다. 이 메서드는 작업 이름을 매개 변수로 허용합니다. 다음 예제에서는body이라는 작업에서 출력의 속성에서 데이터를 가져옵니다.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 { <...> }
환경 변수 또는 앱 설정 값에 액세스
환경 변수 또는 앱 설정 값을 가져오려면 다음 예제와 같이 System.Environment.GetEnvironmentVariable 메서드를 사용합니다.
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);
}
워크플로에 데이터 반환
이 작업의 경우 반환 형식 및 Run 문을 사용하여 return 메서드를 구현합니다. 비동기 버전을 원하는 경우 Run 특성과 Task<return-type> 키워드를 사용하여 async 메서드를 구현합니다. 반환 값은 스크립트 동작의 출력 body 속성으로 설정되며, 이후의 워크플로 작업에서 참조할 수 있습니다.
다음 예제에서는 Run 특성, Task<Results> 키워드 및 async 문이 있는 return 메서드를 보여 줍니다.
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;}
}
스크립트 파일 보기
Azure Portal에서 원하는 워크플로가 있는 표준 논리 앱 리소스를 엽니다.
논리 앱 사이드바의 개발 도구에서 고급 도구를 선택합니다.
고급 도구 페이지에서 이동을 선택하여 KuduPlus 콘솔을 엽니다.
디버그 콘솔 메뉴를 열고 CMD를 선택합니다.
논리 앱의 루트 위치인 site/wwwroot로 이동합니다.
.csx 파일이 포함된 워크플로의 폴더로 이동하여 site/wwwroot/{workflow-name} 경로를 따라 이동합니다.
파일 이름 옆에 있는 편집을 선택하여 파일을 열고 봅니다.
Application Insights에서 로그 보기
Azure Portal의 논리 앱 사이드바에 있는 설정에서 Application Insights를 선택합니다. 논리 앱을 선택합니다.
Application Insights 사이드바의 모니터링 아래에서 로그를 선택합니다.
예를 들어 쿼리를 만들어 워크플로 실행에서 추적 또는 오류를 찾습니다.
union traces, errors | project TIMESTAMP, message
컴파일 오류
이 릴리스에서 웹 기반 편집기는 제한된 IntelliSense 지원을 포함하고 있으며, 아직 개선되고 있습니다. 워크플로를 저장할 때 컴파일 오류가 검색되고 Azure Logic Apps 런타임이 스크립트를 컴파일합니다. 이러한 오류는 논리 앱의 오류 로그에 표시됩니다.
런타임 오류
스크립트가 실행될 때 오류가 발생하면 Azure Logic Apps는 다음 단계를 수행합니다.
- 오류를 워크플로에 다시 전달합니다.
- 스크립트 동작을 실패로 표시합니다.
- 스크립트에서 throw된 예외를 나타내는 오류 개체를 제공합니다.
다음 예제에서는 샘플 오류를 보여줍니다.
'CSharp_MyLogicApp-InvalidAction_execute_csharp_script_code.csx' 함수가 '워크플로에 '존재하지 않는' 작업이 없습니다.' 오류와 함께 실패했습니다. 실행 중일 때. 함수 코드가 유효한지 확인하세요.
예제 스크립트
다음 예제 스크립트는 사용자가 수행할 수 있는 다양한 작업을 수행합니다.
HTTP 작업에서 텍스트 파일이 있는 ZIP 파일을 문자열 배열로 압축 해제
// 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;
}
앱 설정에서 키를 사용하여 데이터 암호화
// 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 클래스
워크플로 컨텍스트를 나타냅니다.
메서드
GetActionResult(string actionName)
워크플로의 특정 작업에서 결과를 가져옵니다.
비동기 버전은 다음과 같이 작업<>을 반환 형식으로 사용합니다.
Task<WorkflowOperationResult> GetActionResult(string actionName)
매개 변수
actionName: 작업 이름.
반품
비동기 버전은 비동기 작업을 나타내는 Task 개체를 반환합니다. 작업 결과에는 WorkflowOperationResult 개체가 포함됩니다.
WorkflowOperationResult 개체 속성에 대한 자세한 내용은 WorkflowOperationResult 클래스를 참조하세요.
RunTriggerResult()
워크플로의 트리거에서 결과를 가져옵니다.
비동기 버전은 다음과 같이 작업<>을 반환 형식으로 사용합니다.
Task<WorkflowOperationResult> RunTriggerResult()
매개 변수
없음
반품
비동기 버전은 비동기 작업을 나타내는 Task 개체를 반환합니다. 작업 결과에는 WorkflowOperationResult 개체가 포함됩니다.
WorkflowOperationResult 개체 속성에 대한 자세한 내용은 WorkflowOperationResult 클래스를 참조하세요.
WorkflowOperationResult 클래스
워크플로 작업의 결과를 나타냅니다.
속성
| 속성 | 형식 | Description |
|---|---|---|
| 이름 | 문자열 | 작업 이름을 가져오거나 설정합니다. |
| 입력 | JToken | 작업 실행 입력을 가져오거나 설정합니다. |
| Outputs | JToken | 작업 실행 출력을 가져오거나 설정합니다. |
| StartTime | DateTime? | 작업 시작 시간을 가져오거나 설정합니다. |
| EndTime | DateTime? | 작업 종료 시간을 가져오거나 설정합니다. |
| OperationTrackingId | 문자열 | 작업 추적 ID를 가져오거나 설정합니다. |
| ‘코드’ | 문자열 | 작업의 상태 코드를 가져오거나 설정합니다. |
| 상태 | 문자열 | 작업의 상태를 가져오거나 설정합니다. |
| 오류 | JToken | 작업에 대한 오류를 가져오거나 설정합니다. |
| TrackedProperties | JToken | 작업의 추적된 속성을 가져오거나 설정합니다. |