Boundary Timer Event not firing on receive task

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Member II

Boundary Timer Event not firing on receive task

Hi, I am using activiti-5.21 and my bpmn file is attached. 

I have a receive task in a waiting state, also there is a boundary timer event is attached to it. Time duration is 'PT1M'.

I can see the timer job in ACT_RU_JOB with correct end due date. But it never gets fired. I have only set jobExecutorActivate = true, nothing else.

Also I have cancelActiviti=true. From the documentation, I understand that this will cancel the receive task and proceed to boundary event outgoing flow. Is it correct? What will happen if there is no outgoing flow defined for boundary event. i.e. if timeout does not happen, the flow will go to receive task -> target ref, but if timeout happens, boundary event will be followed, but as it does not have any outgoing flow, what will be the outcome.

Not sure what I am doing wrong here. Thanks in advance.

2 Replies
Highlighted
Intermediate

Re: Boundary Timer Event not firing on receive task

Make sure you have either the default or async job executor properly configured.

Details of the configuration can be found in the users guide here: Activiti User Guide - Async and Job Executor 

As for your question on flow when Boundary event has no connector. This is an illegal scenario and should not deploy (the deployment parser should fail it). Boundary events must be connected to something.

Also, looking at your process, you need to have an outgoing flow for the email task to be valid.

Hope this helps,

Greg

Highlighted
Member II

Re: Boundary Timer Event not firing on receive task

In Fact I am having similar issue as well. I am very new to Activiti BPM process. I tried all possible solution provided in this forum, yet i am not able to fix the issue. My problem is that I am not even seeing an entry in the ACT_RU_JOB table consistenly. All i am doing is at the end of the sub process, I will connect to another user task with the boundary timer in it. Once the duration expires, outgoing flow will be executed which is nothing but the complete flow. I am able to test the scenario locally using junit test cases and use job executor to manually fire the timer and verify it is going to the next appropriate flow. But when it runs in the background after deployment to test server, i am facing this issue. Tried enabling enabled both asynexecutoractivate and jobexecutoractivate properties. It doesn't work still. I am using Activiti version 5.21.0

activiti.cfg.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

	 <bean id="processEngineConfiguration"
		class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"> 
		<property name="databaseSchemaUpdate" value="true" />
        <property name="asyncExecutorActivate" value="true" /> 		
	</bean>
</beans>

Requesting your help on this.

<?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="Test" name="Test Request" isExecutable="true">
    <documentation>Test workflow</documentation>
    <startEvent id="StartEvent" name="Start Event"></startEvent>
    <serviceTask id="EmailServiceTask" name="Initial Email">
      <extensionElements>
        <activiti:field name="emailType">
          <activiti:string><![CDATA[INITIAL_EMAIL]]></activiti:string>
        </activiti:field>
        <activiti:field name="emailParameters">
          <activiti:expression><![CDATA[AssignedTo:|:${personId}]]></activiti:expression>
        </activiti:field>
      </extensionElements>
    </serviceTask>
    <subProcess id="SubProcess" name="Composing Form">
      <startEvent id="START" name="Start"></startEvent>
      <sequenceFlow id="periodicCreateFlow" name="Start" sourceRef="START" targetRef="UserTask"></sequenceFlow>
      <endEvent id="End" name="Inspection End"></endEvent>
      <userTask id="UserTask" name="Inspection Task"></userTask>
      <userTask id="ConfirmTask" name="ConfirmTask"></userTask>
      <sequenceFlow id="submit" name="Acknowledge" sourceRef="ConfirmTask" targetRef="End"></sequenceFlow>
      <sequenceFlow id="previous" name="previous" sourceRef="ConfirmTask" targetRef="UserTask">
        <conditionExpression xsi:type="tFormalExpression"><![CDATA[${action=="PREVIOUS"}]]></conditionExpression>
      </sequenceFlow>
      <intermediateCatchEvent id="timerintermediatecatchevent2" name="TimerCatchEvent">
        <timerEventDefinition>
          <timeDuration>PT10S</timeDuration>
        </timerEventDefinition>
      </intermediateCatchEvent>
      <sequenceFlow id="flow15" sourceRef="UserTask" targetRef="timerintermediatecatchevent2"></sequenceFlow>
      <sequenceFlow id="flow16" sourceRef="timerintermediatecatchevent2" targetRef="ConfirmTask"></sequenceFlow>
    </subProcess>
    <sequenceFlow id="startEventFlow" name="start" sourceRef="StartEvent" targetRef="EmailServiceTask"></sequenceFlow>
    <sequenceFlow id="spInspectionFlow" sourceRef="EmailServiceTask" targetRef="SubProcess"></sequenceFlow>
    <userTask id="usertask1" name="User Task"></userTask>
    <sequenceFlow id="flow17" sourceRef="SubProcess" targetRef="usertask1"></sequenceFlow>
    <boundaryEvent id="boundarytimer1" name="Timer" attachedToRef="usertask1" cancelActivity="true">
      <timerEventDefinition>
        <timeDuration>PT60S</timeDuration>
      </timerEventDefinition>
    </boundaryEvent>
    <endEvent id="endevent5" name="End"></endEvent>
    <sequenceFlow id="flow18" sourceRef="boundarytimer1" targetRef="endevent5"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_Test">
    <bpmndi:BPMNPlane bpmnElement="Test" id="BPMNPlane_Test">
      <bpmndi:BPMNShape bpmnElement="StartEvent" id="BPMNShape_StartEvent">
        <omgdc:Bounds height="35.0" width="35.0" x="31.0" y="146.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="EmailServiceTask" id="BPMNShape_EmailServiceTask">
        <omgdc:Bounds height="67.0" width="105.0" x="111.0" y="130.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="SubProcess" id="BPMNShape_SubProcess">
        <omgdc:Bounds height="230.0" width="501.0" x="250.0" y="50.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="START" id="BPMNShape_START">
        <omgdc:Bounds height="35.0" width="35.0" x="270.0" y="144.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="End" id="BPMNShape_End">
        <omgdc:Bounds height="35.0" width="35.0" x="690.0" y="144.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="UserTask" id="BPMNShape_UserTask">
        <omgdc:Bounds height="67.0" width="105.0" x="360.0" y="128.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="ConfirmTask" id="BPMNShape_ConfirmTask">
        <omgdc:Bounds height="67.0" width="105.0" x="530.0" y="128.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="timerintermediatecatchevent2" id="BPMNShape_timerintermediatecatchevent2">
        <omgdc:Bounds height="35.0" width="35.0" x="480.0" y="150.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="810.0" y="137.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="boundarytimer1" id="BPMNShape_boundarytimer1">
        <omgdc:Bounds height="30.0" width="30.0" x="901.0" y="151.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent5" id="BPMNShape_endevent5">
        <omgdc:Bounds height="35.0" width="35.0" x="976.0" y="149.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="periodicCreateFlow" id="BPMNEdge_periodicCreateFlow">
        <omgdi:waypoint x="305.0" y="161.0"></omgdi:waypoint>
        <omgdi:waypoint x="360.0" y="161.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="23.0" x="310.0" y="138.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="submit" id="BPMNEdge_submit">
        <omgdi:waypoint x="635.0" y="161.0"></omgdi:waypoint>
        <omgdi:waypoint x="690.0" y="161.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="67.0" x="635.0" y="161.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="previous" id="BPMNEdge_previous">
        <omgdi:waypoint x="582.0" y="128.0"></omgdi:waypoint>
        <omgdi:waypoint x="582.0" y="87.0"></omgdi:waypoint>
        <omgdi:waypoint x="412.0" y="87.0"></omgdi:waypoint>
        <omgdi:waypoint x="412.0" y="128.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="42.0" x="397.0" y="62.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15">
        <omgdi:waypoint x="465.0" y="161.0"></omgdi:waypoint>
        <omgdi:waypoint x="480.0" y="167.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow16" id="BPMNEdge_flow16">
        <omgdi:waypoint x="515.0" y="167.0"></omgdi:waypoint>
        <omgdi:waypoint x="530.0" y="161.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="startEventFlow" id="BPMNEdge_startEventFlow">
        <omgdi:waypoint x="66.0" y="163.0"></omgdi:waypoint>
        <omgdi:waypoint x="111.0" y="163.0"></omgdi:waypoint>
        <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="22.0" x="66.0" y="163.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="spInspectionFlow" id="BPMNEdge_spInspectionFlow">
        <omgdi:waypoint x="216.0" y="163.0"></omgdi:waypoint>
        <omgdi:waypoint x="250.0" y="165.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow17" id="BPMNEdge_flow17">
        <omgdi:waypoint x="751.0" y="165.0"></omgdi:waypoint>
        <omgdi:waypoint x="810.0" y="164.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow18" id="BPMNEdge_flow18">
        <omgdi:waypoint x="931.0" y="166.0"></omgdi:waypoint>
        <omgdi:waypoint x="976.0" y="166.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>