# 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.
documentation | property string | [0,1] | Technical documentation for a particular object or construct.
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.

    This information may be presented to midPoint users, even to ordinary end users. For example role description may be presented to users when they are selecting roles to request. Therefore the description should be written in a language that the users can understand.

    Description is assumed to be a plan, non-formatted text. Amount of white space is considered insignificant. E.g. leading and trailing white space may be skipped, multiple spaces can be collapsed to one and so on.

  - #### documentation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Technical documentation for a particular object or construct.

    The purpose of this element is to document system configuration and behavior. The documentation will not be presented to end users. In fact, it will probably not be presented at all in midPoint user interface. This documentation element is supposed to be a part of the technical documentation of midPoint deployment. The tools than generate deployment configuration will look for these elements and combine them to compiled documentation document.

    AsciiDoc formatting is assumed for this element. Any leading or trailing whitespace is skipped. Indentation equivalent to he indentation of the first non-blank line of text is also skipped.

  - #### extension

    Flags: dyn,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.