ODE has a complete management API to check which processes are deployed, running and completed instances, variables values and more. To see which methods are available, have a look at the ProcessManagement and InstanceManagement interfaces, the javadoc is pretty comprehensive.
These two interfaces are available as web services on the Axis2-based distribution. The corresponding WSDL can be found here.
To invoke these two services, any web service client should work (in a perfect interoperable world). To ease the invocation when using an Axis2 client, a helper class is bundled in ode-axis2.jar: ServiceClientUtil. Usage examples are also available in test classes InstanceManagementTest and ProcessManagementTest. Here is a short example demonstrating the invocation of the listAllProcesses operation:
ServiceClientUtil client = new ServiceClientUtil(); OMElement root = client.buildMessage("listAllProcesses", new String[] {}, new String[] {}); OMElement result = client.send(msg, "http://localhost:8080/ode/processes/ProcessManagement");
We're using XMLBeans to serialize and deserialize the returned values from/to XML so in the previous example. So if you'd like to have objects instead of an Axiom structure in the previous example, just add the following lines of code:
ScopeInfoDocument scopeIndoDoc = ScopeInfoDocument.Factory.parse(result.getXMLStreamReader());
You will need to include ode-bpel-api.jar in your classpath.
More details are available in the Process Management API specification