2015-11-23 60 views
0

我創建了一個工作流程,我正在使用計時器,即我想在用戶任務中使用計時器。這意味着如果用戶在指定的時間內沒有執行任務,那麼任務從其待處理任務列表中清除,並且令牌移動到工作流中的指定節點。 我bmpn.xml文件是:在活動中使用計時器在指定時間內完成任務

<process id="newprocess6" isExecutable="true"> 
    <startEvent id="start" name="Start Consulting" activiti:initiator="initiator"> 
    <extensionElements> 
    <activiti:formProperty id="hname" name="Hospital Name" type="string"> </activiti:formProperty> 
    <activiti:formProperty id="dname" name="Doctor Name" type="string"> </activiti:formProperty> 
    </extensionElements> 
    </startEvent> 
    <userTask id="usertask1" name="Start Consulting with seema" activiti:assignee="seema"> 
    <extensionElements> 
    <activiti:formProperty id="consult" name="consult" type="enum"> 
    <activiti:value id="true" name="true"></activiti:value> 
    <activiti:value id="false" name="false"></activiti:value>  </activiti:formProperty> 
    </extensionElements> 
    </userTask> 
    <endEvent id="end1"></endEvent> 
    <boundaryEvent id="timer2" attachedToRef="usertask1" cancelActivity="true"> 
    <timerEventDefinition> 
    <timeDuration>PT2M</timeDuration> 
    </timerEventDefinition> 
</boundaryEvent> 
<userTask id="usertask2" name="Start Consulting with saurabh" activiti:assignee="saurabh"> 
<extensionElements> 
<activiti:formProperty id="consult" name="consult" type="enum"> 
<activiti:value id="true" name="true"></activiti:value> 
<activiti:value id="false" name="false"></activiti:value> 
</activiti:formProperty> 
</extensionElements> 
</userTask> 
<endEvent id="end2"></endEvent> 
<sequenceFlow id="flow1" sourceRef="start" targetRef="usertask1"></sequenceFlow> 
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="end1"></sequenceFlow> 
<sequenceFlow id="flow4" sourceRef="usertask2" targetRef="end2"></sequenceFlow> 
<sequenceFlow id="flow3" sourceRef="timer2" targetRef="usertask2"></sequenceFlow> 
</process> 

據我所知,如果用戶希瑪一個未完成的2分鐘之內她的任務,則任務將從希瑪的未決任務列表中清除,並應轉移到用戶SAURABH的未決任務名單。但是這項任務並沒有轉移到索拉布的未決任務清單上。 請幫幫我。 在此先感謝。

回答

1

有Activiti的文檔中一起來看看:http://www.activiti.org/userguide/#timerEventDefinitions

TIMEDURATION。要指定定時器應在啓動之前運行多長時間,可以將timeDuration指定爲 timerEventDefinition的子元素。使用的格式是ISO 8601格式(如BPMN 2.0規範所要求的 )。示例(間隔持續10天 ):P10D

只要你的用戶任務已經開始,這個指定的時間週期被執行。當這段時間結束後,您的計時器邊界事件被觸發,您可以移動到下一個用戶任務

+0

我不想使用特定的日期和時間。我希望當任務分配給用戶時,定時器將啓動,如果用戶沒有在指定的時間內完成任務,則令牌移動到工作流中指定的另一個節點。 – Seema

+0

糾正了我上面的答案。 – Ben

+0

Ben的答案是正確的,當人類任務到達時發生的第一個事件是「分配」事件(請參閱原因:http://www.activiti.org/userguide/#taskListeners)因此,您定義的持續時間在邊界計時器事件中將是準確的。如果您需要更復雜的邏輯,則使用TaskListener來操作附加的計時器。 –

相關問題