Problème de condition sur transition [Non Résolu]

cancel
Showing results for 
Search instead for 
Did you mean: 
huberd
Member II

Problème de condition sur transition [Non Résolu]

Bonjour,

J'ai actuellement un problème pour conditionner mes transitions. Mon but est de tester une variable issue d'une classe java. Cette variable me retourne soit true soit false. Cette variable doit me conditionner l'accès à une tâche précise.

Voici le noeud du workflow correspondant.

   <!–**************************–> 
   <!–**      <Decision>      **–>
   <!–**      isapproved      **–>
   <!–**************************–> 
   <decision name="isapproved">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>isapproved</name>
            <disable>false</disable>
         </action>          
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_requiredApprobatorPercent" access="write"/>
               <expression>lwf_requiredApprobatorPercent = lwf_requiredApprovalPercent;</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_approbatorCount" access="write"/>
               <expression>lwf_approbatorCount = lwf_approvalAssignees.size();</expression>
            </script>
         </action>    
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">     
            <script>
               <variable name="lwf_actualApprobatorPercent" access="Write"/>
               <expression>lwf_actualApprobatorPercent = ((lwf_approvalCount * 100) / lwf_approbatorCount);</expression>
            </script>
         </action>
         <action class="lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert">
            <var>pdf</var>
         </action>      
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert return: " + pdf);
            </script>
         </action>
      </event>
      <transition name="reject" to="rejected"/>
      <!– transition name="approve" to="approvedApproval"–>
      <transition name="approve" to="qualityrequired">
         <condition>#{pdf == 'false'}</condition>
         <!– condition>#{lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent}</condition–>
      </transition>  
      <transition name="published" to="published">
         <condition>#{pdf == 'true'}</condition>
      </transition>  
   </decision>

La valeur testée est pdf et elle est retournée par l'appel de la classe suivante.

<action class="lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert">
   <var>pdf</var>
</action

2 transitions doivent être aiguillées en fonction du contenu de la variable pdf

      <transition name="approve" to="qualityrequired">
         <condition>#{pdf == 'false'}</condition>
         <!– condition>#{lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent}</condition–>
      </transition>  
      <transition name="published" to="published">
         <condition>#{pdf == 'true'}</condition>
         <!– condition>#{lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent}</condition–>
      </transition>

A terme ces 2 conditions seront également complété par la condition suivante :

<condition>#{lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent}</condition>

Merci pour votre aide.
2 Replies
huberd
Member II

Re: Problème de condition sur transition [Non Résolu]

Arggggggggg, ca ne va pas du tout moi en ce moment, je pense que je vais avoir besoin d'un patch vacances  Smiley Very Happy

En faite je n'utilisais pas la bonne tâche de décision, c'est pour cela que mes conditions n'étaient pas respectées.

Pour ceux que cela interesserait, voici le code sorce qui fonctionne.

   <!–**************************–> 
   <!–**      <Decision>      **–>
   <!–**      isapproved      **–>
   <!–**************************–> 
   <decision name="isapproved">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>isapproved</name>
            <disable>false</disable>
         </action>          
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_requiredApprobatorPercent" access="write"/>
               <expression>lwf_requiredApprobatorPercent = lwf_requiredApprovalPercent;</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_approbatorCount" access="write"/>
               <expression>lwf_approbatorCount = lwf_approvalAssignees.size();</expression>
            </script>
         </action>    
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">     
            <script>
               <variable name="lwf_actualApprobatorPercent" access="Write"/>
               <expression>lwf_actualApprobatorPercent = ((lwf_approvalCount * 100) / lwf_approbatorCount);</expression>
            </script>
         </action>
         <!– action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               for (var i = 0; i &lt; bpm_package.children.length; i++)
               {
                 logger.log("Enter Node Is Approved : " + bpm_package.children[i].properties["lpr:DocumentStatus"]);
               }
            </script>
         </action–>         
      </event>
      <transition name="reject" to="rejected"/>
      <!– transition name="approve" to="approvedApproval"–>
      <transition name="approve" to="qualityrequired">
         <condition>#{lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent}</condition>
      </transition>  
    </decision>

   <!–**************************–>
   <!–**      <Decision>      **–>
   <!–**   qualityrequired    **–>
   <!–**************************–>
   <decision name="qualityrequired">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>qualityrequired</name>
            <disable>false</disable>
         </action> 
         <action class="lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert">
            <var>pdf</var>
         </action>      
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert return: " + pdf);
            </script>
         </action>        
      </event>        
      <transition name="quality" to="startquality"/>
      <!– transition name="approve" to="approvedApproval"–>
      <transition name="published" to="published">
         <condition>#{pdf == "true"}</condition>
      </transition>  
   </decision>  

Je pense que la seconde tâche de décision est inutile et peut être simplifié en l'incorporant dans la première.
huberd
Member II

Re: Problème de condition sur transition [Non Résolu]

J'ai rassemblé mes 2 tâches décisions en une seule

   <!–**************************–> 
   <!–**      <Decision>      **–>
   <!–**      isapproved      **–>
   <!–**************************–> 
   <decision name="isapproved">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>isapproved</name>
            <disable>false</disable>
         </action>          
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_requiredApprobatorPercent" access="write"/>
               <expression>lwf_requiredApprobatorPercent = lwf_requiredApprovalPercent;</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_approbatorCount" access="write"/>
               <expression>lwf_approbatorCount = lwf_approvalAssignees.size();</expression>
            </script>
         </action>    
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">     
            <script>
               <variable name="lwf_actualApprobatorPercent" access="Write"/>
               <expression>lwf_actualApprobatorPercent = ((lwf_approvalCount * 100) / lwf_approbatorCount);</expression>
            </script>
         </action>
         <action class="lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert">
            <var>pdf</var>
         </action>     
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert return: " + pdf);
            </script>
         </action>             
      </event>
      <transition name="reject" to="rejected"/>
      <transition name="quality" to="startquality">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert (quality) return: " + pdf);
            </script>
         </action>        
         <condition>expression=#{(pdf == "false") and (lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent)}</condition>
      </transition>
      <transition name="published" to="published">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert (published) return: " + pdf);
            </script>
         </action>        
         <condition>expression=#{(pdf == "true") and (lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent)}</condition>
      </transition>
    </decision> 

Maintenant il se trouve que cela ne marche plus.

Il semblerait que j'ai un problème au sujet de mes expression de condition.

<condition>expression=#{(pdf == "true") and (lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent)}</condition>
<condition>expression=#{(pdf == "false") and (lwf_actualApprobatorPercent >= lwf_requiredApprobatorPercent)}</condition>

Si quelqu'un a une idée.