Skip to content

v0.3.0-beta4

Choose a tag to compare

@nitram509 nitram509 released this 29 Aug 22:16
· 232 commits to main since this release
b495406

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