You can do anything with a task worker, but there is no way to trigger another process in BPMN in Zeebe. You could use a message start event, but you still need a task worker to send the message.
With enough scripting glue you can do it though: You would need to compose them before deploying to the broker using an xslt transform or similar, if you put them in different files.
There is simply no element to reference another process atm.
You’d also need to mod the modeler to inject the reference.
However, one would imagine this could affect usability of a composed subprocesses.
Using the retail example, let’s say I have a shipping subprocess which I would like to re-use across different business units with different processes. One could easily see the use-case of defining this subprocess in its own file to allow for re-use. Defining it inline means you’d have to remodel every where you thinking of shipping which somewhat violates DRY.
A suggestion:
How would this work if say we added a property on a subprocess element which allows one to supply a BPMN file name? Then as part of compilation you explode it similar to what you do when executing a subprocess? I can’t imagine this to be a far reach given there is already support for subprocess.