Problème sur écran de workflow

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

Problème sur écran de workflow

Bonjour,

J'ai quelques petit soucis sur mes écrans de workflow.

Pour commencer, je n'arrive pas à faire afficher la propriété bpm:comment qui permet de récupérer un commentaire utilisateur dans mon étape de validation.

   <!–**************************–> 
   <!–**     <Task Node>      **–>
   <!–**        review        **–>
   <!–**************************–>  
   <task-node name="review">
      <task name="lwf_reviewTask">
         <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{reviewer}</actor>
         </assignment>
      </task>
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>review</name>
            <disable>false</disable>
         </action>     
        
         <!– Set read permission for tne current reviewer –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <actor>#{reviewer}</actor>
            <permission>set</permission>
         </action> 
      </event>
      <transition name="reject" to="endReview"/>
      <transition name="approve" to="endReview">
         <script>
            <variable name="lwf_reviewCount" access="read,write" />
            <expression>
               lwf_reviewCount = lwf_reviewCount + 1;
            </expression>
         </script>
      </transition>
   </task-node>

Extrait du fichier shared\classes\alfresco\extension\web-client-config-custom.xml
   <config evaluator="node-type" condition="lwf:reviewTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId" />
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true" /–>
         <show-property name="bpm:priority" read-only="true" />
         <show-property name="bpm:status" />
         <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      </property-sheet>
   </config>

Extrait du fichier shared\classes\alfresco\extension\lprwfModel.xml
      <type name="lwf:reviewTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
      </type>

Extrait du fichier shared\classes\alfresco\extension\custom-model-context.xml pour déployer les fichiers model de workflow
    <bean id="lpr.validation.workflowBootstrap" parent="workflowDeployer">
        <property name="models">
           <list>
              <value>alfresco/extension/lprwfModel.xml</value>
           </list>
        </property>
        <property name="labels">
           <list>
              <value>alfresco/messages/lprwf/lprwfModel-messages</value>
           </list>
        </property>
    </bean>

Le fichier de definition du workflow est déployé via Eclipse.

Si quelqu'un à une idée, car là je pèche complètement, et ne comprends pas pourquoi je n'arrive pas à affiché cette propriété.
Je vous remercie d'avance.
1 Reply
huberd
Member II

Re: Problème sur écran de workflow

Y a comme un hic dans le chmilblic  :wink:

Je ne comprends pas, losque j'ajoute des champs suplémentaires sur les tâches attribuées à l'initiateur, cela marche et je les vois et peux même les éditer si c'est possible. Dans le cas où la tâche est attribuée à un autre acteurs comme dans l'exemple que j'ai énoncé ci-dessus, c'est comme si il ne connaissait pas le config evaluator associé à la tâche.

Bizarre, bizarre, aurais-je oublier quelquechose, car là je pèche complètement.  :?

Voici mes fichiers de config:

Définition du workflow
<?xml version="1.0" encoding="UTF-8"?>

<!– LPR Validation 12.1 –>

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="lwf:validation">
 
   <!– Workflow Initiator –>
   <swimlane name="initiator"/>
  
   <!– Workflow Reviewer –>
   <swimlane name="reviewer">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{reviewer}</actor>
      </assignment>
   </swimlane>
        
    <!– Workflow Approbators –>
   <swimlane name="approbators">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <pooledactors>#{group}</pooledactors>
      </assignment>
   </swimlane>
  
   <!– Workflow Quality Approbators –>
   <swimlane name="qualityassignees">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <pooledactors>GROUP_A_QUALITY_APPROBATORS</pooledactors>
      </assignment>
   </swimlane>
   
   
   <!–**************************–>
   <!–**    <Start State>     **–>
   <!–**        start         **–>
   <!–**************************–> 
   <start-state name="start">
      <task name="lwf:submitReviewAndApprovalTask" swimlane="initiator" />
      <event type="node-leave">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Start State</type>
            <name>start</name>
            <disable>false</disable>
         </action>
        
         <!– Remove all currents Permissions –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <permission>remove</permission>
         </action>
      </event>
      <transition name="" to="checkreview"/>
   </start-state>
  
  
   <!–**************************–>
   <!–**      <Decision>      **–>
   <!–**     checkreview      **–>
   <!–**************************–>
   <decision name="checkreview">
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>checkreview</name>
            <disable>false</disable>
         </action>

       <!– Check is the variable lwf_reviewAssignees exist –>        
         <action class="lpr.alfresco.repo.workflow.jbpm.CheckTypeExist">
            <var>#{lwf_reviewAssignees}</var>
            <type>reviewtype</type>
         </action>
        
          <!– Set read permission for the initiator –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
         <actor>#{initiator}</actor>
            <permission>set</permission>
         </action>
        
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               logger.log("Review Type is seting up to: " + reviewtype);
            </script>
         </action>
      </event>
      <transition name="approval" to="startapproval"/>
      <transition name="review" to="startreview">
         <condition>#{reviewtype == "true"}</condition>
      </transition>     
   </decision>
  
  
   <!–**************************–>
   <!–**        <Node>        **–>
   <!–**     startreview      **–>
   <!–**************************–>  
   <node name="startreview">
      <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
         <foreach>#{lwf_reviewAssignees}</foreach>
         <var>reviewer</var>
      </action>
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Node</type>
            <name>startreview</name>
            <disable>false</disable>
         </action>
        
         <!– Set document status to Review –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetDocumentStatus">
            <status>Review</status>
         </action>  
        
         <!– Move Document to Review and Approval folder –>
         <action class="lpr.alfresco.repo.workflow.jbpm.MoveDocument">
            <folderdst>Review and Approval</folderdst>
         </action> 
       
         <script>
            <variable name="lwf_reviewCount" access="write" />
            <expression>
               lwf_reviewCount = 0;
            </expression>
         </script>
      </event>
      <transition name="review" to="review"/>
   </node>
  
  
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**        review        **–>
   <!–**************************–>  
   <task-node name="review">
      <task name="lwf_reviewTask" swimlane="reviewer">
         <!– assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{reviewer}</actor>
         </assignment–>
      </task>
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>review</name>
            <disable>false</disable>
         </action>     
        
         <!– Set read permission for tne current reviewer –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <actor>#{reviewer}</actor>
            <permission>set</permission>
         </action> 
      </event>
      <transition name="reject" to="endReview"/>
      <transition name="approve" to="endReview">
         <script>
            <variable name="lwf_reviewCount" access="read,write" />
            <expression>
               lwf_reviewCount = lwf_reviewCount + 1;
            </expression>
         </script>
      </transition>
   </task-node>
  
  
   <!–**************************–>
   <!–**       <<Join>>       **–>
   <!–**************************–>  
   <join name="endReview">
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Join</type>
            <disable>false</disable>
         </action>     
        
         <!– Unset read permission for tne current reviewer –>        
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <actor>#{reviewer}</actor>
            <permission>unset</permission>
         </action>        
      </event>
      <transition to="isreviewed" />
   </join>


   <!–**************************–>
   <!–**      <Decision>      **–>
   <!–**      isreviewed      **–>
   <!–**************************–>  
   <decision name="isreviewed">
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>isreviewed</name>
            <disable>false</disable>
         </action>           
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_requiredReviewerPercent" access="write"/>
               <expression>lwf_requiredReviewerPercent = lwf_requiredReviewPercent;</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script> 
               <variable name="lwf_reviewerCount" access="write"/>
               <expression>lwf_reviewerCount = lwf_reviewAssignees.size();</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_actualReviewerPercent" access="write"/>
               <expression>lwf_actualReviewerPercent = ((lwf_reviewCount * 100) / lwf_reviewerCount);</expression>
            </script>
         </action>
      </event>
      <transition name="reject" to="rejected"/>
      <transition name="approve" to="startapproval">
         <condition>#{lwf_actualReviewerPercent >= lwf_requiredReviewerPercent}</condition>
      </transition>  
   </decision>
  
   
   <!–**************************–>
   <!–**        <Node>        **–>
   <!–**    startapproval     **–>
   <!–**************************–>  
   <node name="startapproval">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Node</type>
            <name>startapproval</name>
            <disable>false</disable>
         </action>         
        
         <!– Set document status to In Approval –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetDocumentStatus">
            <status>Approval</status>
         </action>  
        
         <!– Move Document to Review and Approval folder –>
         <action class="lpr.alfresco.repo.workflow.jbpm.MoveDocument">
            <folderdst>Review and Approval</folderdst>
         </action>    
        
         <!– Get Approbators Group –>
        <action class="lpr.alfresco.repo.workflow.jbpm.getApprobators">
            <var>group</var>
         </action>

       <!–  Set read permission for approbators group –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>#{group}</pooledactors>
            <permission>set</permission>
         </action>  
      </event>
      <transition name="lwf_approve" to="approval"/>
   </node>
  
  
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**       approval       **–>
   <!–**************************–>    
   <task-node name="approval">
      <task name="lwf_approvalTask" swimlane="approbators">
         <event type="task-end">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  <expression>
                     if (taskInstance.actorId == null)
                        taskInstance.actorId = person.properties.userName;
                  </expression>
               </script>
            </action>
         </event>
      </task>  
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>approval</name>
            <disable>false</disable>
         </action>        
     
         <!– Set read permission for tne current approbator –>     
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>#{group}</pooledactors>
            <permission>set</permission>
         </action> 
      </event>
      <event type="node-leave">
     
         <!– Unset read permission for tne group approbator –>     
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>#{group}</pooledactors>
            <permission>unset</permission>
         </action>
      </event>
      <transition name="lwf_reject" to="rejected" />
      <transition name="lwf_approve" to="checkpdf" />
   </task-node>  


   <!–**************************–>
   <!–**      <Decision>      **–>
   <!–**       checkpdf       **–>
   <!–**************************–>
   <decision name="checkpdf">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Decision</type>
            <name>checkpdf</name>
            <disable>false</disable>
         </action> 
        
         <!– Check if PDF convertion is enabled –>
         <action class="lpr.alfresco.repo.workflow.jbpm.CheckPDFConvert">
            <var>pdf</var>
         </action>      
      </event>        
      <transition name="quality" to="startquality"/>
      <transition name="published" to="published">
         <condition>#{pdf == "true"}</condition>
      </transition>  
   </decision>  


   <!–**************************–>
   <!–**        <Node>        **–>
   <!–**     startquality     **–>
   <!–**************************–>  
   <node name="startquality">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Node</type>
            <name>startquality</name>
            <disable>false</disable>
         </action>        
         <action class="lpr.alfresco.repo.workflow.jbpm.SetDocumentStatus">
            <status>Quality Approval</status>
         </action>  
         <!– Move Document to Drafts folder –>
         <action class="lpr.alfresco.repo.workflow.jbpm.MoveDocument">
            <qualitydst>Quality</qualitydst>
         </action>                   
         <!– Set Editor permission for the Quality Group –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>GROUP_A_QUALITY_APPROBATORS</pooledactors>
            <permission>setEditor</permission>
         </action>           
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_qualityReference" access="write"/>
               <expression>lwf_qualityReference="EU-DSI-IOP.0001";</expression>
            </script>
         </action>
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <variable name="lwf_qualityAgreement" access="write"/>
               <expression>lwf_qualityAgreement="v1.0.Published.2008-04-23";</expression>
            </script>
         </action>
      </event>
      <transition name="approval" to="quality"/>
   </node>
  
  
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**       quality        **–>
   <!–**************************–>    
   <task-node name="quality">
      <task name="lwf_qualityTask" swimlane="qualityassignees">
         <event type="task-end">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  <expression>
                     if (taskInstance.actorId == null)
                        taskInstance.actorId = person.properties.userName;
                  </expression>
               </script>
            </action>
         </event>
      </task>
      <event type="node-enter">
         <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>quality</name>
            <disable>false</disable>
         </action>         
      </event>
      <event type="node-leave">
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>GROUP_A_QUALITY_APPROBATORS</pooledactors>
            <permission>unsetEditor</permission>
         </action>
          <!– Move Document to Drafts folder –>
         <action class="lpr.alfresco.repo.workflow.jbpm.MoveDocument">
            <folderdst>Review and Approval</folderdst>
         </action>
      </event>
      <!– transition name="continue" to="qualityapproval" /–>
      <transition name="continue" to="published"/>
   </task-node>  
 
 
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**   qualityapproval    **–>
   <!–**************************–>    
   <!–task-node name="qualityapproval2">
      <task name="lwf_QualityTask" swimlane="qualityassignees" />
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>qualityapproval</name>
            <disable>false</disable>
         </action>        
      </event>
      <event type="node-leave">
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>GROUP_A_QUALITY_APPROBATORS</pooledactors>
            <permission>unsetEditor</permission>
         </action>
      </event–>
      <!– transition name="rejection" to="rejected" /–>
      <!–transition name="approve" to="published"/>
   </task-node–>  
 

   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**      rejected        **–>
   <!–**************************–> 
   <task-node name="rejected">
      <task name="lwf:rejectedTask" swimlane="initiator" />
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>rejected</name>
            <disable>false</disable>
         </action>       
         <!– Set document status to Drafts –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetDocumentStatus">
            <status>Draft</status>
         </action>  
         <!– Move Document to Drafts folder –>
         <action class="lpr.alfresco.repo.workflow.jbpm.MoveDocument">
            <folderdst>Drafts</folderdst>
         </action>    
         <!– Unset read permission for the initiator –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
         <actor>#{initiator}</actor>
            <permission>unset</permission>
         </action> 
         <!– Set Editor Permissions for the initiator –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
         <actor>#{initiator}</actor>
            <permission>setEditor</permission>
         </action>    
      </event>   
      <event type="node-leave">
         <!– unset Editor Permissions for the initiator –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
         <actor>#{initiator}</actor>
            <permission>unsetEditor</permission>
         </action>  
      </event> 
      <transition to="checkreview" name="restart"/>
      <transition to="end" name="end">
         <!– Restore all currents Permissions –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <permission>restore</permission>
         </action> 
      </transition>
   </task-node>
  
  
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**      published       **–>
   <!–**************************–>    
   <task-node name="published">
      <task name="lwf:publishedTask" swimlane="initiator" />
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>Task Node</type>
            <name>published</name>
            <disable>false</disable>
         </action>         
         <action class="lpr.alfresco.repo.workflow.jbpm.ApprovedDocument">
            <folderdst>Approved</folderdst>
            <!– status>Approved</status–>
         </action>
         <action class="lpr.alfresco.repo.workflow.jbpm.PublishedDocument">
            <folderdst>Published</folderdst>
            <!– status>Approved</status–>
         </action>
     
         <!– Unset Editor permission for the Quality Group –>
         <action class="lpr.alfresco.repo.workflow.jbpm.SetPermissions">
            <pooledactors>GROUP_A_QUALITY_APPROBATORS</pooledactors>
            <permission>unsetEditor</permission>
         </action>     
      </event>    
      <transition to="end"/>
   </task-node>  


   <!–**************************–>
   <!–**     <End State>      **–>
   <!–**         end          **–>
   <!–**************************–>       
   <end-state name="end">
      <event type="node-enter">
        <action class="lpr.alfresco.repo.workflow.jbpm.WriteInfo">
            <type>End State</type>
            <name>end</name>
            <disable>false</disable>
         </action>          
        </event>
   </end-state>     
  
</process-definition>

validationModel.xml
<?xml version="1.0" encoding="latin9"?>

<model name="lwf:validationmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>
   <description>LPR Workflow Documents Model</description>
   <author>Huberson David</author>
   <version>1.0</version>

   <imports>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <namespaces>
      <!–namespace uri="lwf.workflowModel" prefix="lwf"/–>
      <namespace uri="http://www.alfresco.org/model/lpr_lwfvalidation/1.0" prefix="lwf"/>
   </namespaces>


   <!–*****************************************************************************–>
   <!–*                                   TYPES                                   *–>
   <!–*****************************************************************************–>

   <types>

      <!–**************************–>
      <!–**    <Start State>     **–>
      <!–**        start         **–>
      <!–**************************–>
      <type name="lwf:submitReviewAndApprovalTask">
         <parent>bpm:startTask</parent>
         <properties>
            <property name="lwf:requiredReviewPercent">
               <type>d:int</type>
               <mandatory>true</mandatory>
               <default>50</default>
               <constraints>
                  <constraint type="MINMAX">
                     <parameter name="minValue"><value>1</value></parameter>
                     <parameter name="maxValue"><value>100</value></parameter>
                  </constraint>
               </constraints>
            </property>
            <!–property name="lwf:requiredApprovalPercent">
               <type>d:int</type>
               <default>100</default>
            </property–>
         </properties>
         <mandatory-aspects>
            <aspect>lwf:reviewAssignees</aspect>
            <!–aspect>lwf:approvalAssignees</aspect–>
         </mandatory-aspects>
      </type>
     
      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**        review        **–>
      <!–**************************–>
      <type name="lwf:reviewTask">
         <parent>bpm:workflowTask</parent>
         <!–properties>
            <property name="lwf:qualityReferencer">
               <type>d:int</type>
            </property>
            <property name="lwf:qualityAgreementer">
               <type>d:int</type>
            </property>
         </properties–>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <mandatory-aspects>
            <aspect>lwf:qualityReferences</aspect>
         </mandatory-aspects>
      </type>

      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**       approval       **–>
      <!–**************************–>
      <type name="lwf:approvalTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
      </type>

      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**       quality        **–>
      <!–**************************–>
      <type name="lwf:qualityTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>lwf:qualityReferences</aspect>
         </mandatory-aspects>
         <!–overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
            <property name="lwf:qualityReference">
               <type>d:text</type>
            </property>
            <property name="lwf:qualityAgreement">
               <type>d:text</type>
            </property>
         </overrides–>
         <!–mandatory-aspects>
            <aspect>lwf:QualityAgreement</aspect>
         </mandatory-aspects–>
      </type>

      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**      rejected        **–>
      <!–**************************–>
      <type name="lwf:rejectedTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <!–mandatory-aspects>
            <aspect>lwf:ApprovalStats</aspect>
         </mandatory-aspects–>
      </type>

      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**      published       **–>
      <!–**************************–>
      <type name="lwf:publishedTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <!–mandatory-aspects>
            <aspect>lwf:ApprovalStats</aspect>
         </mandatory-aspects–>
      </type>


      <!–type name="lwf:rejectedReviewTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>lwf:ReviewStats</aspect>
         </mandatory-aspects>
      </type–>

      <!–type name="lwf:approvalReviewTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>lwf:ReviewStats</aspect>
         </mandatory-aspects>
      </type–>

      <!–type name="lwf:rejectedApprovalTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>lwf:ApprovalStats</aspect>
         </mandatory-aspects>
      </type–>

      <!–type name="lwf:approvalApprovalTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>lwf:ApprovalStats</aspect>
         </mandatory-aspects>
      </type–>

   </types>
  
  
   <!–*****************************************************************************–>
   <!–*                                  ASPECTS                                  *–>
   <!–*****************************************************************************–>

   <aspects>

      <!–**************************–>
      <!–**    <Start State>     **–>
      <!–**        start         **–>
      <!–**************************–>
      <aspect name="lwf:reviewAssignees">
         <associations>
            <association name="lwf:reviewAssignees">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <!–mandatory>true</mandatory–>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </target>
            </association>
         </associations>
      </aspect>

      <!–**************************–>
      <!–**     <Task Node>      **–>
      <!–**   qualityapproval    **–>
      <!–**************************–>
      <aspect name="lwf:qualityReferences">
         <properties>
            <property name="lwf:qualityReference">
               <type>d:int</type>
            </property>
            <property name="lwf:qualityAgreement">
               <type>d:int</type>
            </property>
         </properties>
      </aspect>


      <!–aspect name="lwf:approvalAssignees">
         <associations>
            <association name="lwf:approvalAssignees">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>true</many>
               </target>
            </association>
         </associations>
      </aspect–>

      <!–aspect name="lwf:assignActor">
         <properties>
            <property name="lwf:assignActor">
               <type>d:text</type>
            </property>
         </properties>
      </aspect–>

      <!–aspect name="lwf:ReviewStats">
         <properties>
            <property name="lwf:reviewerCount">
               <type>d:int</type>
            </property>
            <property name="lwf:requiredReviewerPercent">
               <type>d:int</type>
            </property>
            <property name="lwf:reviewCount">
               <type>d:int</type>
            </property>
            <property name="lwf:actualReviewerPercent">
               <type>d:int</type>
            </property>
         </properties>
      </aspect–>

      <!–aspect name="lwf:ApprovalStats">
         <properties>
            <property name="lwf:approbatorCount">
               <type>d:int</type>
            </property>
            <property name="lwf:requiredApprobatorPercent">
               <type>d:int</type>
            </property>
            <property name="lwf:approvalCount">
               <type>d:int</type>
            </property>
            <property name="lwf:actualApprobatorPercent">
               <type>d:int</type>
            </property>
         </properties>
      </aspect–>

      <!–aspect name="lwf:QualityAgreement">
         <properties>
            <property name="lwf:QualityAgreement">
               <type>d:text</type>
            </property>
         </properties>
      </aspect–>

   </aspects>

</model>

web-client-config-custom.xml
<alfresco-config>

   <!– Example of overriding the from email address –>

   <config>
      <client>
         <from-email-address>alfresco@lpr.eu</from-email-address>
         <!– search-max-results>100</search-max-results –>
      </client>
   </config>


   <!– Example of adding languages to the list in the login page –>
   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="ca_ES">Catalan</language>
         <language locale="da_DK">Danish</language>
         <language locale="de_DE">German</language>
         <language locale="es_ES">Spanish</language>
         <language locale="el_GR">Greek</language>
         <language locale="fr_FR">French</language>
         <language locale="it_IT">Italian</language>
         <language locale="ja_JP">Japanese</language>
         <language locale="du_NL">Dutch</language>
         <language locale="pt_BR">Portuguese (Brazilian)</language>
         <language locale="ru_RU">Russian</language>
         <language locale="fi_FI">Finnish</language>
         <language locale="tr_TR">Turkish</language>
         <language locale="zh_CN">Simplified Chinese</language>
      </languages>
   </config>

   <!– Example of configuring advanced search –>
   <!–
   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
         </content-types>
         <custom-properties>
            <meta-data aspect="app:simpleworkflow" property="app:approveStep" />
         </custom-properties>
      </advanced-search>
   </config>
   –>

   <!– Example of changing the sort direction for a view in the client –>
   <!–
   <config evaluator="string-compare" condition="Views">
      <views>
         <view-defaults>
            <topic>
               <sort-direction>ascending</sort-direction>
            </topic>
         </view-defaults>
      </views>
   </config>
   –>

   <!– Example of adding a custom icon to the Create Space dialog –>
   <config evaluator="string-compare" condition="cm:folder icons">
      <icons>
         <icon name="space-icon-users" path="/images/icons/space-icon-users.gif" />
         <icon name="space-icon-lpr" path="/images/icons/space-icon-lpr.gif" />
         <icon name="space-icon-benelux" path="/images/icons/space-icon-benelux.gif" />
         <icon name="space-icon-france" path="/images/icons/space-icon-france.gif" />
         <icon name="space-icon-group" path="/images/icons/space-icon-group.gif" />
         <icon name="space-icon-portugal" path="/images/icons/space-icon-portugal.gif" />
         <icon name="space-icon-spain" path="/images/icons/space-icon-spain.gif" />
         <icon name="space-icon-united-kingdom" path="/images/icons/space-icon-united-kingdom.gif" />
         <icon name="space-icon-pallet" path="/images/icons/space-icon-pallet.gif" />
      </icons>
   </config>

   <!– The config below shows how to incorporate the example model–>
   <!– into the web client, for this to work you will need to –>
   <!– rename example-model-context.xml.sample to example-model-context.xml –>
   <!–
   <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="my:sop" />
      </content-types>
   </config>

   <config evaluator="node-type" condition="my:sop">
      <property-sheet>
         <show-property name="mimetype" display-label-id="content_type"
                        component-generator="MimeTypeSelectorGenerator" />
         <show-property name="size" display-label-id="size"
                        converter="org.alfresco.faces.ByteSizeConverter"
                        show-in-edit-mode="false" />              
         <show-property name="my:publishedDate" />
         <show-association name="my:signOff" />
         <show-property name="my:authorisedBy" />
         <show-child-association name="my:processSteps" />
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="my:imageClassification">
      <property-sheet>
         <show-property name="my:width"/>
         <show-property name="my:height"/>
         <show-property name="my:resolution"/>
      </property-sheet>
   </config>

   <config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="my:imageClassification"/>
      </aspects>
   </config>

   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
            <type name="my:sop" />
         </content-types>
         <custom-properties>
            <meta-data type="my:sop" property="my:authorisedBy" />
            <meta-data aspect="my:imageClassification" property="my:resolution" />
         </custom-properties>
      </advanced-search>
   </config>
   –>
  
   <config evaluator="aspect-name" condition="lpr:Document">
      <property-sheet>
         <show-property name="lpr:Language"/>
         <show-property name="lpr:PDFConvert" show-in-edit-mode="true"/>
         <separator name="sepLpr1" display-label="Quality reference" component-generator="HeaderSeparatorGenerator" show-in-edit-mode="false"/>
         <show-property name="lpr:Status" show-in-edit-mode="false"/>
         <!–show-property name="lpr:Reference" show-in-edit-mode="false"/–>
         <show-property name="lpr:QualityReference" show-in-edit-mode="false"/>
         <!–show-association name="lpr:ReviewedBy" display-label-id="lpr_ReviewedBy" /–>
         <!–show-association name="lpr:ApprovedBy" display-label-id="lpr_ApprovedBy" /–>
         <show-property name="lpr:Reviewers" show-in-edit-mode="false"/>
         <show-property name="lpr:ReviewersName" show-in-edit-mode="false"/>
         <show-property name="lpr:Approbators" show-in-edit-mode="false"/>
         <show-property name="lpr:ApprobatorsName" show-in-edit-mode="false"/>
         <show-property name="lpr:QualityAgreement" show-in-edit-mode="false"/>
         <separator name="sepLpr2" display-label="Document versionning" component-generator="HeaderSeparatorGenerator" show-in-edit-mode="false"/>
         <show-property name="lpr:MajorVersion" show-in-edit-mode="true"/>
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="lpr:Status">
      <property-sheet>
         <show-property name="lpr:Status" show-in-edit-mode="false"/>
      </property-sheet>
   </config>


  <config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="lpr:Document" />
      </aspects>
      <subtypes>
      </subtypes>
  </config>

  <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
         </content-types>
         <custom-properties>
            <meta-data aspect="lpr:Reference" property="lpr:Reference" />
            <meta-data aspect="lpr:Status" property="lpr:Status"/>
            <meta-data aspect="lpr:QualityReference" property="lpr:QualityReference"/>
            <meta-data aspect="lpr:QualityAgreement" property="lpr:QualityAgreement"/>
         </custom-properties>
      </advanced-search>
   </config>


   <!–************************************************************************–>
   <!–*                         Workflow Configuration                       *–>
   <!–************************************************************************–>

   <!–**************************–>
   <!–**    <Start State>     **–>
   <!–**        start         **–>
   <!–**************************–>
   <config evaluator="node-type" condition="lwf:submitReviewAndApprovalTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator" />
         <show-property name="bpm:workflowPriority" display-label-id="wf_review_priority" />
         <!–show-property name="bpm:workflowDueDate" display-label-id="wf_review_due_date" /–>
         <separator name="sep2" display-label-id="sep_review_options" component-generator="HeaderSeparatorGenerator" />
         <show-association name="lwf:reviewAssignees" display-label-id="lwf_reviewAssignees" />
         <!–show-association name="lwf:approvalAssignees" display-label-id="lwf_approvals" /–>
         <!–separator name="sep3" display-label-id="lwf_review_options" component-generator="HeaderSeparatorGenerator" /–>
         <show-property name="lwf:requiredReviewPercent" display-label-id="lwf_requiredReviewPercent" />
      </property-sheet>
   </config>

   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**        review        **–>
   <!–**************************–>
   <config evaluator="node-type" condition="lwf:reviewTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId" />
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true" /–>
         <show-property name="bpm:priority" read-only="true" />
         <show-property name="bpm:status" />
         <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
         <show-property name="lwf:qualityReference" display-label-id="lwf_qualityReference" read-only="true"/>
         <show-property name="lwf:qualityAgreement" display-label-id="lwf_qualityAgreement" read-only="true"/>
      </property-sheet>
   </config>

   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**       approval       **–>
   <!–**************************–>
   <config evaluator="node-type" condition="lwf:approvalTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId" />
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true" /–>
         <show-property name="bpm:priority" read-only="true" />
         <show-property name="bpm:status" />
         <show-property name="bpm:comment" component-generator="TextAreaGenerator" />
      </property-sheet>
   </config>

   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**       quality        **–>
   <!–**************************–>
  <config evaluator="node-type" condition="lwf:qualityTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true"/–>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <!–show-property name="lwf:QualityAgreement" display-label-id="lwf_QualityAgreement"/–>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="sep_quality" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:qualityReference" display-label-id="lwf_qualityReference" read-only="true"/>
         <show-property name="lwf:qualityAgreement" display-label-id="lwf_qualityAgreement" read-only="true"/>
      </property-sheet>
   </config>
  
   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**      rejected        **–>
   <!–**************************–>
   <config evaluator="node-type" condition="lwf:rejectedTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true"/–>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="sep_review_and_approval" component-generator="HeaderSeparatorGenerator" />
         <!–show-property name="lwf:reviewerCount" read-only="true"/>
         <show-property name="lwf:requiredReviewerPercent" display-label-id="lwf_requiredReviewPercent" read-only="true"/>
         <show-property name="lwf:reviewCount" read-only="true"/>
         <show-property name="lwf:actualReviewerPercent" read-only="true"/–>
      </property-sheet>
   </config>

   <!–**************************–>
   <!–**     <Task Node>      **–>
   <!–**      published       **–>
   <!–**************************–>
   <config evaluator="node-type" condition="lwf:publishedTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <!–show-property name="bpm:dueDate" read-only="true"/–>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <!–separator name="sep2" display-label-id="lwf_approval_status" component-generator="HeaderSeparatorGenerator" /–>
         <!–show-property name="lwf:approbatorCount" read-only="true"/–>
         <!–show-property name="lwf:requiredApprobatorPercent" read-only="true"/–>
         <!–show-property name="lwf:approvalCount" read-only="true"/–>
         <!–show-property name="lwf:actualApprobatorPercent" read-only="true"/–>
      </property-sheet>
   </config>






   <!– –>

   <!–config evaluator="node-type" condition="lwf:approvedReviewTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_review_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:reviewerCount" read-only="true"/>
         <show-property name="lwf:requiredReviewerPercent" display-label-id="lwf_requiredReviewPercent" read-only="true"/>
         <show-property name="lwf:reviewCount" read-only="true"/>
         <show-property name="lwf:actualReviewerPercent" read-only="true"/>
      </property-sheet>
   </config–>

   <!–config evaluator="node-type" condition="lwf:rejectedReviewTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_review_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:reviewerCount" read-only="true"/>
         <show-property name="lwf:requiredReviewerPercent" display-label-id="lwf_requiredReviewPercent" read-only="true"/>
         <show-property name="lwf:reviewCount" read-only="true"/>
         <show-property name="lwf:actualReviewerPercent" read-only="true"/>
      </property-sheet>
   </config–>

   <!–config evaluator="node-type" condition="lwf:rejectedApprovalTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_approval_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:approbatorCount" read-only="true"/>
         <show-property name="lwf:requiredApprobatorPercent" read-only="true"/>
         <show-property name="lwf:approvalCount" read-only="true"/>
         <show-property name="lwf:actualApprobatorPercent" read-only="true"/>
      </property-sheet>
   </config–>

   <!–config evaluator="node-type" condition="lwf:approvedApprovalTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <-show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_approval_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:approbatorCount" read-only="true"/>
         <-show-property name="lwf:requiredApprobatorPercent" read-only="true"/>
         <-show-property name="lwf:approvalCount" read-only="true"/>
         <-show-property name="lwf:actualApprobatorPercent" read-only="true"/>
      </property-sheet>
   </config–>

   <!–config evaluator="node-type" condition="lwf:rejectedQualityTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_approval_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:approbatorCount" read-only="true"/>
         <show-property name="lwf:requiredApprobatorPercent" read-only="true"/>
         <show-property name="lwf:approvalCount" read-only="true"/>
         <show-property name="lwf:actualApprobatorPercent" read-only="true"/>
      </property-sheet>
   </config–>

   <!–config evaluator="node-type" condition="lwf:approvedQualityTask" replace="true">
      <property-sheet>
         <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
         <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
         <show-property name="bpm:dueDate" read-only="true"/>
         <show-property name="bpm:priority" read-only="true"/>
         <show-property name="bpm:status" read-only="true"/>
         <show-property name="lwf:QualityAgreement" display-label-id="lwf_QualityAgreement" read-only="true"/>
         <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
         <separator name="sep2" display-label-id="lwf_approval_status" component-generator="HeaderSeparatorGenerator" />
         <show-property name="lwf:approbatorCount" read-only="true"/>
         <show-property name="lwf:requiredApprobatorPercent" read-only="true"/>
         <show-property name="lwf:approvalCount" read-only="true"/>
         <show-property name="lwf:actualApprobatorPercent" read-only="true"/>
      </property-sheet>
   </config–>

</alfresco-config>