为什么批量作业在一台服务器上工作而在另一台服

时间:2014-09-23 11:38:37

标签: batch-processing axapta dynamics-ax-2012 dynamics-ax-2012-r2

我在两台服务器上有相同的代码。

我有将批处理作业添加到队列的工作

static void Job_ScheduleBatch2(Args _args)
{
BatchHeader batHeader;
BatchInfo batInfo;
RunBaseBatch rbbTask;
str sParmCaption = "My Demonstration (b351) 2014-22-09T04:09";
SysRecurrenceData sysRecurrenceData = SysRecurrence::defaultRecurrence();
;
sysRecurrenceData = SysRecurrence::setRecurrenceStartDateTime(sysRecurrenceData, DateTimeUtil::utcNow());
sysRecurrenceData = SysRecurrence::setRecurrenceUnit(sysRecurrenceData,     SysRecurrenceUnit::Minute,1);

rbbTask = new Batch4DemoClass();
batInfo = rbbTask .batchInfo();
batInfo .parmCaption(sParmCaption);
batInfo .parmGroupId(""); // The "Empty batch group".
batHeader = BatchHeader ::construct();
batHeader .addTask(rbbTask);
batHeader.parmRecurrenceData(sysRecurrenceData);
//batHeader.parmAlerts(NoYes::Yes,NoYes::Yes,NoYes::Yes,NoYes::Yes,NoYes::Yes);
batHeader.addUserAlerts(curUserId(),NoYes::No,NoYes::No,NoYes::No,NoYes::Yes,NoYes::No);
batHeader .save();
info(strFmt("'%1' batch has been scheduled.", sParmCaption));
}

我有批处理工作

class Batch4DemoClass extends RunBaseBatch
{
int methodVariable1;
int metodVariable2;

#define.CurrentVersion(1)
#localmacro.CurrentList
    methodVariable1,
    metodVariable2
endmacro
}

public container pack()
{

 return [#CurrentVersion,#CurrentList];
}


public void run()
{
    // The purpose of your job.
    info(strFmt("epeating batch job Hello from Batch4DemoClass .run at %1"
        ,DateTimeUtil ::toStr(
            DateTimeUtil ::utcNow())
        ));

}

public boolean unpack(container _packedClass)
{
Version version = RunBase::getVersion(_packedClass);

switch (version)
{
    case #CurrentVersion:
        [version,#CurrentList] = _packedClass;
        break;

    default:
        return false;

}
return true;
}

在一台服务器上它运行并且在批处理历史记录中我可以看到它将消息保存到批处理日志,而在另一台服务器上它什么都不做。一台服务器是R2(正在运行)和R3(未运行)。

两个代码都被翻译为CIL。两台服务器都是Batch服务器。我可以在USMF /系统管理/区域页面中查看批处理作业。我能找到的唯一区别是R2上的作业已经填充了Genereal中的AOS实例名称而R3中的作业是空的。在R2中,我可以在日志和批处理历史记录中看到信息消息,但R3中没有任何内容。

知道如何让批处理作业运行吗?

2 个答案:

答案 0 :(得分:2)

了解如何Configure an AOS instance as a batch server

有三个先决条件:

  1. 标记为批处理服务器
  2. 正确设置时间间隔
  3. 正确设置批次组
  4. <强>更新

    删除批处理作业的用户可能会使批处理作业永远不会完成。一旦执行队列填满,就不会再发生进一步的进展。 删除有问题的批处理作业是有问题的,因为只有所有者才能这样做!然后考虑更改BatchJob.aosValidateDelete

答案 1 :(得分:0)

是的,值得尝试清除表格,如果您可以提供已经运行的批量作品及其状态的屏幕截图,那可能会有所帮助。