ステップからワークフローを合成する
from Modeling Workflows as Pipelines
TL;DR
ステップからワークフローを合成するのは、型の不一致により難しい
解決法
DMMF: 関数合成#66a3681375d04f00007fb0b8
Implementation: Composing a Pipeline
Implementation: Working with Errors
hr.icon
作成したステップを合成して、全体のワークフローを構築するが一筋縄ではいかない
型を使ったワークフローの各ステップのモデリング
エフェクトの文書化
各ステップの入出力だけを見る(依存関係は無視)
検証
エフェクトの文書化#66a1f6aa75d04f0000cadca1
code:fsharp
type ValidateOrder = UnvalidatedOrder
-> AsyncResult<ValidatedOrder, ValidationError>
価格設定
エフェクトの文書化#66a1fc9d75d04f0000cadcbe
code:fsharp
type PriceOrder = ValidatedOrder -> Result<PricedOrder, PricingError>
注文確認
エフェクトの文書化#66a2f89675d04f0000d65193
code:fsharp
type Acknowledgment = PricedOrder -> Async<OrderAcknowledgmentSent option>
返すイベントの作成
型を使ったワークフローの各ステップのモデリング#66a1f06a75d04f0000cadc7b
code:fsharp
type CreateEvents = PricedOrder -> PlaceOrderEvent list
入出力の型が全く一致していないので合成できない
型駆動設計 でよく起こり得る問題
互換性を持たせ、互いに適合させる必要がある
解決策: DMMF: 関数合成#66a3681375d04f00007fb0b8