[AX]AX2012 创建批处理任务

要运行批处理任务必须有一台batch server,在system administration->Setup->Server configuration下选择一台AOS服务器,选中Is batch server,这台AOS服务器就成为一台batch server的服务器。

和Axapta 3.0一样,要运行批处理任务需要从RunBaseBatch扩展一个类:

class Batch4DemoClass extends RunBaseBatch
{

}


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

public container pack()
{
    return conNull();
}

public boolean unpack(container packedClass)
{
    return true;
}

这里定义了一个最简单的批处理任务,pack和unpack是必须重载的。下面创建一个job来schedule这个批处理:

static void Job_ScheduleBatch2(Args _args)
{
    BatchHeader batHeader;
    BatchInfo batInfo;
    RunBaseBatch rbbTask;
    str sParmCaption = "My Demonstration (b351)";

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

运行这个job,在System administration->Inquries->Batch jobs下就能看到名为“My Demonstration (b351)”的批处理任务,任务的预定运行时间就是当前的时间,很快这个任务就会得到执行,执行完后可以从Batch job history看到run()中显示在infolog里的信息。记得需要在AOT中执行下Incremental CIL generation form X++,因为批处理任务需要在.net下运行。如果要设定任务的排程时间信息,可以使用BatchInfo.parmRecurrenceData()方法。如果我们只希望这个batch job只在相应用户从客户端登陆时在客户端运行,还需要重载Batch4DemoClass的方法runsImpersonated返回false:

public boolean runsImpersonated()
{
    // false means that the batch must run on a client.
    return false;
}

更多内容详见http://msdn.microsoft.com/EN-US/library/cc636647

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值