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

Moryx 8中如何执行自定义Workplan Importer并检查代码?

Moryx 8自定义Workplan导入器执行方案及代码修正

代码重大错误修正

你的导入器代码存在3个关键问题,会导致编译失败或工作计划无法正常运行:

  1. 重复变量声明:三个步骤中重复使用var output声明变量,编译时会报错“变量已定义”,需去掉后续的var关键字直接赋值。
  2. 缺少结束路径:最后一个任务的输出未连接到End节点,会导致工作流无法正常完成,需添加连接逻辑补全路径。
  3. 缺少唯一标识:Moryx的Workplan需要唯一Id才能被系统正确存储和识别,需添加Id赋值。

修正后的完整代码:

namespace Products.Importer
{
    public class WorkplanImporter 
    {
        private readonly IWorkplanManagement _workplanManagement;

        // 注入Moryx工作计划管理服务,用于持久化生成的计划
        public WorkplanImporter(IWorkplanManagement workplanManagement)
        {
            _workplanManagement = workplanManagement;
        }

        public void CreateAndSaveWorkplan()
        {
            var workplan = new Workplan();
            workplan.Id = Guid.NewGuid(); // 添加唯一标识
            workplan.Name = "TestWorkplan";

            var start = WorkplanInstance.CreateConnector("Start", NodeClassification.Start);
            var end = WorkplanInstance.CreateConnector("Ende", NodeClassification.End);
            var failed = WorkplanInstance.CreateConnector("Failed", NodeClassification.Failed);

            workplan.Add(start, end, failed);

            var input = start;
            var output = WorkplanInstance.CreateConnector("Task 1 finished");
            workplan.AddStep(new InsertHousingTask(), new AssembleParameters(), input, output, failed);

            input = output;
            output = WorkplanInstance.CreateConnector("Task 2 finished"); // 去掉var,避免重复声明
            workplan.AddStep(new TestHousingTask(), new AssembleParameters(), input, output, failed);

            input = output;
            output = WorkplanInstance.CreateConnector("Task 3 finished"); // 去掉var
            workplan.AddStep(new InsertPowerbarTask(), new AssembleParameters(), input, output, failed);

            // 连接最后一个任务输出到结束节点,补全工作流路径
            workplan.Connect(output, end);

            // 保存工作计划到系统
            _workplanManagement.SaveWorkplan(workplan);
        }
    }
}

导入器执行方式

Moryx 8中执行自定义导入器有3种常用方式,可根据需求选择:

方式1:通过Initializer模块执行(推荐)

这是最便捷的内置执行方式,步骤如下:

  1. 创建初始化器类,实现IInitializable接口,调用导入器的生成方法:
public class WorkplanImporterInitializer : IInitializable
{
    private readonly WorkplanImporter _importer;

    public WorkplanImporterInitializer(WorkplanImporter importer)
    {
        _importer = importer;
    }

    public void Initialize()
    {
        _importer.CreateAndSaveWorkplan();
    }
}
  1. 在你的模块的ConfigureServices方法中,注册导入器和初始化器:
services.AddTransient<WorkplanImporter>();
services.AddInitializer<WorkplanImporterInitializer>();
  1. 重启Command Center,进入Initializer模块,找到你注册的初始化器,点击执行即可生成工作计划。

方式2:开发Command Center自定义扩展

如果需要在界面手动触发执行,可以开发简单UI扩展:

  1. 创建带有触发按钮的Blazor组件,点击按钮时注入WorkplanImporter并调用CreateAndSaveWorkplan()方法。
  2. 将组件注册为Command Center的扩展模块,即可在界面看到执行入口。

方式3:命令行工具/后台任务

编写控制台应用或后台定时任务,初始化Moryx容器后获取WorkplanImporter实例,调用生成方法实现自动执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:52:41