FINALUNA
FINALUNAとは、NTTDATAが金融機関のシステムニーズを踏まえて、TERASOLUNAを拡張して作成したソリューションです。
API
FINALUNA APIとは
APIの目的
FINALUNA APIは、機能要件を実現するビジネスロジックと、処理方式や非機能要件を実現するフレームワークを、独立したコンポーネントとして分離させることを目的に策定した、ビジネスロジック用Javaインタフェースです。
コンポーネント間の依存関係を無くすことにより、各コンポーネントは独立して発展することができるようになります。具体的には、ハード・ミドルウェア製品のバージョンアップや他社製品への乗換え、フレームワークや処理方式の変更等から、ビジネスロジックを独立して長期間保守できるようになります。
APIの概要
- FINALUNA APIは、非機能要件から独立した均質なビジネスロジックを記述するように、ビジネスロジックに必要な機能のみを定義しています。
- FINALUNA APIは将来機能追加を行いますが、変更は行いません。
- FINALUNA APIはフレームワークの実装に制約を与えないよう、極力Javaのインタフェースクラスのみで作成しています。また、仕様変更が非常に少ないJavaSEで作成しています。
FINALUNA APIの主な機能(インタフェース)
- TYPE(FINALUNA型):FINALUNAが定義する独自の型
- 業務ロジックを実装するための必要最低限の型を定義したFINALUNA型で業務ロジックを実装することで、業務ロジックの長期保守と標準化が可能です。
- Logic(Business Logic):ビジネスロジックを実装するインタフェース
- FINALUNA APIのみを使用して作成したビジネスロジックは、実行環境(HW、ミドル、および、処理方式)から独立したコンポーネントとして再利用できます。
- DTO (Data Transfer Object):入出力メッセージを定義するインタフェース
- メッセージの物理フォーマットを、ビジネスロジックから隠蔽します。
- DAO(Data Access Objects):ビジネスロジックがリソースにアクセスするためのインタフェース
- 非機能要件に影響する物理リソースに依存する定義(DBコネクション、トランザクション制御、ファイルアクセスなど)や、製品に依存する定義(SQL文など)を、ビジネスロジックから隠蔽します。
- Context:実行環境を隠蔽するインタフェース
- ビジネスロジック内で、実装が隠蔽されたFINALUNA API準拠のオブジェクト(DAO,DTO,Typeなど)を取得するファクトリ。
実行環境毎に定義した実体クラスを生成します。
- FinalunaApplException,FinalunaSysException:ビジネスロジックが制御する例外
- フレームワーク等実行環境に依存するExceptionやErrorの処理をフレームワークに委ね、ビジネスロジックから隠蔽する。
APIの詳細
○ニーズ
- APの長期保守
- Java技術の変化により、APのライフは5年程度が限度
- ⇒アプリケーション資産の5年以上の存続
- ⇒システム更改時に行うAP修正の極小化
- AP開発の標準化
- 今後MFのオープン化に伴う大規模開発に対応する必要性(数Mstep、要員100名超)
- 処理方式に依存しない業務ロジックの開発
- 大規模、かつ複数の処理パターンを持つシステムの開発に対応する必要性
- ⇒異なる処理方式の業務ロジックを共有することで共通化・部品化を図り、生産性・保守性を向上
- テストケースの保守
- テストケース長期保守の必要性
- ⇒テストケースの改修は、仕様変更等により業務ロジックが改修された場合のみ実施
○実現方法
- 変化するJava技術に依存する部分をフレームワークで隠蔽し、業務ロジックから排除します。Java技術が変化した場合、フレームワークを更改することで、業務ロジックを改修することなく、継続利用することが可能です。
- フレームワークを適用することで、開発者は業務ロジックのみを作成します。また、その業務ロジックは、フレームワークが提供するAPI(FINALUNA API) を利用して記述することとなるため、業務ロジックの標準化を図ることが可能です。
- 処理方式の違いによる処理の差異をフレームワークで吸収することで、ビジネス層(業務ロジック)への影響を極小化します。これにより、複数の処理方式における業務ロジックの共有を実現し、生産性・保守性の向上を図ることが可能です。
- テストケースを、FINALUNA APIとテスト用のAPI (FINALUNA API Ex)、及びUT用のドライバを使用して記述することにより、Java技術の変化に依存するコードをテストケースから排除します。これにより、テストケースの改修は、業務ロジックを改修した場合に限定されます。

○FINALUNA APIの構成概要図

それぞれのAPIについての説明を以下に示します。
○FINALUNA型
業務ロジック内では、FINALUNA型を使用することで、より標準化を図った業務ロジックを記述することができます。FINALUNA型は、ベースとなるFINALUNA型、もしくは既存のFINALUNA型を拡張することで、プロジェクト毎に追加することが可能です。
○電文I/O
業務ロジックとフレームワークのデータの入出力は、すべてDTOを介して行います。実際の入力元となるリソース(ファイルやデータベース)からのデータの抽出、出力先へのデータの書き込みはフレームワークが担います。このため、開発者は入出力リソースを意識することなく、業務ロジックの開発に注力することが可能です。
DTOは、Javaの標準APIの型とFINALUNA型との変換ルール等の情報を保持します。
(※) このルールは業務開発者が設定する必要があり、設定方式には、JavaやXMLが考えられますが、FINALUNAでは前者を採用しています。
理由は、XMLに比べJavaの可読性が高いことと、JavaはIDE(統合開発環境)によるコンパイルチェックがサポートされているため、開発効率が向上すると考えられるためです。
○DB、ファイル I/O、共有変数
業務ロジック内で、ファイルやデータベース、共有変数などの外部リソースへアクセスする際には、FINALUNAが提供するDAOを使用します。DAOを使用することにより、開発者は外部データへのアクセス方法を知らなくてもデータの参照、更新等を行うことが可能です。また、業務ロジックとDAOの間のインタフェースには、先述したDTOが用いられます。共有変数へのアクセスは参照のみ可能です。
○業務ロジック
業務ロジックには汎用処理を除外した純粋な業務ロジックのみを、FINALUNA APIを使用して記述します。これにより、保守性の高い業務ロジックをより効率的に作成可能です。また、業務ロジックのインタフェースは、オンライン、バッチで共通であるため、業務ロジックをこれらの処理で共有することが可能です。
○例外処理
標準のJava APIにはその用途に応じて多くの例外クラスが用意されています。これは発生した例外を特定するのに非常に有用である反面、開発者によりスローする例外が異なり、プロジェクトとしての統一が取れなくなる危険性も含んでいることとなります。そのため、FINALUNAでは業務ロジック内でスローする例外を特定することでこれを解消します。また、システム運用者による発生した例外の特定は、例外スロー時に設定されているメッセージにより行います。スローする例外は、アプリケーション用例外を拡張することで、プロジェクト毎に追加することも可能です。
FINALUNA APIのJava Doc、Java Sourceファイル、ドキュメントは以下からダウンロード出来ます。
フレームワーク(APIのリファレンス実装)
FINALUNA frameworkとは
本サイトで公開するFINALUNA frameworkは、ビジネスロジック用Javaインタフェース(FINALUNA API)のリファレンス実装です。NTTデータの金融系システムで数多くの適用実績(2010年4月時点で、5MStep以上のJavaソースコードが稼動)を持つフレームワークです。
本サイトは、FINALUNA frameworkの各種APサーバ上での動作検証情報や活用ノウハウを共有する場として運営していきます。
FINALUNA framework、Java Docおよび、チュートリアル/ブランクアプリケーションは、以下からダウンロードできます。
導入手順は、各チュートリアルのドキュメントをご覧ください。
- 概要
REST(XML/http(s))による、リクエスト・リプライ方式に対応した、FINALUNA API のリファレンス実装です。
TERASOLUNAフレームワークのServer Framework for Java(Rich版)を使用しています。
- FINALUNA framework Rich version
- 概要
バッチ処理方式に対応した、FINALUNA API のリファレンス実装です。
ジョブの起動方式として、コマンド起動、ジョブスケジューラ起動および、Java APIからの起動に対応しています。
- FINALUNA framework Batch version
NTTDATA関連ソリューション
NTTデータでは、豊富な金融系情報システム開発実績に基づくノウハウを、技術参照モデルに相当するFINALUNA(フィナ・ルナ)推奨構成として整備しています。
FINALUNAでは、図のように、金融機関のオープン系システム構築の効率化を目的に、NTTデータのソリューションを活用して、下表の4つの体系でノウハウのコンポーネント化を推進しています。
FINALUNAの体系
- FINALUNA API/FINALUNA framework:部分公開
- スケールアウト構成/システム統合:非公開
- PRORIZE™
- PORTOMICS®
- Prossione®
- アプライアンス製品
- Websphere
- ORACLE
- JP1
- InterstageListCreator
- SVF
- ドキュメントガイドライン:非公開
対応プラットフォーム
対応アプリケーションサーバと動作確認状況。
- IBM WebSphere Application Server
- 富士通 Interstage Application Server
- 日立製作所 uCosminexus Application Server
- 発表
- ニュースリリース
- 受賞暦
2008年3月 JP1技術革新貢献賞
2007年3月 JP1プロモーション貢献賞
2006年3月 JP1アライアンス貢献賞
2004年8月 WebSphere Partner Prominent Solution Award 2004