public boolean waitForFlowToFinish(long id, long timeout) throws InterruptedException, WorkflowException {
StatefulKnowledgeSession session = getSessionForCurrentContext();
long endTime = System.currentTimeMillis() + timeout;
synchronized (session) {
while (session.getProcessInstance(id) != null && timeout > 0) {
session.wait(timeout);
timeout = endTime - System.currentTimeMillis();
}
}
return !getRunningFlows().contains(id);
}