OxL Справочник OxL
РусскийEnglish

kw saga

Зарезервированное слово

Список слов: §1.4

Синтаксис

ebnf
Saga        = "saga" Ident "(" [ Params ] ")" "->" Type "{" SStep { "->" SStep } "}" ;

Грамматика: Прил. A

Определяется в

  • 11.1 Виды транзакций — Виды транзакций
  • 11.3 Саги — Сага — последовательность шагов (синтаксис шагов как в цепочке §8.4); после шага МОЖЕТ стоять undo x => компенсация, где x — результат шага.
  • 12.1 Объявление кластера — В программе не больше одного cluster.
  • 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
  • 12.7 Зависимости — provide Тип = выражение (for role r, …)?
  • 18.4 Симуляция — В sim детерминированы планировщик, сеть, часы, случайность и отказы диска; результат зависит только от seed.

Примеры

oxl
saga checkout(cart: Cart) -> Order {
  Inventory.reserve(cart)          undo r => Inventory.release(r.id)
  -> Payments.charge(cart.total)   undo p => Payments.refund(p.id)
  -> Orders.create(cart, it)
}

— 11.3 Саги

oxl
provide Db = Db.open(App.get().dbUrl)          for role api, saga
provide Payments = PaymentsClient.new(App.get().stripeKey)

impl Orders { dep db: Db; dep pay: Payments }

— 12.7 Зависимости

Связанные диагностики

saga-decl, saga-idempotency, actor-not-hosted, cluster-auth, cluster-decl, cluster-needs, cluster-seeds, placement-conflict, saga-without-role, service-not-served, topic-without-journal, unknown-role, duplicate-provide, missing-provide

См. также