[midPoint] Projector waves
Radovan Semancik
radovan.semancik at evolveum.com
Thu Jun 23 13:09:33 CEST 2016
Hi,
There are several reasons. But perhaps the most important is
provisioning dependencies:
https://wiki.evolveum.com/display/midPoint/Provisioning+Dependencies
Resources (or even projections) with dependencies need to be processed
sequentially. Outbound expression of a dependent projection needs to be
reflected in the input of the "dependee" projection. So our solution is
to sort the projections into waves. All the independent projections are
processed in the first wave, all the dependent in second wave, all that
depends on those in third wave and so on.
The other reason is that there are also attributes that the resource
sets or changes by itself (we call them "volatile attributes"). So after
provisioning an account we need to re-read that account and apply
inbound expressions to make sure that these volatile attribute are
correctly applied to the focal object (e.g. user). Therefore even if
there are no dependencies there is always a "half-wave" at the end of
every projector run to make sure that provisioning side-effects are
processed correctly.
Overall, I'm more than aware that the waves are not an ideal way how to
process this partially parallel partially sequential computation. A
parallel tree-like approach would be much more appropriate. But also
much more complex and significantly harder to debug. Therefore we have
decided to go with waves at the beginning and change the implementation
to a tree-based processing when needed.
--
Radovan Semancik
Software Architect
evolveum.com
On 06/23/2016 11:28 AM, Дорофеев Илья wrote:
>
> Hi guys,
>
> Recently I’ve come across a wiki page
> https://wiki.evolveum.com/display/midPoint/Simplification+of+processing+in+clockwork+and+projector
> and have been trying to comprehend what projector waves are all about.
> The given explanation, to be honest, isn’t clear enough. I have
> examined the source code as well. Could you give a bit more detailed
> reasons for waves and ideas behind them? Probably, some use cases or
> anything else?
>
> __________________________
>
> Ilya Dorofeev
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160623/66da182e/attachment.htm>
More information about the midPoint
mailing list