New feature suggestion :
What about adding an attribute to the process-definition node for specifying if a process definition is public (default) or private ?
A public definition is a process definition that can be launch by a user, and a private definition will be a system process or a sub-process (and should not be visible by the users in a generic web application for example).
This way it will be possible to implement a function for retrieving only the process definition accessible by the users.
jbpmSession.getGraphSession().findAllPublicProcessDefinitions();