Flow properties

Flow properties are used for three things:

  • To specify state which controls process execution.

  • To specify status to control status rules/menus.

  • To specify other types of flow, particulary between different parties.

State control is simple: set the state property to the state that should trigger the flow, or * for any state.

Status control is similar: set the status propery to the status that should be represented by a user option. You can also set other status rule properties on the flow – see Status rules for a list. The only ones you are likely to need are sequence and group, and occasionally caption (which defaults to name of the the target step).

Other types of flow are identified by setting a flow property. This does not automatically generate anything, but does allow the flow to be referenced using the value of the flow poperty – see Using flow properties in steps.

It must be possible to uniquely identify each of the flows from a source step. This is done through the flow property, which defaults to the state, status or target steo reference. This means that if you have two links with the same status from a step (to indicate that the user should be offered two options), you will have to add a unique flow propery to the flows also.

Flow properties can be set using step properties in two ways. If you have a source step property prefixed by flow., where flow. is the first of flow reference, state, status or target reference, the property will be copied to the flow, with the prefix removed. Within a flow property, if you use a placeholder, the placeholder will be resolved using the source step properties.

For example, if you have a flow with a flow reference of "success", and you want to set a status of "confirmed" on it, you can either:

  • Set a flow property "status": "${statusReference}", and set "statusReference": "confirmed" on the source step.
  • Set "success.status" : "confirmed" on the source step.

It is not sufficient to just set a "status" property on the source step - it will not be used by the flow unless either the flow has a placeholder that specifies it, or if it is prefixed by the flow reference.