This is what our scenario is:


a) Sample Process A: --> Start -->Human Task 1 ---> Human Task 2 -->. End



When the above process is started it will wait at "Human Task 1". Let's says 
after some time/days based on some external application data - Human Task 1 
needs to be skipped/aborted and then the process moves to Task 2. In that case 
if we simply call this



ksession.getWorkItemManager ().abortWorkItem (workItemId);



I was expecting the above call to also call the handler's abortWorkItem method 
so that the external Task can also be skipped/aborted.



I understand that when we add a new Task 3 different types of events are 
registered for the TaskEvent and if we complete the task 
(complete/failed/skipped) - the registered handlers will get called back and 
will then internally call the workitemamanger.abortWorkItem if it is 
failed/skipped and that will resolve the issue, but the problem I am facing is 
after the server gets restarted all the added listeners are lost and there 
won't be any callbacks.



May be I can manually call the skip of the Task associated with the work item 
but I thought to have this call non intrusive.



Thanks

Vijay



-----Original Message-----
From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Kris Verlaenen
Sent: Tuesday, December 15, 2009 7:42 PM
To: Rules Users List; Vijay K Pandey
Cc: Rules Users List
Subject: Re: [rules-users] Drools 5.1.0.M1 - Process Task JPAWorkItemManager



After a work item has been created, the work item manager expects the

handler to either signal the completion of the work item, or the

abortion if it could not be executed normally.  Note that, if the

handler decides to call the abortWorkItem method, the abort method of

the handler is not called again (as the handler just told the engine

that the work item could not be executed, so no need to call that again).



The abortWorkItem method is called when the work item should no longer

be executed, for example when the process it was executing in was

aborted.  In that case, the abortWorkItem method of the handler will be

called, so he can also cancel the work item in the external system.  For

example, if the work item is a user task on a task list, this will

usually remove the task from the task list again.



Hope this helps!



Kris



Quoting Vijay K Pandey <vpan...@mdes.ms.gov>:



> Hi,

>

> I am using Drools 5.1.0.M1. My question is there any reason why

> JPAWorkItemManager does not call the workitemhandler when we abort a

> work item.

>

> a)       Step 1 - Obtain the stateful knowledge session - set the

> work item handler

> b)       Step 2 - Abort the work item. But this call does not call

> back the abortWorkItem of the work item handler.

>

> ksession.getWorkItemManager().abortWorkItem(workItemId);

>

> I checked the JPAWorkItemManager and it does not call the handler to

> execute the abortWorkItem method of the work item handler.

>

> I do see that from

>             public void internalAbortWorkItem(long id) ---- there is

> a call for the work item handler method but no call from

> abortWorkItem method

>

> Any reason why?

>

> Thanks

> Vijay

>









Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm

_______________________________________________

rules-users mailing list

rules-users@lists.jboss.org

https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to