Hi,
I really appreciate your work in building such a BPMN engine in Go.
I'm quite impressed by your problem statement because it's exactly my thinking.
Really great job done 👍
One sentence caught my attention - the usage one:
"BPXE does not have an executable server of its own and can be only used as a Go library."
Frankly said that's exactly, what I'm looking for, an engine as a library.
Let me explain, why I think splitting BPXE into lib and server as separate projects would be a better idea.
Every point you mentioned about business is interested in transparency and wants to know what is implemented is right.
So the benefits of BPMN having a modeler and thus some "live documentation" is great.
On the other hand, when you want to deploy a (or any) workflow engine into a server,
you're faced with questions about partitioning, consistency, availability (CAP theorem).
What I mean: as the author of this project, you would need to support the most common database,
fiddle with their quirks, ensure multiple server instances can run (high availability), and make this overall very responsive.
That's a lot of work, which not everyone needs.
Think for a moment, bpxe would have no DB persistency implemented and just allows other
developers to load BPMN files, and execute them in memory only - period.
This would lower the barrier to include such a lib instead of developing homebrew state machines or what-not,
with having full documentation and modeling support available.
That said, the bpxe engine would be focused on being a lib without DB support,
one would certainly need two handfuls of callbacks/hooks so that application developers can
react to state changes of the BPMN process state. They would follow their existing paradigms
of putting the state into the DB with their preferred DB technology.
Bare with me, when I share this example from the Javascript space ...
https://github.com/paed01/bpmn-engine/blob/HEAD/docs/Examples.md
This engine is built as lib only.
Considering the lib offering such interfaces, you're not blocked and still be able to develop another project,
which then would/could focus on being a server incl. database support, UI etc.
I hope my thought is not offending, because I really love Open Source and collaboration around it.
And I would be very glad to get some reflections from you and this idea.
Sincerely
Martin