簡體   English   中英

持久功能:如何將參數傳遞給 Orchestrator?

[英]Durable Functions: How to pass a parameter to the Orchestrator?

我是 Azure 持久功能的新手,並且一直在遵循“Azure Serverless Computing Cookbook”一書中的示例代碼,但我被卡住了,因為我的 Orchestrator 中的 .GetInput function 返回 Z37A6259CC0C1DAFFAE299A78。 我的 Blob 觸發器在調用我的 Orchestrator 時將文件名作為參數傳遞。 我認為它調用了錯誤的重載 function 但不知道如何調用正確的。

await starter.StartNewAsync("CSVImport_Orchestrator", name); 
        [FunctionName("CSVImport_Orchestrator")]
        public static async Task<List<string>> RunOrchestrator([OrchestrationTrigger] IDurableOrchestrationContext context)
        {
            var outputs = new List<string>();
            string CSVFileName = context.GetInput<string>(); //<<== returns null???
            {
                List<Employee> employees = await context.CallActivityAsync<List<Employee>>("ReadCSV_AT", CSVFileName);
            }
            return outputs;
        }

        [FunctionName("CSVImportBlobTrigger")]
        public static async  void Run([BlobTrigger("import-obiee-report/{name}", Connection = "StorageConnection")]Stream myBlob, string name, [DurableClient]IDurableOrchestrationClient starter, ILogger log)
        {
            string instanceId = await starter.StartNewAsync("CSVImport_Orchestrator", name); 
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
        }

在此先感謝您的幫助。

您正在調用StartAsync(string, string)的非泛型重載,其中第二個string參數表示 InstanceId 而不是輸入參數。 還有一個通用重載,其中第二個參數表示數據。 您正在傳遞一個string ,因此重載決議會看到兩個潛在的候選者。 然后它更喜歡非通用的,因為它是完全匹配的,因此“丟失”了您的數據。

如果您確實需要輸入數據的string ,則需要明確指定通用參數以強制編譯器 select 正確重載:

await starter.StartAsync<string>("CSVImport_Orchestrator", name);

現在,文檔還聲明輸入應該是 JSON 可序列化的object 從技術上講, string是,但我不確定它如何與協調器的序列化程序一起使用。 您可以改為傳遞包含您的數據的 class 。 這樣做的好處是可以正確推斷出通用參數:

public class Data {
   public string Name { get; set; } 
} 

// calling 
await starter.StartAsync("CSVImport_Orchestrator", new Data { Name = name });

// using 
var csvFileName = context.GetInput<Data>()?.Name;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM