OTX Reference
|
|
Classes | |
class | Arguments |
Represents the list of arguments for a procedure call. Arguments allows for declaring an arbitrary number of in-, out- and inout-arguments (by utilizing <xsd:choice> [1..*]). More... | |
Public Attributes | |
Arguments | arguments |
Cardinality [0..1] Represents the list of arguments for a procedure call. More... | |
OtxLink | procedure |
Cardinality [1] Procedure or signature to be called. More... | |
System.Boolean | throwExceptionOnAmbiguousCall |
Cardinality [0..1] If throwExceptionOnAmbiguousCall is true and two or more of the implementing procedures are valid, the AmbiguousCallException will thrown. More... | |
Public Attributes inherited from OpenTestSystem.Otx.Core.Actions.ActionRealisation | |
OtxLink | validFor |
Cardinality [0..1] Validity of ActionRealisation. More... | |
Calling a Procedure.
This action
calls another OTX procedure (directly or indirectly via a signature). If there are input parameters declared by the callee, the ProcedureCall
action allows describing a list of corresponding arguments
which will be passed to the callee at runtime. OTX procedures do not have one single dedicated return value – instead, they can define a set of output parameters which can (but do not have to) be used by the caller. Procedure calls can happen in-document or cross-document; the latter means that a procedure defined in one document can call another signature or procedure defined in another, separate document. In the latter case, the visibility information of the called signature or procedure has to be taken into account. Procedures or signatures which are not visible to the caller are not callable.
ProcedureCall
represents an exemption concerning the atomicity of Action
nodes. It is not atomic. If a ProcedureCall
is executed in a Parallel lane and a TerminateLanes node is executed in another lane, procedure execution shall be completed prematurely. The same rules as for prematurely completed lanes apply.The OTX procedure call is closely linked to the signature concept. Therefore, the runtime semantics differ depending if a procedure was directly called or if there's an indirection via a signature, see picture.
Exceptions.InvalidReferenceException | If one of the inout-arguments is invalid (e.g. an uninitialized variable). |
Exceptions.AmbiguousCallException | In case of indirect call via signature and throwExceptionOnAmbiguousCall=true : if two or more implementing procedures are valid at the same time (call target cannot be determined unambiguously). |
Arguments OpenTestSystem.Otx.Core.Actions.ProcedureCall.arguments |
Cardinality [0..1]
Represents the list of arguments for a procedure call.
OtxLink OpenTestSystem.Otx.Core.Actions.ProcedureCall.procedure |
Cardinality [1]
Procedure or signature to be called.
Contains the fully qualified name of the called procedure or signature. For cross-document calls, a prefix is needed which indicates the external document. The prefix shall be defined by a corresponding import
element in the imports
section of the OTX document. For in-document calls, no prefix is needed.
ProcedureCall
must be visible to the caller. The information given by the visibility attribute of the called signature or procedure is to be taken into account. realisation
, the call is NOP
. The same applies for the call of a procedure which is not valid with respect to the context. Given arguments of the ProcedureCall action will stay unchanged. System.Boolean OpenTestSystem.Otx.Core.Actions.ProcedureCall.throwExceptionOnAmbiguousCall |
Cardinality [0..1]
If throwExceptionOnAmbiguousCall
is true
and two or more of the implementing procedures are valid, the AmbiguousCallException will thrown.