52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
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<MyWorkflow>();
|
|
|
|
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<TemporalClient> 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<TemporalClient> 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<string>();
|
|
return Results.Ok(result);
|
|
});
|
|
app.Run(); |