* Test creating a process, passing through and (automatically) removing.
* @exception Exception if an error occurs
*/
public void testRun() throws Exception {
List msgList = importProcessDefinition("/process/minimal.xml");
ProcessMgr mgr = defDir.processMgr("SystemTest", "stopOnStart");
WfProcess proc = mgr.createProcess(requester);
String procKey = proc.key();
proc.start();
assertTrue(stateReached(proc, "open.running.running",
"open.not_running.suspended.suspended"));
Activity act = (Activity)proc.steps().toArray()[0];
act.resume();
assertTrue(stateReached(proc, "closed.completed",
"closed.completed"));
// Assure that process has to be removed manually
assertTrue(mgr.processByKey(procKey) != null);
procDir.removeProcess(proc);
boolean processRemoved = false;
try {
mgr.processByKey(procKey);
} catch (InvalidKeyException exc) {
processRemoved = true;
}
assertTrue(processRemoved);
mgr = defDir.processMgr("SystemTest", "stopOnFinish");
proc = mgr.createProcess(requester);
procKey = proc.key();
proc.start();
assertTrue(stateReached(proc, "open.running.running",
"open.not_running.suspended.suspended"));
act = (Activity)proc.steps().toArray()[0];
act.resume();
assertTrue(stateReached(proc, "closed.completed",
"closed.completed"));
// Assure that process has to be removed manually
assertTrue(mgr.processByKey(procKey) != null);
procDir.removeProcess(proc);
processRemoved = false;
try {
mgr.processByKey(procKey);
} catch (InvalidKeyException exc) {
processRemoved = true;
}
assertTrue(processRemoved);
mgr = defDir.processMgr("SystemTest", "completeNoRemoval");
proc = mgr.createProcess(requester);
procKey = proc.key();
proc.start();
assertTrue(stateReached(proc, "closed.completed",
"closed.completed"));
// Assure that process has to be removed manually
assertTrue(mgr.processByKey(procKey) != null);
procDir.removeProcess(proc);
processRemoved = false;
try {
mgr.processByKey(procKey);
} catch (InvalidKeyException exc) {
processRemoved = true;
}
assertTrue(processRemoved);
mgr = defDir.processMgr("SystemTest", "completeRemoval");
proc = mgr.createProcess(requester);
procKey = proc.key();
proc.start();
// Assure that process has been removed automatically
processRemoved = false;
int maxRetries = 5;
boolean test = true;
while (test){
if (maxRetries-- > 0) {
try {
mgr.processByKey(procKey);
Thread.sleep(1000);
} catch (InvalidKeyException exc) {
processRemoved = true;
test = false;
}