2015-06-23 76 views
0

有一個審查和批准工作流程 在開始表格上是附加文件和選定的執行者(Package ItemsPeople selection)。 然後創建一個任務分配給以前選擇的執行者。每個執行者都會看到分配給它的任務和文件附件。Alfresco用於添加文件

我需要檢查添加文件。雖然執行者尚未添加文件,但無法批准該任務。 我在任務創建時創建了計數器taskListener event="create"。 他計算髮送給執行者的文件。 然後我在完成任務taskListener event="complete"時創建了另一個計數器,它還計算文件。 然後我比較這兩個計數器,如果他們是相等的 這意味着執行者不附加文件,他看到錯誤。 但是這種方法只適用於批准任務的第一個執行者。 其他執行者可以在不添加文件的情​​況下批准任務。

我不知道是什麼問題。

這裏就是我實現它的代碼:

<userTask id="userTask5" name="Revies" activiti:assignee="${zvernennya_reviewnachassignee.properties.userName}" activiti:formKey="zvernennya:reviewnach"> 
     <documentation>Review task</documentation> 
     <extensionElements> 
     <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener"> 
      <activiti:field name="script"> 
      <activiti:string><![CDATA[ 
     if (typeof bpm_workflowDueDate != 'undefined') task.dueDate = bpm_workflowDueDate; 
     if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;;  
     var count=0; 
     for (var i = 0; i < bpm_package.children.length; i++) 
     { 
     count++; 
     } 
     execution.setVariable ('count', count); 
]]></activiti:string> 
      </activiti:field> 
     </activiti:taskListener> 
     <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener"> 
      <activiti:field name="script"> 
      <activiti:string><![CDATA[ 
     if(task.getVariableLocal('zvernennya_reviewnachtransitions') == 'Approve') { 
     execution.setVariable('zvernennya_reviewnachapprovalcount', zvernennya_reviewnachapprovalcount + 1); 
     } 
          var count_new=0; 
          for (var i = 0; i < bpm_package.children.length; i++) 
          { 
          count_new++; 
          } 
          if (count==count_new) {  
           var message = "\n\nAttach files!!\n"; 
           throw new Error(message + "\n"); 
          } 
]]></activiti:string> 
      </activiti:field> 
     </activiti:taskListener> 
     </extensionElements> 
     <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="zvernennya_executers" activiti:elementVariable="zvernennya_reviewnachassignee"> 
     <completionCondition>${zvernennya_reviewnachapprovalcount &gt;= zvernennya_reviewnachrequiredapprovalcount}</completionCondition> 
     </multiInstanceLoopCharacteristics> 
    </userTask> 

回答

0

我認爲你需要重新初始化在第二tasklistener變量「計數」(「完成」)。像這樣:

var count = execution.getVariable ('count'); 
var count_new= bpm_package.children.length; 
if (count==count_new) {  
    var message = "\n\nAttach files!!\n"; 
    throw new Error(message + "\n"); 
} 
+0

同樣的問題 –