Workspace 6.21.5
Using update barriers

Introduction

This operation effectively decouples the main output from the main (ie value) input. Any request for the main output will result in a cached value being provided. The cached value is only updated after something causes the Trigger input to become not up to date.

Initially, the cached value will simply be the default value for the data type being used. Thus, the main input is not updated the first time the operation updates, which is a main difference between this operation and CacheData. The cached value will also be reset to the default for the data type whenever the data type of the operation is changed.

One of the more common uses of this operation is to place it at the end of a workflow and attach a push button widget to the Trigger input. The workflow is attached to the main input of the operation. With this arrangement, the workflow upstream of the UpdateBarrier will only execute when the user presses the push button, and it will only execute once. It will not re-execute until the user presses the button again (and then only if something in the workflow changed, as per normal workspace updating dependency behaviour). Basically, you end up with a "run the workflow once when I press the button" arrangement, which is sometimes referred to as a "one-shot" update.

This tutorial will cover ...

Just in case you get stuck, a sample workflow has been provided for you.

Note
The second part of this tutorial builds upon the workflow constructed in the user tutorial, Converting between data types. If you have not completed this tutorial, you can start with this sample workflow.

How to stop a variable from updating until you deliberately trigger an update

To construct the first example,

  • Drag a Variable operation from the Operation catalogue onto the workspace canvas
  • Give it a QString datatype (See figure below)
Create with a Variable operation with datatype QString
  • Drag an "UpdateBarrier" operation onto the canvas, and connect the Variable's Variable output to the Update barrier's Value input
  • Right-click on the Update barrier's Value Output, and select "Create Workspace output" You should have created a Workflow that looks like
    Example workflow

Add some display widgets to your Workspace:

  • Right-click on the Update barrier's Trigger input and select Display with QPushButton
  • Right-click on the Update barrier's Value output and select Display with QLineEdit

If you select the Variable operation, your Workspace should now look something like this, with the two connected display widgets docked on the right-hand-side of the screen

The Workspace before execution
  • Enter the text "Hello Workspace" into the Variable's Operation editor

Now, if you execute this workspace you may expect the Variable's value of "Hello Workspace" to be displayed in the QLineEdit widget attached to the UpdateBarrier (again, shown as Update Barrier --> Value in the right column). However when you do execute the Workspace only an empty string shown in the QLineEdit widget and the Variable's status indicator does not go green.

Workspace under execution, before the Update barrier is triggered

While the Workspace is executing you can then click on the "Reset" button connected to the UpdateBarrier (again, shown as Update Barrier --> Trigger). Now we see the value of "Hello Worldspace" in the QLineEdit.

Workspace under execution, after the Update barrier is triggered

Under the hood

The UpdateBarriers operation allows a particular branch of a workflow to be executed once and only when the user specifically triggers an update. Normally, a push button widget is attached to the Trigger input of the operation. When the button is pushed, only then will the Value input be brought up to date, have its date cloned and that cloned data stored in the Value output. Thereafter, any time the output data is needed, the cloned data is supplied, even if the Value input becomes not up to date. Only when the user presses the button that invalidates the Trigger input again will the Value input be brought up to date once more.

The UpdateBarrier operation can be thought of as a "one-shot" trigger. It gives the user the ability to have a part of their workflow execute only once and only when they specifically ask for it to be executed. Note that normal workspace execution rules apply in the workflow connected to the Value input, however, meaning that if the workflow branch is brought up to date once and nothing is ever changed within that branch after that, then triggering the Trigger input will not cause the branch to re-execute.

An important feature of this operation is that the first time the output is requested, the Value input is not brought up to date. Instead, the default value for the data type will be supplied at the output. This default value will continue to be supplied until the Trigger input is invalidated as described above. When "enabled" is set to false this operation acts like a regular passthough variable. This enables this trigger to be used as a toggle.


Summary

This concludes the tutorial on datatype conversion. We have now learned how to:

  • Configure the details of a connection that converts between two data types

A sample workflow for this tutorial can be found here.

Next Steps