(57)【要約】【課題】テストの効率化を図ったＷｅｂサービステスト支援装置を提供する。【解決手段】Ｗｅｂサービス部から取得した構造化文書を取得し構造化文書に記述された要素をクラスオブジェクトに変換する構造化文書要素変換手段と、クラスオブジェクト化した要素を解析しインターフェイス情報を抽出するインターフェイス抽出手段と、インターフェイス抽出手段によって抽出されたインターフェイス情報を表示させるテストツール設定・表示制御手段と、スクリプトを入力し抽出したインターフェイス情報を基にＷｅｂサービス部のワークフローエンジンへスクリプトを特定するメッセージを送信するワークフロー接続手段とを備える。【選択図】図２
2010224632.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｅｂサービス部から取得した構造化文書を取得し、前記構造化文書に記述された要素をクラスオブジェクトに変換する構造化文書要素変換手段と、
前記クラスオブジェクト化した要素を解析しインターフェイス情報を抽出するインターフェイス抽出手段と、
前記インターフェイス抽出手段によって抽出されたインターフェイス情報を表示させるテストツール設定・表示制御手段と、
スクリプトを入力し前記抽出したインターフェイス情報を基に、前記Ｗｅｂサービス部のワークフローエンジンへスクリプトを特定するメッセージを送信するワークフロー接続手段と、を具備したことを特徴とするＷｅｂサービステスト支援装置。
【請求項２】
前記構造化文書要素変換手段は、インスタンス化処理により前記構造化文書に含まれる要素の属性、親子関係を定義した情報が設定されたオブジェクトに変換することを特徴とする請求項１記載のＷｅｂサービステスト支援装置。
【請求項３】
前記テストツール設定・表示制御手段は、表示部に前記ワークフローエンジンへの入力メッセージ、及び前記ワークフローエンジンからの結果メッセージを表示するウィンドウを表示することを特徴とする請求項１記載のＷｅｂサービステスト支援装置。
【請求項４】
Ｗｅｂサービス部からのスクリプトをテストするテスト支援プログラムであって、コンピュータに、
Ｗｅｂサービス部から取得した構造化文書を取得し、前記構造化文書に記述された要素をクラスオブジェクトに変換する変換機能と、
前記クラスオブジェクト化した要素を解析しインターフェイス情報を抽出する抽出機能と、
前記抽出されたインターフェイス情報を表示させる表示機能と、
スクリプトを入力し前記抽出したインターフェイス情報を基に、前記Ｗｅｂサービス部のワークフローエンジンへスクリプトを特定するメッセージを送信するワークフロー接続機能と、を実現させるためのテスト支援プログラム。
【請求項５】
前記変換機能は、インスタンス化処理により前記構造化文書に含まれる要素の属性、親子関係を定義した情報が設定されたオブジェクトに変換することを特徴とする請求項４記載のテスト支援プログラム。
【請求項６】
前記表示機能は、表示部に前記ワークフローエンジンへの入力メッセージ、及び前記ワークフローエンジンからの結果メッセージを表示することを特徴とする請求項４記載のテスト支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂサービス連携ワークフロー言語スクリプト開発のテスト支援装置及びプログラムに関する。
【背景技術】
【０００２】
近年、大規模なシステムを、サービスの集まりとして構築するサービス指向アーキテクチャ（ＳＯＡ; Service Oriented Architecture）という考え方が普及してきている。サービスの単位として有望視されているものがＷｅｂサービスであり、Ｗｅｂサービス記述言語（Web Services Description Language；ＷＳＤＬ）でインターフェイス情報が記述される。このＷｅｂサービスを連携するための言語仕様として、ビジネスプロセス実行言語（Business Process Execution Language；ＢＰＥＬ）がある。このＢＰＥＬで作成されたワークフローは、手順が記述されているものであるためそれだけではワークフローを実行することができない。
【０００３】
このワークフローを実行するためのインターフェイスとしてＷｅｂサービスを必要とする。ＢＰＥＬワークフローに対応するＷｅｂサービスにメッセージを渡すと、Ｗｅｂサービスはワークフローエンジンのメッセージ受信部にメッセージを送る。それをきっかけとしてＢＰＥＬワークフローエンジンがワークフローを開始する仕組みが一般的である。（例えば、特許文献１参照）。
【０００４】
そのためにはＷｅｂサービスを公開する必要があり、ＢＰＥＬ・ＷＳＤＬを基にＷｅｂサービスを構築し、アプリケーションサーバ上に配置する必要がある。ＢＰＥＬスクリプトをテストする場合、Ｗｅｂサービスを配置し、そのＷｅｂサービスを実行するためのクライアントを作成する必要があるが、ワークフローのインターフェイス情報が変更されると、配置したＷｅｂサービスをアプリケーションサーバ上より削除し、再度Ｗｅｂサービスを構築し、アプリケーション上に配置し、そのＷｅｂサービスにあったクライアントを作成するという一連の動作を繰り返す必要があった。
【０００５】
従来、インターフェイス情報を変更することはよくあり、ワークフローのインターフェイスが変更されるとそのたびに開発者はテストのためにＷｅｂサービスの再配置作業とクライアントの修正を行う必要がある。この作業は開発効率を下げていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−４５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、テストにおいてインターフェイス情報を変更することはよくあり、ワークフローのインターフェイス情報が変更されると、そのたびに開発者はテストのためにＷｅｂサービスの再配置作業とクライアントの修正を行う必要があり、開発効率を下げていた。
【０００８】
本発明は上記事情に鑑みて成されたもので、テストの効率化を図ったＷｅｂサービステスト支援装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項1記載の本発明のＷｅｂサービステスト支援装置は、Ｗｅｂサービス部から取得した構造化文書を取得し、前記構造化文書に記述された要素をクラスオブジェクトに変換する構造化文書要素変換手段と、前記クラスオブジェクト化した要素を解析しインターフェイス情報を抽出するインターフェイス抽出手段と、前記インターフェイス抽出手段によって抽出されたインターフェイス情報を表示させるテストツール設定・表示制御手段と、スクリプトを入力し前記抽出したインターフェイス情報を基に、前記Ｗｅｂサービス部のワークフローエンジンへスクリプトを特定するメッセージを送信するワークフロー接続手段と、を具備したことを特徴とする。
【００１０】
請求項４記載の本発明は、Ｗｅｂサービス部からのスクリプトをテストするテスト支援プログラムであって、コンピュータに、Ｗｅｂサービス部から取得した構造化文書を取得し、前記構造化文書に記述された要素をクラスオブジェクトに変換する変換機能と、前記クラスオブジェクト化した要素を解析しインターフェイス情報を抽出する抽出機能と、前記抽出されたインターフェイス情報を表示させる表示機能と、スクリプトを入力し前記抽出したインターフェイス情報を基に、前記Ｗｅｂサービス部のワークフローエンジンへスクリプトを特定するメッセージを送信するワークフロー接続機能と、を実現させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ワークフローエンジンに接続するための情報や入力ウィンドウをＢＰＥＬ／ＷＳＤＬスクリプトから自動生成してワークフローエンジンへ接続することが可能になり、テストの効率化を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態におけるＷｅｂサービステスト支援装置の全体構成を示すブロック図。
【図２】同実施形態におけるＷｅｂサービステスト支援装置の機能構成を示す図。
【図３】ＢＰＥＬ文書の一例を示す図。
【図４】ＢＰＥＬ文書の要素の関係を構造ツリーによって示す図。
【図５】ＷＳＤＬ文書の一例を示す図。
【図６】本実施形態におけるインスタンス化処理を示すフローチャート。
【図７】ＢＰＥＬ文章をオブジェクト化したときのオブジェクトツリーを示す図。
【図８】ＢＰＥＬ・ＷＳＤＬの要素間の関連性を示す図。
【図９】本実施形態におけるインターフェイス抽出処理を示すフローチャート。
【図１０】本実施形態におけるｔａｒｇｅｔＮａｍｅＳｐａｃｅ抽出アルゴリズムを示すフローチャート。
【図１１】本実施形態におけるインターフェイス抽出アルゴリズムを示すフローチャート。
【図１２】本実施形態における送受信メッセージ名抽出アルゴリズムを示すフローチャート。
【図１３】本実施形態における送受信メッセージ構成抽出アルゴリズムを示すフローチャート。
【図１４】テストツールのメッセージ入力画面の一例を示す図。
【図１５】本実施形態における入力値設定エリア生成処理を示すフローチャート。
【図１６】本実施形態におけるワークフロー接続処理を示すフローチャート。
【図１７】テストツールの結果出力画面の一例を示す図。
【発明を実施するための形態】
【００１３】
以下、この発明の一実施の形態について図面を参照して詳細に説明する。
【実施例１】
【００１４】
図１は、本発明の一実施の形態に係るＷｅｂサービステスト支援装置（以下、テスト支援装置と略称する）の構成を示すブロック図である。
【００１５】
図１の実施形態では、テスト支援装置を実現するためのプログラム開発プログラムを含む各種プログラムやデータの制御等の処理を行うＣＰＵ（中央処理装置）１０と、ＣＰＵ１０が処理するためのプログラムやデータを一時的に記憶するＲＡＭ（Random Access Memory）１１と、処理プログラム等を記憶するＲＯＭ（Read Only Memory）１２と、構造化文書等を長期的に記憶するためのハードディスク（ＨＤ）に対するアクセスを制御するハードディスク駆動制御部１３と、プログラム等を記憶しているＣＤ−ＲＯＭを制御するＣＤ−ＲＯＭ駆動制御部１４と、を含む。
【００１６】
さらに構造化文書やその他の情報を表示する表示器１６を制御する表示器制御回路１５と、キーボード１８やマウス等の入力装置の制御を行う入力制御部１７と、ネットワークからデータを入力する通信インターフェイス（Ｉ／Ｆ）１９と、バスライン１００とを含んでいる。
【００１７】
テスト支援装置を実現するプログラム開発プログラムは、ＨＤに格納されている。ＨＤに格納される際は、ＣＤ−ＲＯＭからインストールされてもよいし、ＣＤ−ＲＯＭ以外のドライブやメディア（例えば、ＭＯドライブとＭＯディスク、ＵＳＢ端子とＵＳＢメモリ等）からインストールされてもよい。
【００１８】
図２は、プログラム開発プログラムをＣＰＵ１０によって実行することにより実現されるテスト支援装置の機能構成を示す図である。図２に示すように、テスト支援装置は、構造化文書要素変換手段２２と、インターフェイス抽出手段２４と、入力・表示ウィンドウ２５と、テストツール設定・表示制御手段２６と、ワークフロー接続手段２７を含む。
【００１９】
構造化文書要素変換手段２２は、構造化文書２０に記述された要素を、属性や親子関係等を含む情報が設定されたクラスオブジェクト２１に変換する。インターフェイス抽出手段２４は、構造化文書要素変換手段２２によりクラスオブジェクト化されたクラスオブジェクト２１（要素オブジェクト）からインターフェイスリスト２３を抽出する。
【００２０】
テストツール設定・表示制御手段２６は、入力・表示ウィンドウ２５を通じてのスクリプトの入力や、ワークフローに送信するメッセージ内容の決定、及びワークフローからの結果を出力する。ワークフロー接続手段２７は、インターフェイスリスト２３から受け取ったワークフローに接続するための情報とテストツール設定・表示制御手段２６から受け取ったメッセージ内容を基にＷｅｂサービス部のワークフローにメッセージを送る。
【００２１】
尚、以下の説明では、構造化文書２０としてＸＭＬ（Extensible Markup Language）により記述された文書を例に説明するが、ＸＭＬ以外の他の構造化文書を対象としても実現することが可能である。
【００２２】
構造化文書要素変換手段２２、インターフェイス抽出手段２４、テストツール設定・表示制御手段２６、及びワークフロー接続手段２７は、ＣＰＵ１０、ＲＡＭ１１、及びＲＯＭ１２の組み合わせにより実現される機能である。ＣＰＵ１０は、ＲＡＭ１１あるいはＲＯＭ１２に記憶された、プログラム開発プログラムに含まれるそれぞれに対応するプログラムを実行することにより各手段を実現する。
【００２３】
構造化文書２０、クラスオブジェクト２１、インターフェイスリスト２３は、ハードディスクに記憶され、必要に応じてＲＡＭ１１に読み出されて処理に供される。入力・表示ウィンドウ２５は、ＲＡＭ１１あるいはＲＯＭ１２に記憶されたウィンドウフォーマットのデータに基づいて表示される。尚、図２の機能はテスト用クライアント２００内に構成される。
【００２４】
次に、本実施の形態のＷｅｂサービステスト支援装置で使用される構造化文書２０について説明する。本実施の形態は、構造化文書２０であるＢＰＥＬ（Business Process Execution Language）文書の参照や編集に適応する場合を用いて説明する。ＢＰＥＬは、ＸＭＬベースのワークフロー記述言語であり、データの操作や、Ｗｅｂサービスの呼び出し、例外処理等の処理単位を組み合わせて複雑なフローを記述する言語である。
【００２５】
図３に例示するＸＭＬ文書はＢＰＥＬ文書を示している。ＢＰＥＬ文書では、１つの処理要素をＸＭＬのタグの形で記述し、一連の処理を示す場合や、要素の集合を示す場合には、開始タグと終了タグに挟む形で入れ子にする。例えば、ワークフローの宣言を行う要素ｐｒｏｃｅｓｓは、１行目の開始タグと、１９行目の終了タグによりワークフロー全体を入れ子にしている。変数定義の集合を示すｖａｒｉａｂｌｅｓ要素(５行目)は、変数の定義ｖａｒｉａｂｌｅを入れ子としている。また、１つの要素で完結するものに関しては空要素と呼ばれている。
【００２６】
例えば、変数の定義を行うｖａｒｉａｂｌｅ（６，７行目）や、メッセージの受信を行うｒｅｃｅｉｖｅ（１０行目）等が空要素を指している。また、各要素に必要な情報は属性と呼ばれ、開始タグと空要素タグ内で記述される。例えば、ｐｒｏｃｅｓｓ（１行目）のｎａｍｅやｘｍｌｎｓ等の情報が属性に当たる。また、ＢＰＥＬ文書はＸＭＬ文書であるため、ＸＭＬの論理構造に基づきツリー構造で示すことができる。
【００２７】
図４は、図３に示すＢＰＥＬ文書の属性部分を除き、要素の関係を構造ツリーの形にしたものである。各要素名の括弧に示された数字は、図３の行番号と対応している（実際のツリー構造には行番号は含まれない）。ＸＭＬ文書において、それぞれの要素は構造ツリー表現においてノードとも呼ばれる。以下の説明では、ＸＭＬ文書の要素を、構造化文書２０では要素やタグという表現を用い、文書構造ツリーではノードという表現を用いる。
【００２８】
ノードの相対関係を示すとき「親」、「子」、「子孫」、「先祖」といった表現を利用する。親ノードとは、対象とするノードの１つ上位のノードを指す。例えば、ｖａｒｉａｂｌｅ（６）の親ノードはｖａｒｉａｂｌｅｓ（５）となる。子ノードとは対象とする１つ下位のノードを指す。例えば、ｖａｒｉａｂｌｅｓ（５）の子ノードはｖａｒｉａｂｌｅ（６）、ｖａｒｉａｂｌｅ（７）となる。先祖ノードとは、対象となるノードの全上位ノードを指す。子孫ノードは対象となるノードの全下位ノードを指す。またｐｒｏｃｅｓｓ（１）のように頂点のノードのことをルートノードと呼ぶ。構造化文書２０を構造ツリーの形で表現することにより、各ノードの関係性が明確になるため、構造化文書２０に対する処理が容易に行われると考えられている。
【００２９】
ＢＰＥＬ文書はワークフローの流れのみを示し、Ｗｅｂサービスや自分自身がサービスとして提供された際のインターフェイス情報は含まれない。このインターフェイス情報を示したものがＷＳＤＬ（Web Services Description Language）文書である。ＷＳＤＬ文書には、メッセージのデータ型や、通信プロトコル、サービス名等が含まれる。ＷＳＤＬ文書もＢＰＥＬ文書同様にＸＭＬにて表現される。図３で示したＢＰＥＬ文書がサービス化された時のインターフェイス情報を示したＷＳＤＬ文書を図５に示す。
【００３０】
図３に示すＢＰＥＬ文書内には、図５に示すＷＳＤＬ文書とマッピングするための情報が含まれる。例えば、図３のｖａｒｉａｂｌｅ（６行目）はメッセージのデータの保存に利用されるが、そのデータ型を示すのは、図５のｍｅｓｓａｇｅ（７行目）となる。ＢＰＥＬ文書のｖａｒｉａｂｌｅ（６行目）のｍｅｓｓａｇｅＴｙｐｅ属性に参照元の情報が記述されている。ｔｎｓは、ＷＳＤＬ文書を指定するものであり、ＭＲｅｑｕｅｓｔは、ＷＳＤＬ文書内のｍｅｓｓａｇｅ（７行目）を示している。参照のルールはＢＰＥＬ文書の仕様により定められており、開発者はこの仕様に基づきＢＰＥＬ文書を構築する。
【００３１】
次に本実施形態におけるテスト支援ツールが、構造化文書２０からクラスオブジェクト２１ならびにインターフェイスリスト２３を作成する処理について説明する。ここでは、図３のＢＰＥＬ文書、図５のＷＳＤＬ文書を対象とする。説明を簡単にするため、これら文書は簡略化された形で記述されている。
【００３２】
まず、テストツールが入出力ウィンドウ２５を通じＢＰＥＬ／ＷＳＤＬのパスをユーザから受け取ると、テストツール設定・表示制御装置２６は構造化文書２０を取得し、構造化文書要素変換手段２２に渡す。構造化文書要素変換手段２２は構造化文書２０の各要素に対応したクラスからオブジェクトをインスタンス化する。図６はインスタンス化処理を示すフローチャートである。
【００３３】
まず、構造化文書要素変換手段２２は、ＢＰＥＬ文書を要素単位に切り出す（Ｓ６０１）。そして、この切り出した要素を対応するクラスオブジェクトに変換する（Ｓ６０２）。このクラスオブジェクトは、属性値、親要素、子要素リストのデータ群からなる。属性値は文字列で、親要素、子要素のリストは、他のクラスオブジェクトを値として持つ。親要素や子要素リストに設定されるオブジェクトは参照型となる。
【００３４】
そのため、オブジェクト内にある親要素や子要素リストに設定されたオブジェクトにアクセスすることで、それぞれのオブジェクトのデータ群にアクセスすることが可能となる。ここで処理中の要素をＥ、親要素をＰ（Ｅ）、子要素をＣ１（Ｅ），Ｃ２（Ｅ），…ＣＮ（Ｅ）と表す。まず、構造化文書要素変換手段２２は、切り出した要素より属性値を抜き出し、クラスオブジェクトＥの属性値として設定する。
【００３５】
次に、ＲＡＭ１１から親要素にあたるオブジェクトＰ（Ｅ）が取得できたかを判定する（Ｓ６０３）。存在する場合（Ｓ６０３・Ｙｅｓ）、構造化文書要素変換手段２２は、オブジェクトＰ（Ｅ）をＲＡＭ１１から取得する（Ｓ６０４）。処理要素Ｎに対する親要素としてＰ（Ｅ）を設定する（Ｓ６０５）。その後、親要素Ｐ（Ｅ）の子要素リストの末尾に自身のオブジェクトＮを追加する（Ｓ６０６）。
【００３６】
構造化文書要素変換手段２２は、オブジェクトＥ，Ｐ（Ｅ）に関する設定を終えると、ＲＡＭ１１に保存された親要素Ｐ（Ｅ）を現在の処理要素Ｅに変更し（Ｓ６０７）、処理要素Ｎの全ての子要素のそれぞれに対して、前述したインスタンス化処理を再帰的に実施する（Ｓ６０８）。Ｓ６０７．Ｓ６０８によりＥを親要素、Ｃ１（Ｅ），Ｃ２（Ｅ），…ＣＮ（Ｅ）を処理中の要素とするインスタンス処理を実施することとなる。再帰的に子孫ノードを処理するため、全ての子要素に対するインスタンス化処理を終了すると、一連のオブジェクト初期化作業は終了となる。この結果、ＢＰＥＬ文書に含まれる要素の関係を表すオブジェクトツリーが構築される。
【００３７】
なお、処理要素がルートノードであるためＲＡＭ１１に親要素が設定されていない場合（Ｓ６０３・NO）、構造化文書要素変換手段２２は、ステップＳ６０４〜Ｓ６０６の処理を実行せず、処理要素に対する親要素を設定しない。すなわちステップＳ６０７の処理に移る。
【００３８】
図７は、図３に示すＢＰＥＬ文章を構造化文書要素変換手段２２によりオブジェクト化したときのオブジェクトツリーを示す。図７において、ルートノードの要素Ｐｒｏｃｅｓｓのオブジェクトの子要素リストには、要素ｖａｒｉａｂｌｅｓ、要素ｐａｒｔｎｅｒＬｉｎｋｓ、要素ｓｅｑｕｅｎｃｅのオブジェクトが設定される（Ｃ１，Ｃ２，Ｃ３）。また例えば、要素Ｐｒｏｃｅｓｓの子要素である要素ｓｅｑｕｅｎｃｅには、親要素として要素Ｐｒｏｃｅｓｓのオブジェクト（Ｐ）が設定され、子要素リストには、要素ｒｅｃｅｉｖｅ、要素ａｓｓｉｇｎ、要素ｒｅｐｌｙのオブジェクトが設定される（Ｃ１，Ｃ２，Ｃ３）。
【００３９】
さらに、要素ａｓｓｉｇｎの子要素である要素ｃｏｐｙのオブジェクトには、親要素ａｓｓｉｇｎのオブジェクト（Ｐ）が設定され、子要素リストには、要素ｆｒｏｍ、要素ｔｏのオブジェクトが設定される（Ｃ１，Ｃ２）。他の子要素のオブジェクトについても、同様にして親子関係に応じて、親要素と子要素リストが設定される。
【００４０】
なお、図７では示していないが、各オブジェクトには属性値を示すデータが含まれている。例えば、要素ｒｅｃｅｉｖｅのオブジェクトには、図３に示すＢＰＥＬ文書の１０行目にあるように、ｐａｒｔｎｅｒＬｉｎｋ、ｐｏｒｔＴｙｐｅ、ｏｐｅｒａｔｉｏｎ、ｖａｒｉａｂｌｅの各属性が設定されている。
【００４１】
このようにインスタンス化処理によって生成されたクラスオブジェクト２１では、構造化文書２０における要素の親子関係が定義される。従って、クラスオブジェクト２１を参照とすることで、各オブジェクトの親子関係や属性値、また親子関係にある他のオブジェクトの情報を知ることができるようになる。
【００４２】
なお、前述した説明では、ＢＰＥＬ文書のみを対象にして説明しているが、構造化文書要素変換手段２２は、全てのＷＳＤＬ文書についても同様にしてインスタンス化処理を実行する。
【００４３】
従って、構造化文書要素変換手段２２によるインスタンス化処理によって、ＢＰＥＬ文書から変換されたＢＰＥＬ文書オブジェクトと、ＷＳＤＬ文書から変換されたＷＳＤＬ文書オブジェクトが生成される。
【００４４】
次にインターフェイス抽出手段２２により、オブジェクト化したＢＰＥＬ、ＷＳＤＬ要素を基にワークフローエンジンへ接続するための情報を抽出する。ＢＰＥＬワークフローへアクセスするために必要なインターフェイス情報として求められるのは、ＢＰＥＬプロセスを識別するための名前空間 (ＢＰＥＬ：ｐｒｏｃｅｓｓ要素のｔａｒｇｅｔＮａｍｅＳｐａｃｅ属性)、実行する操作の名前（ＢＰＥＬ：ｒｅｃｅｉｖｅ／ｒｅｐｌｙ要素のｏｐｅａｒｔｉｏｎ属性）、実行する操作のインターフェイス情報（ＢＰＥＬ：ｒｅｃｅｉｖｅ／ｒｅｐｌｙ要素のｐｏｒｔＴｙｐｅ属性）、通信相手の役割を示す（ＢＰＥＬ：ｒｅｃｅｉｖｅ／ｒｅｐｌｙ要素のｐａｒｔｎｅｒＬｉｎｋ要素）情報である。
【００４５】
これらを指定することにより対象のスクリプトを決定するとともにメッセージ送信対象の操作を指定する。また、これらの関係はＷＳＤLに定義されており、この関係を満たす必要もある。この関係の正当性を検証すると初めてメッセージ送信対象の操作を一意に特定できるためである。その関係を図８に示す。
【００４６】
本来、これらの正当性を検証する必要性があるが、説明を簡易にするため正当性を検証された文章とみなし検証を行わない。ＷＳＤＬにはインターフェイス情報から引き出されるメッセージの入力値・帰り値の構成に関する情報が含まれるためそれらもまた抽出する。
【００４７】
図８は、Ｗｅｂサービス部３００を示す図であり、ＢＰＥＬとＷＳＤＬの関連性を表した図である。ＢＰＥＬのｒｅｃｅｉｖｅはクライアント（図２のテスト用クライアント２００）からのメッセージを受信し、ｒｅｐｌｙからクライアントにメッセージを返す。ＢＰＥＬは、例えば図８の太線（実線、点線、一点鎖線等）で示す順序（（８１）〜（８８））でＷＳＤＬから必要な情報を取得し、クライアントに送信する。
【００４８】
図９にインターフェイス抽出処理を示す。まず、ＢＰＥＬスクリプトからｐｒｏｃｅｓｓ要素のｔａｒｇｅｔＮａｍｅＳｐａｃｅ属性を取得する（Ｓ９０１・以降、この取得方法をｔａｒｇｅｔＮａｍｅＳｐａｃｅ抽出アルゴリズムと呼ぶ）。
【００４９】
次にＢＰＥＬスクリプトからｏｐｅｒａｔｉｏｎ、ｐｏｒｔＴｙｐｅ、ｐａｒｔｎｅｒＬｉｎｋの各値を取得する（Ｓ９０２・以降、この取得方法をインターフェイス抽出アルゴリズムと呼ぶ）。
【００５０】
最後にＷＳＤＬからｉｎｐｕｔ、ｏｕｔｐｕｔの構成情報を取得する（Ｓ９０４・以降、この取得方法を送受信メッセージ構成抽出アルゴリズムと呼ぶ）。ただし送受信メッセージ構成抽出アルゴリズムを実行するためには、まずＷＳＤＬからｉｎｐｕｔ、ｏｕｔｐｕｔのメッセージ名を取得する必要がある（Ｓ９０３・以降、この取得方法を送受信メッセージ名抽出アルゴリズムと呼ぶ）。以下、ステップＳ９０１，Ｓ９０２，Ｓ９０３，Ｓ９０４の詳細な処理の流れについて説明する。
【００５１】
先ずｔａｒｇｅｔＮａｍｅＳｐａｃｅ抽出アルゴリズム（Ｓ９０１）を図１０に示す。図１０では、始めにＢＰＥＬオブジェクトツリーのルートオブジェクトを取得する（Ｓ１００１）。これはｐｒｏｃｅｓｓ要素である。ここからＢＰＥＬプロセスの識別の値であるｔａｒｇｅｔＮａｍｅＳｐａｃｅ属性を取得し（Ｓ１００２）、取得したｔａｒｇｅｔＮａｍｅＳｐａｃｅ属性をＲＡＭ１１に保存する（Ｓ１００３）。
【００５２】
次に、インターフェイス抽出アルゴリズム（Ｓ９０２）を図１１に示す。まず、探査対象の要素を探査変数Ｅとして設定する（Ｓ１１０１）。初期値はＢＰＥＬのｐｒｏｃｅｓｓ要素オブジェクトを設定する。ｐｒｏｃｅｓｓ要素はＢＰＥLスクリプトのルートノードである。次に初期値としてインデックスｎ＝１を設定（１１０２）し、Ｅの要素の子要素(Ｃ１（Ｅ）、Ｃ２（Ｅ）、…、Ｃｎ（Ｅ）、…、ＣＮ（Ｅ）)を取得する（ここではＣｎ（Ｅ）を取得したものとする（Ｓ１１０３）。
【００５３】
次のステップＳ１１０４では、まずＣｎ（Ｅ）存在するか確認する。Ｃｎ（Ｅ）が存在すればｒｅｃｅｉｖｅ要素か否か比較する（Ｓ１１０５）。同じ場合は、このｒｅｃｅｉｖｅ要素のｏｐｅｒａｔｉｏｎ、ｐｏｒｔＴｙｐｅ、ｐａｒｔｎｅｒＬｉｎｋ属性の値をインターフェイスリストに追加する（Ｓ１１０６）。このリストは連想記憶になっており、ｏｐｅｒａｔｉｏｎを指定することによりｐｏｒｔＴｙｐｅや、ｐａｒｔｎｅｒＬｉｎｋ、ｉｎｐｕｔ、ｏｕｔｐｕｔのメッセージ名と構成を取得できる。
【００５４】
次に探査対象の要素ＥをＣｎ（Ｅ）として、インターフェイス抽出アルゴリズム処理を行う（Ｓ１１０７）。Ｓ１１０７は再帰的な処理になっており、Ｃｎ（Ｅ）自身の子孫ノードすべてにｒｅｃｅｉｖｅ要素の検出・リスト追加処理を行うことが可能となる。これが終わると、インデックスｎをカウントアップする（Ｓ１１０８）。そして次の要素Ｃｎ＋１（Ｅ）とその子孫ノードに対しｒｅｃｅｉｖｅ要素の検索・インターフェイス抽出処理を実施する。これをＣＮ（Ｅ）まで繰り返すことになる。ＣＮ（Ｅ）を終える（Ｓ１１０４・NO）と、すべてのｒｅｃｅｉｖｅ要素を探査したこととなりｏｐｅｒａｔｉｏｎ、ｐｏｒｔＴｙｐｅ、ｐａｒｔｎｅｒＬｉｎｋの値の抽出が完了するので完成したリストをＲＡＭ１１に保存する（Ｓ１１０９）。
【００５５】
次に、送受信メッセージ名抽出アルゴリズム（Ｓ９０３）を実施する。送受信メッセージの構成はＷＳＤＬのｍｅｓｓａｇｅ要素にある。そのためには、図８のＢＰＥＬ・ＷＳＤＬ要素関連図が示す矢印を追ってｍｅｓｓｅａｇｅ要素に辿りつく必要がある。ｒｅｃｅｉｖｅ／ｒｅｐｌｙ要素のｖａｒｉａｂｌｅ属性を基に、図８の８３，８４の関係性を適用することによりｍｅｓｓａｇｅ要素を導くことができるが、ｒｅｃｅｉｖｅ要素と対になるｒｅｐｌｙ要素を探す必要があるため、今回はｒｅｃｅｉｖｅ要素のｏｐｅａｒｔｉｏｎ属性を基に８８，８６の関連性を適用することによりｍｅｓｓａｇｅ要素を導く。
【００５６】
そのため、まずＷＳＤＬから対象のｏｐｅｒａｔｉｏｎ要素で使われるｉｎｐｕｔ、ｏｕｔｐｕｔ要素が指定するｍｅｓｓｅａｇｅを取得する必要がある。この取得処理（Ｓ９０３）を図１２に示す。図１２では、探査対象の要素を探査変数ＥとしてＷＳＤＬのｄｅｆｉｎｉｓｉｏｎｓ要素オブジェクトを設定する（Ｓ１２０１）。ｄｅｆｉｎｉｓｉｏｎｓ要素はＷＳＤLスクリプトのルートノードである。次に子要素(Ｃ１（Ｅ）、Ｃ２（Ｅ）、…、ＣＮ（Ｅ）)を取得する。
【００５７】
次に初期値としてインデックスｎ＝１を設定（Ｓ１２０２）し、Ｅの要素の子要素(Ｃ１（Ｅ）、Ｃ２（Ｅ）、…、Ｃｎ（Ｅ）、…、ＣＮ（Ｅ）)を取得する（ここではＣｎ（Ｅ）を取得したものとする（Ｓ１２０３）。Ｃｎ（Ｅ）がｐｏｒｔＴｙｐｅ要素か比較し（Ｓ１２０４）、Ｃｎ（Ｅ）がｐｏｒｔＴｙｐｅ要素であれば（Ｓ１２０４・YES）、子要素のｏｐｅｒａｔｉｏｎ要素Ｃ（Ｃｎ（Ｅ））を取得し（Ｓ１２０５）、一致しなければ（Ｓ１２０４・NO）、ｎをカウントアップして次の要素Ｃｎ＋１（Ｅ）を検証する（Ｓ１２０６）。
【００５８】
次に初期値としてインデックスｔ＝１を設定し（Ｓ１２０７）し、インターフェイスリストからｏｐｅｒａｔｉｏｎＯ１，Ｏ２，…ＯＮを取得する。（ここでは取り出したｏｐｅｒａｔｉｏｎ をＯｔとする（Ｓ１２０８）。）ｏｐｅｒａｔｉｏｎ要素Ｃ（Ｃｎ（Ｅ））のｎａｍｅ属性とＯｔの値が等しいか比較し（Ｓ１２０９）、値が等しければ（Ｓ１２０９・YES）、ｏｐｅｒａｔｉｏｎ要素Ｃ（Ｃｎ（Ｅ））の子要素のｉｎｐｕｔ要素とｏｕｔｏｐｕｔ要素のｍｅｓｓａｇｅ属性を取得する（Ｓ１２１０）。インターフェイスリストのｏｐｅｒａｔｉｏｎＯｔと連想させてインターフェイスリストに追加し（Ｓ１２１１）、ＲＡＭに保存する（Ｓ１２１２）。
【００５９】
同じでなければ（Ｓ１２０９・NO）インデックスｔをカウントアップし（Ｓ１２１３）、次のｏｐｅｒａｔｉｏｎＯｔ＋１を取得し、Ｃ（Ｃｎ（Ｅ））と等しいか検証を行う（Ｓ１２０８）。これを対象のｐｏｒｔＴｙｐｅ要素が見つかるまで行う。ＢＰＥＬとＷＳＤＬの各要素の関連性に誤りがなければ必ずマッチングする。
【００６０】
最後に、送受信メッセージ構成抽出アルゴリズム（Ｓ９０４）を実施する。取得したｉｎｐｕｔ、ｏｕｔｐｕｔに対しこのアルゴリズムを実施する必要があるが、ｉｎｐｕｔとｏｕｔｐｕｔは同じ処理を行うため、ここでは、図１３を参照してｉｎｐｕｔの場合で説明する。
【００６１】
探査対象の要素を探査変数ＥとしてＷＳＤＬのｄｅｆｉｎｉｓｉｏｎｓ要素オブジェクトを設定する（Ｓ１３０１）。ｄｅｆｉｎｉｓｉｏｎｓ要素はＷＳＤLスクリプトのルートノードである。次に初期値としてインデックスｎ＝１を設定し（Ｓ１３０２）、次にＥの要素の子要素(Ｃ１（Ｅ）、Ｃ２（Ｅ）、…、Ｃｎ（Ｅ）、…、ＣＮ（Ｅ）)を取得する（ここではＣｎ（Ｅ）を取得したものとする（Ｓ１３０３）。
【００６２】
Ｃｎ（Ｅ）がｍｅｓｓａｇｅ要素か比較し（Ｓ１３０４）、Ｃｎ（Ｅ）がｍｅｓｓａｇｅ要素であれば（Ｓ１３０４・YES）、Ｃｎ（Ｅ）のｎａｍｅ要素を取得し（Ｓ１３０５）、一致しなければ（Ｓ１３０４・NO）ｎをカウントアップして次の要素Ｃｎ＋１（Ｅ）を検証する（Ｓ１３０６）。次に初期値としてインデックスｔ＝１を設定し（Ｓ１３０７）、インターフェイスリストからｏｐｅｒａｔｉｏｎＯ１，Ｏ２，…ＯＮ、ｉｎｐｕｔのメッセージ名、Ｍ１，Ｍ２，…，ＭＮを取得する。（ここでは取り出したｏｐｅｒａｔｉｏｎをＯｔ、ｉｎｐｕｔのメッセージ名をＭｔをとする（Ｓ１３０８）。
【００６３】
次にｍｅｓｓｅａｇｅ要素Ｃｎ（Ｅ）のｎａｍｅ属性とＭｔの値が等しいか比較し（Ｓ１３０９）、値が等しければ（Ｓ１３０９・YES）、ｍｅｓｓｅａｇｅ要素Ｃｎ（Ｅ）をインターフェイスリストのｏｐｅｒａｔｉｏｎＯｔと連想させてインターフェイスリストに追加し（Ｓ１３１０）、ＲＡＭに保存する（Ｓ１３１１）。
【００６４】
同じでなければ（Ｓ１３０９・NO）インデックスｔをカウントアップして（Ｓ１３１２）、次のｏｐｅｒａｔｉｏｎＯｔ＋１を取得しＣｎ（Ｅ）のｎａｍｅ属性と等しいか検証を行う（Ｓ１３０８）。これを対象のｍｅｓｓｅａｇｅ要素が見つかるまで行う。ＢＰＥＬとＷＳＤＬの各要素の関連性に誤りがなければ必ずマッチングする。ｏｕｔｏｐｕｔに関してもｉｎｐｕｔと同じアルゴリズムを実施する。
【００６５】
パラメタの抽出と確認を終えると、テストツール設定・表示制御手段２６はメッセージ入力画面を生成する。テストツールのメッセージ入力画面を図１４に示す。テストツールはコンボボックス１４０１にインターフェイスリストからｏｐｅｒｅｔｉｏｎのリストを取り出し、コンボボックスに設定する（例としてｈｅｌｌｏを設定）。ユーザからコンボボックスによるｏｐｅｒａｔｉｏｎの指定を受けると、入力値設定エリア１４０２を生成する。
【００６６】
入力値設定エリア生成処理を図１５に示す。ユーザからのｏｐｅｒａｔｉｏｎの指定（ここではＯｔとする）をテストツール設定・表示制御手段２６が受けると（Ｓ１５０１）、インターフェイスリストから対応するｉｎｐｕｔのメッセージ構成ＩＮｔを取得する（Ｓ１５０２）。次にＩＮｔを基にメッセージ構成を読み取る（Ｓ１５０３）。本実施形態ではこのメッセージ構成を読み取るアルゴリズムに関しては省略するが、今までのアルゴリズム同様、ユーザから与えられたＷＳＤLのｍｅｓｓｅａｇｅ要素を、ツリー構造探索アルゴリズムを利用することでメッセージ構成を理解することができる。
【００６７】
テストツール設定・表示制御手段２６はこの構成情報を基に入力値設定エリア１４０２に変数名とそのデータ型、入力テキストボックス１４０３を表示する（Ｓ１５０４）。この入力テキストボックス１４０３の値がワークフローへの入力メッセージとなる。
【００６８】
入力メッセージを設定後、ワークフローエンジンに接続を行う。ワークフロー接続処理を図１６に示す。テストツール設定・表示制御手段２６は、図１４の実行ボタン１４０４のクリックを受けると（Ｓ１６０１）、入力値設定エリア１４０２の各入力テキストボックス（１４０３）からメッセージを取得し（Ｓ１６０２）、型にあったオブジェクトに変換する（Ｓ１６０３）なおこの処理はオブジェクトにする必要がない場合は省略しても構わない。次に、接続に必要な情報を取得する。
【００６９】
ユーザに選択されたｏｐｅｒａｔｉｏｎ名Ｏｔを取得し（Ｓ１６０４）、これを基にｐｏｒｔＴｙｐｅ、ｐａｒｔｎｅｒＬｉｎｋ、ＢＰＥLの名前空間を取得する（Ｓ１６０５）。これとＳ１６０３で取得した入力メッセージをワークフロー接続情報としてワークフロー接続手段２７に与える（Ｓ１６０６）。ワークフロー接続手段２７はＢＰＥＬのワークフローに接続し、入力メッセージをワークフローエンジンに送信する（Ｓ１６０７）。ワークフロー接続手段２７の具体手段については問わず、ワークフローエンジンにそれらの情報が渡ればよい。
【００７０】
ワークフロー側ではテストツールから送られてきたメッセージを基にＢＰＥＬスクリプトを特定し、ｏｐｅｒａｔｉｏｎ要素、ｐｏｒｔＴｙｐｅ要素、ｐａｒｔｎｅｒＬｉｎｋ要素が一致する受信すべき操作に対し、入力値を渡す。ＢＰＥＬスクリプトを通じ、返り値がある場合は、通信の同一セッションを利用しテストツールに値を返す。テストツールがワークフローエンジンから結果メッセージを受け取ると（Ｓ１６０８）、その結果を結果出力エリアに表示する。テストツールの結果出力の画面を図１７に示す。
【００７１】
今度はＳ１６０４で取得したｏｐｅａｒａｔｏｎＯｔから連想されるｏｕｔｐｕｔのメッセージ構成ＯＵＴｔをインターフェイスリストから取得する（Ｓ１６０９）。ＯＵＴｔを基にメッセージ構成を読み取るアルゴリズムを利用してメッセージ構成を取得する（Ｓ１６１０）。結果出力エリア１７０４に取得したメッセージ構成を基に変数名と変数の型を表示し、その変数に合わせて結果を表示する（Ｓ１６１１）。
【００７２】
テストツールの結果出力の画面（図１７）において、結果出力エリア１７０４に表示された結果が満足できるものでない場合は、テストツールにＢＰＥＬとＷＳＤＬを読み込み、良好な結果出力が得られるまでテストを繰り返す。
【００７３】
以上説明した本発明の実施形態によれば、ワークフローエンジンに接続するための情報や入力ウィンドウを、ＢＰＥＬ／ＷＳＤＬスクリプトから自動生成することにより、ワークフローエンジンへ接続することが可能になり、テストの効率化を図ることができる。
【００７４】
尚、本発明の実施形態は、以上の説明に限定されることなく、特許請求の範囲を逸脱しない範囲で種々の変形が可能である。
【符号の説明】
【００７５】
１０…ＣＰＵ
１１…ＲＡＭ
１２…ＲＯＭ
１３…ハードディスク駆動制御部
１４…ＣＤ−ＲＯＭ駆動制御部
１５…表示器制御部
１６…表示器
１７…入力制御部
１８…キーボード
１９…Ｉ／Ｆ
１００…バスライン
２０…構造化文書
２１…クラスオブジェクト
２２…構造化文書要素変換手段、
２３…インターフェイスリスト
２４…インターフェイス抽出手段、
２５…入力・表示ウィンドウ、
２６…テストツール設定・表示制御手段、
２７…ワークフロー接続手段
２００…テスト用クライアント
３００…Ｗｅｂサービス部
【図１】
2010224632.tif 000003
【図２】
2010224632.tif 000004
【図３】
2010224632.tif 000005
【図４】
2010224632.tif 000006
【図５】
2010224632.tif 000007
【図６】
2010224632.tif 000008
【図７】
2010224632.tif 000009
【図８】
2010224632.tif 000010
【図９】
2010224632.tif 000011
【図１０】
2010224632.tif 000012
【図１１】
2010224632.tif 000013
【図１２】
2010224632.tif 000014
【図１３】
2010224632.tif 000015
【図１４】
2010224632.tif 000016
【図１５】
2010224632.tif 000017
【図１６】
2010224632.tif 000018
【図１７】
2010224632.tif 000019