You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Scope

  • How to sort a number of orders that have been added to a job chain and to force serialized processing in a predefined order?
  • The solution outline includes a job that is added to the top of the job chain and that would 
    • suspend all incoming orders until a predefined idle timeout is reached and no more orders are expected
    • sort the orders and reinsert them to the next job node in the job chain.

Solution

  • Download sort_orders.zip
  • Extract the archive to any folder within the ./config/live folder of your JobScheduler installation.
  • The archive will extract the files included to a folder sort_orders. 
  • You can store the sample files to a different folder, the solution does not make use of specific folder names.

Implementation

Components

  • The solution implements a job sorter that can be added to the top of any job chain.
    • This job implements a spooler_process() function that suspends all incoming orders.
    • This job is configured for one task and with an idle timeout attribute, i.e. it executes incoming orders sequentually.
    • After the last order this job waits for the duration specified with the idle_timeout attribute for new orders. 
      • The idle timeout is configured by <job idle_timeout="10">.
      • With the idle timeout being expired this job will execute its spooler_exit() function and will sort all orders that have previously been suspended.
        • Sorting is done in alphabetical order.
        • The orders are reinserted to the next job node that follows the sorter job in the job chain.
  • The solution makes use of a job chain job_chain1 that includes the job nodes for the sorter job and a hello job.

Usage

  • Add two orders to the job_chain1 job chain. 
    • Use an order id in descending alphabetical order, e.g. "cba" for the order id of the first order and "abc" for the order id of the second order.
  • Both orders will be suspended in the first node of the job chain.
  • After 10s both orders are reinserted to the next job node in the job chain. 
    • This time the orders are processed in ascending alphabetical order.

 

  • No labels