[midPoint] Blog: Collections And Views

Radovan Semancik radovan.semancik at evolveum.com
Thu Dec 5 19:33:18 CET 2019


Dear MidPoint community,

There are many new features in midPoint 4.0, code-named “Gutenberg” 
<https://evolveum.com/midpoint-4-0-gutenberg/>. Archetype functionality 
is one of the big new things. Archetypes allow to divide objects to a 
very fine types with customized look and behavior. However, there is 
almost infinite ways how to sort and present objects. Archetypes would 
not be enough on their own. Therefore there is a companion feature that 
is focused on customized grouping and presentation of objects: 
collections and view.

Archetypes, introduced in previous blog posts 
<https://evolveum.com/archetypes-in-gutenberg/>, allow to define objects 
such as employees, business roles and projects. But there are more ways 
how we would like to present the data. We would like to see /active 
employees/ /high-risk business roles/ and /active projects/. And there 
there are lists that go across archetype boundaries such as /all 
disabled users/ and /archived roles/. It is quite obvious that we need a 
great deal of flexibility here. That’s where collections and views 
<https://wiki.evolveum.com/display/midPoint/Object+Collections+and+Views> 
fit in.

Collection allows to group objects by any reasonable criteria. Simply 
speaking a collections is just a named search filter. E.g. an /active 
employees/ collection groups all the users that have /employee/ 
archetype and effective status is /enabled/. But collections are more 
powerful than that. First of all, collections may be based on other 
collection. Let’s suppose that there is /all employees/ collection. Then 
the /active employees/ can simply state, that it contains the objects 
from /all employees/, but only those that have active effective status. 
This is a way how to build a flexible and maintainable structure of 
collections.

Collections are first-class objects in midPoint. Therefore a collection 
can be defined by simply putting the search filter in midPoint object 
and importing it. Those are /explicit/ collections such as the /active 
employees/ collection above. But there are many objects in midPoint that 
naturally behave like a collection. Archetype is a good example of such 
objects. It would be quite redundant to explicitly define /all 
employees/ collection when there is already /employee/ archetype. We do 
not look nicely on redundancy in midPoint. Therefore archetypes act as 
/implicit/ collections. The /active employees/ collection can be created 
by simply referring to /employee/ archetype and specifying an effective 
status filter.

Primary purpose of collections in midPoint 4.0 are to be used for 
presentation purposes. But collection is an essential concept that goes 
quite deep into midPoint core engine. Later midPoint versions will 
introduce ability to use collections in other midPoint mechanisms such 
as authorizations.

Collections define object grouping. But that is not enough to create a 
nice and user-friendly presentation. Firstly, we do not want to display 
all the collections to all the users as there could be a huge number of 
collections in the system. Displaying all of them would make navigation 
in the user interface quite difficult. We usually want to display 
different collections to different user roles. Maybe we want to use 
collections in various context that are suitable for the job at hand. 
Therefore we may want to display one set of collections in the menu, a 
different set of collections in the role selection and so on. And that 
is where the concept of /view/ comes in.

A /view/ specifies how a collection should be presented. View specifies 
whether collection should be displayed in the menu, role selection, 
search bars and so on. View is not a stand-alone midPoint object. It is 
rather part of admin GUI configuration 
<https://wiki.evolveum.com/display/midPoint/Admin+GUI+Configuration> 
data structure. It is a user interface “feature”. Therefore view can be 
bound to roles. Various job roles can see a different set of views 
customized to make their job easier. View configuration is also designed 
to be merged and overridden, which is meant to allow seamless 
combination of roles in a role hierarchy. Overall, collections and views 
are simple-to-use mechanisms that can significantly improve midPoint 
user experience and make the use of midPoint much more efficient.

We have been experimenting with collections and views for several years. 
It was always an experimental functionality. But it is Gutenberg where 
the collections and view really come of an age. Collections and views 
are now officially part of midPoint functionality. Yet, there is still a 
room for improvement 
<https://wiki.evolveum.com/display/midPoint/Object+Collections+and+Views+Improvements>. 
E.g. the use of views are currently limited to main menu, collections 
cannot be used in authorizations yet and so on. If you would like to 
improve this functionality, please consider to purchase midPoint 
platform subscription <https://evolveum.com/services/>.

(Reposted from Evolveum blog <https://evolveum.com/collections-and-views/>)

-- 

Radovan Semancik
Software Architect
evolveum.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20191205/32112bfa/attachment.htm>


More information about the midPoint mailing list