Example #1
0
        public async Task <IActionResult> SagaStatusChecker(
            [HttpTrigger(AuthorizationLevel.Function, methods: "get", Route = "saga/state/{id}")] HttpRequestMessage request,
            string id,
            [DurableClient] IDurableOrchestrationClient client,
            [CosmosDB(
                 databaseName: @"%CosmosDbDatabaseName%",
                 collectionName: @"%CosmosDbOrchestratorCollectionName%",
                 ConnectionStringSetting = @"CosmosDbConnectionString")] IDocumentClient documentClient,
            ILogger log)
        {
            Uri collectionUri = UriUtils.CreateTransactionCollectionUri();

            TransactionItem item = documentClient
                                   .CreateDocumentQuery <TransactionItem>(collectionUri)
                                   .ToList()
                                   .Where(document => document.Id == id)
                                   .FirstOrDefault();

            if (item == null)
            {
                return(new NotFoundObjectResult($@"Saga with transaction ID = {id} not found."));
            }

            HttpResponseMessage clientResponse = client.CreateCheckStatusResponse(request, id);

            var durableOrchestratorFactory = new DurableClientFactory(httpClient, log);
            var orchestratorRuntimeStatus  = await durableOrchestratorFactory.GetRuntimeStatusAsync(clientResponse);

            var response = new SagaStatusResponse(item.State.ToString(), orchestratorRuntimeStatus);

            return(new OkObjectResult(response));
        }
Example #2
0
        public async void RoutingTest()
        {
            var formCollection = new Dictionary <string, StringValues>
            {
                { "From", "111-555-4512" },
                { "Body", "" }
            };
            var request       = TestFactory.CreateHttpRequest(formCollection);
            var durableClient = DurableClientFactory.CreateDurableClient("SomeFunction");
            var response      = (OkObjectResult)await FnOrchestrator.Process(request, durableClient, logger);

            Assert.Equal(true, response.Value);
        }