using Microsoft.AspNetCore.Http.HttpResults; using Temporalio.Client; using Temporalio.Extensions.Hosting; var builder = WebApplication.CreateBuilder(args); // Add services to the container. // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi builder.Services.AddOpenApi(); builder.Services .AddHostedTemporalWorker( clientTargetHost: "localhost:7233", clientNamespace: "default", taskQueue: MyWorkflow.TaskQueue) .AddWorkflow(); builder.Services.AddSingleton(ct => TemporalClient.ConnectAsync(new() { TargetHost = "localhost:7233" })); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.MapOpenApi(); } app.UseHttpsRedirection(); app.MapGet("/", async (Task clientTask, string? name) => { var client = await clientTask; var isRunning = await client.StartWorkflowAsync( (MyWorkflow wf) => wf.RunAsync(name ?? "Temporal"), new(id: $"aspnet-sample-workflow-{Guid.NewGuid()}", taskQueue: MyWorkflow.TaskQueue)); return Results.Ok(isRunning.Id); }); app.MapGet("/Get", async (Task clientTask, string GetId) => { var client = await clientTask; var handle = client.GetWorkflowHandle(GetId); var responce = await handle.DescribeAsync(); if (responce.Status != Temporalio.Api.Enums.V1.WorkflowExecutionStatus.Completed) return Results.Ok(responce.Status.ToString()); var result = await handle.GetResultAsync(); return Results.Ok(result); }); app.Run();