Dynamic Service Collaboration Platform
ΣServ
株式会社NTTデータ
ΣServTMとは,企業内のシステムや,ネットワーク上に分散する複数のシステムを連携させ,付加価値の高い新しいサービスを実現するためのプラットフォームです.ΣServTMでは,さまざまなプロトコルに対応するためのアダプタを用いることにより,Webサービスをはじめとする,さまざまなシステムを連携させることができます.
ΣServTMでは,連携させた複合サービスのことをビジネスプロセスと呼びます.ビジネスプロセスがどのようなサービスから構成され,各サービスがどのように実行されるかをXMLによるシナリオとして定義し,このシナリオを実行することでビジネスプロセスを実現するものです.スーパーマーケットの業務を例に取って考えた場合,スーパーマーケットのビジネスを構成する在庫確認や売上計算などのサービスが存在します.しかし,個々のサービスそのものだけでは,スーパーマーケットの業務(ビジネスプロセス)は成り立ちません.スーパーマーケットの業務(ビジネスプロセス)を成り立たせるためには,個々のサービスを順序立てて整理する(サービスを連携させる)必要があります.そのサービスを連携させていくためのシナリオであり,そのビジネスプロセスのシナリオを実行する環境(プラットフォーム)を提供するのがΣServTMです.各サービスは,別のサービスや複数の処理から成り立っています.スーパーマーケットの例で示すと,商品の仕入れは一つのサービスに相当します.その商品の仕入れのサービスとしては,在庫リスト取得,発注,受取り確認などが存在し,各機能を順序立てて行う事によってサービスが成り立ちます.ΣServTMでは,定義情報記述エディタでシナリオを作成し,作成したシナリオを実行する事ができます.シナリオは,サービスが起動する別のサービスや処理をどのように起動させるかを記述したものです.
[ΣServTMの特徴]
ΣServTMには,つぎのような特徴があります.
・プロセスベースのシナリオ
・ショートタームトランザクション/ロングタームトランザクション
・高信頼性
プロセスベースのシナリオ
ΣServTMでは,サービス単位にシナリオを作成します.このため,1つのシナリオを部品として扱えます.また,シナリオからシナリオを起動できるため,サービス共通で使えるシナリオを作成すれば,再利用性を高める事ができます.
ショートタームトランザクション/ロングタームトランザクション
ΣServTMでは,2つのトランザクション処理を設け,柔軟なトランザクション制御ができます.トランザクションとは,不可分の操作の単位であって,トランザクションは操作が完了されるか,操作前に戻るかどちらかの状態であることを保証されなければなりません.トランザクションとは,複数の更新処理を1つの論理的な処理単位として捉えたものであり,実行処理の単位となります.ΣServTMのトランザクションとして,以下の2つのトランザクション機能が用意されています.
・ショートタームトランザクション
・ロングタームトランザクション
特に,Webサービスが普及した場合,トランザクションの制御が異なる企業の複数のシステムにまたがる場合が想定されます.このような,複数のシステムにまたがったトランザクションを保障する機能が,ロングタームトランザクションです.
高信頼性
シナリオ内では,状態から状態へのデータの受け渡しのために変数を定義できます.また,フロー間でのデータが受け渡しできる変数も定義できます.この変数は,ロングタームプロセス運用中に永続化を行い,高信頼性を実現しています.商品の仕入れを例に示しますと,在庫リスト取得機能で入力した在庫リストを発注機能のサーバントへ渡したい場合,シナリオにstockという変数を宣言します.在庫リスト取得機能で,Web画面から入力した在庫リストをstockに設定し,発注機能のサーバントへ在庫リストを渡す為に,そのstockを発注機能のサーバントへ渡します.この様にして,在庫リストを発注処理サーバントへ渡す事ができます.ここで使用している,stockという変数を永続化しています.
永続化を行う事によって,故障復旧時に障害発生時点からの実行の再開が可能です.また,永続化機能はΣServTMで用意されているため,ロングタームプロセス運用中にシナリオ内に変数を宣言するだけで永続化機能を使う事ができます.
ΣServTMがシステムダウンした場合,アプリケーションにて状態判定後,起動契機をΣServTMに対して与えると,実行していた状態から実行する事ができます.例えば,発注処理中にシステムダウンが発生した場合,在庫リスト取得機能から発注機能へデータの受け渡しがあったとしても,変数を永続化しているため,在庫リスト取得機能が終了した時点での情報が保存されています.したがって,システム復帰後は,発注処理から実行を再開する事ができます.また,永続化の機能により,サービス開始から終了まで,何週間や何ヶ月もかかるサービスも提供できます.
[ΣServTMを利用したシステムの開発]
開発言語 | Java |
ツール群 | プログラムは,一般のJava開発環境を利用 ビジネスプロセス定義は,専用エディタを利用 |
チュートリアル等のドキュメント | システム開発者のための開発ガイド 管理者ガイド |
製品インストール方法 | (1) Oracleをインストールします. (2) アプリケーションサーバをインストールします. (3) ΣServモジュールをディプロイします. |
ΣServTMでは,ビジネスプロセスの開発とアプリケーションの開発を分離しています.このため,両方の作業を並行して実行できます.ビジネスプロセスの開発は,専用のビジネスプロセスエディタを利用して行います.ビジネスプロセスエディタでは,GUIを利用して,サービスの実行順序や実行条件を定義します.一方,アプリケーションは,Javaで記述して開発します.ΣServTMでは,Webサービスをはじめとするさまざまなシステムと連携するためのアダプタが多数用意されています.これらのアダプタが,各システムと連携するためのプロトコルの差異を吸収してくれるため,容易にアプリケーションの開発ができます.
[開発例(Hello World)]
ここでは,Hello Worldを例に,ΣServTMでWebサービスを開発する概略を示します.本例では,下図のように他システムからΣServTMに対して,SOAPでリクエストを送ると,そのレスポンスとして,SOAPのBodyに,「Hello World」の文字列が,返ってきます.
まずはじめに,Hello Worldメッセージを構築し,送信するためのビジネスプロセスを作成します.
(1) ビジネスプロセスの開始を宣言する「定義開始」を画面上にドラッグ&ドロップします.この「定義開始」では,ビジネスプロセスの名前を定義します.
(2) Hollo Worldメッセージを構築するアクティビティと構築したメッセージをクライアント側に返却するアクティビティを作るために,「状態定義」を2つ画面上にドラッグ&ドロップします.1つめの「状態定義」には,名前(ここでは,”HelloWorldメッセージ作成”としました)と作成した”HelloWorld”を格納する変数を定義します.2つめの「状態定義」には,名前(ここでは,”HelloWorldメッセージ送信”としました)とクライアントに返却する変数名(HelloWorldメッセージが格納されている変数名)を定義します.
(3) 「接続」を画面上にドラッグ&ドロップして,「定義開始」と2つの「状態定義」を結べば完成です.(下図)
次に,Hello Worldメッセージを構築するJavaアプリケーションを作ります.
(1) 必要なクラスをインポートします.
(2) "Servant"インタフェースをimplementしたクラス(HelloWorldクラス)を作成し,"execute"メソッドを実装します.この"execute"メソッドが,ビジネスプロセスから実行されます."execute"メソッドの中で,"HelloWorld"メッセージを文字列として構築し,"execute"メソッドの戻り値である「Object配列」にこの文字列を格納します.
最後に,作成したビジネスプロセス,アプリケーションのデプロイを行います.作成したビジネスプロセスは,ビジネスプロセス作成に用いたエディタのデプロイ機能を利用して,ΣServサーバにデプロイします.作成したHelloWorldクラスは,コンパイル後,ΣServサーバにデプロイします.
以上で,Hello Worldのアプリケーションが完成です.下記のような入力メッセージをSOAPでΣServTMに送ると,そのレスポンスとして,出力メッセージに示してあるような,BodyにHello Worldの文字列が含まれたSOAPメッセージが返却されます.
[今後の予定]
ΣServTMは,今後もWebサービス技術の進化とともに,より付加価値の高いサービスを実現するためのフラットフォームの実現に向けて取り組んでいきます.
[お問い合わせ先]
株式会社NTTデータ 技術開発本部
Webサービスグループ
〒104-0033 東京都中央区新川1-21-2 茅場町タワー
TEL:03-3523-8081 FAX:03-3523-8090
Email: sigmaserv@rd.nttdata.co.jp
・ΣServTMは,株式会社NTTデータの登録商標です.
・その他の会社名,商品名,サービス名は,各社の商標もしくは登録商標です.