Repository navigation
Release v4.246.0
A specification now runs against the slice that declares it, and nothing else, so it states only what its slice owns.
Added
then invokes <Command>states a command the slice's reaction invokes, with the values it passes indented beneath, as ESM v34. A specification that states at least one invocation compares every recorded invocation in count and order, or as a set underthen events in any order.- PLAY0815 reports a malformed
then invokesline, and PLAY0816 reports athen invokesfor a command no reaction of the specification's own slice invokes. - A specification run's new
Invocationsproperty lists the invocations its reactions made, accepted or refused, asSemanticRecordedInvocationvalues.
Changed
- Only the specification's own slice runs: its reactions, captures and outbound publications. Other slices' reactions, captures and publications no longer run, so their facts never reach
then, read-model or query assertions. A command another slice owns is still decided when the slice's reaction invokes it, so refusals andon refusedbranches behave as declared, but its events are not kept. State that hand-over withthen invokes. See decision 0115. - PLAY0285 follows only the reactions, invocations and publications of the specification's own slice, so a specification that states another slice's event is refused at compile time.
- Upgrade: a specification that stated another slice's events now fails. Move a published event to the outbound
Translateslice's specification (when append <PrivateEvent>), and replace an invoked command's events withthen invokes <Command>. - The Acme Commerce sample specifies each slice on its own, with new specifications in the slices that own the moved facts.
- The canonical reactions, Acme admissions, protected command reads and described command handlers corpora are restated under the new rule.
Fixed
- A command specification no longer passes while stating an event another slice publishes, such as
SetProductPricestatingProductPriceChanged.