Open Test Framework  
Control Sequence Designer

ControlSequences can be edited in the Control Sequence Designer. In addition to the OtxProcedureCalls, the ControlSequences are the main elements of a ControlFile. They contain the flow logic.

A ControlSequence consists of the following activities:

Note: Only a Control can be executed. The execution of a Control is started via the StartTrigger, see Table. For example, the StartTrigger can be bound to a Button in the Player Monitor Editor.

Note: A Control is executed in a target environment that implements the ControlFile. There are different implementations. One implementation is the Open Test Player.

Related Topics:

Step By Step

The picture shows the Control Sequence Designer together with the Toolbox and the Solution Explorer. To edit a Control, the following steps are recommended:

  1. Select the Control in the Solution Explorer and open it by double-clicking. If no Control exists yet, then add a new "Control Sequence" using the right mouse button on the "OTX Controls" node.
  2. The Control is displayed as a new tab. Just like with the OTX Designer, activities or OtxProcedureCalls can be dragged from the Toolbox into the designer to the appropriate locations.
  3. Select and parameterize the activities or OtxProcedureCalls.

Control (ControlSequence)

A Player Project can contain zero, one or more Controls. To edit one control, it must be opened in the Sequence Designer. Within the property grid, only the simple elements on the first level can be edited.

Note: Inside the Control Sequence Designer exactly one Control can be edited. The Controls itself must be managed inside the Solution Explorer, see Player Project.

Note: In the table, ConfigFile means that the possible values are fetched from the ConfigFile. If there are no values, then the property cannot be changed. If the current value is not present in the ConfigFile, an error is displayed. Empty values are ignored.

Property Data Type Cardinality ConfigFile Description
DisplayName String 0..1 Readable name of the Control.
Description String 0..1 Understandable description of the Control.
SequenceType Reference 0..1 Yes Target system specific type of the sequence, e.g. "Series", "Rework", "Maintenance and Generic Blocks" to categorize the Control.
Note: Has no effect at runtime!
Note: All values come from the ConfigFile.
LogicalPath Reference 0..1 Yes Classification of the Control into a group. Category for classifying the Control in the development environment or for statistical evaluation of the results of this Control in subsequent processes, e.g. EPS.LWS_Setup.
Note: Has no effect at runtime!
Note: All values come from the ConfigFile.
ValidFor LogicalExpression 0..1 Yes A Logical Expression that describes under which conditions the Control can be executed. If the expression is calculated to true, then the Control may be executed, otherwise not.
OnlyForTestPurpose Boolean 1 If the flag is set to true, the Control will be executed only if the target system is in TestMode.
MetaData MetaData 0..n Yes MetaData contains target system-specific configurations, see MetaData.
ID String 1 Unique identifier of the Control (ReadOnly)
StartTrigger Reference 0..n Yes List of target system specific event identifier.
Note: Each occurrence of one event defined here, starts the execution of the Control.
Examples: "location.station3", "vehicle.drivingCycleDetected", "Fire Alarm", "Otp.Monitor1.StartButton".
PauseTrigger Reference 0..n Yes List of target system specific event identifier.
Note: Each occurrence of one event defined here, pauses the execution of the Control.
Examples: "RollerStation.StoppingCord.Pulled", "Vehicle.SOC.TooLess", "Otp.Monitor1.PauseButton".
ContinueTrigger Reference 0..n Yes List of target system specific event identifier.
Note: Each occurrence of one event defined here, continues the execution of the Control.
Examples: "RollerStation.StoppingCord.Released", "Otp.Monitor1.ContinueButton".

Sequence

The Sequence contains one or more Lane elements. There can be one or more Sequence blocks per Control.

Property Data Type Cardinality ConfigFile Description
DisplayName String 0..1 Readable name of the Sequence.
Description String 0..1 Understandable description of the Sequence.
Monitor Reference 0..1 Yes Reference to a Monitor. A target system can can use this property to select a certain window for all user interaction of the complete Sequence.
Note: Not used in Open Test Player, because the OTP supports multiple panels inside one monitor! A Monitor.Panel can be referenced inside the lane.
Note: All values come from the ConfigFile.
ID String 1 Unique identifier of the Sequence (ReadOnly)

Lane

The Lane contains the executable part of the Control.

Note: All Lane blocks of a Sequence are executed in parallel.

Note: A RuntimeManager is created for each Lane at the OTX Runtime API.

Property Data Type Cardinality ConfigFile Description
DisplayName String 0..1 Readable name of the Sequence.
Description String 0..1 Understandable description of the Sequence.
Panel Reference 0..1 Yes Reference to a Panel inside a Monitor. A target system can can use this property to select a certain panel for all user interaction related to that Lane.
Note: All values come from the ConfigFile.
ID String 1 Unique identifier of the Sequence (ReadOnly)

ProcedureCall (Test Step)

The call of a OtxProcedureCall is called a test step. A Lane can contain any number of test steps, which are executed sequentially.

Note: At runtime for each OtxProcedureCall the Execute method of the related RuntimeManager is called at the OTX Runtime API.

Property Data Type Cardinality ConfigFile Description
Procedure Reference 1 Reference of the OtxProcedureCall to be executed.
OnlyForTestPurpose Boolean 0..1 If the flag is set to true, the OtxProcedureCall will be executed only if the target system is in TestMode.
resultRelevant Boolean 1 Indicates if the Result of the OtxProcedureCall execution is relevant for the overall Result of the Control. If set to false, the overall Result is not affected by the execution of this OtxProcedureCall, see Result Evaluation.
ResultMandatory Boolean 0..1 Indicates if the OtxProcedureCall MUST be executed. If the value is set to true and the OtxProcedureCall is not executed, the result is handled as Failed, see Result Evaluation.
Note: The Flag will be only evaluated in case of ResultRelevant is set to true.
DisplayName String 0..1 Readable name of the OtxProcedureCall.
ID String 1 Unique identifier of the Sequence (ReadOnly)
ExecuteOnlyByPreResults.Type Enum 0..1 Yes Before the OtxProcedureCall is executed, it is checked whether the Expression parameterized here is fulfilled or not. If the Expression returns false, the OtxProcedureCall will not be executed.
Type: To create the Expression you have to choose one of the following types of OtxProcedureCall:
- ProcedureCall - OtxProcedureCall referenced in the ConfigFile.
- SequenceObject - A OtxProcedureCall within the same control.
Note: A table is maintained at runtime which contains the results of all executed OtxProcedureCall, see Result Evaluation.
Note: The table is valid at runtime as long as the same PPX is loaded.
ExecuteOnlyByPreResults.Expression LogicalExpression 0..1 Yes Contains the Expression fro ExecuteOnlyByPreResults. The expression can be edited inside the ExpressionEditor.
RetryCountOnFailure Integer 0..1 Retry counter of OtxProcedureCall. Number of retries in failed case (counting from first failure).
Note: In case retry count is reached and AbortOnFailure (see below) is set to false, the execution of the Control is continued.
AbortOnFailure Boolean 0..1 If true, the execution of the Control shall be stopped, if the OtxProcedureCall execution was not successful (NOK) AND after the specified number of retries, see RetryCountOnFailure.
If false the execution of the Control will be continued.
Note: The problem will be stored in the ResultFile.
CatchIdRef Reference 0..1 Reference of Catch block. If AbortOnFailure is true the execution continues in failure case with the specified Catch block. In case no Catch block is specified, the Finally block will be executed, if available.
Note: The Cancel block must exist within the Control.

Cancel

The Cancel block is structured like a Sequence but with an additional list of CancelTrigger elements. There can be none, one or more Cancel blocks per Control. A Cancel block can be called in two ways:

  1. In the event of an Error of an OtxProcedureCall
    This is done via OnFailure.CatchIdRef, which contains the ID of the Cancel block to be called.
  2. When triggering a Trigger
    If a Trigger is called, the running Sequence is stopped. A procedure that has already started is stopped. It then switches to the first Cancel block, which references the Trigger. Subsequent Cancel blocks are ignored.

Note: A Cancel block has the same properties like a Sequence plus the following properties.

Property Data Type Cardinality ConfigFile Description
Trigger Reference 0..n Yes List of target system specific Trigger that cause the execution of the Catch block, z.B. "OtpStopAll", "EmergencyStop".
Note: Corresponds to the stop button in Open Test Player.
Note: All values come from the ConfigFile.

Finally

The optional Finally block is structured like a Sequence block. There can be no or one Finally block per Control. If a Finally block is defined, it is always called after the end of the Sequence or the Cancel block.

Note: A Finally block has the same properties like a Sequence but without the ID.

Signal

A Signal element signals one or more WaitForSignals that execution can continue.

Property Data Type Cardinality ConfigFile Description
Name String 1 Unique name of the Signal.
DisplayName String 0..1 Readable name of the Signal.
ID String 1 Unique identifier of the Signal (ReadOnly)

WaitForSignals

A WaitForSignal element can wait for one or more Signal elements. Execution continues as soon as all referenced Signals reach the "Signaled" state.

Property Data Type Cardinality ConfigFile Description
Signals Reference 1..n List of one ore more referenced Signals (via Name)
DisplayName String 0..1 Readable name of the WaitForSignals.
ID String 1 Unique identifier of the WaitForSignals (ReadOnly)