One solution we (the company I work for) are thinking of for a kind of BAM solution is to periodically poll the DB. This way we do not have to change any code in jBPM and retrieving all starts, node enters and end since the last poll (we keep the ID of the last log record) doe not lead to a major performance issue. We think of polling the DB every 5 minutes.
This solutution is used by more BAM suppliers to be able to do things without having to work with BPM suppliers to adapt the BPM engine.
check out event propagation in the docs: you can associate an action with a process definition. after that you're notified of all that kind of events inside of the process.
there is no event/action mechanism spanning all process definitions in a jbpm installation.