All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
dbos-clj-specific hook. Every step body runs inside trove/with-ctx+ {:workflow/step "<name>"}, so any trove/log! in a step carries the step name with no setup at all.Breaking: set-step-ctx-wrapper! and the *step-ctx-wrapper* dynamic var. To tag native backend calls — a bare Telemere t/log!, a μ/log, an MDC-aware SLF4J layout — opt into trove's context bridge when building your log-fn instead:
(trove/set-log-fn! (trove-telemere/get-log-fn {:bridge-ctx? true}))
One line where there were two, and the step name reaches your backend's own context without dbos-clj knowing which backend you picked. Bridging is supported by the Telemere, Timbre, μ/log and SLF4J (MDC-capable provider) backends.
dbos.query/workflow-tree returns a workflow with its steps and every child workflow expanded in place, recursively — the whole durable execution as one value, for debugging a fan-out at the REPL. Inputs and outputs come back as real Clojure data. Takes {:max-depth n} (default 10).start-workflow!, resume-workflow!, add-derefable, and the client's enqueue-workflow! and retrieve-workflow — now carry a ^WorkflowHandle return hint, so calling .workflowId (or any other handle method) on their result no longer emits a reflection warning.run-step and do-step! emit a :step/start log carrying {:workflow/step "<name>"}. Point trove at your own backend with trove/set-log-fn!.set-step-ctx-wrapper! (and the *step-ctx-wrapper* dynamic var) to bridge step context into a logging backend's native scope, so a bare t/log! or μ/log call inside a step body inherits :workflow/step. Defaults to a no-op.AppVersioned is now :extend-via-metadata, so a plain map carrying the method in its metadata can stand in for a DBOS instance or client. Useful for stubbing without a live database, and unlike reify it survives re-evaluating dbos.core in a REPL.taoensso.trove.x namespace that does not exist; it now names a real backend. Two code samples with unbalanced parentheses were repaired, one of which nested three steps inside each other instead of running them in sequence.dbos.core — instance lifecycle (create, launch!, shutdown!), workflow registration, start-workflow!, the run-step and do-step! macros with retry options, child workflows, scheduled workflows via apply-schedules!, durable events (set-event!, get-event), workflow-sleep, and cancel-workflow! / resume-workflow!.dbos.client — create-client, enqueue-workflow! and retrieve-workflow, for dispatching work to out-of-process executors.dbos.query — get-workflow-status, list-workflows and list-workflow-steps, working against either a DBOS instance or a client.dbos.serializer — a Transit serializer (recorded per row as transit_json_verbose) replacing DBOS's Jackson default, which cannot deserialize Clojure's persistent data structures. Supports custom read/write handlers, and boxes otherwise unhandled types rather than failing silently.dbos.constants — status strings and status sets as .cljc, shareable with a ClojureScript UI.:latest at dispatch time.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |