0

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

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

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。两台服务器都是批处理服务器。我可以在 USMF/系统管理/区域页面查询中看到批处理作业。我能找到的唯一区别是,R2 上的作业在一般情况下填充了 AOS 实例名称,而在 R3 中它是空的。在 R2 中,我可以在日志和批处理历史记录中看到该信息消息,但在 R3 中没有任何内容。

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

4

2 回答 2

2

了解如何将AOS 实例配置为批处理服务器

有3个前提:

  1. 标记为批处理服务器
  2. 时间间隔设置正确
  3. 批次组设置正确

更新:

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

于 2014-09-23T12:23:15.173 回答
0

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

于 2015-10-17T12:53:48.613 回答