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]

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

Reply via email to