Boundary timer continues its execution even if attached User task is completed

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

Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi,

I am facing an interesting problem using Boundary timer with Cycles parameter. To have a look at my process definition, REFER: 'Boundary Timer continues execution.png'

The problem with this definition is, Once we reach to 'User Task-2 (for User-2)', we will let Boundary timer execute just for one time.
Once Boundary timer is executed, User-2 immediately completes it's action, which was assigned in 'User Task-2 (for User-2)' But but but the problem here is, Boundary timer still stays there in act_ru_job table and continues it's execution until configured cycles gets finished.

Ideally, once user completes the action, Boundary timer should stop it's execution, which happens with most of my process definition, but there is some issue that I'm trying to find about this process definition.

Now, I was trying to play with my Definition, and what do I do is, I tried replacing Inclusive gateway with Parallel gateway, which resulted in same erroneous output, and then I replaced it by Exclusive Gateway and what do I see is, once it is executed and followed by activity - User completing it's action, resulted in - the boundary timer's job is removed from Runtime table. I wonder how does this work correctly?

Can anybody help me find out issue with this Definition?

Thanks,
Ami Dave

1 Solution

Accepted Solutions
Highlighted
Intermediate

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hello Ami,

I spent a little (too much) time crawling through the code that manages state transfers between activities.
There is certainly a defect here, but it is very deep in the code and will require some real though to find a good solution.

The problem (in a nutshell) is a result of the fact that you join the flow from the notification (timer boundary event branch) back into the main flow.

This means, as soon as the first timer fires, a new "Concurrent" execution is created.

Concurrent executions are not removed until all flow lines are complete (i.e. in your example until Uster Task 2 is complete and the join is reached).

Because the execution is not deleted, the job's associated with the execution are also never deleted.

As far as I can tell in the few hours I spent yesterday, the execution is destroyed and marked inactive, but never actually deleted until the last concurrent execution completes. At that time, the whole set are deleted.

I have not (yet) tested, but I expect the version 6 engine will likely resolve this behavior as the PVM is no longer used and the mechanism used to track concurrent executions is completely overhauled.

That said, as a work around, have the flow path from the timer go to an end event after it completes it's processing. This way, there will be no concurrent executions and things will behave as you expect.

Hope this helps,

Greg

View solution in original post

16 Replies
Highlighted
Intermediate

Re: Boundary timer continues its execution even if the User task is completed

Jump to solution

Nothing stands out fro the image, but then there is very little detail in the image.

At the very least, please attach the bpmn file so we can look inside the process declaration.

Cheers,

Greg  

Highlighted
Active Member

Re: Boundary timer continues its execution even if the User task is completed

Jump to solution

Hi Greg,

The main concern and question here is, for all normal scenarios like attached: "Working Scenario.png", once Boundary timer is hit, and then user completes it's action (Boundary timer is attached to the user task, if you see, I'm talking about that action), simply Boundary timer's next execution is canceled, which means it's entry from act_ru_job table vanishes, further execution is stopped.Scenario

i.e. if I have configured cycles = 3 for my boundary timer, one time it gets executed, and then user completes it's action-which was indeed attached to timer, so, boundary timer will no more notify about action as incomplete action.

Then help me finding issues with my Definition's image posted in original above question that causes Boundary timer continuing it's execution even after user has completed it's action.

It is normal behavior of Boundary timer that, if it is attached to a User Task, then if user doesn't complete it's action within specified time, Boundary timer will be hit and flow will go through that way. The same way, the difference here is just that, We have made Boundary timer to execute more than one time, by configuring the Cycles property.

Thanks,

Ami Dave

Highlighted
Active Member

Re: Boundary timer continues its execution even if the User task is completed

Jump to solution

Hi Guys,

This is now more strange behavior of Activity framework. Have a look at below images: 

If I have done something like the 'Working Scenario.png', which simple says the User Task with which Boundary timer is attached, has End task at it's outflow. And as per my steps of reproducing:

1) Let boundary timer execute Once

2) Complete the User action defined in the User task which has Boundary timer attached to it

The Boundary timer doesn't executes afterwards, as it's entry in act_ru_job vanishes due to completion of the user task.

Here comes the problematic scenario, Refer: 'Not Working.png', If I have simply added anything (a User Task/ Any Gateway) as a outflow of User Task(which has boundary timer attached to it), Performing my steps for reproducing mentioned above, and what I see is, Boundary timer's entry is not vanished from act_ru_job, it continues it's execution till configured 'timeCycle' is not reached despite User task's action has been completed !!!!

Kindly report this issue as a Fix needy bug of Activiti and do let me know how can I fix it ( if not major issue then !! ) or probable fix version of Activiti that will fix it.

Thanks,

Ami Dave

Highlighted
Established Member II

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi Ami,

I can reproduce the same issue with my unit test. 

I guess you have created a JIRA issue for this? 

Thanks

Appreciate it.

Thong Huynh

Highlighted
Active Member

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi Thong,

Ya I have a JIRA case raised for this issue, but that is limited to my organisation's JIRA issues. I'm not sure but is there any way of creting a JIRA case for Activiti framework developers?? I can see "Create a Case" beneath Edit icon above right here, but there is a problem with the window popping up for creating a case: Drop-downs of "Space/Group" and "Priority" has only "Please Choose" option means others values are not being populated. Help me out here pl.

Actually I want to know the solution to this problem quickly in either ways: 

1) Someone from Activiti developers Let me know whether this issue is going to get fixed by you guys by any version upgrades

OR

2) Please help me solve this issue by providing any steps or sample code, as I want it to get fixed soon, and version upgrades are not gonna get configured at least in near future at our side, so need a Solution from you guys ASAP.

Any help will be appreciated.

Thanks,

Ami Dave

Highlighted
Established Member II

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi Ami,

In order to report JIRA issue to Activiti team, please create JIRA issue here: https://activiti.atlassian.net 

Did you get to see this issue creation dialog?

1) Someone from Activiti developers Let me know whether this issue is going to get fixed by you guys by any version upgrades

I can't tell you this as I'm not part of the Activiti developers but I can ask my manager.

2) Please help me solve this issue by providing any steps or sample code, as I want it to get fixed soon, and version upgrades are not gonna get configured at least in near future at our side, so need a Solution from you guys ASAP.

This is what we do at BP3, tailoring and fixing the engine where it's not working to provide cutting edge solutions to our customers. If you are interested in our services, I'll bring your request to my management.

Thank you,

Thong Huynh

Highlighted
Active Member

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi Thong,

Thanks a lot for the utmost help offered by you. 

I have logged case, have a look at it and kindly forward it to Development team:  ACT-4263  

(FYI, Its in Unassigned state)

Yes Thong, definitely talk to your Manager as this issue affects us the most, and without this, we can't take our development further, which is related to Boundary timer.

Thanks,

Ami Dave

Highlighted
Active Member

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hi Greg Harley ,

Please find below the 'Working' and 'Not Working' scenario's bpmn file.

Also have raised a case at Activiti's JIRA, have a look at it: https://activiti.atlassian.net/browse/ACT-4263 

As this issue is blocking our further development, kindly revert back with some sample code so that we can solve this issue ASAP and proceed further.

---------------------------------------------------Not Working Scenario.bpmn20.xml--------------------------------------------------------

<?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" xmlnsSmiley Surprisedmgdc="http://www.omg.org/spec/DD/20100524/DC" xmlnsSmiley Surprisedmgdi="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="process_1473721" name="Not Working Scenario" isExecutable="true">
<documentation>Not Working Scenario</documentation>
<startEvent id="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" name="Start"/>
<userTask id="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" name="User Task" activiti:assignee="U:413101" activiti:dueDate="P1D" activiti:formKey="15108:true"/>
<sequenceFlow id="sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE" sourceRef="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" targetRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4"/>
<serviceTask id="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" name="Service Task" activiti:async="true" activiti:class="Class1">
<extensionElements>
<activiti:field name="actionConfigId">
<activiti:string><![CDATA[11752]]></activiti:string>
</activiti:field>
</extensionElements>
</serviceTask>
<sequenceFlow id="sid-B483FDCF-106E-4789-8A95-90217957E1D3" sourceRef="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" targetRef="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04"/>
<sequenceFlow id="sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD" sourceRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" targetRef="sid-0E3DAFB3-6BD2-4208-8CAF-C1D46B88D628"/>
<boundaryEvent id="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" name="Boundary Timer (Cycle=3, Time duration=1M)" attachedToRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" cancelActivity="false">
<timerEventDefinition>
<timeCycle>R3/PT1M</timeCycle>
</timerEventDefinition>
</boundaryEvent>
<endEvent id="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6" name="End2"/>
<sequenceFlow id="sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB" sourceRef="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" targetRef="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6"/>
<userTask id="sid-0E3DAFB3-6BD2-4208-8CAF-C1D46B88D628" name="Any kind of User Task or Gateway" activiti:assignee="U:413101" activiti:dueDate="P2D" activiti:formKey="15106:false"/>
<endEvent id="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D" name="End1"/>
<sequenceFlow id="sid-88DF4796-C7F4-4FD8-9EF2-7999538CA69E" sourceRef="sid-0E3DAFB3-6BD2-4208-8CAF-C1D46B88D628" targetRef="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D"/>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_process_1473721">
<bpmndi:BPMNPlane bpmnElement="process_1473721" id="BPMNPlane_process_1473721">
<bpmndi:BPMNShape bpmnElement="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" id="BPMNShape_sid-E96B49EC-9561-41E9-AC59-627BE682FFFE">
<omgdc:Bounds height="30.0" width="30.0" x="97.5" y="115.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" id="BPMNShape_sid-E0C9A1D4-C177-4750-A3CC-143174D955F4">
<omgdc:Bounds height="80.0" width="100.0" x="172.5" y="90.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" id="BPMNShape_sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04">
<omgdc:Bounds height="80.0" width="100.0" x="179.08128551725872" y="232.5"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" id="BPMNShape_sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456">
<omgdc:Bounds height="30.0" width="30.0" x="214.08128551725875" y="155.9502209962767"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6" id="BPMNShape_sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6">
<omgdc:Bounds height="28.0" width="28.0" x="418.5" y="258.5"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-0E3DAFB3-6BD2-4208-8CAF-C1D46B88D628" id="BPMNShape_sid-0E3DAFB3-6BD2-4208-8CAF-C1D46B88D628">
<omgdc:Bounds height="80.0" width="100.0" x="382.5" y="100.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D" id="BPMNShape_sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D">
<omgdc:Bounds height="28.0" width="28.0" x="527.5" y="126.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE" id="BPMNEdge_sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE">
<omgdi:waypoint x="127.5" y="130.0"/>
<omgdi:waypoint x="172.5" y="130.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-B483FDCF-106E-4789-8A95-90217957E1D3" id="BPMNEdge_sid-B483FDCF-106E-4789-8A95-90217957E1D3">
<omgdi:waypoint x="229.08128551725875" y="185.9502209962767"/>
<omgdi:waypoint x="229.08128551725872" y="232.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD" id="BPMNEdge_sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD">
<omgdi:waypoint x="272.5" y="130.0"/>
<omgdi:waypoint x="382.5" y="130.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-88DF4796-C7F4-4FD8-9EF2-7999538CA69E" id="BPMNEdge_sid-88DF4796-C7F4-4FD8-9EF2-7999538CA69E">
<omgdi:waypoint x="482.5" y="140.0"/>
<omgdi:waypoint x="527.5" y="140.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB" id="BPMNEdge_sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB">
<omgdi:waypoint x="279.0812855172587" y="272.5"/>
<omgdi:waypoint x="418.5" y="272.5"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

---------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------Working Scenario.bpmn20.xml--------------------------------------------------------

<?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" xmlnsSmiley Surprisedmgdc="http://www.omg.org/spec/DD/20100524/DC" xmlnsSmiley Surprisedmgdi="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="process_1473721" name="Working Scenario" isExecutable="true">
<documentation>Working Scenario</documentation>
<startEvent id="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" name="Start"/>
<userTask id="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" name="User Task" activiti:assignee="U:413101" activiti:dueDate="P1D" activiti:formKey="15108:true"/>
<sequenceFlow id="sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE" sourceRef="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" targetRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4"/>
<serviceTask id="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" name="Service Task" activiti:async="true" activiti:class="Class1">
<extensionElements>
<activiti:field name="actionConfigId">
<activiti:string><![CDATA[11752]]></activiti:string>
</activiti:field>
</extensionElements>
</serviceTask>
<sequenceFlow id="sid-B483FDCF-106E-4789-8A95-90217957E1D3" sourceRef="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" targetRef="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04"/>
<sequenceFlow id="sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD" sourceRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" targetRef="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D"/>
<boundaryEvent id="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" name="Boundary Timer (Cycle=3, Time duration=1M)" attachedToRef="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" cancelActivity="false">
<timerEventDefinition>
<timeCycle>R3/PT1M</timeCycle>
</timerEventDefinition>
</boundaryEvent>
<endEvent id="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6" name="End2"/>
<sequenceFlow id="sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB" sourceRef="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" targetRef="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6"/>
<endEvent id="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D" name="End1"/>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_process_1473721">
<bpmndi:BPMNPlane bpmnElement="process_1473721" id="BPMNPlane_process_1473721">
<bpmndi:BPMNShape bpmnElement="sid-E96B49EC-9561-41E9-AC59-627BE682FFFE" id="BPMNShape_sid-E96B49EC-9561-41E9-AC59-627BE682FFFE">
<omgdc:Bounds height="30.0" width="30.0" x="97.5" y="115.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-E0C9A1D4-C177-4750-A3CC-143174D955F4" id="BPMNShape_sid-E0C9A1D4-C177-4750-A3CC-143174D955F4">
<omgdc:Bounds height="80.0" width="100.0" x="172.5" y="90.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04" id="BPMNShape_sid-AF4E4FB2-6BF5-475B-8805-DF37145D8D04">
<omgdc:Bounds height="80.0" width="100.0" x="179.08128551725872" y="232.5"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456" id="BPMNShape_sid-9499B10C-D4DF-43D0-9AF6-E0749F47D456">
<omgdc:Bounds height="30.0" width="30.0" x="214.08128551725875" y="155.9502209962767"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6" id="BPMNShape_sid-2FB653DD-42CB-4B67-A463-2EB9BEF8F9F6">
<omgdc:Bounds height="28.0" width="28.0" x="418.5" y="258.5"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D" id="BPMNShape_sid-C232EBE7-3D31-4257-9659-1506F9CB7F8D">
<omgdc:Bounds height="28.0" width="28.0" x="527.5" y="126.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE" id="BPMNEdge_sid-D1F28E60-6A06-47E3-BAC8-584FDE0873AE">
<omgdi:waypoint x="127.5" y="130.0"/>
<omgdi:waypoint x="172.5" y="130.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-B483FDCF-106E-4789-8A95-90217957E1D3" id="BPMNEdge_sid-B483FDCF-106E-4789-8A95-90217957E1D3">
<omgdi:waypoint x="229.08128551725875" y="185.9502209962767"/>
<omgdi:waypoint x="229.08128551725872" y="232.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD" id="BPMNEdge_sid-522D718A-C1AF-4896-A188-0F7E9E5A48AD">
<omgdi:waypoint x="272.5" y="131.56739811912226"/>
<omgdi:waypoint x="527.5068737974999" y="139.5613440061912"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB" id="BPMNEdge_sid-1FDB552E-2F4B-4AA3-85E9-E1482A922AFB">
<omgdi:waypoint x="279.0812855172587" y="272.5"/>
<omgdi:waypoint x="418.5" y="272.5"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

---------------------------------------------------------------------------------------------------------------------------------------------------------

Thanks,

Ami Dave

Highlighted
Intermediate

Re: Boundary timer continues its execution even if attached User task is completed

Jump to solution

Hello Ami,

Thank you for providing the test cases and raising the defect report.
As I am sure you know, Activiti is a community driven, open source product.

We welcome your contributions to the core engine as well as ancillary modules.

Should you wish to contribute a fix for the defect you raised, please create a pull request against our github repository.

If the defect is causing you a problem and you don't have the skills, time or capacity to fix it yourself and contribute back to the community, you can certainly engage others to do so on your behalf. My own company BP3 provides just such support for our clients.

If you wish to engage us to resolve this, please feel free to reach out to me directly at gharley@bp-3.com.

Thanks and have a great day.

Greg