packages feed

keiro-dsl-0.15.0.0: test/fixtures/workspace-nominals/domain/project.keiro

language keiro-dsl 4
context workspace-nominal-proof

aggregate Project
  regs
    projectId ProjectId = placeholder
    phase ProjectPhase = Draft
  states Empty Live Archived!

  command RegisterProject { projectId phase:ProjectPhase }
  command ArchiveProject { projectId phase:ProjectPhase }
  event ProjectRegistered = fields(RegisterProject)
  event ArchivalRecorded = fields(ArchiveProject)

  Empty -- RegisterProject -->
    guard cmd.projectId == reg.projectId && cmd.phase == reg.phase
    write projectId := cmd.projectId
    write phase := cmd.phase
    emit ProjectRegistered
    goto Live

  Live -- ArchiveProject -->
    guard cmd.projectId == reg.projectId && cmd.phase == reg.phase
    emit ArchivalRecorded
    goto Archived

  wire kind=ctorName fields=camelCase schemaVersion=1