Repository navigation
JasperFx 2.54.0
Two additive features for the Spec Driven Development track (master: JasperFx/stoat#9). Minor rather than patch because both add public surface; nothing existing is removed, renamed or obsoleted, and every existing constructor and JSON payload round-trips unchanged.
Event Modeling semantic model v2, overlay API and discovery bridge (#687, #689 — PR #691)
JasperFx.Events.EventModeling is now the one slice vocabulary every source writes into and every viewer reads from:
EventModelSliceDescriptorkeeps its positional shape and gainsPattern(SlicePattern: Command / View / Automation / Translation),TriggerKind(Http / Grpc / MessageHandler / JobScheduler / Human / External),TriggerOrigin,AggregateTypes(a list — one handler may load several projected models),PublishedMessages,ExternalSystems,Hotspots,Specifications(typed:{Feature}/{Scenario}identity + resolved types, stamped by sources),Domain, plus the computed rendering contractElements(stable id, kind → canonical colour, lane) andEdges(directed, by id), andMerge(other).EventModelDescriptorgainsAggregatesand a staticMerge(name, descriptors).HandlerRelationshipDescriptor.ToSliceDescriptor()folds the older handler-relationship vocabulary into a slice.- The fluent API is an overlay:
EventModelDefinition/EventModelBuilder/EventModelSliceBuildername, group (InDomain), annotate (TriggeredBy(label)) and link (LinksToSpecification) — roles are derived by the sources that can see them. The role-declaring methods live behind one documented escape hatch,ForFlowNotOwnedHere(...). - The discovery bridge:
EventModelDefinitionSource,services.AddEventModel<T>()/AddEventModel(type | instance | name, lambda)/AddEventModelsFromAssembly/AddEventModelSource, andEventModelDiscovery.DiscoverAsync/AssembleAsync.IEventModelDefinitionSourcefinally has implementations. - #689:
HotspotDescriptor.PendingSpecification(specIdentity)— a pending specification renders as a hotspot on the slice it binds to.
ProjectionScenario exposes its plan and observes each step (#688 — PR #692)
ProjectionScenario<TOperations, TQuerySession> gains PlannedSteps (number, kind, description — readable before ExecuteAsync) and an Observer (IProjectionScenarioObserver: StepStarted / StepSucceeded / StepFailed / StepSkipped), numbered as the exception report numbers them. Marten, Polecat and Fisher subclasses need no change.