|
|
| Product | |
| Support | |
| Everything Else | |
| This technote is obsolete as of Helix 7.0. Helix 7 and later users should read the Sequence Behavior in Helix 7.0 technote. | |
| 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. |
||
| 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. 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. If a conditional sequence is executing, dialog is displayed asking if you want to terminate. If you terminate, execution stops.
and 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...
If the top level sequence is executing...
and the option key was not down, 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.
and the option key was down, the current sequence stops. Execution continues with the first 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. If a conditional sequence is executing, 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: 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. |
|
| 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. Beginning with Helix 6.2, the HCSB resource is eliminated. The HxSequenceErrorHandling preference now controls which error handling is used. |