Hi Marco,
Thank you very much for the suggestion. I think the first point addressed my issue exactly. I reviewd my project code and test java code and found in my project code i called ksession.dispose in "finally" satement but in test code I didn't. After i removed the finally statement it worked! Apparently the ksession has been disposed before the timer expires.
Ksession.dispose() is needed to recycle the memory. So could you please suggest where the best place is to dispose the ksession?
Meanwhile, given the fact ksession needs to be alive for the timer to trigger, can I trigger the timer in an asynchronous way? So that when timer expires the ksession can be resumed using JPAKnowledgeService to continue the process instance.
Thanks again Marco!
Best regards
Yu