packages feed

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 }