【问题标题】:Way to determine if within a running scheduled task?确定是否在运行计划任务中的方法?
【发布时间】:2019-11-07 09:55:33
【问题描述】:

如何在图形处理逻辑中判断它是通过计划任务而不是通过用户交互执行的?

PXProcessing 好像没有多少,AUSchedule 表中的记录也没有

原因:如果我在交互式会话中,我想为我创建的文档重定向到多个屏幕。在计划任务中,我不想让这些重定向使服务器混乱

【问题讨论】:

    标签: graph acumatica schedule


    【解决方案1】:

    查看 SOSshipmentEntry 的代码存储库。搜索 SOInvoiceEntry,它将带您进入创建发票的 Action 函数。您可以看到他们调用了 adapter.MassProcess 函数来查看它是否在进程中运行,并根据状态抛出异常、设置信息或错误。 您还可以看到 AllowRedirect 标志正在使用中。

    以下是在发货发票创建结束时重定向到发票的示例:

    SOInvoiceEntry ie = PXGraph.CreateInstance<SOInvoiceEntry>();
    ......
    ......
    if (adapter.AllowRedirect && !adapter.MassProcess && created.Count > 0)
    {
        using (new PXTimeStampScope(null))
        {
            ie.Clear();
            ie.Document.Current = ie.Document.Search<ARInvoice.docType, ARInvoice.refNbr>(((ARInvoice)created[0]).DocType, ((ARInvoice)created[0]).RefNbr, ((ARInvoice)created[0]).DocType);
            throw new PXRedirectRequiredException(ie, "Invoice");
        }
    }
    

    【讨论】:

    • 这当然有效...如果您有适配器对象!知道如何在流程委托中获取当前适配器吗?例如在图中初始化: this.Records.SetProcessDelegate( delegate (List list) { SubmitRecords(list, false); });
    • 图表 ARDocumentRelease 显示他们调用了下一个函数,并将 IsMassProcess 作为函数参数发送给它一个 true。如果您希望使用适配器进行此操作,请查看 SOPostShipment 中的代码。他们使用特定的操作、图和参数设置流程目标,并在目标图上调用操作。
    猜你喜欢
    • 2013-05-03
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多