Elsa依据工作流程Id实例化工作流并调用相关节点信号量执行

本文介绍了一个使用Elsa框架的工作流实例化过程,并通过HTTP请求触发特定的工作流信号量来推进工作流状态。代码示例展示了如何注入工作流存储和信号量服务,以及如何根据ID获取工作流实例并触发用户指定的动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Elsa依据工作流程Id实例化工作流并调用相关节点信号量执行

using Elsa;
using Elsa.Persistence;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Elsa.Persistence.Specifications.WorkflowInstances;
using Elsa.Activities.Signaling.Services;
using System.Threading;

namespace Workflow.Dashboard.Host.Pages.Test
{
    //http://localhost:49814/test/instance?id=576561afe7264ccd854b4b4ce1fcae45&userAction=Approve
    public class instanceModel : PageModel
    {
        private readonly IWorkflowInstanceStore workflowInstanceStore;
        private readonly ISignaler signaler;

        public instanceModel(IWorkflowInstanceStore workflowInstanceStore, ISignaler signaler)
        {
            this.workflowInstanceStore = workflowInstanceStore;
            this.signaler = signaler;
        }
        [BindProperty(SupportsGet = true)]
        public string id { get; set; }

        [BindProperty(SupportsGet = true)]
        public string userAction { get; set; }


        public string DisplayName { get; set; }
        public async Task OnGetAsync()
        {
            var ins = await workflowInstanceStore.FindAsync(new WorkflowInstanceIdSpecification(id));
            DisplayName = ins.DefinitionId;

            var startedWorkflows = await signaler.TriggerSignalAsync(userAction, workflowInstanceId:id);
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值