2013-06-04 37 views
2

將任何文檔插入文件夾時,我試圖啓動一個附加了文檔的自定義工作流程。我使用Alfresco社區v4.2。如何使用規則啓動Alfresco工作流程,包括文檔

如果我選擇文檔然後「啓動工作流」,Wokflow可以正常工作。該文檔已正確添加到工作流程中,我可以完成它。

我的規則是否到位和執行時,任何文件插入下面的腳本(註釋中的代碼是什麼我已經試過):

//var workflow = actions.create("start-workflow"); 
var wfdef = workflow.getDefinitionByName("activiti$reviewNewFile"); 
//workflow.parameters["bpm:workflowDescription"] = document.name; 
//workflow.parameters.workflowName = "activiti$reviewNewFile"; 
if(wfdef) 
{ 
    var wfparams = new Array(); 
    wfparams["bpm:workflowDescription"] = document.name; 
    var wfpackage = workflow.createPackage(); 
    //var docNode = search.findNode(document.nodeRef); 
    wfpackage.addNode(document); 
    //wfpackage.addNode(docNode); 
    wfdef.startWorkflow(wfpackage,wfparams); 
} 

//workflow.execute(document); 

眼下腳本被很好的執行,工作流是創建,但沒有文檔被添加到工作流程中。由於文檔的名稱在工作流程中正確輸出,因此腳本中的文檔引用不爲空。

我讀過已經這兩個職位,但他們都不是有幫助:

編輯:我已經能夠縮小它下。我在工作流程中的第一項任務是分配給候選組,而不是個人。

<extensionElements> 
    <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener"> 
     <activiti:field name="script"> 
      <activiti:string> 
       execution.setVariable('wf_secretairesGroup', groups.getGroup('Secretaires').getFullName()); 
      execution.setVariable('wf_responsablesGroup', groups.getGroup('Responsables').getFullName()); 
      </activiti:string> 
     </activiti:field> 
    </activiti:executionListener> 
</extensionElements> 

我的BPMN文件的一部分:組名稱是由下面的代碼段檢索

<startEvent id="start" name="Start" activiti:formKey="wf:reviewNewFile" /> 

<sequenceFlow id="flow1" name="" sourceRef="start" targetRef="addCommentTask"></sequenceFlow> 

<userTask id="addCommentTask" name="Add comment Task" activiti:candidateGroups="${wf_secretairesGroup}" activiti:formKey="wf:addCommentTask"> 
    <extensionElements> 
    <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener"> 
     <activiti:field name="script"> 
     <activiti:string> 
      execution.setVariable('bpm_comment', task.getVariable('bpm_comment')); 
      execution.setVariable('wf_initiator', person); 
     </activiti:string> 
     </activiti:field> 
    </activiti:taskListener> 
    </extensionElements> 
</userTask> 

我試圖通過與受讓人取代candidateGroup改變addCommentTask,將其分配給管理員,它的工作......仍然不知道爲什麼它以這種方式工作,而不是其他。

回答

3

如果你做到以下幾點(數組更改爲對象):

var wfdef = workflow.getDefinitionByName("activiti$reviewNewFile"); 
var wfparams = new Object(); 
wfparams["bpm:workflowDescription"] = document.name; 
wfparams["bpm:assignee"] = people.getPerson("admin"); 
var wfpackage = workflow.createPackage(); 
wfpackage.addNode(document); 
wfdef.startWorkflow(wfpackage,wfparams); 
+0

不會改變任何東西。由於我在workflowDescription中顯示了文檔的名稱,因此可以使用參數。 – Anth0

+0

這是愚蠢的愚蠢。此代碼有效。我的問題在於,我的一些測試用戶在assignedGroup中沒有私人站點內的文件夾的權限......這就解釋了爲什麼直接分配給管理員時它工作。 – Anth0

+1

嗨,沒問題:) –

相關問題