2014-08-29 52 views
1

我在一個解決方案一直在努力從bpm_package不具備「釐米:版本化」的每個節點中刪除方面。我需要它在啓動任務開始時完成,因此用戶無法與沒有連接方面的文檔啓動工作流。如何在Activiti的工作流在露天的開始刪除bpm_package項目?

我不想這樣做驗證用戶點擊開始按鈕的工作流程後。

我已經試過這一段代碼,但它沒有做什麼,我需要。它應該工作,不是嗎?

<startEvent id="start" name="Início" activiti:initiator="initiatorUserName" 
       activiti:formKey="workflowdocumentrequest:start"> 
    <extensionElements> 
     <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> 
      <activiti:field name="script"> 
       <activiti:string> 
        <![CDATA[ 
          for (var i = 0; i < bpm_package.children.length; i++) 
          { 
           if(!bpm_package.children[i].hasAspect("cm:versionable")){ 
            bpm_package.removeNode(bpm_package.children[i]); 
           } 
          } 
         ]]> 
       </activiti:string> 
      </activiti:field> 
     </activiti:executionListener> 
    </extensionElements> 
</startEvent> 

回答

1

實際上,我發佈的代碼不應該在表單創建時按我的想法執行。用戶單擊「開始工作流程」按鈕後會觸發此事件。

於是,我改變了TE代碼向用戶展示了無法連接到工作流,而不是刪除它們並沒有給他們任何購股權或響應啓動它的項目的錯誤消息。

新的代碼看起來像下面這樣:

<startEvent id="start" name="Início" activiti:initiator="initiatorUserName" 
       activiti:formKey="workflowdocumentrequest:start"> 
     <extensionElements> 
      <activiti:executionListener class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener" 
             event="start"> 
       <activiti:field name="script"> 
        <activiti:string><![CDATA[ 
         var count = 0; 
         var items = ""; 

         for (var i = 0; i < bpm_package.children.length; i++) { 
          var child = bpm_package.children[i]; 

          if (!child.hasAspect("cm:versionable")) { 
           items += child.properties['cm:name'] + "\n"; 
           count++; 
          } 
         } 

         if (count > 0){ 
          var message = "\n\nThe following item(s) cannot be attached to the workflow:\n"; 
          throw new Error(message + items + "\n"); 
         } 

        ]]></activiti:string> 
       </activiti:field> 
      </activiti:executionListener> 
     </extensionElements> 
    </startEvent> 

希望它可以幫助別人。

相關問題