如何在 Moryx 8 中执行工作计划导入器?

问题描述 投票:0回答:1

我目前正在开发 Moryx 8,想要配置一个自动创建工作计划的自定义导入器。为此,我创建了一个自定义工作计划导入器。我的问题是,如何执行此导入程序以便创建工作计划?

这是我当前的导入器,提供了创建测试工作计划的方法。任务存在并且参数没有问题。

namespace Products.Importer
{
    public class WorkplanImporter 
    {
        public Workplan CreateWorkplan()
        {

            var workplan = new Workplan();
            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");

            workplan.AddStep(new TestHousingTask(), new AssembleParameters(), input, output, failed);

            input = output;
            output = WorkplanInstance.CreateConnector("Task 3 finished");

            workplan.AddStep(new InsertPowerbarTask(), new AssembleParameters(), input, output, failed);

            return workplan;
        }
    }
} 

我已经使用过初始化程序,所以我尝试找到一个选项来在命令中心的适当模块中执行导入程序。但对我来说,没有选择执行像进口商这样的事情。下图显示了我试图找到执行导入程序的选项的位置。

Command Center Workplan Editing Module

如果有人能告诉我如何执行工作计划导入器并检查我提供的导入器是否存在重大错误,我将不胜感激。谢谢!

.net moryx
1个回答
0
投票

工作计划和产品在 MORYX 中是耦合的,因为工作计划通常用于产品配方中。您正在查看的 WorkplanEditing 模块当前仅用于在由该模块管理的会话中实际编辑工作计划。 为了创建

Workplan
,我们使用
ProductImporterBase
类的实现。

工作计划导入器

[ExpectedConfig(typeof(WorkplanImporterConfig))]
[Plugin(LifeCycle.Transient, typeof(IProductImporter), Name = nameof(WorkplanImporter))]
public class WorkplanImporter : ProductImporterBase<WorkplanImporterConfig, WorkplanImporterParameters>
{
    public IWorkplans WorkplanStorage { get; set; }

    protected override Task<ProductImporterResult> Import(ProductImportContext context, WorkplanImporterParameters parameters)
    {
        var workplan = CreateWorkplan();
        WorkplanStorage.SaveWorkplan(workplan);
        return Task.FromResult(new ProductImporterResult { Saved = true });
    }

    private Workplan CreateWorkplan() 
    {
         // Your Code...
    }
}

public class WorkplanImporterParameters {}

public class WorkplanImporterConfig : ProductImporterConfig {}

ProductImporterBase
的实现将创建您在方法中设计的工作计划,并使用注入的
WorkplanStorage
组件保存它。 导入器的执行是通过
IProductManagement
外观完成的,您可以在 here 找到它。 如果您不想直接从代码执行
WorkplanImporter
,您可以使用
Moryx.AbstractionLayer.Products.Endpoints
包中外观上的 Rest API(代码可以在 here 找到)或 Web 界面。 从您的屏幕截图中我了解到您正在使用 Web 界面。如果您想从那里执行工作计划,您可以使用
Moryx.Products.Web
nuget 包。在产品管理的模块配置中配置
WorkplanImporter
后,即可在Web界面中选择它。

模块配置

{
  "MaxImporterWait": 20,
  "Importers": [
    {
      "PluginName": "DefaultImporter"
    },
    {
      "$type": "Products.Importer.WorkplanImporterConfig, Products.Importer",
      "PluginName": "WorkplanImporter"
    }
  ],
  ...
}

注: 从您的代码示例来看,您的导入程序似乎不需要任何配置或参数化。因此,

WorkplanImporterConfig
WorkplanImporterParameters
类留空。 通常,您可以使用导入器的配置来提供在模块配置中配置的值(例如主机 url),而参数可用于为导入器的每次执行提供值(例如工作计划的名称)。

© www.soinside.com 2019 - 2024. All rights reserved.