cancel
Showing results for 
Search instead for 
Did you mean: 

Workflow working in 2.0 is not working in 2.1

pobe
Champ in-the-making
Champ in-the-making
I have a workflow that works perfectly fine in 2.0 but when it is run in 2.1 it stops in the middle of the process without any error message. What is wrong?

processdefinition



<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="sgu:workflow">

   <swimlane name="initiator"></swimlane>

   <swimlane name="projektledare">
      <assignment
         class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sgu_projektledare}</actor>
      </assignment>
   </swimlane>

   <swimlane name="verksamhetschef">
      <assignment
         class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sgu_verksamhetschef}</actor>
      </assignment>
   </swimlane>

   <swimlane name="enhetschef">
      <assignment
         class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sgu_enhetschef}</actor>
      </assignment>
   </swimlane>

   <swimlane name="beställare">
      <assignment
         class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sgu_bestallare}</actor>
      </assignment>
   </swimlane>

   <swimlane name="projektägare">
      <assignment
         class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sgu_projektagare}</actor>
      </assignment>
   </swimlane>

   <start-state name="start">
      <task name="sgu:startaProcess" swimlane="initiator" />
      <transition name="Sänd" to="Utarbeta utkast"></transition>
   </start-state>

   <task-node name="Utarbeta utkast">
      <task name="sgu:utarbetaUtkast" swimlane="projektledare" />
      <transition name="Öppna för synpunkter" to="fork1"></transition>
   </task-node>

   <fork name="fork1">
      <transition name="tr1" to="Starta granskning"></transition>
      <transition name="tr2" to="Granska och redigera bs"></transition>
      <transition name="tr3" to="Granska och redigera pa"></transition>
      <transition name="tr4" to="Granska och redigera ec"></transition>
      <transition name="tr5" to="Granska och redigera vc"></transition>
   </fork>

   <node name="Starta granskning">
      <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
         <foreach>#{sgu_ovriga}</foreach>
         <var>reviewer</var>
      </action>
      <event type="node-enter">

      </event>
      <transition name="" to="Granska och redigera ovr"></transition>
   </node>

   <task-node name="Granska och redigera ovr">
      <task name="sgu:granskaRedigera">
         <assignment
            class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{reviewer}</actor>
         </assignment>
      </task>
      <transition name="Granskning klar" to="join1"></transition>
   </task-node>

<join name="join1">
      <transition name="" to="endredigering"></transition>
   </join>

   <task-node name="Granska och redigera vc">
      <task name="sgu:granskaRedigera" swimlane="verksamhetschef">
      </task>
      <transition name="Granskning klar" to="endredigering" />
   </task-node>

   <task-node name="Granska och redigera bs">
      <task name="sgu:granskaRedigera" swimlane="beställare"></task>
      <transition name="Granskning klar" to="endredigering" />
   </task-node>

   <task-node name="Granska och redigera pa">
      <task name="sgu:granskaRedigera" swimlane="projektägare"></task>
      <transition name="Granskning klar" to="endredigering" />
   </task-node>

   <task-node name="Granska och redigera ec">
      <task name="sgu:granskaRedigera" swimlane="enhetschef"></task>
      <transition name="Granskning klar" to="endredigering" />
   </task-node>

   <join name="endredigering">
      <transition to="Bearbeta synpunkter" />
   </join>

   <task-node name="Bearbeta synpunkter">
      <task name="sgu:submitParallelReviewTask"
         swimlane="projektledare" />
      <transition name="Skicka för godkännande" to="startreview" />
   </task-node>

<node name="startreview">
      <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
         <foreach>#{sgu_ovriga}</foreach>
         <var>reviewer</var>
      </action>
      <event type="node-enter">
         <script>
            <variable name="sgu_approveCount" access="write" />
            <expression>sgu_approveCount = 0;</expression>
         </script>
      </event>
      <transition name="review" to="fork2" />
   </node>
   
   <fork name="fork2">
      <transition name="tr1" to="review ovr"></transition>
      <transition name="tr2" to="review vc"></transition>
      <transition name="tr3" to="review bs"></transition>
      <transition name="tr4" to="review pa"></transition>
      <transition name="tr5" to="review ec"></transition>
   </fork>
   
   <task-node name="review vc">
      <task name="sgu:reviewTask" swimlane="verksamhetschef"></task>
      <transition name="Ej godkänd" to="endreview" />
      <transition name="Godkänd" to="endreview">
         <script>
            <variable name="sgu_approveCount" access="read,write" />
            <expression>
               sgu_approveCount = sgu_approveCount +1;
            </expression>
         </script>
      </transition>
   </task-node>
   
   <task-node name="review bs">
      <task name="sgu:reviewTask" swimlane="beställare"></task>
      <transition name="Ej godkänd" to="endreview" />
      <transition name="Godkänd" to="endreview">
         <script>
            <variable name="sgu_approveCount" access="read,write" />
            <expression>
               sgu_approveCount = sgu_approveCount + 1;
            </expression>
         </script>
      </transition>
   </task-node>

   <task-node name="review pa">
      <task name="sgu:reviewTask" swimlane="projektägare"></task>
      <transition name="Ej godkänd" to="endreview" />
      <transition name="Godkänd" to="endreview">
         <script>
            <variable name="sgu_approveCount" access="read,write" />
            <expression>
               sgu_approveCount = sgu_approveCount +1;
            </expression>
         </script>
      </transition>
   </task-node>

   <task-node name="review ec">
      <task name="sgu:reviewTask" swimlane="enhetschef"></task>
      <transition name="Ej godkänd" to="endreview" />
      <transition name="Godkänd" to="endreview">
         <script>
            <variable name="sgu_approveCount" access="read,write" />
            <expression>
               sgu_approveCount = sgu_approveCount +1;
            </expression>
         </script>
      </transition>
   </task-node>
      
   <node name="review ovr">
      <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
         <foreach>#{sgu_ovriga}</foreach>
         <var>reviewer</var>
      </action>
      <event type="node-enter">

      </event>
      <transition name="" to="review ovr ind"></transition>
   </node>

   <task-node name="review ovr ind">
      <task name="sgu:reviewTask">
         <assignment
            class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{reviewer}</actor>
         </assignment>
      </task>
      <transition name="Ej godkänd" to="join2" />
      <transition name="Godkänd" to="join2">
         <script>
            <variable name="sgu_approveCount" access="read,write" />
            <expression>
               sgu_approveCount = sgu_approveCount +1;
            </expression>
         </script>
      </transition>
   </task-node>

   <join name="join2">
      <transition name="" to="endreview"></transition>
   </join>

   <join name="endreview">
      <transition to="isapproved" />
   </join>

   <decision name="isapproved">
      <event type="node-enter">
         <script>
            <variable name="sgu_reviewerCount" access="write" />
            <variable name="sgu_requiredPercent" access="write" />
            <variable name="sgu_actualPercent" access="write" />
            <expression>
               sgu_requiredPercent = sgu_requiredApprovePercent;
               sgu_reviewerCount = sgu_ovriga.size()+4;
               sgu_actualPercent = ((sgu_approveCount * 100) /   sgu_reviewerCount);
            </expression>
         </script>
      </event>
            
      <transition name="Ej godkänd" to="rejected" />
      <transition name="Godkänd" to="approved">
            <condition>#{sgu_actualPercent > sgu_requiredApprovePercent}</condition>
      </transition>
   </decision>

   <task-node name="approved">
      <task name="sgu:approvedParallelTask" swimlane="initiator" />
      <transition name="Avsluta arbetsflöde" to="end" />
   </task-node>

   <task-node name="rejected">
         <task name="sgu:rejectedParallelTask" swimlane="initiator" />
      <transition name="Avsluta arbetsflöde" to="end" />
   </task-node>

   <end-state name="end" />

</process-definition>


Task model:



<?xml version="1.0" encoding="UTF-8"?>

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

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

   <namespaces>
      <namespace uri="sgu.workflow" prefix="sgu" />
   </namespaces>

   <types>
      <type name="sgu:startaProcess">
         <parent>bpm:startTask</parent>
         <mandatory-aspects>
            <aspect>sgu:projektledare</aspect>
         </mandatory-aspects>
      </type>

      <type name="sgu:utarbetaUtkast">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <mandatory-aspects>
            <aspect>sgu:verksamhetschef</aspect>
            <aspect>sgu:enhetschef</aspect>
            <aspect>sgu:projektagare</aspect>
            <aspect>sgu:bestallare</aspect>
            <aspect>sgu:ovriga</aspect>
         </mandatory-aspects>
      </type>
      
      <type name="sgu:reviewTask">
         <parent>bpm:workflowTask</parent>
      </type>

      <type name="sgu:granskaRedigera">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
      </type>

      <type name="sgu:rejectedParallelTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>sgu:parallelReviewStats</aspect>
         </mandatory-aspects>
      </type>

      <type name="sgu:approvedParallelTask">
         <parent>bpm:workflowTask</parent>
         <mandatory-aspects>
            <aspect>sgu:parallelReviewStats</aspect>
         </mandatory-aspects>
      </type>

      <type name="sgu:submitParallelReviewTask">
         <parent>sgu:submitConcurrentReviewTask</parent>
         <mandatory-aspects>
            <aspect>sgu:verksamhetschef</aspect>
            <aspect>sgu:enhetschef</aspect>
            <aspect>sgu:projektagare</aspect>
            <aspect>sgu:bestallare</aspect>
            <aspect>sgu:ovriga</aspect>
         </mandatory-aspects>
      </type>

      <type name="sgu:submitConcurrentReviewTask">
         <parent>bpm:startTask</parent>
         <properties>
            <property name="sgu:requiredApprovePercent">
               <type>d:int</type>
               <mandatory>true</mandatory>
               <default>99</default>
               <constraints>
                  <constraint type="MINMAX">
                     <parameter name="minValue">
                        <value>1</value>
                     </parameter>
                     <parameter name="maxValue">
                        <value>100</value>
                     </parameter>
                  </constraint>
               </constraints>
            </property>
         </properties>
      </type>

   </types>

   <aspects>

      <aspect name="sgu:ovriga">
         <associations>

            <association name="sgu:ovriga">
               <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="sgu:enhetschef">
         <associations>

            <association name="sgu:enhetschef">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>false</many>
               </target>
            </association>

         </associations>
      </aspect>

      <aspect name="sgu:bestallare">
         <associations>

            <association name="sgu:bestallare">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>false</many>
               </target>
            </association>

         </associations>
      </aspect>

      <aspect name="sgu:projektagare">
         <associations>

            <association name="sgu:projektagare">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>false</many>
               </target>
            </association>

         </associations>
      </aspect>

      <aspect name="sgu:projektledare">
         <associations>

            <association name="sgu:projektledare">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>false</many>
               </target>
            </association>

         </associations>
      </aspect>

      <aspect name="sgu:verksamhetschef">
         <associations>

            <association name="sgu:verksamhetschef">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:person</class>
                  <mandatory>true</mandatory>
                  <many>false</many>
               </target>
            </association>

         </associations>
      </aspect>

      <aspect name="sgu:parallelReviewStats">
         <properties>
            <property name="sgu:reviewerCount">
               <type>d:int</type>
            </property>
            <property name="sgu:requiredPercent">
               <type>d:int</type>
            </property>
            <property name="sgu:approveCount">
               <type>d:int</type>
            </property>
            <property name="sgu:actualPercent">
               <type>d:int</type>
            </property>
         </properties>
      </aspect>

   </aspects>

</model>


web-client-config:




<alfresco-config>

   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="ca_ES">Catalan</language>
         <language locale="se_SE">Swedish</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>
  
   <config evaluator="node-type" condition="sgu:startaProcess" 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="users_and_roles"
component-generator="HeaderSeparatorGenerator" />
         <show-association name="sgu:projektledare"
display-label="Projektledare" />
      </property-sheet>
      
   </config>
   
   <config evaluator="node-type" condition="sgu:utarbetaUtkast"
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"/>
         <show-property name="bpm:dueDate"/>
         <show-property name="bpm:priority"/>
    <separator name="sep2" display-label-id="users_and_roles"
component-generator="HeaderSeparatorGenerator" />
    <show-association name="sgu:verksamhetschef"
display-label="Verksamhetschef" />
    <show-association name="sgu:enhetschef" display-label="Enhetschef" />
    <show-association name="sgu:projektagare" display-label="Projektagare" />
    <show-association name="sgu:bestallare" display-label="Bestallare" />
    <show-association name="sgu:ovriga" display-label="Ovriga" />
   </property-sheet>
   </config>


<config evaluator="node-type" condition="sgu:submitParallelReviewTask"
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"/>
         <show-property name="bpm:dueDate"/>
         <show-property name="bpm:priority"/>
    <separator name="sep2" display-label-id="users_and_roles"
component-generator="HeaderSeparatorGenerator" />
    <show-association name="sgu:verksamhetschef"
display-label="Verksamhetschef" />
    <show-association name="sgu:enhetschef" display-label="Enhetschef" />
    <show-association name="sgu:projektagare" display-label="Projektagare" />
    <show-association name="sgu:bestallare" display-label="Bestallare" />
    <show-association name="sgu:ovriga" display-label="Ovriga" />
   </property-sheet>
   </config>
     
  
  
<config evaluator="string-compare" condition="Space Wizards">
      <folder-types>
         <type name="sgu:projectSpace"
               description="Utrymme for ett P-projekt"
               display-label="Projektutrymme" />
      </folder-types>
   </config>

   <config evaluator="node-type" condition="sgu:projectSpace">
      <property-sheet>
        <show-property name="sgu:Status" />
        <show-property name="sgu:StartDatum" />
        <show-property name="sgu:SlutDatum" />
        <show-association name="sgu:Projektledare"
show-in-edit-mode="true" show-in-view-mode="true" />
        <show-association name="sgu:Bestallare" show-in-edit-mode="true"
show-in-view-mode="true" />
        <show-association name="sgu:Verksamhetschef"
show-in-edit-mode="true" show-in-view-mode="true" />
      </property-sheet>
    </config>

   <config evaluator="node-type" condition="custom:projektdokumentation">
      <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="custom:Projekt" />
         <show-property name="custom:Datum" />
         <show-property name="custom:Projektledare" />
         <show-property name="custom:DokumentNr" />
         <show-property name="custom:DokumentTyp" />
      </property-sheet>
   </config>

   <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
        <type name="custom:projektdokumentation"/>
      </content-types>
   </config>
  
    <config evaluator="node-type" condition="sgu:approvedParallelTask"
replace="true">
        <property-sheet>
             <separator name="sep1" display-label-id="general"
component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
   </property-sheet>
   </config>
  
     <config evaluator="node-type" condition="sgu:rejectedParallelTask"
replace="true">
        <property-sheet>
             <separator name="sep1" display-label-id="general"
component-generator="HeaderSeparatorGenerator" />
         <show-property name="bpm:taskId"/>
   </property-sheet>
   </config>
     
   <config evaluator="node-type" condition="sgu:granskaRedigera"
replace="true">
        <property-sheet>
   </property-sheet>
   </config>
  
   <config evaluator="string-compare" condition="cm:folder icons">
   <icons>
   <icon name="space-icon-video"
path="/images/icons/space-icon-video.gif" />
   </icons>
   </config>
  
      <config evaluator="string-compare" condition="Sidebar">
      <sidebar>
         <plugins>
            <plugin id="livesearch" label="Livesearch"
description="Livesearch" page="/jsp/livesearch.jsp" />
         </plugins>
      </sidebar>
   </config>
  
</alfresco-config>


Regards,
Pontus
6 REPLIES 6

pobe
Champ in-the-making
Champ in-the-making
Can someone please help me with this, its driving me crazy

/P

davidc
Star Contributor
Star Contributor
Perhaps you can give more information - where does it stop?, how does it stop? (you don't get the next assigned tasks???), are there any errors in the log etc

pobe
Champ in-the-making
Champ in-the-making
The workflow never gets to the node "Bearbeta synpunkter" and doesnt give any error reports

/P

davidc
Star Contributor
Star Contributor
I suspect the workflow is behaving as declared.

The node "Bearbeta synpunkter" is sitting at the end of a five path join, of which one of the paths itself consists of a split & join (for the parallel review process).  So, unless all those paths are completed, you'll never get to your "Bearbeta" node.

If you want "OR" behaviour on the join, where only one (or N) paths need to complete, you can add the following to your joins…

<event type="node-enter">
  <script>
    node.nOutOfM = 1;
  </script>
</event>

pobe
Champ in-the-making
Champ in-the-making
But you shouldent get to the "bearbeta" node if all paths arent completed. In the current state you dont get to that node even if the paths are completed.

/Pontus

pobe
Champ in-the-making
Champ in-the-making
bump