2017-02-03 104 views
0

我在觸發工作流程時遇到問題。多次觸發Alfresco工作流程

我已經在一個文件夾規則

定義應用的規則:

我)當進入這個文件夾 II)的名稱結尾創建項目爲.xml III)執行腳本

腳本是

function startWorkflow() 
{ 
var workflow = actions.create("start-workflow"); 
workflow.parameters.workflowName = "activiti$Excel_initial_service"; 
workflow.parameters["bpm:workflowDescription"] = "Excel initial  service workflow for : " + document.name; 
var futureDate = new Date(); 
futureDate.setDate(futureDate.getDate() + 1); 
workflow.parameters["bpm:workflowDueDate"] = futureDate; 
return workflow.execute(document); 
} 

function main() 
{ 
startWorkflow(); 
} 

main(); 

和我的工作流定義是

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> 

<process id="Excel_initial_service" name="Excel Initial Service" isExecutable="true"> 
<startEvent id="startevent1" name="Start"></startEvent> 
. 
. 
. 
. 

<serviceTask id="servicetask1" name="Service Task" activiti:class="*"> </serviceTask> 
. 
. 
. 
. 

我現在面臨的問題是服務的任務越來越被多次觸發的文件夾及其沒有得到停止在進入單個文件。

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

<process id="***" name="Excel Generation Service" isExecutable="true"> 
<startEvent id="starteventexcel1" name="Start"></startEvent> 

<intermediateCatchEvent id="timerintermediatecatcheventexcel1" name="TimerCatchEvent1"> 
    <timerEventDefinition> 
    <timeDuration>PT10S</timeDuration> 
    </timerEventDefinition> 
</intermediateCatchEvent> 

<serviceTask id="servicetaskexcel1" name="Service Task" activiti:class="***"></serviceTask> 

<intermediateCatchEvent id="timerintermediatecatcheventexcel2" name="TimerCatchEvent2"> 
    <timerEventDefinition> 
    <timeDuration>PT10S</timeDuration> 
    </timerEventDefinition> 
</intermediateCatchEvent> 



<endEvent id="endeventexcel1" name="End"></endEvent> 
<sequenceFlow id="flowexcel1" sourceRef="starteventexcel1" targetRef="timerintermediatecatcheventexcel1"></sequenceFlow> 
<sequenceFlow id="flowexcel2" sourceRef="timerintermediatecatcheventexcel1" targetRef="servicetaskexcel1"></sequenceFlow> 
<sequenceFlow id="flowexcel3" sourceRef="servicetaskexcel1" targetRef="timerintermediatecatcheventexcel2"></sequenceFlow> 
<sequenceFlow id="flowexcel4" sourceRef="timerintermediatecatcheventexcel2" targetRef="endeventexcel1"></sequenceFlow> 

</process> 

+0

你執行腳本任務中的一些操作? – vikash

+0

你正在服務的任務?在我的腳本中,我正在執行一個工作流程** activiti $ Excel_initial_service **在工作流程的服務任務中,我正在生成一些excel文件 –

+0

您能否將完整的BPMN文件添加到您的問題中? – izodev

回答

0

這裏的第一個intermediateCatchEvent將執行服務任務每10秒。爲什麼使用它?

0

這個答案可能會幫助你。

要使用的類是ClockUtil,它會更改引擎的內部時鐘。

話雖這麼說,我查你的測試,我看到你正在使用的

ProcessEngine eng = ProcessEngineConfiguration 
     .createStandaloneInMemProcessEngineConfiguration() 
     .buildProcessEngine(); 

要獲得流程引擎。這會給你一個默認的引擎,禁用作業執行器。定時器執行需要作業執行程序。下面一行添加到構建流程引擎,使其工作:

setJobExecutorActivate(true); 

你可以參考這個問題https://community.alfresco.com/thread/219801-problem-with-intermediatecatchevent

,你會發現在github上一些代碼,如上面所解釋稱問題https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/event/timer/IntermediateTimerEventTest.java

+0

在我的BPMN文件中提到的類正在實現JavaDelegate。 我沒有構建任何流程引擎。我使用ServiceRegistry來獲取NodeRef。 ProcessEngineConfigurationImpl config = Context.getProcessEngineConfiguration(); ServiceRegistry registry =(ServiceRegistry)config.getBeans() .get(ActivitiConstants。SERVICE_REGISTRY_BEAN_KEY);' –

+0

在我的BPMN文件中提到的類正在實現JavaDelegate。 我沒有構建任何流程引擎。我使用ServiceRegistry來獲取NodeRef。 'ProcessEngineConfigurationImpl config = Context.getProcessEngineConfiguration();服務註冊表=(ServiceRegistry)config.getBeans() .get(ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY);' 我沒有得到在哪裏添加** setJobExecutorActivate(true); ** –