your ui layer should prevent them from seeing eachothers running processinstances. If you have tasks assigned to someone from company a they are not visible to someone from company b. Or do I miss something? In that case you have to be way more specific.
As I am new to jBPM this might be a silly question... but what about USER/GROUP stuff for instance? There will definitely be a user JOHN in company a and also in company b. And they are not related to each other in any way.
And there might be other queries to the process engine that should only return results concerning the current company.
For jBPM these are just strings and you do not need to use the identity tables if you pass id's as strings yourself. So e.g. in the real IDM system, make the id's you pass to jBPM have e.g. the company/id name as a prefix, like A_JONHN (or JOHN_A) and when querying for tasks do the same (e.g. in your webapp)
You can also easily plugin your own IDM that does all this for you. So jBPM does not care :-)