I'm trying to terminate certain workflows based upon threshold value of custom batch processing limit. But when I'm trying to terminate by using WF api, I could notice a strange behavior in the below snippet.
1: WorkflowSession wfs = workflowService.getWorkflowSession(rr.adaptTo(Session.class));
2: try {
3: log.debug(" Is Workflow active?? "+wf.isActive());
4: wfs.terminateWorkflow(wf);
5: } catch (Exception e) {
6: e.printStackTrace();
}
Just before calling the terminateWorkflow method, if I check the wf state by various ways e.g.
i) By using isActive() method
ii) By retrieving the valuemap of the particular workflow id from the var/workflow/instances/server0..... path and checking the jcr property 'state'.
iii) By using WorkflowStatus interface
But even if all above steps show a workflow is RUNNING or active, yet when flow reaches line 4 immediately, exception is throws as:
java.lang.IllegalStateException: Workflow is already finished.
Has anyone faced any similar kind of scenario?
N.B. - The execution is carried on single thread operation(of ActionManager) unlike multi-threaded execution.