検討目的
今のサービスのポイント交換システムのビジネスロジックをWorkflow化したい。
背景
- 交換トランザクションの作業単位に関して、AOP観点でのWorkflow定義&共通化をしたい。
- 例:メンテナンスチェック、ユーザー状態チェックなどは、全てのトランザクションの作業単位において実行されるものとしてAspectとみなし、必要な作業単位の前処理(ミドルウェア化)としてWorkflow化する。
- ビジネスロジックのコンポーネント化(ミドルウェア化)
- 依存性を最小化、拡張性を確報
- 新しい要件に対して、基本Workflowを従い、新しいビジネスロジックのみ新しく実装することで、たやすく新しい仕様・機能を追加できるようにする。
- Workflowに対しても、基本Workflowから拡張し、必要によってコンポーネントを追加・削除・バージョンアップができるようにし、拡張にも優しいものにしたい。
Middleware Pattern
- 何らかの処理単位の全体において、始まりと終わりの途中に位置する、特定の処理を遂行するプログラム、またはコンポーネントの概念
- Node.jsのExpressでは、HTTPデータ通信処理のREQUESTとRESPONSEの間に存在するコンポーネント
- PHPとPSR-15でも、似たような定義とされている。
- Laravel Frameworkは基本Middleware Pattern機能を提供している。
Middleware ライブラリの情報
awesome-psr15-middlewares
relayphp