AX 2012: Create a Simple Batch
Job :
In this post we’ll learn how to create a very basic custom Batch job
using SysOperation framework. We’ll use the base controller
class SysOperationServiceController and develop a custom
service operation class to achieve the goal.
Requirement:
To create a Batch job to mark all the records as processed in a custom
table MAKSalesTable.
Project overview:
The project shows how simple yet powerful the SysOperation
framework is for developing custom batch jobs as opposed to RunBase
framework since the minimum development needed to create a fully
functional batch job is to create a custom service operation class defining a
single method giving the implementation for the batch operation to be
performed.
Development steps:
1. Create a service operation class MAKSalesTableService having
the following class declaration:
class MAKSalesTableService
{
}
2. Create a new method in the class giving a suitable name like processRecords having
the following definition:
[SysEntryPointAttribute(false)]
public void processRecords()
{
MAKSalesTable makSalesTable;
int counter = 0;
//Determines the runtime
if (xSession::isCLRSession())
{
info('Running in a CLR
session.');
}
else
{
info('Running in an
interpreter session.');
//Determines the tier
if (isRunningOnServer())
{
info('Running on the
AOS.');
}
else
{
info('Running on the
Client.');
}
}
//Actual operation performed
while select forUpdate
makSalesTable
{
ttsBegin;
makSalesTable.Processed =
NoYes::Yes;
makSalesTable.update();
ttsCommit;
counter++;
}
info(strFmt("Successfully
processed %1 records.", counter));
}
3. Create an action menu item MAKSalesTableService pointing
to SysOperationServiceController.
4. Set the parameters of the action menu item to the service operation
just created, MAKSalesTableService.processRecords.
5. Compile the service operation class and generate incremental IL.
6. Click on the action menu item to run the batch job. Check the Batch
processing checkbox to run the job in CLR runtime which is the batch
server execution environment.
7. Click System administration > Inquiries > Batch jobs to
view the status of the job. You may also click on the Log button
to view the messages written to infolog during the job execution.
Preconditions:
Before running the batch job, all the records were unprocessed:
Post conditions:
After running the batch job, the list page shows that all the records
are now marked as processed:
0 comments:
Post a Comment