(57)【要約】【課題】シナリオに記載されている項目の妥当性を判定できるシナリオチェックシステム、シナリオチェック装置及びシナリオチェック方法を提供する。【解決手段】シナリオチェックシステム１００において、シナリオチェック装置２が、シナリオ作成端末装置１からシナリオを受信する。シナリオは、サービスコンポーネントの実行を要求するプログラムである。シナリオチェック装置２は、シナリオに記載されている項目の妥当性を、シナリオに含まれるサービスコンポーネント実行要求が、予め定められた条件に従って記述されているか否かによって判断する。【選択図】図１
2011003148.tif 000002
【特許請求の範囲】
【請求項１】
サービスコンポーネントの実行を要求するシナリオを出力するシナリオ作成端末装置と、
前記シナリオに含まれるサービスコンポーネント実行要求が予め定められた条件に従って記述されているか否かを判断することによって、前記シナリオが正しく記述されているか否かを判断するシナリオチェック装置と、
前記シナリオチェック装置によって正しく記述されていると判断されたシナリオのみを実行するシナリオ実行装置と、
前記シナリオ実行装置のシナリオ実行に応じて前記サービスコンポーネントを実行するサービスコンポーネントサーバ装置と、
を具備することを特徴とするシナリオチェックシステム。
【請求項２】
サービスコンポーネントサーバ装置に対してサービスコンポーネントの実行を要求するシナリオに含まれるサービスコンポーネント実行要求が満たすべき条件を予め記憶するシナリオチェック表記憶部と、
外部から入力されるシナリオに含まれるサービスコンポーネント実行要求が満たすべき条件を前記シナリオチェック表記憶部から読み出し、読み出した条件に従って前記シナリオが正しく記述されているか否かを判断するシナリオチェック機能部と、
を具備することを特徴とするシナリオチェック装置。
【請求項３】
前記シナリオチェック表記憶部は、あるサービスコンポーネントの実行をシナリオが要求する場合に、該サービスコンポーネントの実行要求に先立って該シナリオが実行を要求すべきサービスコンポーネントを示す事前条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合に、該サービスコンポーネントの実行要求の後に該シナリオが実行を要求すべきサービスコンポーネントを示す事後条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合に、該シナリオが実行要求すべきでないサービスコンポーネントを示す競合条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合には、例外処理の記載が必要であることを示す必須例外記述チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合には、該サービスコンポーネントの呼び出しに失敗した場合の処理の記載が必要であることを示す必須補償記述チェック項目と、を含むシナリオチェック表を記憶することを特徴とする請求項２記載のシナリオチェック装置。
【請求項４】
前記シナリオチェック機能部は、前記シナリオチェック表記憶部から前記事前条件チェック項目と前記事後条件チェック項目と前記競合条件チェック項目と前記必須例外記述チェック項目と前記必須補償記述チェック項目とを読み出し、該チェック項目に従って前記シナリオが正しく記述されているか否かを判断することを特徴とする請求項３記載のシナリオチェック装置。
【請求項５】
シナリオ作成端末装置が、サービスコンポーネントの実行を要求するシナリオを出力するシナリオ作成ステップと、
シナリオチェック装置が、前記シナリオに含まれるサービスコンポーネント実行要求が予め定められた条件に従って記述されているか否かを判断することによって、前記シナリオが正しく記述されているか否かを判断するシナリオチェックステップと、
シナリオ実行装置が、正しく記述されていると判断されたシナリオのみを実行するシナリオ実行ステップと、
サービスコンポーネントサーバ装置が、前記シナリオ実行装置からの要求に応じて前記サービスコンポーネントを実行するサービスコンポーネント実行ステップと、
を具備することを特徴とするシナリオチェックシステムのシナリオチェック方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シナリオチェックシステム、シナリオチェック装置及びシナリオチェック方法に関する。
【背景技術】
【０００２】
Ｗｅｂ上に分散された複数のサービスコンポーネントを組み合わせて実行させるシナリオを用いて、これらのサービスコンポーネントが提供するＷｅｂサービスを連携させ、新たなアプリケーションを提供する技術が注目されている。このシナリオは、連携ワークフローを記述する言語のＢＰＥＬ（Business Process Execution Language for Services ）など用いて記述されることが一般的である。シナリオは、インタフェース定義文書ＷＳＤＬ（Web Service Description Language）などでインタフェース定義が記述されたＷｅｂサービスを連携させる。
作成したシナリオが、正しく作成されているか否かのチェックとしては、例えば、開始タグと終了タグの対応が取れているか、或いは、ＸＭＬ(eXtensible Markup Language)データの要素の並びの妥当性など、ＸＭＬの文法通りに記載されているかのチェック等が行われている。
【０００３】
特許文献１は、Ｗｅｂやコンピュータなどの専門知識を有しないユーザでも、要素サービスを順次選択して連結することにより連携シナリオを作成することができる連携シナリオ作成支援システムを提案している。
非特許文献１は、ＢＰＥＬエンジンと意味的なＷｅｂ（セマンティック・ウェブ、Semantic Web）とを用いて、ユーザに適切なサービスコンポーネントを発見及び選択し、連携サービスとして提供するサービス合成技術を提案している。また、非特許文献１は、通常のＢＰＥＬエンジンの機能を利用しながら、サービス実行中のユーザ状況変化に応じてサービスコンポーネントを切り替える技術を提案している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２１０９５号公報
【非特許文献】
【０００５】
【非特許文献１】山登庸次・他２名、「ＢＰＥＬエンジンを用いたユーザカスタマイズサービス合成・切換技術の研究開発」、電子情報通信学会論文誌、Ｂ，通信、９１（１１），通号４９１、２００８年１１月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サービスコンポーネントへの負荷の増大を未然に防ぐために、シナリオに記載されている項目の妥当性を判定することによって正しく動作しないシナリオを発見し、これらのシナリオを実行しないようにすることが有効である。また、シナリオが正しく記述されていてもネットワークの状態等によりシナリオ実行時に誤動作が生じる場合がある。そこで誤動作が生じた場合に行う処理項目がシナリオに記述されているかを判断することが有効である。
しかしながら、従来の文法チェックでは、シナリオに記載されている項目の妥当性を判断することはできなかった。また、特許文献１や非特許文献１が提案するシステムや技術は、シナリオの作成やサービスの合成に関するものであり、作成されたシナリオに記載されている項目の妥当性を判定する方法については述べられていない。
【０００７】
本発明は、このような事情を考慮してなされたものであり、その目的は、シナリオに記載されている項目の妥当性を判断できるシナリオチェックシステム、シナリオチェック装置及びシナリオチェック方法を提供することにある。
【課題を解決するための手段】
【０００８】
［１］この発明は上述した課題を解決するためになされたもので、本発明の一態様によるシナリオチェックシステムはサービスコンポーネントの実行を要求するシナリオを出力するシナリオ作成端末装置と、前記シナリオに含まれるサービスコンポーネント実行要求が予め定められた条件に従って記述されているか否かを判断することによって、前記シナリオが正しく記述されているか否かを判断するシナリオチェック装置と、前記シナリオチェック装置によって正しく記述されていると判断されたシナリオのみを実行するシナリオ実行装置と、前記シナリオ実行装置のシナリオ実行に応じて前記サービスコンポーネントを実行するサービスコンポーネントサーバ装置と、を具備することを特徴とする。
このシナリオチェックシステムは、正しく記述されていると判断されたシナリオのみを実行するので、シナリオ実行装置やサービスコンポーネントサーバ装置の負荷増大を未然に防ぐことができる。
【０００９】
［２］また、本発明の一態様によるシナリオチェック装置は、サービスコンポーネントサーバ装置に対してサービスコンポーネントの実行を要求するシナリオに含まれるサービスコンポーネント実行要求が満たすべき条件を予め記憶するシナリオチェック表記憶部と、外部から入力されるシナリオに含まれるサービスコンポーネント実行要求が満たすべき条件を前記シナリオチェック表記憶部から読み出し、読み出した条件に従って前記シナリオが正しく記述されているか否かを判断するシナリオチェック機能部と、を具備することを特徴とする。
このシナリオチェック装置は、シナリオチェック表記憶部に記憶されているチェック項目を用いることで、シナリオが正しく記載されているか否かを判断することができる。この判断結果を用いて、正しく記述されていると判断されたシナリオのみを、シナリオ実行装置が実行することができ、シナリオ実行装置やサービスコンポーネントサーバ装置の負荷増大を未然に防ぐことができる。
【００１０】
［３］また、本発明の一態様によるシナリオチェック装置は上述のシナリオチェック装置であって、前記シナリオチェック表記憶部は、あるサービスコンポーネントの実行をシナリオが要求する場合に、該サービスコンポーネントの実行要求に先立って該シナリオが実行を要求すべきサービスコンポーネントを示す事前条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合に、該サービスコンポーネントの実行要求の後に該シナリオが実行を要求すべきサービスコンポーネントを示す事後条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合に、該シナリオが実行要求すべきでないサービスコンポーネントを示す競合条件チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合には、例外処理の記載が必要であることを示す必須例外記述チェック項目と、あるサービスコンポーネントの実行をシナリオが要求する場合には、該サービスコンポーネントの呼び出しに失敗した場合の処理の記載が必要であることを示す必須補償記述チェック項目と、を含むシナリオチェック表を記憶することを特徴とする。
このシナリオチェック装置は、シナリオチェック表記憶部が事前条件チェック項目と事後条件チェック項目と競合条件チェック項目と必須例外記述チェック項目と必須補償記述チェック項目とを含むシナリオチェック表を記憶する。したがって、シナリオチェック機能部はこのシナリオチェック表からこれらのチェック項目を読み出し、読み出したチェック項目に従ってシナリオが正しく記述されているか否かを判断することができる。
【００１１】
［４］また、本発明の一態様によるシナリオチェック装置は上述のシナリオチェック装置であって、前記シナリオチェック機能部は、前記シナリオチェック表記憶部から前記事前条件チェック項目と前記事後条件チェック項目と前記競合条件チェック項目と前記必須例外記述チェック項目と前記必須補償記述チェック項目とを読み出し、該チェック項目に従って前記シナリオが正しく記述されているか否かを判断することを特徴とする。
このシナリオチェック装置は、シナリオチェック機能部がシナリオチェック表記憶部から事前条件チェック項目と事後条件チェック項目と競合条件チェック項目と必須例外記述チェック項目と必須補償記述チェック項目とを含むシナリオチェック表を読み出す。そして、シナリオチェック機能部は、読み出した各チェック項目が示す条件をシナリオが満たすか否かを判断することで、シナリオが正しく記述されているか否かを判断することができる。
【００１２】
［５］また、本発明の一態様によるシナリオチェック方法は、シナリオ作成端末装置が、サービスコンポーネントの実行を要求するシナリオを出力するシナリオ作成ステップと、シナリオチェック装置が、前記シナリオに含まれるサービスコンポーネント実行要求が予め定められた条件に従って記述されているか否かを判断することによって、前記シナリオが正しく記述されているか否かを判断するシナリオチェックステップと、シナリオ実行装置が、正しく記述されていると判断されたシナリオのみを実行するシナリオ実行ステップと、サービスコンポーネントサーバ装置が、前記シナリオ実行装置からの要求に応じて前記サービスコンポーネントを実行するサービスコンポーネント実行ステップと、を具備することを特徴とする。
このシナリオチェック方法では、シナリオチェック装置が正しく記述されていると判断したシナリオのみを実行するので、シナリオ実行装置やサービスコンポーネントサーバ装置の負荷増大を未然に防ぐことができる。
【発明の効果】
【００１３】
この発明によれば、シナリオに記載されている項目の妥当性を判定できるシナリオチェックシステム、シナリオチェック装置及びシナリオチェック方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態におけるシナリオチェックシステム１００の概略構成を示す構成図である。
【図２】同実施形態におけるシナリオチェック装置２の概略構成を示す構成図である。
【図３】同実施形態におけるシナリオチェック機能部８の概略構成を示す構成図である。
【図４】同実施形態においてシナリオチェック表記憶部１２が記憶するシナリオチェック表のデータ構成を示すデータ構成図である。
【図５】同実施形態においてシナリオチェックシステム１００がシナリオをチェックする処理の例を示すシーケンス図である。
【図６】同実施形態においてシナリオチェックシステム１００が処理を行うシナリオの例を示すシナリオの構成図である。
【図７】同実施形態におけるコンポーネント２１，２２，２３に対応するシナリオチェック表のデータ構成例を示すデータ構成図である。
【図８】同実施形態におけるシナリオの例を示すリストである。
【発明を実施するための形態】
【００１５】
＜第１の実施形態＞
以下、図面を参照して、本発明の実施の形態について説明する。
図１は本発明の一実施形態におけるシナリオチェックシステム１００の概略構成を示す構成図である。
同図において、シナリオチェックシステム１００は、シナリオ作成端末装置１とシナリオチェック装置２とシナリオ実行装置３とネットワーク４とサービスコンポーネントサーバ装置３５，３６，３７，３８，・・・とを含んで構成される。サービスコンポーネントサーバ装置３５，３６，３７，３８，・・・は、それぞれサービスコンポーネント５，６，７，８，・・・を含んで構成される。
シナリオ作成端末装置１はユーザ（シナリオ作成者）の操作に従ってシナリオを作成する。また、シナリオ作成端末装置１は、作成したシナリオをユーザの操作に従ってシナリオチェック装置２に送信する。ここで、シナリオは、サービスコンポーネントサーバ装置３５〜３７に対してサービスコンポーネント５〜７の実行を要求するプログラムであり、ＢＰＥＬで記述される。
シナリオチェック装置２は、シナリオ作成端末が作成したシナリオを受信し、シナリオが正しく記述されているか否かを判断する。シナリオチェック装置２は、判断結果をシナリオ作成端末装置１に送信する。また、シナリオが正しく記述されていると判断した場合は、シナリオチェック装置２は、そのシナリオをシナリオ実行装置３に送信する。
シナリオ実行装置３は、シナリオチェック装置２から送信されたシナリオを内部に登録する。また、シナリオ実行装置３は、登録されたシナリオの実行要求を受信するとシナリオを実行する。シナリオ実行装置３は、実行するシナリオの記述に従ってサービスコンポーネントサーバ装置３５〜３７に対してサービスコンポーネント５〜７の実行を要求する。
ネットワーク４は、例えば、インターネットである。なお、ネットワーク４は、電話交換などの通信ネットワーク、或いはサービス制御層とパケット転送層とを有するＮＧＮ（Next Generation Network）からなるネットワークなど、他のネットワークであってもよい。
サービスコンポーネントサーバ装置３５〜３７は、シナリオ実行装置３からの要求に応じてサービスコンポーネント５〜７を実行する。サービスコンポーネント５〜７は、ＷｅｂサービスやＵｐｎＰ(Universal Plug and Play)などのサービスを、ネットワーク４を介して提供するプログラムである。サービスコンポーネント５〜７はインタフェース定義文書ＷＳＤＬにてインタフェース定義が示されている。
【００１６】
図２は、シナリオチェック装置２の概略構成を示す構成図である。
同図において、シナリオチェック装置２はシナリオチェック機能部８とシナリオチェック表記憶部１２とを含んで構成される。
シナリオチェック表記憶部１２は、シナリオが正しく記述されているか否かを判断するためのチェック項目が記載されたシナリオチェック表を予め記憶する。
シナリオチェック機能部８は、シナリオ作成端末装置１からシナリオを受信する。シナリオチェック機能部８は、受信したシナリオからコンポーネントリストを生成する。ここで、コンポーネントリストは、シナリオが実行を要求するサービスコンポーネントの一覧を示すリストである。なお、以下では、サービスコンポーネントのことをコンポーネントともいう。また、コンポーネントの実行を要求することをコンポーネントを呼び出す又はコンポーネントを呼ぶともいう。
シナリオチェック機能部８は、生成したコンポーネントリストに基づいてシナリオチェック表記憶部１２を検索し、チェック項目を読み出す。シナリオチェック機能部８は、読み出したチェック項目を用いて、シナリオ作成端末装置１から入力されたシナリオが正しく記述されているか否かを判断する。シナリオチェック機能部８は、判断結果をシナリオ作成端末装置１へ送信する。
また、シナリオチェック機能部８は、シナリオ作成端末装置１から入力されたシナリオが正しく記述されていると判断した場合は、シナリオ実行装置３にシナリオを送信する。
【００１７】
図３は、シナリオチェック機能部８の概略構成を示す構成図である。
同図において、シナリオチェック機能部８は、シナリオ受信部９とシナリオチェック部１０とコンポーネントチェック項目検索部１１とシナリオチェック結果送信部１４とシナリオ送信部１５とを含んで構成される。
シナリオ受信部９は、シナリオ作成端末装置１からシナリオを受信し、受信したシナリオをシナリオチェック部１０に入力する。ここで、シナリオは、自シナリオが呼び出すコンポーネントの名前の記載を含む。また、シナリオはコンポーネントの呼び出しに関して行う処理の記載を含む場合がある。コンポーネントの呼び出しに関して行う処理には、例外処理や補償処理が含まれる。例外処理は、例えば、コンポーネント「電話をかける」に対して、相手が電話に出ない場合の処理である。補償処理は、コンポーネントの呼び出しに失敗した場合の処理であり、例えば、コンポーネントを呼び出す前の状態に戻す処理が行われる。
シナリオチェック部１０は、入力されたシナリオからコンポーネント名を読み出し、読み出したコンポーネント名の一覧であるコンポーネントリストを生成する。
【００１８】
前述のように、シナリオはコンポーネントを呼び出すプログラムである。シナリオには、呼び出されるコンポーネント名と、コンポーネントを呼び出した際の例外処理とが記述される。
例えば、図８は、シナリオの例を示すリストであり、同図の行Ｌ２および行Ｌ３には、それぞれ呼び出されるコンポーネント名が記載されている。シナリオチェック部１０は、行Ｌ２の”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”をコンポーネント名と判断する。同様に、行Ｌ３の”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”をコンポーネント名と判断する。シナリオチェック部１０はこの２つのコンポーネント名からなるコンポーネントリストを生成する。
また、タグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”及び”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”で挟まれた行Ｌ１には、行Ｌ２のコンポーネント”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”を呼び出した際の例外処理が記述されている。図８に示すシナリオの詳細については、後述する。
【００１９】
シナリオチェック部１０は、生成したコンポーネントリストをコンポーネントチェック項目検索部１１に入力する。また、シナリオチェック部１０には、コンポーネントチェック項目検索部１１からコンポーネントチェック項目が入力される。コンポーネントチェック部１０は、シナリオ受信部９から入力されたシナリオがコンポーネントチェック項目検索部１１から入力されるコンポーネントチェック項目が示す条件を満たすか否かに応じて、このシナリオが正しく記述されているか否かを判断する。なお、以下ではコンポーネントチェック項目をチェック項目ともいう。
コンポーネントチェック項目検索部１１は、シナリオチェック部１０から入力されたコンポーネントリストに基づいて、シナリオチェック表記憶部１２を検索し、コンポーネントチェック項目を読み出す。コンポーネントチェック項目検索部１１は、読み出したコンポーネントチェック項目をシナリオチェック部１０に入力する。
シナリオチェック結果送信部１４は、シナリオチェック部１０から入力されるチェック結果をシナリオ作成端末装置１に送信する。
シナリオ送信部１５は、シナリオチェック部１０が正しく記載されていると判断したシナリオをシナリオ実行装置３に送信する。
【００２０】
図４は、シナリオチェック表記憶部１２が記憶するシナリオチェック表のデータ構成を示すデータ構成図である。
シナリオチェック表記憶部１２は、コンポーネント５〜７に関するチェック項目が記載された同図のシナリオチェック表を記憶している。なお、シナリオチェック表記憶部１２が記憶するシナリオチェック表には、コンポーネント５〜７に関するチェック項目に限らず、他のコンポーネントに関するチェック項目も記載しておくことができる。ここで、チェック項目は、シナリオが正しく記述されていると判断されるための条件を示す。具体的には、チェック項目は、シナリオ中のコンポーネント実行要求が満たすべき条件を示す。シナリオチェック部１０は、シナリオ中のコンポーネント実行要求が、コンポーネントチェック項目を満たすか否かを判断する。シナリオ中の全てのコンポーネント実行要求が、対象となる全てのコンポーネントチェック項目を満たす場合は、シナリオチェック部１０は、シナリオが正しく記述されていると判断する。それ以外の場合は、シナリオチェック部１０は、シナリオが正しく記述されていないと判断する。
シナリオチェック表記憶部１２は複数のサービスコンポーネントのチェック項目を、例えば表形式のデータとして記憶し、各行のデータが１個のサービスコンポーネントのチェック項目に対応する。同図において、シナリオチェック表は、事前条件チェック項目１６と事後条件チェック項目１７と競合条件チェック項目１８と必須例外記述チェック項目１９と必須補償記述チェック項目２０とを含んで構成される。
事前条件チェック項目１６は、シナリオがあるサービスコンポーネントの実行を要求する場合に、このサービスコンポーネントの実行要求に先立ってシナリオが実行を要求すべきサービスコンポーネントを示す。
事後条件チェック項目１７は、シナリオがあるサービスコンポーネントの実行を要求する場合に、このサービスコンポーネントの実行要求の後にシナリオが実行を要求すべきサービスコンポーネントを示す。
競合条件チェック項目１８は、シナリオがあるサービスコンポーネントの実行を要求する場合に、このシナリオが実行要求すべきでないサービスコンポーネントを示す。
必須例外記述チェック項目１９は、シナリオがあるサービスコンポーネントの実行を要求する場合には、例外処理の記載が必要であることを示す。
必須補償記述チェック項目２０は、シナリオがあるサービスコンポーネントの実行を要求する場合には、該サービスコンポーネントの呼び出しに失敗した場合の処理である補償処理の記載が必要であることを示す。サービスコンポーネントの呼び出しに失敗した場合の補償処理としては、例えば、飛行機予約→レンタカー予約→ホテル予約のシナリオにおいて、ホテル予約のコンポーネントの呼び出しに失敗した場合に、飛行機の予約とレンタカーの予約とをキャンセルする補償処理が行われる。
【００２１】
同図において、コンポーネント５の事後条件チェック項目１７には、コンポーネント５が呼ばれた後に「コンポーネント６が呼ばれている」ことが条件として記載されている。また、コンポーネント５の競合条件チェック項目１８には、シナリオ内でコンポーネント５と共に「コンポーネント９が呼ばれていない」ことが条件して記載されている。また、コンポーネント５の必須例外記述チェック項目１９には、コンポーネント５を呼ぶ場合の例外処理である「例外の処理が記述されている」ことが条件として記載されている。また、コンポーネント５の必須補償記述チェック項目２０には、コンポーネント５の呼び出しに失敗した場合の処理である「補償の処理が記述されている」ことが条件として記載されている。
コンポーネント６の事前条件チェック項目１６には、コンポーネント６が呼ばれる前に「コンポーネント５が呼ばれている」ことが条件として記載されている。また、コンポーネント６の競合条件チェック項目１８には、シナリオ内でコンポーネント６と共に「コンポーネント８が呼ばれていない」ことが条件として記載されている。
コンポーネント７の事前条件チェック項目１６には、コンポーネント７が呼ばれる前に「コンポーネント５が呼ばれている」ことが条件として記載されている。また、コンポーネント７の競合条件チェック項目１８には、シナリオ内でコンポーネント７と共に「コンポーネント９が呼ばれていない」ことが条件として記載されている。また、コンポーネント７の必須例外記述チェック項目１９には、コンポーネント７を呼ぶ場合の「例外の処理が記述されている」ことが条件として記載されている。
【００２２】
シナリオがコンポーネントを呼ぶためには、そのコンポーネントに関する条件全てを満たさなければならない。例えば、コンポーネント５を呼ぶためには、必ず、例外記述チェック項目１９の「例外の処理の記述」と、必須補償記述チェック項目２０の「補償の処理の記述」とを記述しなければならない。記述されていない場合は、「必須な例外記述がされていない」、或いは、「必須な補償記述がされていない」ことにより、シナリオチェック部１０が正しく記述されていないシナリオと判断して、記述違反の警告を行う。
【００２３】
次に、シナリオチェックシステム１００の動作について説明する。
図５は、シナリオチェックシステム１００がシナリオをチェックする処理の例を示すシーケンス図である。
状態Ｓ１において、シナリオ作成端末装置１は、シナリオ作成者の操作に従って、ＷＳＤＬ記述を用いてコンポーネント５〜７を組み合わせたシナリオを作成する。シナリオ作成端末装置１は、作成したシナリオをシナリオチェック装置２のシナリオ受信部９に送信する。
状態Ｓ２において、シナリオ受信部９は、前述の送信されたシナリオを受信し、受信したシナリオをシナリオチェック部１０に入力する。
状態Ｓ３において、シナリオチェック部１０は、入力されたシナリオ内に記述されている全てのコンポーネント名のリストであるコンポーネントリストを、コンポーネントチェック項目検索部１１に入力する。
状態Ｓ４において、コンポーネントチェック項目検索部１１は、入力されたコンポーネント５〜７のコンポーネントリストからコンポーネント名を読み出す。コンポーネントチェック項目検索部１１は、読み出したコンポーネント名を検索キーとして、シナリオチェック表記憶部１２のシナリオチェック表を検索し、コンポーネント５〜７のチェック項目１６〜２０を読み出す。チェック項目１６〜２０には、コンポーネント５〜７をチェックするための事前条件チェック項目１６と、事後条件チェック項目１７と、必須例外記述チェック項目１９と、必須補償記述チェック項目２０とのチェック項目内容が記述されている。チェック項目１６〜２０詳細説明については、後述する。
状態Ｓ５において、コンポーネントチェック項目検索部１１は、読み出したチェック項目１６〜２０を、シナリオチェック部１０に入力する。
状態Ｓ６において、シナリオチェック部１０は、入力されチェック項目１６〜２０を用いて、シナリオが正しく記述されているか否かを判断する。具体的には、シナリオチェック部１０は、シナリオ内のコンポーネント５〜７の事前条件チェック項目１６と、事後条件チェック項目１７と、必須例外記述チェック項目１９と、必須補償記述チェック項目２０とに記述されている判断基準に従い、シナリオが正しく作成されているか否かを判断する。
シナリオチェック部１０は、判断の結果、シナリオが正しく作成されている場合は、正しい旨を示すオチェック結果を生成する。一方、シナリオがチェック項目１６〜２０の何れかに違反している場合は、例えば、事後条件に違反している、或いは必須な例外が記述されていないなど違反内容を示すチェック結果を生成する。
図４に示されるコンポーネント５→コンポーネント６→コンポーネント７のシナリオは、事前条件チェック項目と事後条件チェック項目と競合条件チェック項目とを満たす。
状態Ｓ７において、シナリオチェック部１０は、シナリオのチェック結果を、シナリオチェック結果送信部１４に入力する。
状態Ｓ８において、シナリオチェック結果送信部１４は、入力されたシナリオのチェック結果をシナリオ作成端末装置１に送信する。
状態Ｓ９において、シナリオ作成端末装置１はシナリオのチェック結果を受信する。シナリオ作成者は、受信したチェック結果を参照して、容易にシナリオを修正することができる。例えば、コンポーネント５の事後条件チェック項目に違反した場合は、コンポーネント５の後にコンポーネント６を呼び出す必要があることがチェック結果に示される。従って、シナリオ作成者は、違反内容を把握してシナリオを修正することができる。また、シナリオ作成者は、修正したシナリオを再度シナリオチェック装置２に送信することができる。あるいは、シナリオ作成が正しいことが表示されている場合には、シナリオ作成者はシナリオ作成を終了することができる。
状態Ｓ１０において、シナリオチェック部１０は、シナリオのチェック結果、チェックしたシナリオが正しい場合には、検証済のシナリオをシナリオ送信部１５に入寮する。
状態Ｓ１１において、シナリオ送信部１５は、入力されたシナリオを、シナリオ実行装置３に送信する。シナリオ実行装置３は送信されたシナリオを登録する。
本発明のシナリオチェックシステムにより、上記記載のシナリオチェック処理を行うことで、複数のシナリオ作成者が作成したシナリオが、バグを含むシナリオ、或いは悪意のあるシナリオの場合に、シナリオ実行装置３、或いはコンポーネント５，６，７などの負荷の増大を未然に防ぐことができる。
又、シナリオ作成者は、シナリオ作成を行う際に、専門的な知識をあまり有していない場合でも、シナリオチェックシステムを利用することで、作成したシナリオのチェック結果情報を取得し、容易に複数のシナリオを作成することができる。
【００２４】
次に、図６及び図７を用いて、シナリオチェックシステム１００の動作例について説明する。
図６は、シナリオチェックシステム１００が処理を行うシナリオの例を示すシナリオの構成図である。
同図のシナリオはコンポーネント「電話をかける」２１→コンポーネント「音楽を流す」２２→コンポーネント「電話を切る」２３の３個のサービスコンポーネントを含んで構成される。このシナリオは、指定された電話に発呼し、電話が取られるとその電話に音楽を流し、音楽が終わると電話が切れるというサービスを示す。
シナリオ作成端末装置１は、シナリオ作成者の操作に従い、複数のコンポーネントをそれぞれのＷＳＤＬ記述を用いて組み合わせて、このシナリオを作成する。
また、シナリオを実行するには、シナリオチェック装置２を通じてシナリオ実行装置３に登録される必要がある。そこで、シナリオ操作端末装置１は、シナリオ作成者の指示に従い、作成したシナリオをシナリオチェック装置２に送信する。
【００２５】
シナリオチェック装置２のシナリオ受信部９は、送信されたシナリオを受信してシナリオチェック部１０に入力する。
シナリオチェック部１０は、入力されたシナリオがコンポーネント「電話をかける」２１とコンポーネント「音楽を流す」２２とコンポーネント「電話を切る」２３とを呼び出すことを示すコンポーネントリストを生成する。シナリオチェック部１０は、生成したコンポーネントリストをコンポーネントチェック項目検索部１１に入力する。
コンポーネントチェック項目検索部１１は、入力されたコンポーネントリストを用いてシナリオチェック表記憶部１２のシナリオチェック表を検索し、コンポーネント２１，２２，２３の事前条件チェック項目１６と、事後条件チェック項目１７と、競合条件チェック項目１８と、必須例外記述チェック項目１９と、必須補償記述チェック項目２０とを読み出す。コンポーネントチェック項目検索部１１は、読み出したチェック項目をシナリオチェック部１０に入力する。
シナリオチェック部１０は、入力されたチェック項目に従い、シナリオが正しく記載されているか否かを判断する。
シナリオチェック部１０は、このシナリオが正しく記述されていると判断した場合は、正しく記述されているという判断結果を、シナリオチェック結果送信部１４を経由してシナリオ作成端末１に送信する。また、シナリオチェック部１０は、シナリオが正しく記述されていると判断した場合は、シナリオ送信部１５を経由してシナリオ実行装置３にシナリオを送信する。シナリオ実行装置３はこのシナリオを登録する。シナリオ実行装置３は、シナリオ実行要求を受信するとシナリオを実行する。
一方、シナリオチェック部１０は、このシナリオが正しく記載されていないと判断した場合は、違反している項目を示す判断結果を、シナリオチェック結果送信部１４を経由してシナリオ作成端末１に送信する。シナリオ作成者は、判断結果に示される違反している項目を参照して、容易にシナリオを修正することができる。
【００２６】
図７は、コンポーネント２１〜２３に対応するシナリオチェック表のデータ構成例を示すデータ構成図である。
同図において、シナリオチェック表には、コンポーネント「電話をかける」２１、コンポーネント「音楽を流す」２２、コンポーネント「電話を切る」２３のチェック項目１６〜２０が記載されている。
例えば、コンポーネント「電話をかける」２１の事後条件チェック項目１７には、「電話を切る」が呼ばれているという条件が記載されている。また、コンポーネント「電話をかける」２１の必須例外記述チェック項目１９には、例外「電話に出ない」の処理が記述されているという条件が記載されている。
コンポーネント「電話を切る」２２の事前条件チェック項目１６には、「電話をかける」が呼ばれているという条件が記載されている。このチェック項目は「電話を切る」コンポーネント２３を呼ぶ前に、「電話をかける」コンポーネント２１が呼ばれている必要があることを示す。
コンポーネント「音楽を流す」２３の事前条件チェック項目１６には、「電話をかける」が呼ばれているという条件が記載されている。また、コンポーネント「音楽を流す」２３の競合条件チェック項目１８には、他のコンポーネントである「音楽ファイルを全て削除」が呼ばれていないとの条件が記載されている。また、コンポーネント「音楽を流す」２３の必須例外記述チェック項目１９には、例外「音楽ファイルがない」の処理が記述されているという条件が記載されている。また、コンポーネント「音楽を流す」２３の必須補償記述チェック項目２０には、補償処理が記述されているという条件が記載されている。コンポーネント「音楽を流す」２３の呼び出しに失敗した場合の処理は、例えば、音楽が途中で切れた際は費用無料とする処理及び前のコンポーネント「電話をかける」２１の状態に戻る処理である。
シナリオチェック部１０は、このシナリオチェック表から読み出されるチェック項目に基づいて、コンポーネント「電話をかける」２１とコンポーネント「音楽を流す」２２とコンポーネント「電話を切る」２３とを含むシナリオが正しく記載されているか否かを判断する。
【００２７】
図８は、シナリオの例を示すリストである。
同図を用いて、シナリオチェック部１０が行う、シナリオが正しく記述されているか否かの判断について説明する。シナリオチェック部１０には、コンポーネントリストに基づいて検索された、シナリオが呼び出す各コンポーネントのチェック項目が入力されて、シナリオが正しく記述されているか否かを判断する。
前述のように、同図において、タグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”及び”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”で挟まれた行Ｌ１に例外処理が記述されている。また、行Ｌ２および行Ｌ３には、それぞれ呼び出されるコンポーネント名が記載されている。行Ｌ２のコンポーネント”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”は、電話がかかってきた場合の処理を行うコンポーネントである。また、行Ｌ３のコンポーネント”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”は、電話を切る際の処理を行うコンポーネントである。また、行Ｌ４には音声を流すなどの処理が記述されているが、図示及び説明を省略する。
シナリオチェック部１０は、行Ｌ２の”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”をコンポーネント名と判断する。同様に、行Ｌ３の”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”をコンポーネント名と判断する。
【００２８】
シナリオチェック部１０は、事前条件チェック項目で示されるコンポーネントがシナリオ中でチェック対象のコンポーネントよりも先に記載されていれば正しい記述であると判断し、チェック対象のコンポーネントよりも先に記載されていなければ正しくない記述であると判断する。
例えば、コンポーネント”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”の事前条件チェック項目で示されるコンポーネントが”ｎｏｔｉｆｙＣａｌｌＮｕｍｂｅｒ”である場合、シナリオチェック部１０は、まず、シナリオ中で、”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”と、”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”とを検索する。そして、”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”と”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”とが見つかった場合は、”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”が”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”よりも先に記載されているか否かを判断する。図８のシナリオでは、”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”が”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”よりも先に記載されているので、シナリオチェック部１０は正しく記述されていると判断する。
【００２９】
また、シナリオチェック部１０は、事後条件チェック項目で示されるコンポーネントがシナリオ中でチェック対象のコンポーネントよりも後に記載されていれば正しい記述であると判断し、チェック対象のコンポーネントよりも後に記載されていなければ正しくない記述であると判断する。
例えば、コンポーネント”ｎｏｔｉｆｙＣａｌｌＮｕｍｂｅｒ”の事後条件チェック項目で示されるコンポーネントが”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”である場合、シナリオチェック部１０は、まず、シナリオ中で、”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”と、”ｏｐｅｒａｔｉｏｎ＝”に続く文字列”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”とを検索する。そして、”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”と”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”とが見つかった場合は、”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”が”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”よりも後に記載されているか否かを判断する。図８のシナリオでは、”ｅｎｄＣａｌｌＳｅｓｓｉｏｎ”が”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”がよりも後に記載されているので、シナリオチェック部１０は正しく記述されていると判断する。
【００３０】
また、シナリオチェック部１０は、競合条件チェック項目で示されるコンポーネントがシナリオ中に記載されていなければ正しい記述であると判断し、記載されていれば正しくない記述であると判断する。
【００３１】
また、シナリオチェック部１０は、必須例外記述チェック項目のチェック対象のコンポーネントがシナリオ中でタグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”と”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”との間に記載されていれば正しく記述されていると判断し、そうでなければ正しく記述されていないと判断する。
例えば、”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”の必須例外チェック項目が設定されている場合、シナリオチェック部１０は、まず、シナリオ中でタグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”及び”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”を検索する。これらのタグが発見された場合は、シナリオチェック部１０は、両タグの間にチェック対象のコンポーネント名”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”が記載されているか否かを判断する。図８のシナリオでは、行Ｌ１にて、タグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”と”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”との間に”ｎｏｔｉｆｙＣａｌｌｅｄＮｕｍｂｅｒ”が記載されているので、シナリオチェック部１０は正しく記述されていると判断する。
【００３２】
必須補償記述チェック項目についても必須例外記述チェック項目と同じく、シナリオチェック部１０は、必須補償記述チェック項目のチェック対象のコンポーネントがシナリオ中でタグ”＜ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”と”＜／ｂｐｗｓ：ｆａｕｌｔＨａｎｄｌｅｒｓ＞”との間に記載されていれば正しく記述されていると判断し、そうでなければ正しく記述されていないと判断する。
必須補償記述チェック項目は、コンポーネントの呼び出しに失敗した際の例外処理の記載をチェックするものであり、チェック内容としては、必須例外記述チェック項目と同じく例外処理が記載されているか否かを判断する。
【００３３】
以上のように、本実施形態のシナリオチェックシステム１００は、シナリオ作成端末装置１から送信されるシナリオが正しく記述されているか否かを、シナリオチェック装置２が判断する。シナリオチェック装置２は、正しく記述されていると判断したシナリオのみをシナリオ実行装置３に送信し、シナリオ実行装置３がこのシナリオを登録し、実行する。これにより、記述の誤りや不具合などバグを含むシナリオをシナリオ実行装置３が実行することを防ぐことができ、シナリオ実行装置３やサービスコンポーネントサーバ装置３５〜３７の負荷の増大を未然に防ぐことができる。記述の誤りや不具合などバグを含むシナリオには、わざとバグを含む悪意のあるシナリオも含まれる。
また、シナリオチェック装置２は、シナリオが正しく記述されているか否かの判断結果をシナリオ作成端末装置１に送信する。シナリオ作成者は、判断結果からシナリオの記述が正しくない部分を知ることが出来るので、容易にシナリオを修正することができる。このように、容易にシナリオを修正することができるので、シナリオ作成の専門知識をあまり持っていない者もシナリオ作成に参加することができる。これにより、シナリオ作成者が増大し、多様なシナリオによる様々なアプリケーションが提供される。
【００３４】
なお、シナリオチェック装置２の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを記憶するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを記憶しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００３５】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【００３６】
本発明は、シナリオチェックシステム、シナリオチェック装置及びシナリオチェック方法に用いて好適である。
【符号の説明】
【００３７】
１  シナリオ作成端末装置
２  シナリオチェック装置
３  シナリオ実行装置
４  ネットワーク
８  シナリオチェック機能部
９  シナリオ受信部
１０  シナリオチェック部
１１  コンポーネントチェック項目検索部
１２  シナリオチェック表記憶部
１４  シナリオチェック結果送信部
１５  シナリオ送信部
３５、３６、３７  コンポーネントサーバ装置
【図１】
2011003148.tif 000003
【図２】
2011003148.tif 000004
【図３】
2011003148.tif 000005
【図４】
2011003148.tif 000006
【図５】
2011003148.tif 000007
【図６】
2011003148.tif 000008
【図７】
2011003148.tif 000009
【図８】
2011003148.tif 000010