You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用CreateWorkflow传参后,无法从WorkflowStarted事件获取参数的问题

解决WorkflowStarted事件中无法获取工作流参数的问题

我帮你梳理下这个问题,你遇到的无法在WorkflowStarted事件回调里拿到传入参数的情况,主要有两个关键问题需要修正:

1. 修正字典声明的语法错误

你代码里的字典泛型写法不对,Dictionary<"string", object>是非法语法——泛型参数需要的是类型,不是字符串字面量,应该改成Dictionary<string, object>。这个错误会导致参数根本没正确传递到工作流实例中。

2. 正确在WorkflowStarted事件中访问参数

在WorkflowStarted的事件回调里,你可以通过e.WorkflowInstance.Parameters属性直接获取传入的参数集合。这个集合就是你调用CreateWorkflow时传入的字典,直接通过键名就能拿到对应的值。

修正后的完整代码示例

// 订阅WorkflowStarted事件
this.workflowRuntime.WorkflowStarted += (o, e) => 
{
    // 从Parameters中获取参数,建议先判断键是否存在避免异常
    if (e.WorkflowInstance.Parameters.ContainsKey("DeploymentId"))
    {
        int deploymentId = (int)e.WorkflowInstance.Parameters["DeploymentId"];
        // 这里可以使用参数做后续处理
        Console.WriteLine($"获取到DeploymentId: {deploymentId}");
    }
};

int deploymentId = 100201;
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("DeploymentId", deploymentId);

// 创建并启动工作流实例
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(
    workflowDefinitionReader, 
    rulesReader, 
    dictionary);
workflowInstance.Start();

额外提醒

  • 访问参数时一定要做键存在性检查,否则如果参数名拼写错误,会抛出KeyNotFoundException。
  • 确保你使用的是.NET Framework的Windows Workflow Foundation(WF)组件,这个API是WF特定的,如果你用的是其他工作流框架,API可能会有差异。

内容的提问来源于stack exchange,提问作者J.L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:45:29