<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi,<br>
<br>
There are several reasons. But perhaps the most important is
provisioning dependencies:
<a class="moz-txt-link-freetext" href="https://wiki.evolveum.com/display/midPoint/Provisioning+Dependencies">https://wiki.evolveum.com/display/midPoint/Provisioning+Dependencies</a><br>
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.<br>
<br>
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.<br>
<br>
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.<br>
<br>
<pre class="moz-signature" cols="72">--
Radovan Semancik
Software Architect
evolveum.com
</pre>
<br>
<br>
On 06/23/2016 11:28 AM, Дорофеев Илья wrote:<br>
</div>
<blockquote
cite="mid:F82253638486D44DABA51EC404D48AF3574D46D6@EX-MB2.solar.local"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi guys,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Recently I’ve come
across a wiki page <a moz-do-not-send="true"
href="https://wiki.evolveum.com/display/midPoint/Simplification+of+processing+in+clockwork+and+projector">https://wiki.evolveum.com/display/midPoint/Simplification+of+processing+in+clockwork+and+projector</a>
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?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI",sans-serif;mso-fareast-language:RU" lang="EN-US">__________________________<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI",sans-serif;mso-fareast-language:RU" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI",sans-serif;mso-fareast-language:RU" lang="EN-US">Ilya
Dorofeev<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
midPoint mailing list
<a class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com">midPoint@lists.evolveum.com</a>
<a class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint">http://lists.evolveum.com/mailman/listinfo/midpoint</a>
</pre>
</blockquote>
<br>
<br>
</body>
</html>