# ExpressionType (Complex Type)

### Namespace: http://midpoint.evolveum.com/xml/ns/public/common/common-3

TODO

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
name | property string | [0,1] | Name of the expression (function).
description | property string | [0,1] | Free-form textual description of the object.
extension | container ExtensionType | [0,1] | Place for non-standard object properties.
parameter | container ExpressionParameterType | [0,-1] | Function input parameters
returnType | property QName | [0,1] | Formal definition of function return type.
trace | property boolean | [0,1] | Explicitly trace the execution of this expression.
stringFilter | property StringFilterType | [0,-1] |
variable | property ExpressionVariableDefinitionType | [0,-1] | Definition of additional variables that should be present during evaluation of the expression.
returnMultiplicity | property ExpressionReturnMultiplicityType | [0,1] |
allowEmptyValues | property boolean | [0,1] | TODO
queryInterpretationOfNoValue | property QueryInterpretationOfNoValueType | [0,1] | TODO
runAsRef | reference ObjectReferenceType | [0,1] | Reference to the user whose identity will be used to execute the expression.
expressionEvaluator | property anyType | [1,-1] | A single expression evaluator.

- ### Items

  - #### name

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Name of the expression (function). The name is used for several purposed. If the expression is a function in a function library then this name identifies the function (the name must be unique in the whole library). But even if the expression is not part of the library the name may still be used for diagnostic purposes. Note: There are no formal limitations about the characters used in the name, length of the name and so on. However, special characters in the function name may prohibit reasonable use of the function in some scripting languages. Therefore the recommendation is to use only alphanumeric names and to avoid white spaces in the names.

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Free-form textual description of the object. It is supposed to describe the object or a construct that it is attached to.

    Anything that the system administrator wants may be here. The system will not interpret the information except for displaying it and allow user to edit it.

  - #### extension

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Place for non-standard object properties. The elements placed here will be handled exactly like the elements in the object body. It must NOT contain standard elements.

  - #### parameter

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Function input parameters

  - #### returnType

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Formal definition of function return type. It may not be specified if the expression is used in places where the return type can be automatically determined (e.g. mappings).

  - #### trace

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Explicitly trace the execution of this expression. The execution will be logged on INFO level if this property is set to true to make sure that it will be visible in the logs.

  - #### stringFilter

    Flags: RAM,runtime

    Multiplicity: [0,-1]

  - #### variable

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Definition of additional variables that should be present during evaluation of the expression.

  - #### returnMultiplicity

    Flags: RAM,runtime,AVals:2

    Multiplicity: [0,1]

  - #### allowEmptyValues

    Flags: RAM,runtime

    Multiplicity: [0,1]

    TODO

  - #### queryInterpretationOfNoValue

    Flags: RAM,runtime,AVals:5

    Multiplicity: [0,1]

    TODO

  - #### runAsRef

    Flags: RAM

    Multiplicity: [0,1]

    Reference to the user whose identity will be used to execute the expression. The expression will use authorizations that this user has. If the expression triggers any change then the change will be audited under the identity of this user. If no user is specified then the identify of currently logged-in user or the owner of the task will be used.

  - #### expressionEvaluator

    Flags: RAM,runtime

    Multiplicity: [1,-1]

    A single expression evaluator. Although this element is formally multi-value it may be used only for multiple instances of the same evaluator that in fact form a single group. E.g. it may be used to define several "value" elements of literal evaluator that define multiple values. But it must not be used to define multiple scripts or any other combination of evaluators.