[jboss-user] [jBPM] - Re: How to suspend and resume a process?

Chris Melas do-not-reply at jboss.com
Sun Jan 15 17:06:46 EST 2012


Chris Melas [https://community.jboss.org/people/melc] created the discussion

"Re: How to suspend and resume a process?"

To view the discussion, visit: https://community.jboss.org/message/646889#646889

--------------------------------------------------------------
Hello,

> sebb wrote:
> 
> ... We have a scenario where processes have different priorieties and relations (for example process A cant run while process B is active). Therefor it should be possible to suspend a whole process, so that a process with a higher priority can run. I guess most of the time it's a problem of the workitems. When a process is paused the workitems (long running async items) have to be paused too and that will also somehow suspend the process (like your second example). But what happens when the process should be paused just in the milliseconds between two nodes (not very common, but If there is a timer between two nodes it would be quite probable)? In this case there would be no workitem that i can suspend manually to suspend the whole process and that way the process would just go on after the timer stopped.
> 
> Any thoughts about my scenario? Can you think of other examples (like the timer) where an external pause/resume would not work?

In order to manage the way different types of processes  (i.e. type A - low priority, type B - high priority etc) are run, i suggest the following concept of an approach which involves a little custom work,

1. A small infrastructure for actually pausing any process before executing a work item. This can be achieved by initialy associating some kind of flag with each process started. Then create a central base abstract work item handler, which all your work items will extend, having a logic at the start of each executeWorkItem(..) method where a check to the flag would take place. If the flag is up then the execution continues, else if the flag is down it sits there and waits until the flag is up. Of course this will have to run asynchronously within a new thread at least for two reasons a. so not to block the engine b. to persist and continue all processes if the engine goes down at any point. This way you will be able to pause processes at the start of a work item. You will not be able to pause a process while running a work item's logic, unless you place appropriate logic of persisting state at any point of execution, then resuming everything etc, this is hard, not very efficient (well depending on the work done at each instant of time on each work item of each process) and error prone.

2. An object acting as a controller containing all the business logic related to priorities and relations of processes. This controller would decide whether a process has to be paused or resumed etc by raising or lowering the flag of the running processes. The controller would probably run when starting each process, in order to decide what to do with the other processes running or the current process etc.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/646889#646889]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120115/c3c1f209/attachment.html 


More information about the jboss-user mailing list