自定义屏幕上的新操作定义

New Action Definitions on a custom screen

我正在尝试在 2020R1 的自定义屏幕上实施新的操作定义,为 2021R2 做准备。我似乎无法将这些操作分组到文件夹中,并且最后一个操作不会隐藏。我错过了什么?

这是在图形定义中:

    public override void Configure(PXScreenConfiguration graph)
    {
        var context = graph.GetScreenConfigurationContext<NGBiopsyEntry, NGBiopsy>();
        context.AddScreenConfigurationFor(screenConfig =>
            screenConfig
            .WithActions(actions =>
            {
                actions.Add(a=>a.ActionSubmitBiopsy);

                actions.Add(a=>a.ActionRefreshWorkTickets,
                            config=>config
                                .InFolder(FolderType.ActionsFolder));

                actions.Add(a=>a.ActionStartPGTMTesting,
                    config=>config
                        .InFolder(FolderType.ActionsFolder));

                actions.Add(a=>a.ActionSetEmbryoIDGen,
                    config=>config
                        .InFolder(FolderType.ActionsFolder)
                        .IsHiddenAlways());
            }));
    }

但我还是明白了:

即使在重新启动应用程序、重建 dll、发布自定义项目之后。我还缺少其他设置吗?

新的工作流程非常有趣 整理。今年的 Summit 上有一场精彩的演讲,所以请密切关注 post 视频的发布时间,以获得更多精彩的额外细节。这应该是一个非常简单的修复,但它不是通用的,所以我将分享您可能需要添加菜单操作的 2 种方法。

引起我注意的第一件事是您的菜单操作不在您指定的 Actions 文件夹中。这是一个非常明显的迹象,表明上下文不太正确。我把我的分成两部分,我想你用一个方法设置你的。

在这两种情况下,您都需要首先覆盖配置,指定图表和主要 DAC。然后,您使用特定于您的图形和主 DAC 的 WorkflowContext 定义一个 Configure。之后,事情开始变得有点复杂。

这是针对尚未配置屏幕的新自定义屏幕,还是要扩展已经存在的工作流程?在第一个示例中,我将几个打印操作添加到已经定义了工作流(和屏幕配置)的 POReceiptEntry 图中。此外,我正在从 POReceiptEntry_Extension class 添加我的操作,因此我需要在添加上指定它。

public override void Configure(PXScreenConfiguration config)
    => Configure(config.GetScreenConfigurationContext<POReceiptEntry, POReceipt>());

protected virtual void Configure(WorkflowContext<POReceiptEntry, POReceipt> context)
{ 
    context.UpdateScreenConfigurationFor(screen =>
    {
        return screen
            .WithActions(actions =>
            {
                actions.Add<POReceiptEntry_Extension>(
                    g => g.printItemLabel,
                    a => a.InFolder(FolderType.ActionsFolder)
                    );
                actions.Add<POReceiptEntry_Extension>(
                    g => g.printSOLabel,
                    a => a.InFolder(FolderType.ActionsFolder)
                    );
            });
    });
}

向自定义屏幕添加操作时,屏幕配置只有在您创建后才会创建。在此示例中,您将看到 UpdateScreenConfigurationFor 更改为 AddScreenConfigurationFor。另外,您会看到这次添加没有指定扩展名,因为操作是在我的自定义(基本)图中定义的。

public override void Configure(PXScreenConfiguration config)
    => Configure(config.GetScreenConfigurationContext<MyGraph, MyDAC>());

protected virtual void Configure(WorkflowContext<MyGraph, MyDAC> context)
{
    context.AddScreenConfigurationFor(screen =>
    {
        return screen
            .WithActions(actions =>
            {
                actions.Add(
                    g => g.myAction,
                    a => a.InFolder(FolderType.ActionsFolder)
                    );
            });
    });
}

其他读者注意事项:

我正在使用 2021R1,为了其他人的利益,我已经与 Kyle 交谈并了解到他正在使用 2020R1。他的具体实现有点复杂,需要加上

.AddDefaultFlow(workflow => workflow...

创建他的默认工作流程。这可以在屏幕定义中完成,也可以从自定义项目的屏幕编辑器中完成,尽管我不记得我们的系统管理员是否这样做了,或者我的示例中的 AddScreenConfiguration 是否为我处理了它。