[rules-users] Drools Flow: waiting for process to complete without polling

Alexandros Karypidis akarypid at yahoo.gr
Tue Sep 29 20:01:56 EDT 2009


Hello,

I'm not very experienced in the Drools Flow API so I'm looking into the 
best way to code a simple thing: wait for all processes in a session to 
complete without polling.

The only way I could thing of from the javadoc reference I read, is to 
synchronize and do a wait()/notify() using a ProcessEventListener. It 
seems a lot of work for a use-case that is too basic. I set up a 
listener like this:

    pel = new ProcessEventListener() {
       // ...
            public void afterProcessCompleted(ProcessCompletedEvent pce) {
                synchronized (this) {
                    notifyAll();
                }
            }
    }
    ksession.addEventListener(pel);

...then wait for processes (one in this simplified case) to complete 
like this:

    synchronized (pel) {
        new Thread(new Runnable() {
            public void run() {
                ksession.fireUntilHalt();
            }
        }).start();
        ksession.startProcess("some.process");
        pel.wait(); // the notifyAll() resumes this
    }

Is there a better way to do this?




More information about the rules-users mailing list