keiro-dsl-0.15.0.0: test/fixtures/workspace/domain/project.keiro
language keiro-dsl 4
context demo-project
aggregate Project
regs
projectId ProjectId = placeholder
phase ProjectPhase = Draft
summary ProjectSummary = initial
states Unregistered Live Closed!
command RegisterProject { projectId initialSummary:ProjectSummary }
command RetireProject { projectId phaseIsTerminal:Bool }
event ProjectRegistered = fields(RegisterProject)
event ProjectRetired { projectId }
Unregistered -- RegisterProject -->
write phase := ProjectPhase.Active
write summary := initialSummary
emit ProjectRegistered
goto Live
Live -- RetireProject -->
guard phaseIsTerminal
write phase := ProjectPhase.Retired
emit ProjectRetired
goto Closed
wire kind=ctorName fields=camelCase schemaVersion=1
projection project_activity key=projectId
status-map { ProjectRegistered=>registered ProjectRetired=>retired }