ecFlow's documentation is now on readthedocs!

Currently, the ecflow python API provides quite extensive functionality.

However sometimes we just want to query simple state on the command line, and using the full-blown python API, can seem like overkill.

Query can be used in these simple cases

Query the status of attributes i.e. state, dstate, repeat,event, meter, variable, limit , limit_max or trigger expression without blocking

  • state    return   [unknown | complete | queued  |  aborted | submitted | active] to standard out
  • dstate   return [unknown | complete | queued  |  aborted | submitted | active | suspended] to standard out
  •  repeat   returns current value as a string to standard out, can also retrieve the next and previous value of the repeat. See examples below
    The next/prev will always stay within repeat bounds. hence calling 'next' on the last value of the repeat, will return last value.
    Likewise calling 'prev' on a repeat that has not started, will return the first/start value.
  • event         return 'set' | 'clear' to standard out
  • meter        return value of the meter to standard out
  • limit           return the current value of the limit
  • limit_max  return the maximum value of the limit
  • label          return new value otherwise the old value
  • variable     return value of the variable, repeat or generated variable to standard out, will search up the node tree
  • trigger       returns 'true' if the expression is true, otherwise 'false'

 If this command is called within a '.ecf' script we will additionally log the task calling this command

This is required to aid debugging for excessive use of this command

 The command will fail if the node path to the attribute does not exist in the definition and if:

  • repeat                The repeat is not found
  • event                  The event is not found
  • meter                 The meter is not found
  • limit/limit_max   The limit is not found
  • label                   The label is not found
  • variable              No user or generated variable or repeat of that name found on node, or any of its parents
  • trigger                Trigger does not parse, or reference to nodes/attributes in the expression are not valid

  Arguments:

  • arg1 = [ state | event | meter | label | variable | trigger | limit | limit_max ]
  • arg2 = <path> | <path>:name where name is name of a event, meter,limit or variable
  • arg3 = trigger expression (optional)  | prev | next    # prev,next only used when arg1 is repeat

Usage:

  • state=$(ecflow_client --query state /path/to/node)                                                          # return node state to standard out
  • dstate=$(ecflow_client --query dstate /path/to/node)                                                     # state that can includes suspended
  • value=$(ecflow_client --query repeat /path/to/node )                                                      # return the current value as a string

  • value=$(ecflow_client --query repeat /path/to/node   prev  )                                           # return the previous value as a string, does not modify real repeat

  • value=$(ecflow_client --query repeat /path/to/node   next)                                             # return the next value as a string, does not modify real repeat

  • event=$(ecflow_client --query event /path/to/task/with/event:event_name)                 # return set | clear to standard out
  • meter=$(ecflow_client --query meter /path/to/task/with/meter:meter_name)              # returns the current value of the meter to standard out
  • value=$(ecflow_client --query variable /path/to/task/with/var:var_name )                  # returns the variable value to standard out
  • limit_value=$(ecflow_client --query limit  /path/to/task/with/limit:limit_name)            # returns the current value of the limit to standard out

  • limit_max=$(ecflow_client --query limit_max /path/to/task/with/limit:limit_name)      # returns the max value of the limit to standard out

  • label_value=$(ecflow_client --query label %ECF_NAME%:label_name)                        # returns the current value of the label to standard out
  • value=$(ecflow_client --query trigger /path/to/node/with/trigger \"/suite/task == complete\")   # return true if expression evaluates false otherwise