Skip to content

Releases: nitram509/lib-bpmn-engine

v0.3.0-rc1

17 Mar 21:55
a5f1a07
Compare
Choose a tag to compare

What's Changed

This is a release-candidate, as this new feature is a major improvement and first tests are green.
That said, there's also a known issue #190, which violates the engine's invariant and thus likely some BPMN workflows might not work after un-marshalling.

  • implemented Marshal & Un-Marshall support, see #12 (this is a new feature and tests are not fully completed)

New Contributors

Full Changelog: v0.3.0-beta4...v0.3.0-rc1

v0.3.0-beta4

29 Aug 22:16
b495406
Compare
Choose a tag to compare

v0.3.0-beta4

  • WiP serialization and deserialization ... please don't try yet ... it's not working in this beta3 version
  • make explicit engine name optional (#73 BREAKING CHANGE)
  • use global ID generator internally, to avoid ID collisions between multiple engine instances
  • refactor activity.LifecylceState (BREAKING CHANGE)
  • refactor process_instance.State (BREAKING CHANGE)
    • new return type for e.g. instance.GetState() --is--> ActivityState (BREAKING CHANGE)
  • new ExpressionEvaluationError
    • improved errors for intermediate timer catch events (#38, #69)
    • improved error handling for intermediate message catch events
    • variable mapping and expression evaluation errors
    • return proper BpmnEngineError, at creation time (BREAKING CHANGE)
  • new support intermediate link throw & catch element (#141)
  • new CreateInstanceById() and CreateAndRunInstanceById() functions to ease handling with multiple versions
  • use Go Getter idiomatic (BREAKING CHANGE) (#144)

Migration notes for breaking changes

New Initializer

Bpmn Engines are anonymous by default now, and shall be initialized by calling .New()
Example: replace bpmn_engine.New("name") with bpmn_engine.New()

Note: you might use .NewWithName("a name") to assign different names for each engine instance.
This might help in scenarios, where you e.g. assign one engine instance to a thread.

activity.LifecylceState and process_instance.State

Both are consolidated towards bpmn_engine.ActivityState, which you can simply use in the same manner.

Use Go Getter idiomatic

For some interfaces, the prior code looked like e.g. engine.GetName().
According to https://go.dev/doc/effective_go#Getters, this getter should better be written as engine.Name().

v0.3.0-beta2

20 Dec 00:03
0c53af8
Compare
Choose a tag to compare

Say "Hello!" to the new mascot

  • introduce local variable scope for task handlers and do correct variable mapping on successful completion (#48 and #55)

v0.3.0-beta1

25 Sep 15:02
Compare
Choose a tag to compare
set v0.3.0-beta1

v0.2.4

18 Sep 20:01
Compare
Choose a tag to compare

v0.2.4

  • support input/output for service task and user task (#2)
    • breaking change: ActivatedJob type is no more using fields, but only function interface
  • support for user tasks (BPMN) (#32)
  • document how to use timers (#37)
  • support adding variables along with publishing messages (#41)
    • breaking change in method signature: PublishEventForInstance(processInstanceKey int64, messageName string, variables map[string]interface{}) now requires a variable parameter
  • fix two issues with not finding/handling the correct messages (#31)

v0.2.3

07 Sep 21:37
Compare
Choose a tag to compare
  • add support for user tasks (#32 )

v0.2.2

07 Sep 20:02
Compare
Choose a tag to compare
  • improved handling of Intermediate Message Event and Event Gateways (#31)
    • fix issues with not following the specs & fix issues with not catching all events
  • using an error instead of panic when create a timer event (#36) - thank you @lastchiliarch for your contribution
  • Fixed bug ProcessInstance interface GetVariable SetVariable (#39) - thank you @averyyan for your contribution

v0.2.1

05 Sep 07:11
Compare
Choose a tag to compare
  • improved handling of Intermediate Message Event and Event Gateways (#29 #33 )
    • fix issues with not following the specs
    • fix issues with not catching all events
    • thanks to @lastchiliarch for your contribution

v0.2.0

20 Aug 21:47
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

This is a major step forward for this library.
Now, expression language is supported. Also, an experimental visualization is possible.
hat said, still not recommended to use in production.
But any feedback or contributions are very welcome :)

For details, have a look at https://github.com/nitram509/lib-bpmn-engine/issues?q=is%3Aissue+milestone%3Av0.2.0+is%3Aclosed

v0.1.0

27 Jan 20:50
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

This is the first release of lib-bpmn-engine.
Basic features as available and you can start playing around.
That said, it's not recommended for production use yet.
This one is considered a technical preview release for early adopters.

Please expect breaking changes with the upcoming releases.
I do promise to document them as good as I can :)
I'm still learning the nitty-gritty details of BPMN and aim to implement
the engine according to the standard.

Also, I would be glad to get any contribution or feedback.