public static async Task <List <string> > RunOrchestrator( [OrchestrationTrigger] IDurableOrchestrationContext context) { // param into orchestrator OrchestratorInput oi = context.GetInput <OrchestratorInput>(); // call activity function await context.CallActivityAsync <List <string> >(nameof(MyActivityFunction), oi.Url); // call durable entity List <string> result = await ContactDurableEntity(context); // call http var request = new DurableHttpRequest(HttpMethod.Post, new Uri(oi.Url), content: "myContent"); DurableHttpResponse response = await context.CallHttpAsync(request); return(result); }
public static async Task <IActionResult> RunAsync( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext executionContext, [DurableClient] IDurableOrchestrationClient starter) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name ??= data?.name; if (name == null) { return(new BadRequestObjectResult("Please pass a name on the query string or in the request body")); } var orchestratorInput = new OrchestratorInput { CorrelationId = new Guid(), Name = name.ToString() }; var instanceId = await starter.StartNewAsync(nameof(DynamicOrchestrator), orchestratorInput); DurableOrchestrationStatus durableOrchestrationStatus = await starter.GetStatusAsync(instanceId); while (durableOrchestrationStatus.RuntimeStatus != OrchestrationRuntimeStatus.Completed) { await Task.Delay(200); durableOrchestrationStatus = await starter.GetStatusAsync(instanceId); } return((ActionResult) new OkObjectResult(durableOrchestrationStatus.Output)); }