Product
Support
Everything Else
Helix 5.3 Changes: Behavior of Nested and Conditional Sequence Show Dialogs Options
Executive Summary The behavior of nested and conditional sequences as it relates to the "Show Dialogs" options has always been poorly documented and is confusing to many users. Existing documentation mentions only one combination of nested options: an Optionally Show Dialogs sequence nested within an Always Show Dialogs sequence. No other combination is documented.
This chart documents the current behavior of all nesting combinations as well as the effect of a top level sequence's Show Dialogs option on conditional sequences.
This page ends with a discussion of the effect of the On Error settings in a sequence.
“Show Dialogs: Optionally” Behavior Change
In 5.2.1 and earlier The status of the option key is checked at the beginning of the first (i.e. top level) sequence. That status is retained and used to determine the display of dialogs for all sequences (including nested and conditional sequences) whose Show Dialogs attribute is set to Optionally.
In 5.3 and later

That behavior remains true, but now the status of the option key is rechecked at the beginning of each nested and conditional sequence where the Show Dialogs attribute is set to Optionally.

Therefore, if the option key is down when the sequence is first executed all Show Dialogs: Optionally sequences in the chain display dialogs. However, if the option key is not held down when the top level sequence is first executed, but is held down at the beginning of any nested or conditional Show Dialogs: Optionally sequence in the chain, dialogs are shown only for those sequences that start while the option key is down. This adds a finer level of control over which portions of a nested/conditional sequence chain show dialogs.

Nested Sequence Behavior
Every published manual for Helix claims that an Optional sequence nested in an Always sequence inherits the always attribute and acts like an Always sequence. (See The Helix Reference for Helix 4.5.5: 6.6.6)
In 4.5.2 and earlier, the behavior does not match the documentation: a nested Optional sequence retains its optional attributes regardless of which type of sequence it is nested in.
In 4.5.3 to 5.2.1, the behavior matches the documentation: a nested Optional sequence nested in an Always sequence inherits the Show Dialogs: Always setting.
The change in 4.5.3 broke some prior uses, and seems to most people to be counter-intuitive and not in keeping with the logic of the behavior of other nested sequences.
Beginning with 5.3 the behavior reverts back to the behavior as seen in 4.5.2 and earlier.
Top Level
Sequence
Setting
Nested
Sequence
Setting
Behavior of
Nested
Sequence
Notes

Always

No nested sequences

Dialogs are always shown.

On CMD-period: Displays dialog asking if you want to terminate.

On Error: Execution stops.

On Escape (Cancel a dialog): Execution stops.

Always

Always

Dialogs are always shown.

On CMD-period: Displays dialog asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.

On CMD-period...
If 'optional' sequence is executing...
and the option key was not down, terminates without asking.
and the option key was down, dialog is displayed asking if you want to terminate.
If the 'always' sequence is executing, dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Never

Never

Dialogs are never shown.

On CMD-period: Terminates without asking.

On Error: Execution stops.

On Escape: Dialogs aren't seen; no option to escape exists.

 

Optionally

Status of option key is determined at the moment when top level sequence begins execution.

No nested sequences

If option key was down when sequence began, dialogs are always shown.
If option key was not down when sequence began, dialogs are never shown.
On CMD-period...
If the option key was not down, terminates without asking.
If the option key was down, dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Always

Always

Dialogs are always shown.
On CMD-period...
If 'optional' sequence is executing...
and the option key was not down, terminates without asking.
and the option key was down, dialog is displayed asking if you want to terminate.
If the 'always' sequence is executing, dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape (Cancel dialog): Execution stops.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.
On CMD-period...
If the option key was not down, terminates without asking.
If the option key was down, dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Never

Never

Dialogs are never shown.
On CMD-period...
If 'optional' sequence is executing...
and the option key was not down: terminates without asking.
and the option key was down, a dialog is displayed asking if you want to terminate.
If the 'never' sequence is executing, terminates without asking.

On Error: Execution stops.

On Escape: n/a

 

Never

No nested sequences

Dialogs are never shown.

On CMD-period: Terminates without asking.

On Error: Execution stops.

On Escape: n/a

Always

Always

Dialogs are always shown.
On CMD-period...
If the top level sequence is executing, terminates without asking.
If nested sequence is executing, dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.
On CMD-period...
If the 'never' sequence is executing, terminates without asking.
If 'optional' sequence is executing...
and the option key was not down: terminates without asking.
and the option key was down, a dialog is displayed asking if you want to terminate.

On Error: Execution stops.

On Escape: Execution stops.

Never

Never

Dialogs are never shown.

On CMD-period: Terminates without asking.

On Error: Execution stops.

On Escape: n/a

Conditional Sequence Behavior

In version 4.5.5 and earlier, an error, cancellation, or termination of a sequence stops that iteration of the sequence, but all conditional sequences execute the number of times designated.

In version 5.0 to 5.2.1, an error or termination in the top level sequence terminates that sequence, but execution continues with the first conditional sequence.
However, an error or termination in a conditional sequence causes that sequence and all subsequent conditional sequences to terminate.

Neither of these behaviors is according to specification.

Beginning with Helix 5.3…

A user stop (the user pressed CMD-period during sequence execution) completely stops that sequence and all subsequent sequences.

An error stop (a command could not be executed) stops that specific (top level or conditional) sequence (and all subsequent iterations of that sequence), but continues with the next conditional sequence.

A cancel stop (the user clicked ‘Cancel’ in a dialog) is functionally equivalent to an error stop.

In addition, Helix 5.3 and later feature a control that lets you set the behavior to either of the prior behavior types, in case your collection relies on the quirks of one or the other. See the section on the HCSB resource below for more information.

Note: a nested sequence in a conditional sequence follows the same rules as a nested sequence in a top level sequence.
Top Level
Sequence
Setting
Conditional
Sequence
Setting
Behavior of
Conditional
Sequence
Notes

Always

Always

Always

Dialogs are always shown.

On CMD-period: Displays dialog asking if you want to terminate. If you terminate, execution stops.

On Error: Execution continues with next conditional sequence.

On Escape: Execution continues with next conditional sequence.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.
On CMD-period...
If the top level sequence is executing, dialog is displayed asking if you want to terminate. If you terminate, execution stops.
If a conditional sequence is executing...
and the option key was not down: the current sequence stops. Execution continues with the next conditional sequence.
and the option key was down: dialog is displayed asking if you want to terminate. If you terminate, execution stops.

On Error: Sequence stops. Execution continues with the first conditional sequence.

On Escape: Sequence stops. Execution continues with the first conditional sequence.

Never

Never

Dialogs are never shown.
On CMD-period...
If the top level sequence is executing, dialog is displayed asking if you want to terminate. If you terminate, execution stops.
If a conditional sequence is executing, the current sequence stops. Execution continues with the next conditional sequence.

On Error: The sequence stops. Execution continues with the next conditional sequence.

On Escape: The sequence stops. Execution continues with the next conditional sequence.

 

Optionally

Always

Always

Dialogs are always shown.
On CMD-period...
If the top level sequence is executing...
and the option key was not down, the current sequence stops. Execution continues with the first conditional sequence.
and the option key was down, dialog is displayed asking if you want to terminate. If you terminate, execution stops.
If a conditional sequence is executing, dialog is displayed asking if you want to terminate. If you terminate, execution stops.

On Error: The sequence stops. Execution continues with the next conditional sequence.

On Escape...
If the top level sequence is executing...
and the option key was not down, dialogs aren't seen; no option to escape exists.
and the option key was down, the current sequence stops. Execution continues with the first conditional sequence.
If a conditional sequence is executing, the current sequence stops. Execution continues with the next conditional sequence.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.
On CMD-period...
If the option key was not down: the current sequence stops. Execution continues with the first conditional sequence.
If the option key was down: dialog is displayed asking if you want to terminate. If you terminate, execution stops.

On Error: The sequence stops. Execution continues with the next conditional sequence.

On Escape (only seen if the option key was down): The sequence stops. Execution continues with the next conditional sequence.

Never

Never

Dialogs are never shown.
On CMD-period...
If the top level sequence is executing...
and the option key was not down, the current sequence stops. Execution continues with the first conditional sequence.
and the option key was down, dialog is displayed asking if you want to terminate. If you terminate, execution stops.
If a conditional sequence is executing, the current sequence stops. Execution continues with the first conditional sequence.

On Error: Execution of the current sequence stops. Execution continues with the next conditional sequence.

On Escape: Dialogs aren't seen; no option to escape exists.

 

Never

Always

Always

Dialogs are always shown.
On CMD-period...
If the top level sequence is executing, top level sequence stops. Execution continues with the first conditional sequence.
If a conditional sequence is executing, dialog is displayed asking if you want to terminate. If you terminate, execution stops.

On Error: the sequence stops. Execution continues with the next conditional sequence.

On Escape...
If the top level sequence is executing, dialogs aren't seen; no option to escape exists.
If a conditional sequence is executing, the current sequence stops. Execution continues with the next conditional sequence.

Optionally

Optionally

Dialogs are shown if the option key was held down when the sequence was initiated.
On CMD-period...
If the top level sequence is executing, execution of the current sequence stops. Execution continues with the next conditional sequence.
If a conditional sequence is executing...
and the option key was not down, the current sequence stops. Execution continues with the first conditional sequence.
and the option key was down, dialog is displayed asking if you want to terminate. If you terminate, execution stops.

On Error: Execution of the current sequence stops. Execution continues with the next conditional sequence.

On Escape (only seen if conditional sequences are executing and the option key was down): Execution of the current sequence stops. Execution continues with the next conditional sequence.

Never

Never

Dialogs are always shown.

On CMD-period: Execution of the current sequence stops. Execution continues with the next conditional sequence.

On Error: Execution of the current sequence stops. Execution continues with the next conditional sequence.

On Escape: Dialogs aren't seen; no option to escape exists.

On Error Results

In version 5.2.1 and earlier, an error in a sequence typically only opens the Why? dialog if the "Open Why?" option is checked for the specific sequence in which the error occurs.

However, the Why? message can also appear at seemingly random times, even if "Open Why?" is not checked. For example, if "Open Why?" is not selected, an error that occurs during the first attempt to run a sequence beeps and sets the Why? message properly. Subsequent runs of the same sequence may (or may not) open the Why? dialog regardless of the settings. Closing and reopening the view from which the sequence was triggered may or may not cause the proper behavior to return.

Note that under no known case does the Why? dialog fail to open when the "Open Why?" option is selected for that particular sequence.

Beginning with Helix 5.3, an error is displayed if and only if the "Open Why?" option is selected for the specific sequence in which the error occurs.

Open Why? Message Type Result

Checked

Custom/Standard

Why? message opens automatically.

None

No error is reported.
No Why? message opens. Note: in this situation, the "Open Why?" and "Message Type" settings are logically incompatible. In this situation the "Message Type: None" takes precedence: no message is reported and no Why? dialog opens.

Not Checked

Custom/Standard

Systems beeps.
Why? message is available via Why? command. (Does not open automatically.)

None

No error is reported.
No Why? message opens.

The HCSB Resource

Regardless of the version of Helix a collection was created in, collections opened with an unmodified copy of Helix 5.3 will use the new rules when encountering errors in sequences.

For situations where one of the older behaviors is required, a new HCSB resource has been added to allow a collection designer to control which error behavior a collection should use. By changing the value of the HCSB/0 resource, one of the older methods of error handling can be used.

The HCSB resource can be modified in the Helix 5.3 application, or added directly to an individual collection to enable a specific error handler for that collection. Modifying the HCSB resource in the Helix application will cause all collections opened with that copy of Helix to apply the specified behavior. Adding an HCSB resource to a collection will cause that specific collection to apply that behavior.

New collections created in Helix 5.3 have an HCSB resource added to them automatically, ensuring that the behavior of that collection will remain consistent as it is used in future versions of Helix.

Editing resources requires a resource editor and should only be attempted by the technically proficient. If you experiment with this resource and things go wrong, reinstall Helix from the original installer. If you need further assistance, contact QSA ToolWorks, LLC.

The HCSB Resource Definition
ResID Description Item List Value Result

0

Control Value

WORD

4

Handle errors the way they were prior to Helix 5.

5*

Handle errors the way they are in Helix 5.0 – 5.2.1.

6

Handle errors the way they are in Helix 5.3 & later.

* In Helix 5.0 – 5.2.1 when an error occurs in the top level of a sequence, Helix runs the conditional sequences that follow it, despite the documented contention that such errors stop subsequent sequence activity. (When an error occurs in a conditional sequence, the sequence stops, as was intended.) Although this behavior is inconsistent, setting the HCSB resource to 5 mimics the old behavior.

Beginning with Helix 6.2, the HCSB resource is eliminated. The HxSequenceErrorHandling preference now controls which error handling is used.