- Print
- PDF
Manual Background Print Call from Code
Article summary
Did you find this summary helpful?
Thank you for your feedback
When using the Performance Suite, the following code example can be used to manually call Background printing from the code:
/// <summary>
/// This class gives an example how to call Batch print function from the code
/// </summary>
class LACTestBatchPrintJobScheduleCallExample
{
/// <summary>
/// Tutorial to use Batch print function for Multithread big data processing
/// </summary>
[SuppressBPWarning('BPUpgradeCodeRunBaseRunCalled', 'Intentional call of the run instead of runOperation')]
static void runBatchPrintJobSchedule()
{
LACTestBatchPrintJobSchedule batchPrintJobSchedule;
QueryBuildDataSource qbds;
SRSPrintDestinationSettings pds;
batchPrintJobSchedule = LACTestBatchPrintJobSchedule::construct(LACTestBatchPrintApproach::BatchBundling);
batchPrintJobSchedule.parmReportName = 'ReportName'; // Name of the LAC report
batchPrintJobSchedule.parmTableName = 'TableForReport'; // Name of the table to be used in Query to pass records to generate Reports
batchPrintJobSchedule.parmNumberOfThreads = 4; // Number of threads/tasks. Note that number of actual parallel threads is specified on batch servers. These tasks will be executed when available Batch Thread picks it up
batchPrintJobSchedule.parmMaxRecords = 100; // Maximum of records (limit) to be processed. Takes all from query if 0 is set
batchPrintJobSchedule.runInBatch = NoYes::Yes; // Parameter to run in Batch
batchPrintJobSchedule.batchGroupId = ''; // Batch group ID for the Batch jobs
batchPrintJobSchedule.bundleReports = NoYes::Yes; // Flag to make multiple reports per XML
batchPrintJobSchedule.bundleReportFirstSize = 2; // Number of records bundled into 1st XML in each thread/task. It is not genereated if 0 set.
batchPrintJobSchedule.bundleReportSize = 20; // Number of records bundled into middle (lardge) XML in each thread/task. It is calculated if 0 set by: bundleReportSize = (parmMaxRecords div parmNumberOfThreads) - bundleReportFirstSize - bundleReportLastSize
batchPrintJobSchedule.bundleReportLastSize = 3; // Number of records bundled into last (3rd) XML in each thread/task. It is not genereated if 0 set.
batchPrintJobSchedule.logPerReport = NoYes::Yes; // Flag to use logs per XML generation
batchPrintJobSchedule.logWithLACArchive = NoYes::No; // Flag to wait for responce from Lasernet. DO NOT USE IT on big bundles!
batchPrintJobSchedule.logSummary = NoYes::Yes; // Flag to use logs for execution
batchPrintJobSchedule.logCPU = NoYes::No;
batchPrintJobSchedule.logMemory = NoYes::No;
// Setup query for the Scheduler whihc should pick up only required records. The best that it has single data source with ranges. No sorting or grouping.
batchPrintJobSchedule.updateQueryRunByTable(true);
qbds = batchPrintJobSchedule.queryRun().query().dataSourceNo(1);
//qbds.addRange(...); // Add required ranges on status fields or dates
// Setup print settings
pds = new SRSPrintDestinationSettings();
pds.lacDestinationSettings().skipDelivery(false);
pds.printMediumType(SRSPrintMediumType::LACFax); // Setup required destination. You can use FAX for testing
pds.lacDestinationSettings().destTypes4Print(LACDestinationSettings::SRSPrintMediumType2LACDestTypes4Print(pds.printMediumType()));
pds.lacDestinationSettings().fax('TEST'); //
batchPrintJobSchedule.printSettings = pds.pack();
batchPrintJobSchedule.run();
}
static void main(Args _args)
{
LACTestBatchPrintJobScheduleCall::runBatchPrintJobSchedule();
}
}