Manual Background Print Call from Code

Prev Next

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();
    }

}

Was this page helpful? Let us know at knowledgebase.feedback@lasernetgroup.com