Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The job chain provided by the sample is not specifiic for this solution, the same applies to the query job..
  • TheThe prepare job is used to dynamically create calculate the number of parallel instances of the query job. In the sample this This job creates an order parameter parallel_executions=5 for use with the subsequent generate job.
  • The generate job implements the solution by creating the number of orders specified by the parallel_executions parameter. 
    • Each order as is added two the following parameters
      • number_of_orders: a copy of the parallel_executions parameter.
      • order_sequence: the sequence number of the order created. The sequence starts from 1 up to the value of the parallel_executions parameter.
      • synchronize_required_orders: the number of orders that the synchronize job waits for. This includes the value of the parallel_executions parameter incremented by 1 for the main order. The prefix synchronize of the parameter name reflects the state that the synchronize job node is assigned in the job chain.
    • The orders are assigned the state that is associated with the next job node, the query job, i.e. the orders will be executed starting with that state.
    • The orders are assigned the end state that is associated with the synchronize job.
  • The query job is configured for a maximum number of 3 parallel tasks via the attribute <job tasks="3">. It could be configured for any number of parallel tasks. For the sake of this sample the limitation shows the behavior of the job to wait for processes to become free that could be assigned to subsequent orders for the same job.
  • The job synchronize is used to synchronize splitted orders and is provided by the Sync JITL Job with the Java class com.sos.jitl.sync.JobSchedulerSynchronizeJobChainsJSAdapterClass.
    • This job is used without parameters.

...

  • Add an order to job chain parallel_execution by use of JOC.
  • Consider the processing that would 
    • split the execution into 9 5 subsequent orders that run for the query job.
    • move the current order to the synchronize job node.
  • The splitted orders for the query job will arrive in the synchronize job node and will wait for all orders to be completed. With all splitted orders being completed the processing will continue with the job do_something.