Flags: RAM,runtime
Multiplicity: [0,-1]
Defines how a value of a property (or attribute) should be
constructed. The value may be static or constructed as an
result of evaluating an expression.
This structure also defines a method how to merge several value
construction definitions, how to behave if a property already
has a value, etc.
This is reusable data structure, used in schemaHandling, roles
and it may also be used in may other places.
Motivation: We need to construct attribute or property values on
many places in midPoint. E.g. we need that in roles to generate
dynamic account attribute values, we need that to define "templates"
for identifiers and default values for attributes when creating a
new account. We also need that to specify values when creating a
new user (user templates). Having the same data structure for all of
these cases may simplify the code, as it all can be handled by a
generic library reused in many places through the system.