Versions Compared

Key

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

...

Code Block
languagebash
titleNew Child command, for use in .ecf scripts
# Note: because --queue is treated like a child command(init,complete,event,label,meter,abort,wait), the task path ECF_NAME is read from the environment

# The --queue command will search up the node hierarchy for the queue name. If not found it fails.

step=$(ecflow_client --queue queue_name  active)                # returns first queued/aborted step from the server and makes it active, Return "NULL" for the last step.
ecflow_client --queue queue_name complete $step                 # Tell the server that step has completed for the given queue
ecflow_client --queue queue_name aborted  $step                 # Tell the server that step has aborted for the given queue
no_of_aborted=$(ecflow_client --queue queue_name no_of_aborted) # returns as a string the number of aborted steps 
ecflow_client --queue queue_name reset                          # sets the index to the first queued/aborted step. Allows steps to be reprocessed for errors

Heres how it could be used in a script:

Code Block
languagebash
step=""
QNAME="my_queue_name"
while [1 == 1 ] ; do
   # this return the first queued/aborted step, then increments to next step, return <NULL> when all steps processed
   step=$(ecflow_client --queue=$QNAME active) # of the form string  i.e \"003\". this step is now active
   if [[ $step == "<NULL>" ]] ; then
        break; # no more steps
   fi
   ...
   ecflow_client --queue=$QNAME $step complete   # tell ecflow this step completed
done
            
trap() { ecflow_client --queue=$QNAME $step aborted # tell ecflow this step failed }

This attribute makes it possible to follow a producer(server)/consumer(tasks) pattern. Note additional task consumers can be added for load balancing.