Optimization

Optimizations or hints are needed for the kit to know the meaning of attributes/relations and to make the UI comfortable from the start.

E.g. a type of object with lots of instances, which need to be accessed often and conviently, like messages in an email app, is likely to be placed in a cental place, while rarely accessed information, like the username on a server, may be moved to some dialog.

If not noted otherwise, each end of a relationship is treated as an attribute of the respective object, i.e. all hints can be given for attributes and both ends of a relationship.

Optimizations may be changed by the user without the knowledge of the app.

Current hints types are:

Table 2-1. Hint types

NameTypeMeaningPredefined values
nameboolean Every object must have either a text attribute or a relation, where the target object can be represented as text, with name = true.
trueAttribute or relation is used to represent the object, if only limited screenspace is available.
false (default)No special treatment
importanceshort int Shows, how central the attribute should appear in the UI.
lowDetails, i.e. rarely changed/needed attributes, e.g. preferences or usually uninteresting readonly attributes.
normal (default) 
highWorld-changing, eye-catching attributes. They may push other attributes or even other objects into the edge. E.g. Subscription/“not hidden”
multiplicityshort int Only valid for cardinalities of relations. Shows, how many target items will usually appear, in contrast to how many can appear as shown in the model.
rareMost instances do not have entries for this relation, i.e. usually 0 related objects
fewUsually <= 5 related objects
some (default)Usually < 30 related objects
manyMay well have > 30 related objects, possibly much more
protectionenum Defines, who can edit the object.
public (default)Both the application and the user have write access.
protectedRead-only for the UI.
???Changes are usually only performed by the user. Useful for preferences.
The hint types may still change, but the goal is to use as less as possible and keep them as stable as possible.