Пример #1
0
        public async Task <IActionResult> RaiseEvent(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "statemachine/{instanceId}/event")] HttpRequest req,
            [DurableClient] IDurableClient client,
            string instanceId,
            ILogger log)
        {
            if (req.ContentLength == 0)
            {
                return(new BadRequestObjectResult($"The request payload must contain a valid cloud event JSON object."));
            }

            var json = JObject.Parse(await req.ReadAsStringAsync());

            var eventData = json.ToObject <WorkflowEvent>();

            if (eventData == null || eventData.EventType == null || eventData.EventName == null)
            {
                return(new BadRequestObjectResult($"The request payload must be a valid cloud event JSON object."));
            }

            await client.RaiseWorkflowEventAsync(instanceId, eventData);

            log.LogInformation($"Raised event of type '{eventData.EventType}' to workflow ID = '{instanceId}.");

            return(client.CreateCheckStatusResponse(req, instanceId));
        }