[midPoint] How is it possible to create a new object
Radovan Semancik
radovan.semancik at evolveum.com
Thu Jun 23 17:20:30 CEST 2016
Hi,
Yes and no ...
MidPoint philosophy is to have an handful of very generic reusable
object types. Such as user, org, role, service. These objects can be
used to represent almost any concept in the IDM field. E.g. role can
represent security roles, work positions, responsiblities; org can
represent functional organizational units (divisions, sections), but
also projects or ad-hoc teams. Services can represent devices, servers,
networks, etc. Each object has appropriate typing property (roleType,
orgType, ...) that can be used to distinguish these subtypes and sill
have very efficient data storage, scalability, etc. My estimate is that
90% of all IDM use cases can be implemented by using this method. E.g.
your costcenter can be modeled as a role or org in midPoint. This is
also somehow well supported in GUI, especially for organizational units
(not so well for roles yet).
In addition to that every focal object (user, role, org, service) can
have assignments. Assignments represent policy-base relations between
objects. Assignment is also an extensible data structure and it can have
custom properties. Therefore your Employment object can be represented
as assignment. In fact assignment already has description and
organizational unit link. Parametric assignments like these work
perfectly in midPoint core and we are using them is several projects.
However they are only partially supported in GUI.
We have decided to go this way because if you base your data model on
existing concepts you will automatically gain all the advantages that we
have already implemented. E.g. if you base your Employment concept on
assignment you will automatically gain ability to create new employments
in GUI, you will be able to use authorizations to select which
employment types are assignable by which employees (operators), they
will be automatically considered in reconciliation code, etc. This saves
a huge amount of customization effort.
Maybe it is just me, but I can feel the taste of one particular
competing IDM system in this question :-) ... and that's right, midPoint
does not have such an extreme flexibility. But we have a working GUI
that you can just reuse and you do not need to develop a completely
custom GUI by yourself, you do not need to reimplement the
synchronization logic for each object type and so on. We strongly prefer
reuse of code and concepts over reinventing everything from scratch for
each and every deployment.
Yet, there are two more alternative ways:
Your Costcenter concept is very simple and you can implement is as a
simple lookup table. This is reasonably well supported out-of-the-box
although it is not well documented. So I have written a very basic
documentation here: https://wiki.evolveum.com/display/midPoint/Lookup+Tables
Second option is to use the GenericObjectType. This object type was
designed to cover the remaining 10% of cases. But actually it looks like
it almost never used. I assume that the reason is that all practical
cases can be modeled using the normal midPoint approch. And as nobody is
asking for better GenericObjectType support then naturally the midPoint
support for GenericObjectType is very ... minimal. It should work well
in midPoint core, however it is not very well tested and it is not
supported in the GUI at all.
I would strongly recommend to use the common midPoint approach, model
your Employment as an assignment, model your Costcenter as a lookup
table or a role. If there are some parts that you are missing in
midPoint GUI we will be happy to implement them given the right
motivations. I would recommend you to secure appropriate subscription
which can cover the development of the missing part. Or maybe to sponsor
the missing features or to develop them yourself and contribute them.
--
Radovan Semancik
Software Architect
evolveum.com
On 06/23/2016 04:17 PM, Andreas Küstner wrote:
> Hello List,
>
> is it possible to create a new object like this:
>
> Object: Employment
> - Attribute: employee_number : String
> - Attribute: description: String
> - Reference to: organisation_unit : Link
> - Reference to: sub_organisation_unit : Link
> - Reference to: costcenter : Link
>
> Object: Costcenter
> - Attribute: costcenter_number : String
> - Attribute: description : String
>
> ...
>
>
> and to show these Object in the webui?
>
> I know it is mentioned in the wiki here: ->
> https://wiki.evolveum.com/display/midPoint/Repository+Subsystem
> (Creating New Objects)
>
> and here:
> https://wiki.evolveum.com/display/midPoint/Data+Model#DataModel-GenericObject
>
> Do i have to create the xsd-schemas?
> If i create such an object will it be sychronizable to other resources
> (via mapping)?
> Is there a sample for this?
>
> Thanks for help!
>
> Andy
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
More information about the midPoint
mailing list