사용자 지정 워크플로 활동 또는 플러그인에서 환경 변수에 액세스

소개



환경 변수는 환경마다 다른 전역 변수를 저장하는 좋은 방법입니다. 일부 일반적인 사용 사례는 흐름에서 참조할 수 있도록 AppID를 저장하거나 거기에 데이터를 저장하는 경우 Sharepoint 사이트 URL일 수 있습니다. EnvironmentVariableDefinition 및 EnvironmentVariableValue 테이블 아래 Dataverse에 저장됩니다.

Power Automate에 내장되어 있고 비교적 쉽게 액세스할 수 있지만 기존 플러그인 또는 사용자 지정 워크플로 활동에서 참조해야 하는 경우 FetchXML을 사용하여 검색해야 합니다.

코드 조각




protected override void Execute(CodeActivityContext context)
{

    try
    {
        IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
        IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
        // Use the context service to create an instance of IOrganizationService.
        IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.InitiatingUserId);

        string appID = GetEnvironmentVariable(service, "appID");

    }
    catch (Exception ex)
    {
        throw new InvalidPluginExecutionException(ex.ToString());
    }
}

private string GetEnvironmentVariable(IOrganizationService service, string envVariableName)
{

    string fetchXml = string.Empty;
    EntityCollection result = null;
    string envVariableValue = string.Empty;

    fetchXml = String.Format(@"<fetch version=""1.0"" output-format=""xml-platform"" mapping=""logical"" distinct=""false"">
            <entity name=""environmentvariablevalue"">
            <attribute name=""environmentvariablevalueid"" />
            <attribute name=""value"" />
            <link-entity name=""environmentvariabledefinition"" from=""environmentvariabledefinitionid"" to=""environmentvariabledefinitionid"" link-type=""inner"">
                <attribute name=""displayname"" />
                <filter type=""and"">
                <condition attribute=""displayname"" operator=""eq"" value=""{0}"" />
                </filter>
            </link-entity>
            </entity>
        </fetch>", envVariableName);

    result = service.RetrieveMultiple(new FetchExpression(fetchXml));

    if (result != null && result.Entities.Count > 0)
    {
        envVariableValue = result.Entities[0].GetAttributeValue<string>("value");
    }

    return envVariableValue;

}



설명



따라서 Execute 메서드 아래에는 클래스가 DataVerse에 액세스할 수 있도록 하는 표준 상용구 코드가 있습니다.

GetEnvironmentVariable 메서드 내부는 실제로 모든 작업이 있는 곳입니다. envVariableName이라는 매개변수를 받은 다음 FetchXML을 사용하여 호출하여 해당 이름으로 환경 값을 검색합니다.

좋은 웹페이지 즐겨찾기