We modelled a "StartSubProcess" process that uses a Service-Task to start a process programmatically. To start a sub process we start this "StartSubProcess" via callactivity instead of the actual process we want to start. The actual procress ist started programmatically with the Java-Activiti-API in the service task, so that it is no real sub-process.
To cancel this "sub-process" we just delete it and afterwards signal the "StartSubProcess" which is in a wait state, so that it moves on and the acutal parent process (which called the "StartSubProcess") is continued.
It's not a simple solution, but it works fine, and since we had no choice we implemented it that way. Hopefully activiti will implement a better way to cancel a sub-process in near future.