I downloaded the source code in an attempt to learn how the whole Flowable stack works. Of course, with so many moving parts, I am facing some issues as to where to start. I’m guessing a good point would be the core engine. Is it located at https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine? If so, which implementation files might form the cornerstone of the engine?
The easiest would be to write a simple process or case that you start and then debug what happens behind the scenes.
Important parts to understand how it fundamentally works are
Thank you for your feedback. Ok, it seems that I am in the right area!
I was wondering where does the overall process start? I see ProcessEngines, ProcessEngine and ProcessEngineConfiguration classes. I was wondering where do they get invoked and used?
And, what classes downstream lead to the actual ActivityBehaviors being used?
Trying to get a mental map of the key objects here from start to actual work being performed.
A process instance is started (based upon a process definition) through e.g. the startProcessInstanceByKey method on the runtimeService.
The runtimeService can be retrieved from the ProcessEngine class, which gets built by a ProcessEngineConfiguration. The ProcessEngines class is just a simple helper class to build such an engine (but you can do this programmatically yourself).
The engine will inspect the definition and when it reaches a certain step (let’s say a user task), it will execute the associated behavior (e.g. the UserTaskActivityBehavior).