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

关于Workflow Core代码中泛型、CreateUser及step/data对象的技术问询

public class MyData
{
    public string Email { get; set; }
    public string Password { get; set; }
    public string UserId { get; set; }
}

public class MyWorkflow : IWorkflow
{
    public void Build(IWorkflowBuilder<MyData> builder)
    {    
        builder
            .StartWith<CreateUser>()
                .Input(step => step.Email, data => data.Email)
                .Input(step => step.Password, data => data.Password)
                .Output(data => data.UserId, step => step.UserId)
           .Then<SendConfirmationEmail>()
               .WaitFor("confirmation", data => data.UserId)
           .Then<UpdateUser>()
               .Input(step => step.UserId, data => data.UserId);
    }
}

问题1:StartWith<CreateUser>()中CreateUser类型的作用

CreateUser是Workflow Core框架中的步骤实现类,必须实现IStepBody接口(或继承StepBody抽象类),用来封装「创建用户」的具体业务逻辑:

  • 工作流执行到这一步时,框架会自动实例化CreateUser类
  • 通过.Input()方法传入的Email和Password,会被赋值给CreateUser类的对应属性,作为业务逻辑的输入
  • 完成创建用户操作后,它会输出生成的UserId,通过.Output()方法回写到工作流的上下文数据MyData中

它是工作流里的一个独立业务单元,把具体逻辑和工作流编排逻辑解耦,让流程定义更清晰。

问题2:step和data对象的类型与含义

  • step对象:类型为CreateUser。因为StartWith<CreateUser>()明确指定了当前步骤的实现类是CreateUser,所以.Input()方法的lambda参数step就是这个类的实例,用来给步骤的输入属性(比如step.Email)赋值。
  • data对象:类型为MyData。从IWorkflowBuilder<MyData>可以看出,整个工作流的上下文数据类型是MyData,data就是这个上下文的实例,存储着工作流全程的状态数据(比如初始传入的Email、Password,后续生成的UserId),用于在不同步骤之间传递数据。

确定它们类型的方法:

  • 步骤类的类型直接看StartWith<>或Then<>中的泛型参数
  • 上下文数据类型看IWorkflowBuilder<>的泛型参数,也就是工作流绑定的业务数据类型

内容的提问来源于stack exchange,提问作者asfand hikmat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:02:17