# Starting With Flowable As Developer

**URL:** https://forum.flowable.org/t/starting-with-flowable-as-developer/4927
**Category:** Flowable Engine
**Created:** [November 23, 2019, 7:15pm UTC](https://forum.flowable.org/t/starting-with-flowable-as-developer/4927 "2019-11-23T19:15:47Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![paulxtiseo](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/paulxtiseo/32/79_2.png) [@paulxtiseo](https://forum.flowable.org/u/paulxtiseo)
#### Post date: [November 23, 2019, 7:15pm UTC](https://forum.flowable.org/t/starting-with-flowable-as-developer/4927/1 "2019-11-23T19:15:47Z")

</div>

Hi,

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](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?

---

<div class="post-metadata">

### Author: ![joram](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/joram/32/26_2.png) [@joram](https://forum.flowable.org/u/joram)
#### Post date: [December 4, 2019, 5:29pm UTC](https://forum.flowable.org/t/starting-with-flowable-as-developer/4927/2 "2019-12-04T17:29:55Z")

</div>

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

- the agenda en the operations: [https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/agenda](https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/agenda)
- the entitymanager (kinda like a service) and data managers who are responsible for data persistence: [https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity](https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity)
- the ActivityBehaviors which actually implement the actual logic that happens when executing a certain step: [https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior](https://github.com/flowable/flowable-engine/tree/master/modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior)

---

<div class="post-metadata">

### Author: ![paulxtiseo](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/paulxtiseo/32/79_2.png) [@paulxtiseo](https://forum.flowable.org/u/paulxtiseo)
#### Post date: [December 14, 2019, 8:12pm UTC](https://forum.flowable.org/t/starting-with-flowable-as-developer/4927/3 "2019-12-14T20:12:18Z")

</div>

Joram,

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.

TIA

---

<div class="post-metadata">

### Author: ![joram](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.flowable.org/joram/32/26_2.png) [@joram](https://forum.flowable.org/u/joram)
#### Post date: [December 19, 2019, 10:08pm UTC](https://forum.flowable.org/t/starting-with-flowable-as-developer/4927/4 "2019-12-19T22:08:02Z")

</div>

> [@paulxtiseo](#):
>
> 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?

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).
