業務ルールを表現するには?
次のような業務ルールがあるとする。
オプションAはトライアルプランでは標準装備だが、スタンダードプランではそうではない
オプションAはトライアルプランでは無料だが、スタンダードプランではそうでない
トライアルプランからスタンダードプランへの移行に伴ってオプションAをオミットできる
スタンダードプランでのオプションAを解約すると違約金が発生する
この業務ルールを実現する方法はひとつではない。
トライアルプランでのオプションAを通常のオプションAと区別して区分を定義する?
無料のオプションAと有料のオプションA
トライアルプランとオプションAがセットであることを検証するには……
契約情報の不変条件としてか?
申込み情報のバリデーションとしてか?
トライアルプランでのオプションAが無料になるようにするには……
トライアルプランでのオプションAの料金を計算しないようにする?
トライアルプランの場合オプションAの料金を割り引くようにする?
プランの移行に伴うオプションAのオミットを実現するには……(データ操作と業務ルール)
オミットをデフォルトとしてオプションAの利用を明示的に指定する契約変更操作にする?
プラン移行に伴ってオプションをオミットできる契約変更操作にする?
アプリケーションサービスにおいてプラン移行操作とオプションオミット操作をする?
違約金の計算を実現するには……
契約変更操作に伴って違約金を作成する?
アプリケーションサービスにおいて契約変更操作とは別途で違約金を作成する?
申込み情報に基づいて違約金があることを判定する?
契約情報の前後に基づいて違約金があることを判定する?
ref 契約するオプションの数量と設定値を分けて考える