はじめに
Fineractはオープンソースの金融アプリケーションフレームワークであり、金融機関が業務を効率化するための柔軟なソリューションを提供しています。この記事では、Fineractにおける**業務日(Business Date)と業務日終了日(Close of Business Date, COB Date)の概念を深く掘り下げ、その設計思想と実裝方法について説明します。この概念は、従來のテナント日付(Tenant Date)**の制限を克服し、業務の柔軟性と合規性を向上させるために導入されました。
業務日と業務日終了日の定義
業務日(Business Date)
- 定義:業務処理の基準となる日付で、物理的な日付とは獨立しています。例えば、銀行が午後5時まで業務を行う場合、その時間帯を含む日付が業務日とみなされます。
- 特徴:
- 時區に依存せず、カスタムの**業務カレンダー(Business Calendar)**に基づいて設定可能です。
- 災害復舊やテストシナリオにおいて、過去の日付を再現する柔軟性を提供します。
- 結日処理(COB)や利息計算などの業務ロジックに直接使用されます。
業務日終了日(COB Date)
- 定義:業務日の終了を示す論理的なポイント。COB処理(例:利息計算、罰金処理)が実行されるタイミングを定義します。
- 特徴:
- 業務日とは獨立して設定可能(例:業務日が10月9日で、COB処理が10月9日午後5時を終了日とする)。
- COB処理実行中の新規取引は、當該業務日に屬します。
従來のテナント日付の問題
主な制限
- 物理日付に依存:午前0時から24時までが1日とみなされ、業務日終了時間を柔軟に設定できない。
- 業務ルールの不一致:銀行が午後5時に業務を終了する場合、テナント日付では処理が困難。
- 災害復舊の困難さ:システム中斷後に取引を再現するため、バックデート処理が必要。
- テストシナリオの制限:物理日付に依存するため、複數日のテストが困難。
新しい日付管理メカニズム
2つの論理日付
- 業務日:取引処理やリアルタイムの検証に使用。
- COB日:結日処理(利息計算、データアーカイブなど)に使用。
2つのコンテキスト
- リアルタイムアクションコンテキスト:業務日に基づいて取引を処理。
- 結日アクションコンテキスト:COB日に基づいて結日処理を実行。
業務カレンダーの柔軟性
- カスタム設定可能:
- 祝日や週末の業務日をカスタマイズ(例:週五午後5時から週一午後5時までを1日とみなす)。
- 自動化スケジューラーやAPIを通じて業務日を管理。
- 管理方法:
- 手動設定またはスケジューラーによる自動更新。
- データベースに
M_business_date
テーブルを追加し、業務日とCOB日を保存。
技術的詳細
業務日終了點の設定
- 例:週五午後5時をCOB日と設定し、その後の取引は週六に屬する。
- 週末(週六・週日)の取引は、週一の業務日に屬する。
日付処理ロジック
- 取引の提出日は業務日に基づき、COB処理はCOB日に基づく。
- COB処理中の取引は、當該業務日に屬する。
時區との區別
- システム時區(UTC):審査目的で使用。
- 業務日:時區に依存せず、カスタムカレンダーに基づく。
実例
シナリオ
- 日付:2023年10月5日(UTC-5時區)にローン返済が提出。
- 取引提出日:10月6日(テナント日付に基づく)。
- システム時區:UTCで10月5日20:00。
- COB処理:10月6日午前0時をCOB日と設定。
- 10月6日午前0時以前の取引は10月6日に屬し、以降は10月7日に屬する。
結論
Fineractにおける業務日とCOB日の導入により、従來のテナント日付の制限を克服し、業務の柔軟性と合規性を向上させました。このメカニズムは、災害復舊やテストシナリオの実裝を可能にし、多様な業務ルールに対応できます。実裝時には、業務カレンダーのカスタマイズやAPIの活用が重要です。