Extending gobpm¶
gobpm is built to be embedded and customized. Each seam is a small interface plus
a thresher.With* registration call, so you can replace a default with your own
implementation without touching the engine. Every page below covers the seam
interface, the registration call, a minimal real implementation, and how the
engine uses it.
- Custom ID generator —
foundation.IDGenerator+foundation.SetGenerator. - Custom Value type —
adapters.Register[T](build func(*T) data.Value). - Custom Operation —
service.Operation(beyondgooper). - Custom expression engine —
expression.Engine+thresher.WithExpressionEngine. - Custom rule engine —
rules.Engine+WithRuleEngine. (adapters/dtable) - Custom script engine —
script.Engine+WithScriptEngine. (adapters/lua) - Custom Data Store —
datastore.DataStore+WithDataStore. - Custom repository —
repository.Repository+WithRepository. - Dehydratable waits —
renv.Dehydratable+exec.WaitHolders(how a wait releases the instance, and who holds it). - Custom message broker —
messaging.MessageBroker+WithMessageBroker. - Custom clock —
clock.Clock+WithClock. - Custom observability —
Observer/Reporter/Logger/Tracer/MetricsRecorder. - Custom worker dispatcher —
tasks.WorkerDispatcher+WithWorkerDispatcher. - Custom task distributor —
interactor.TaskDistributor+WithTaskDistributor. - Custom authorization —
auth.AuthorizationProvider+WithAuthorizationProvider.