using MediatR; using Workflow.Application.Features.WorkflowInstances.Commands; using BuildFlow.Shared.Domain.Common; using BuildFlow.Host.Services.Users; namespace BuildFlow.Host.Endpoints.Workflow.WorkflowInstance; /// /// 发起流程实例端点。POST /workflow-instances,按定义创建实例并产生首个 token。 /// public class StartWorkflowInstanceEndpoint( IMediator mediator, ICurrentUserContext currentUserContext) : Endpoint { public override void Configure() { Post("/workflow-instances"); Permissions("workflow-instance:start"); Summary(s => { s.Summary = "Start a new workflow instance"; }); } public override async Task HandleAsync(StartWorkflowInstanceRequest req, CancellationToken ct) { // 发起人取自当前认证用户,写入 WorkflowInstance.InitiatorId,供撤回鉴权与发起人通知使用。 var command = new StartWorkflowInstanceCommand( req.DefinitionCode, req.Title, req.Variables, req.FormDataJson, currentUserContext.GetUserIdGuid()); var result = await mediator.Send(command, ct); await Send.OkAsync(result, ct); } }