<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>