Changes

Dynamic Selective List (Client)

72 bytes added, 14:37, 30 November 2021
=== Dynamic selective list criteria ===
{{UBIK}} relies on special objects with the [[SYSCLS_DYNAMIC_SELECTIVE_LIST_CRITERION]] to resolve items dynamically. These objects carry the following properties and each of them serves a different purpose of configurability.
* DYNAMIC_SELECTIVE_LIST: The Guid of the DSL_QUERY [[SYSCLS_DYNAMIC_SELECTIVE_LIST]] instance that should be used in resolving dynamic selective list items.
* DEPENDENCY_CLASS: (Optional) The Guid of the [[MetaClass]] which instructs {{UBIK}} the type of objects to exclusively look for when searching for dependency objects in the data hierarchy. If unspecified, any object having the specified dependency property can be a dependency object.
* DEPENDENCY_PROPERTY_NAME: The name of the property whose values determine the dynamic selective list items.
[[File:Client_DSL_Example_Usecase.png|450px|thumb|border|alt=Example use case|Example use case]]
In this example, two properties "Model Guid" and "Part Guid" are associated with a dynamic selective list each.
* "Part Guid" depends on a property "Types of Parts" and uses DSL_QUERY [[SYSCLS_DYNAMIC_SELECTIVE_LIST]] "Part Query" to find the suitable dynamic selective list items (parts).
** From the data hierarchy, {{UBIK}} extracts the "Types of Parts" values. There are many factors that can affect which objects {{UBIK}} takes the values from, see [[#Resolving_dynamic_items|resolving dynamic items]] for details.
** If for example, the final "Types of Parts" value found is "Mechanical", the query will return all those "DSL Item Instances" that are "Mechanical", e.g. "Screw". The user can then select one of those items and its Guid will be set as the value of property "Part Guid".
* "Model Guid" depends on a property "Part Guid" and uses DSL_QUERY [[SYSCLS_DYNAMIC_SELECTIVE_LIST]] "Model Query" to find the suitable dynamic selective list items (models).
** Similarly, {{UBIK}} tries to find the "Part Guid" values, which can be found on the object itself in this case.
** If for example, the final "Part Guid" value is the Guid of item "Screw", the query will return all those "DSL Item Instances" that are "Screw", e.g. "M1.6". The user can then select from those just like with the other property mentioned above.