コンテンツにスキップ
検索語を入力してください

    言語リファレンス

    .rdra ファイルは module 宣言、importインスタンス宣言述語呼び出しエンティティ本体 で構成される。完全な仕様は rdra-ish-dsl のupstreamドキュメントも参照。

    module buc.order
    import shared.actors
    import shared.biz
    // インスタンス宣言
    actor Customer "Customer"
    buc BucOrder "Process Order"
    usecase PlaceOrder "Place Order"
    // エンティティ
    entity Order "Order" {
    id: Int @pk
    status: Enum(pending, paid) @default(pending)
    }
    // 述語(関係)
    performs(Customer, BucOrder)
    belongs(BucOrder, Commerce)
    contains(BucOrder, PlaceOrder)
    creates(PlaceOrder, Order)
    • module / import: ファイルパスと対応(module buc.orderbuc/order.rdra 等)
    • コメント: // 行コメント、/* */ ブロックコメント(# は非対応)
    <kind> <Id> "Label"
    <kind> <Id> "Label" description "Longer text"
    kind説明
    actor人間アクター
    extsystem外部システム
    system内部システム境界
    businessビジネス領域
    bucビジネスユースケース(価値スライス)
    usecaseユースケース
    screen画面
    apiAPI 境界
    entity永続化エンティティ
    concept / domain_object概念モデル(DB前)
    requirement / nfr / constraint要件・非機能
    adrアーキテクチャ決定記録
    event / stateライフサイクル
    permission / medium / location / timing制約語彙
    entity Order "Order" {
    id: Int @pk
    customer_id: Int @fk(Customer)
    status: Enum(pending, paid, shipped) @default(pending)
    total: Decimal
    }

    アノテーション例: @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"
    step S1 "Validate cart"
    step S2 "Place order"
    precedes(S1, S2)
    contains(BucOrder, OrderFlow)
    • BUC固有述語を shared/ に置かない
    • 安定語彙(actor, business, 共有entity)は shared/
    • 1 BUC = 原則1ファイル(buc/buc_<name>.rdra

    詳細は 段階的モデリング を参照。

    Terminal window
    rdra-ish check src/
    rdra-ish fmt src/ --check