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

如何在MORYX应用中创建依赖前序流程结果的WorkplanStep?

在MORYX中实现依赖前序结果的WorkplanStep

核心逻辑

要实现基于前序活动结果的条件判断,核心是在自定义WorkplanStep的执行代码中获取前序步骤的输出数据,通过预设条件完成评估后,输出对应的"Success"或"Failure"标识,并同步设置步骤状态。

具体实现步骤

1. 定义Step的参数与结果模型

先为自定义Step创建参数(接收前序数据、配置条件阈值)和结果(输出评估结论)的模型类:

// 自定义Step参数模型,用于接收前序结果和配置判断条件
public class ConditionalStepParams : WorkplanStepParameters
{
    // 前序步骤输出的关键数据字段(根据实际场景调整)
    public decimal PredecessorOutputValue { get; set; }
    // 判定Success的阈值条件
    public decimal SuccessThreshold { get; set; }
}

// 自定义Step结果模型,用于输出评估结论
public class ConditionalStepResult : WorkplanStepResult
{
    public string EvaluationResult { get; set; }
}

2. 实现Step的执行逻辑

继承WorkplanStepBase,重写ExecuteAsync方法,完成前序结果获取、条件评估和结果输出:

public class ConditionalEvalStep : WorkplanStepBase<ConditionalStepParams, ConditionalStepResult>
{
    protected override async Task<ConditionalStepResult> ExecuteAsync(ConditionalStepParams parameters, IWorkplanContext context, CancellationToken cancellationToken)
    {
        var stepResult = new ConditionalStepResult();

        // 1. 获取前序步骤的结果(替换为实际的前序结果类型)
        var predecessorResult = context.PreviousResults.OfType<PredecessorStepResult>().FirstOrDefault();
        if (predecessorResult == null)
        {
            stepResult.EvaluationResult = "Failure";
            stepResult.Status = StepStatus.Failed;
            return stepResult;
        }

        // 2. 执行条件评估
        bool isSuccess = predecessorResult.MeasuredData > parameters.SuccessThreshold;
        stepResult.EvaluationResult = isSuccess ? "Success" : "Failure";
        stepResult.Status = isSuccess ? StepStatus.Succeeded : StepStatus.Failed;

        return await Task.FromResult(stepResult);
    }
}

3. 配置步骤间的依赖关系

  • 如果用可视化设计器:将当前ConditionalEvalStep与前序步骤建立数据连接,确保前序结果能传递到当前Step的参数中。
  • 如果用代码配置Workplan:通过StepConnection指定依赖和字段映射:
var targetWorkplan = new Workplan
{
    Steps = new List<IWorkplanStep>
    {
        new PredecessorStep(), // 前序步骤
        new ConditionalEvalStep() // 当前条件判断步骤
    },
    Connections = new List<StepConnection>
    {
        new StepConnection
        {
            SourceStepIndex = 0,
            TargetStepIndex = 1,
            // 映射前序结果字段到当前Step的参数
            ParameterMappings = new List<ParameterMapping>
            {
                new ParameterMapping
                {
                    SourceProperty = nameof(PredecessorStepResult.MeasuredData),
                    TargetProperty = nameof(ConditionalStepParams.PredecessorOutputValue)
                }
            }
        }
    }
};

关键注意点

  • 确保前序步骤的结果类型与代码中OfType<T>的泛型参数匹配,避免无法获取数据。
  • 若存在多个前序步骤,需通过步骤名称或索引精准定位目标结果,避免数据混淆。
  • 步骤的Status属性要与EvaluationResult对应,保证MORYX流程引擎能正确识别步骤状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:15