.rdra ファイルは module 宣言、import、インスタンス宣言、述語呼び出し、エンティティ本体 で構成される。完全な仕様は rdra-ish-dsl のupstreamドキュメントも参照。
actor Customer "Customer"
buc BucOrder "Process Order"
usecase PlaceOrder "Place Order"
status: Enum(pending, paid) @default(pending)
performs(Customer, BucOrder)
belongs(BucOrder, Commerce)
contains(BucOrder, PlaceOrder)
creates(PlaceOrder, Order)
- module / import: ファイルパスと対応(
module buc.order ↔ buc/order.rdra 等)
- コメント:
// 行コメント、/* */ ブロックコメント(# は非対応)
<kind> <Id> "Label" description "Longer text"
| kind | 説明 |
|---|
actor | 人間アクター |
extsystem | 外部システム |
system | 内部システム境界 |
business | ビジネス領域 |
buc | ビジネスユースケース(価値スライス) |
usecase | ユースケース |
screen | 画面 |
api | API 境界 |
entity | 永続化エンティティ |
concept / domain_object | 概念モデル(DB前) |
requirement / nfr / constraint | 要件・非機能 |
adr | アーキテクチャ決定記録 |
event / state | ライフサイクル |
permission / medium / location / timing | 制約語彙 |
customer_id: Int @fk(Customer)
status: Enum(pending, paid, shipped) @default(pending)
アノテーション例: @pk, @fk, @unique, @default, @index
述語は (Subject, Object) またはチェーン形式で関係を記述する。
| 述語 | 意味 |
|---|
performs(Actor, Buc|Usecase) | アクターが実行 |
belongs(Buc, Business) | BUCが事業領域に属する |
contains(Buc, Usecase) | BUCがUCを包含 |
decides(Adr, Element) | ADRが要素に影響 |
| 述語 | 意味 |
|---|
creates(Usecase, Entity) | 作成 |
reads(Usecase, Entity) | 参照 |
updates(Usecase, Entity) | 更新 |
deletes(Usecase, Entity) | 削除 |
relate(Entity, Entity, cardinality) | エンティティ間関連 |
| 述語 | 意味 |
|---|
displays(Usecase, Screen) | 画面表示 |
invokes(Usecase, Api) | API呼び出し |
requires_permission(Usecase|Api, Permission) | 必要権限 |
requires_medium(Screen, Medium) | 媒体制約 |
| 述語 | 意味 |
|---|
raises(Usecase, Event) | イベント発行 |
sets(Event|Usecase, Entity, State) | 状態設定 |
transitions(State, Event, State) | 遷移定義 |
outbox(Event) | 意図的な外部公開(未消費 warning 抑制) |
| 述語 | 意味 |
|---|
forbidden(Entity, State) | 到達禁止状態 |
invariant(Entity, expr) | 不変条件 |
required(Entity, field, condition) | 必須条件 |
exclusive(Entity, states...) | 排他状態 |
flow OrderFlow "Order Flow"
contains(BucOrder, OrderFlow)
- BUC固有述語を
shared/ に置かない
- 安定語彙(actor, business, 共有entity)は
shared/
- 1 BUC = 原則1ファイル(
buc/buc_<name>.rdra)
詳細は 段階的モデリング を参照。
rdra-ish fmt src/ --check