I have been investigating Azkaban and Apache Activiti for one of our Workflow Use Cases. What I understand is that each job within Azkaban runs as a separate process, is that the same with Activiti, or do Activiti Tasks run within the Activiti's main Process as separate threads.
Activiti tasks run in the same process where the main Engine is running.
Depending on the presence or not of asynchronous activities in your flow, they will run in the same thread used when you invoke one of its APIs or by a pool of background threads.
That said, there is nothing that stops you from running specific steps of a workflow in a separate process (eg: a long running batch processing). This can be achieved in a number of ways, but the one I favor is to model tasks as "human tasks" and then use an external scheduler to pick those tasks using Activiti´s APIs (REST or Java) for actual execution. This approach is quite scalable and avoid some pitfalls related to transaction management that can arise if your tasks are too complex and/or take a long time do execute.