(57)【要約】【課題】ネットワーク負荷を高めないまま、サービスリクエスタ２００の様々な要望に対応できるようにすることを目的とする。【解決手段】サービスプロバイダ３００のリクエスト受信部３１１は、データ処理の動作を指定するリクエストパラメータとデータ処理により得られるデータを処理する処理ロジックとを含んだリクエスト１１０をサービスリクエスタ２００から受信する。データ処理部３２１は、リクエスト１１０に含まれるリクエストパラメータに基づいて所定のデータ処理を実行し、データ処理を実行して得られた処理結果データを出力する。処理ロジック起動部３２２は、処理結果データに対してリクエスト１１０に含まれる処理ロジックを実行し、処理ロジックを実行して得られた後処理データを出力する。レスポンス送信部３１４は、後処理データを含んだレスポンス１２０をサービスリクエスタ２００へ送信する。【選択図】図３
2012008901.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータ処理を実行するデータ処理装置において、
前記データ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを含んだデータをデータ処理要求としてデータ処理要求装置から受信するデータ処理要求受信部と、
前記データ処理要求受信部により受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力するデータ処理部と、
前記データ処理部により出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力する後処理プログラム実行部と、
前記後処理プログラム実行部により出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信するデータ処理応答送信部と
を備えたことを特徴とするデータ処理装置。
【請求項２】
前記データ処理装置は、さらに、
前記データ処理要求に含まれる後処理プログラムが所定の実行要件を満たす有効プログラムであるか否かを所定の検査プログラムを用いて判定する後処理プログラム検査部を備え、
前記後処理プログラム実行部は、前記後処理プログラム検査部により前記後処理プログラムが有効プログラムであると判定された場合に前記後処理プログラムを実行して後処理データを出力し、前記後処理プログラム検査部により前記後処理プログラムが有効プログラムでないと判定された場合に前記後処理プログラムを実行せず、
前記データ処理応答送信部は、前記後処理プログラム実行部が前記後処理プログラムを実行した場合に前記後処理データを含んだデータ処理応答を送信し、前記後処理プログラム実行部が前記後処理プログラムを実行しなかった場合に異常終了を示す異常終了通知を前記データ処理応答の代わりに送信する
ことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記データ処理要求は、所定のプログラミング言語で記述されたソースプログラムを前記後処理プログラムとして含み、
前記後処理プログラム検査部は、前記後処理プログラムが所定のプログラム文法に従って記述された有効プログラムであるか否かを判定する
ことを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記後処理プログラム検査部は、前記後処理プログラムを用いて所定の試験データを処理し、前記後処理プログラムが所定の試験基準を満たしたプログラムであるか否かを処理結果に基づいて判定し、前記後処理プログラムが前記プログラム文法に従って記述され前記後処理プログラムが前記試験基準を満たしている場合に前記後処理プログラムが有効プログラムであると判定する
ことを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記後処理プログラム検査部は、前記後処理プログラムを用いて所定の試験データを処理し、前記後処理プログラムが所定の試験基準を満たした有効プログラムであるか否かを処理結果に基づいて判定する
ことを特徴とする請求項２記載のデータ処理装置。
【請求項６】
所定のデータ処理を実行するデータ処理装置のデータ処理方法において、
データ処理要求受信部が、前記データ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを含んだデータをデータ処理要求としてデータ処理要求装置から受信し、
データ処理部が、前記データ処理要求受信部により受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力し、
後処理プログラム実行部が、前記データ処理部により出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力し、
データ処理応答送信部が、前記後処理プログラム実行部により出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信する
ことを特徴とするデータ処理装置のデータ処理方法。
【請求項７】
所定のデータ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを含んだデータをデータ処理要求としてデータ処理要求装置から受信するデータ処理要求受信ステップと、
前記データ処理要求受信ステップにより受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力するデータ処理ステップと、
前記データ処理ステップにより出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力する後処理プログラム実行ステップと、
前記後処理プログラム実行ステップにより出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信するデータ処理応答送信ステップと
をコンピュータに実行させるデータ処理プログラム。
【請求項８】
所定のデータ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを入力し、入力した処理パラメータと後処理プログラムとを含んだデータをデータ処理要求として生成し、生成したデータ処理要求を送信するデータ処理要求送信部と、
前記データ処理要求を受信して前記処理パラメータに基づいて前記データ処理を実行して前記データ処理により得られる処理結果データに対して前記後処理プログラムを実行して前記後処理プログラムにより得られる後処理データを含んだデータ処理応答を送信するデータ処理装置から前記データ処理応答を受信するデータ処理応答受信部と
を備えたことを特徴とするデータ処理要求装置。
【請求項９】
データ処理要求装置のデータ処理要求方法において、
データ処理要求送信部が、所定のデータ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを入力し、入力した処理パラメータと後処理プログラムとを含んだデータをデータ処理要求として生成し、生成したデータ処理要求を送信し、
データ処理応答受信部が、前記データ処理要求を受信して前記処理パラメータに基づいて前記データ処理を実行して前記データ処理により得られる処理結果データに対して前記後処理プログラムを実行して前記後処理プログラムにより得られる後処理データを含んだデータ処理応答を送信するデータ処理装置から前記データ処理応答を受信する
ことを特徴とするデータ処理要求装置のデータ処理要求方法。
【請求項１０】
所定のデータ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを入力し、入力した処理パラメータと後処理プログラムとを含んだデータをデータ処理要求として生成し、生成したデータ処理要求を送信するデータ処理要求送信ステップと、
前記データ処理要求を受信して前記処理パラメータに基づいて前記データ処理を実行して前記データ処理により得られる処理結果データに対して前記後処理プログラムを実行して前記後処理プログラムにより得られる後処理データを含んだデータ処理応答を送信するデータ処理装置から前記データ処理応答を受信するデータ処理応答受信ステップと
をコンピュータに実行させるデータ処理要求プログラム。
【請求項１１】
所定のデータ処理の実行を要求するデータ処理要求装置と、前記データ処理を実行するデータ処理装置とを有するデータ処理システムにおいて、
データ処理装置は、
前記データ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを含んだデータをデータ処理要求としてデータ処理要求装置から受信するデータ処理要求受信部と、
前記データ処理要求受信部により受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力するデータ処理部と、
前記データ処理部により出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力する後処理プログラム実行部と、
前記後処理プログラム実行部により出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信するデータ処理応答送信部とを備え、
データ処理要求装置は、
前記処理パラメータと前記後処理プログラムとを入力し、入力した処理パラメータと後処理プログラムとを含んだデータをデータ処理要求として生成し、生成したデータ処理要求を前記データ処理装置へ送信するデータ処理要求送信部と、
前記データ処理装置から前記データ処理応答を受信するデータ処理応答受信部とを備える
ことを特徴とするデータ処理システム。
【請求項１２】
所定のデータ処理の実行を要求するデータ処理要求装置と、前記データ処理を実行するデータ処理装置とを有するデータ処理システムのデータ処理方法において、
データ処理要求装置のデータ処理要求送信部が、前記データ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを入力し、入力した処理パラメータと後処理プログラムとを含んだデータをデータ処理要求として生成し、生成したデータ処理要求をデータ処理装置へ送信し、
データ処理装置のデータ処理要求受信部が、前記データ処理要求をデータ処理要求装置から受信し、
データ処理装置のデータ処理部が、前記データ処理要求受信部により受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力し、
データ処理装置の後処理プログラム実行部が、前記データ処理部により出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力し、
データ処理装置のデータ処理応答送信部が、前記後処理プログラム実行部により出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信し、
データ処理要求装置のデータ処理応答受信部が、前記データ処理装置から前記データ処理応答を受信する
ことを特徴とするデータ処理システムのデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ネットワークを介して要求されたデータ処理を行うデータ処理装置、データ処理装置のデータ処理方法、データ処理プログラム、データ処理要求装置、データ処理要求装置のデータ処理要求方法、データ処理要求プログラム、データ処理システムおよびデータ処理システムのデータ処理方法に関するものである。
【背景技術】
【０００２】
従来のサービス要求応答システムにおいて、サービスリクエスタは、サービスプロバイダに対するデータ処理のリクエストにリクエストパラメータを指定できる。リクエストパラメータとは、データ処理の対象／検索キー／動作オプションを指定するものである（例えば、特許文献１）。
サービスリクエスタは、リクエストパラメータに自分が望む指定の指定値を設定して、そのリクエストパラメータを含めてリクエストをサービスプロバイダに送信する。
サービスプロバイダは、リクエストを受信するとリクエスト中のリクエストパラメータに従ってデータ処理を実行し、その実行結果をレスポンスとしてサービスリクエスタに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００３−５３１４１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のサービス要求応答システムは、リクエストパラメータのみでデータ処理を制御しているため、以下の３つの課題を有する。
１番目の課題は、サービスリクエスタが望むデータ加工に対応するリクエストパラメータをサービスプロバイダに定義していない場合である。この場合、サービスリクエスタは、自分でデータ加工する必要があり、その加工のために必要なデータ全てをサービスプロバイダから送信してもらう必要がある。これでは、ネットワーク上にデータサイズが大きいレスポンスが流れて、ネットワーク負荷を高めてしまう。
２番目の課題は、サービスリクエスタが望むデータ加工に対応するリクエストパラメータをサービスプロバイダに定義する場合である。この場合、サービスリクエスタによってリクエストパラメータは様々に異なるので、全てのサービスリクエスタの要望に対応させるにはサービスプロバイダに定義するリクエストパラメータが膨大で複雑になってしまう。
３番目の課題は、サービスリクエスタが望むデータ加工に対応するリクエストパラメータをサービスプロバイダに追加し続ける場合である。この場合、サービスリクエスタの要望は時間とともに変化するので、リクエストパラメータが常に追加または変更され続け、サービスプロバイダを保守するコストが膨大になってしまう。
【０００５】
本発明は、例えば、ネットワーク負荷を高めないまま、サービスリクエスタの様々な要望に対応できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明のデータ処理装置は、所定のデータ処理を実行するデータ処理装置であって、
前記データ処理の動作を指定する処理パラメータと前記データ処理により得られるデータを処理する後処理プログラムとを含んだデータをデータ処理要求としてデータ処理要求装置から受信するデータ処理要求受信部と、
前記データ処理要求受信部により受信されたデータ処理要求に含まれる処理パラメータに基づいて前記データ処理を実行し、前記データ処理を実行して得られたデータを処理結果データとして出力するデータ処理部と、
前記データ処理部により出力された処理結果データに対して前記データ処理要求に含まれる後処理プログラムを実行し、前記後処理プログラムを実行して得られたデータを後処理データとして出力する後処理プログラム実行部と、
前記後処理プログラム実行部により出力された後処理データを含んだデータをデータ処理応答として前記データ処理要求装置へ送信するデータ処理応答送信部とを備える。
【発明の効果】
【０００７】
本発明によれば、例えば、サービスリクエスタ（データ処理要求装置）からサービスプロバイダ（データ処理装置）に後処理プログラムを送信することにより、ネットワーク負荷を高めないまま、サービスリクエスタの様々な要望に対応することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるサービス要求応答システム１００の概要図。
【図２】実施の形態１におけるサービスリクエスタ２００の機能構成図。
【図３】実施の形態１におけるサービスプロバイダ３００の機能構成図。
【図４】実施の形態１におけるサービスリクエスタ２００の動作を示すフローチャート。
【図５】実施の形態１におけるサービスプロバイダ３００のサービスコンテナ３１０の動作を示すフローチャート。
【図６】実施の形態１におけるサービス実装部３２０の動作を示すフローチャート。
【図７】実施の形態１におけるサービスリクエスタ２００およびサービスプロバイダ３００のハードウェア資源の一例を示す図。
【図８】実施の形態２におけるサービスプロバイダ３００の機能構成図。
【図９】実施の形態２におけるサービスコンテナ３１０の動作を示すフローチャート。
【図１０】実施の形態３におけるサービスプロバイダ３００の機能構成図。
【図１１】実施の形態３におけるサービスコンテナ３１０の動作を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施の形態１．
サービスリクエスタが所定のデータ処理を行うサービスプロバイダに対してデータ処理の動作を指定するパラメータとデータ処理により得られる処理結果を処理する処理ロジックとを指定するサービス要求応答システムの形態について説明する。
【００１０】
図１は、実施の形態１におけるサービス要求応答システム１００の概要図である。
実施の形態１におけるサービス要求応答システム１００の概要について、図１に基づいて説明する。
【００１１】
サービス要求応答システム１００（データ処理システムの一例）は、サービスリクエスタ２００とサービスプロバイダ３００とを有する。
【００１２】
サービスリクエスタ２００とサービスプロバイダ３００は、ネットワーク１０１に接続してデータ通信を行う装置である。インターネットに接続するパーソナルコンピュータはサービスリクエスタ２００の一例であり、ＷＥＢサーバはサービスプロバイダ３００の一例である。
【００１３】
サービスリクエスタ２００は、リクエストパラメータと処理ロジックとを含んだリクエスト１１０をサービスプロバイダ３００へ送信する。
サービスプロバイダ３００は、リクエスト１１０を受信し、受信したリクエスト１１０に含まれるリクエストパラメータに基づいて所定のデータ処理（サービス）を行う。
さらに、サービスプロバイダ３００は、データ処理により得られたデータに対してリクエスト１１０に含まれる処理ロジックを実行し、処理ロジックの実行により得られたデータを含んだレスポンス１２０をサービスリクエスタ２００へ送信する。
【００１４】
リクエスト１１０に含まれるリクエストパラメータは、サービスプロバイダ３００のデータ処理の動作を指定するデータである。
リクエスト１１０に含まれる処理ロジックは、データ処理により得られるデータを処理する後処理プログラムである。例えば、処理ロジックはインタプリタ型言語（スクリプト言語）で記述されたプログラムのソースコード（ソースプログラム）である。以下、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｒｕｂｙ、Ｇｒｏｏｖｙ、Ｓｃａｌａなどの言語で記述されたソースプログラムを処理ロジックとして使用するものとする。但し、処理ロジックはコンパイルされたオブジェクトコードであっても構わない。
【００１５】
次に、サービスリクエスタ２００とサービスプロバイダ３００の機能構成について説明する。
【００１６】
図２は、実施の形態１におけるサービスリクエスタ２００の機能構成図である。
実施の形態１におけるサービスリクエスタ２００の機能構成について、図２に基づいて説明する。
【００１７】
サービスリクエスタ２００（データ処理要求装置の一例）は、リクエスト送信部２１０、レスポンス受信部２２０、リクエストパラメータ格納部２３１、処理ロジック格納部２３２および後処理データ記憶部２３３を備える。
【００１８】
リクエスト送信部２１０（データ処理要求送信部の一例）は、サービスプロバイダ３００のデータ処理（サービス）の動作を指定するリクエストパラメータ（処理パラメータ）をリクエストパラメータ格納部２３１から入力する。
リクエスト送信部２１０は、サービスプロバイダ３００のデータ処理により得られるデータを処理する処理ロジック（後処理プログラム）を処理ロジック格納部２３２から入力する。
リクエスト送信部２１０は、入力したリクエストパラメータと処理ロジックとを含んだデータをリクエスト１１０（データ処理要求）として生成し、生成したリクエスト１１０を送信する。
【００１９】
レスポンス受信部２２０（データ処理応答受信部の一例）は、サービスプロバイダ３００からレスポンス１２０（データ処理応答）を受信し、受信したレスポンス１２０に含まれる後処理データを後処理データ記憶部２３３に記憶する。
【００２０】
リクエストパラメータ格納部２３１は、リクエスト１１０に含めるリクエストパラメータを記憶する。
【００２１】
処理ロジック格納部２３２は、リクエスト１１０に含める処理ロジックを記憶する。
【００２２】
後処理データ記憶部２３３は、レスポンス１２０に含まれる後処理データを記憶する。
【００２３】
図３は、実施の形態１におけるサービスプロバイダ３００の機能構成図である。
実施の形態１におけるサービスプロバイダ３００の機能構成について、図３に基づいて説明する。
【００２４】
サービスプロバイダ３００（データ処理装置の一例）は、サービスコンテナ３１０、サービス実装部３２０、リクエストパラメータ格納部３３１、処理ロジック格納部３３２、レスポンス格納部３３３およびデータリソース３４０を備える。
【００２５】
サービス実装部３２０は、図３では１つであるがデータ処理（サービス）の数だけ存在する。
【００２６】
サービスコンテナ３１０は、リクエスト受信部３１１、リクエストパラメータ抽出部３１２、処理ロジック抽出部３１３およびレスポンス送信部３１４を備える。
【００２７】
リクエスト受信部３１１（データ処理要求受信部の一例）は、リクエスト１１０（データ処理要求）をサービスリクエスタ２００から受信する。
【００２８】
リクエストパラメータ抽出部３１２は、リクエスト１１０からリクエストパラメータ（処理パラメータ）を抽出し、抽出したリクエストパラメータをリクエストパラメータ格納部３３１に記憶する。
【００２９】
処理ロジック抽出部３１３は、リクエスト１１０から処理ロジック（後処理プログラム）を抽出し、抽出した処理ロジックを処理ロジック格納部３３２に記憶する。
【００３０】
レスポンス送信部３１４（データ処理応答送信部の一例）は、サービス実装部３２０の処理ロジック起動部３２２により記憶されたレスポンス１２０をレスポンス格納部３３３から入力し、入力したレスポンス１２０をサービスリクエスタ２００へ送信する。
【００３１】
サービス実装部３２０は、データ処理部３２１と処理ロジック起動部３２２とを備える。
【００３２】
データ処理部３２１は、リクエストパラメータ格納部３３１からリクエストパラメータを入力し、入力したリクエストパラメータに基づいて所定のデータ処理（サービス）を実行する。
データ処理部３２１は、データ処理を実行して得られたデータ（２次データ）を処理結果データとして出力する。
データ処理部３２１は、処理ロジック起動部３２２により出力される後処理データを含んだデータをレスポンス１２０としてレスポンス格納部３３３に記憶する。
【００３３】
処理ロジック起動部３２２（後処理プログラム実行部の一例）は、処理ロジック格納部３３２から処理ロジックを入力する。
処理ロジック起動部３２２は、データ処理部３２１により出力された処理結果データに対して処理ロジックを実行する。
処理ロジック起動部３２２は、処理ロジックを実行して得られたデータ（３次データ）を後処理データとして出力する。
【００３４】
リクエストパラメータ格納部３３１は、リクエスト１１０に含まれるリクエストパラメータを記憶する。
【００３５】
処理ロジック格納部３３２は、リクエスト１１０に含まれる処理ロジックを記憶する。
【００３６】
レスポンス格納部３３３は、レスポンス１２０に含める後処理データを記憶する。
【００３７】
データリソース３４０は、サービスプロバイダ３００の所定のデータ処理で処理対象とする１次データを記憶するデータベース装置である。
【００３８】
次に、サービスリクエスタ２００とサービスプロバイダ３００の動作について説明する。
以下の説明において、サービスプロバイダ３００は、所定のデータ処理（サービス）として「データ検索」を実行する。但し、サービスプロバイダ３００の所定のデータ処理はデータ検索以外のデータ処理（例えば、特定の計算処理、データ解析処理）であっても構わない。
【００３９】
図４は、実施の形態１におけるサービスリクエスタ２００の動作を示すフローチャートである。
実施の形態１におけるサービスリクエスタ２００の動作について、図４に基づいて説明する。
【００４０】
Ｓ１１０において、リクエスト送信部２１０は、リクエストパラメータ格納部２３１からリクエストパラメータを入力する。
リクエストパラメータは、利用者により生成され、リクエストパラメータ格納部２３１に予め記憶されているものとする。
リクエストパラメータには、検索対象のデータ、検索キー、検索結果に対する加工・編集オプション（例えば、ソート方法）など、データ検索の動作を指定する情報が設定される。
Ｓ１１０の後、Ｓ１２０に進む。
【００４１】
Ｓ１２０において、リクエスト送信部２１０は、処理ロジック格納部２３２から処理ロジックを入力する。
処理ロジックは、利用者により生成され、処理ロジック格納部２３２に予め記憶されているものとする。
例えば、処理ロジックは、検索結果に含まれる情報から特定の条件に該当する情報を抽出し、また、検索結果に含まれる情報を解析するスクリプトである。具体例として、処理ロジックは、検索結果に含まれる多数の商品情報から価格が高い順に上位５つの商品の商品情報を抽出する。また、処理ロジックは、検索結果に含まれる多数の商品情報について価格の統計値（合計金額、平均金額）を算出する。
Ｓ１２０の後、Ｓ１３０に進む。
【００４２】
Ｓ１３０（データ処理要求送信ステップの一例）において、リクエスト送信部２１０は、リクエストパラメータと処理ロジックとデータ処理種別とを含んだリクエスト１１０を生成し、生成したリクエスト１１０をサービスプロバイダ３００へ送信する。
データ処理種別は、サービスプロバイダ３００が行う複数のデータ処理（サービス）のうち特定のデータ処理を識別する情報であり、利用者により指定される。
Ｓ１３０の後、Ｓ１４０に進む。
【００４３】
Ｓ１４０において、レスポンス受信部２２０は、リクエスト１１０に対するレスポンス１２０がサービスプロバイダ３００から送信されるのを待つ。
Ｓ１４０の後、Ｓ１５０に進む。
【００４４】
Ｓ１５０（データ処理応答受信ステップ）において、レスポンス受信部２２０は、サービスプロバイダ３００から送信されたレスポンス１２０を受信し、受信したレスポンス１２０から後処理データを抽出する。後処理データは処理ロジックにより得られたデータである。
レスポンス受信部２２０は、抽出した後処理データを後処理データ記憶部２３３に記憶し、また、表示装置に表示する。
Ｓ１５０により、サービスリクエスタ２００の動作は終了する。
【００４５】
図５は、実施の形態１におけるサービスプロバイダ３００のサービスコンテナ３１０の動作を示すフローチャートである。
実施の形態１におけるサービスプロバイダ３００のサービスコンテナ３１０の動作について、図５に基づいて説明する。
【００４６】
Ｓ２０１において、リクエスト受信部３１１は、サービスリクエスタ２００からリクエスト１１０が送信されるのを待つ。
Ｓ２０１の後、Ｓ２０２に進む。
【００４７】
Ｓ２０２（データ処理要求受信ステップ）において、リクエスト受信部３１１は、サービスリクエスタ２００から送信されたリクエスト１１０を受信する。
Ｓ２０２の後、Ｓ２１０に進む。
【００４８】
Ｓ２１０において、リクエスト受信部３１１は、リクエスト１１０を引数にしてリクエストパラメータ抽出部３１２を呼び出す。
リクエストパラメータ抽出部３１２は、リクエスト１１０からリクエストパラメータを抽出し、抽出したリクエストパラメータをリクエストパラメータ格納部３３１に記憶する。
リクエストパラメータ抽出部３１２は、リクエストパラメータ抽出部３１２に処理完了を通知する。
Ｓ２１０の後、Ｓ２２０に進む。
【００４９】
Ｓ２２０において、リクエスト受信部３１１は、リクエスト１１０を引数にして処理ロジック抽出部３１３を呼び出す。
処理ロジック抽出部３１３は、リクエスト１１０から処理ロジックを抽出し、抽出した処理ロジックを処理ロジック格納部３３２に記憶する。
処理ロジック抽出部３１３は、リクエスト受信部３１１に処理完了を通知する。
Ｓ２２０の後、Ｓ２３０に進む。
【００５０】
Ｓ２３０において、リクエスト受信部３１１は、リクエスト１１０からデータ処理種別を抽出し、抽出したデータ処理種別で識別されるデータ処理に対応するサービス実装部３２０を起動する。
Ｓ２３０の後、Ｓ２３１に進む。
【００５１】
Ｓ２３１において、リクエスト受信部３１１は、サービス実装部３２０の処理完了を待つ。
Ｓ２３１の後、Ｓ２４０に進む。
【００５２】
Ｓ２４０（データ処理応答送信ステップの一例）において、リクエスト受信部３１１は、サービス実装部３２０の処理完了を受けてレスポンス送信部３１４を呼び出す。
レスポンス送信部３１４は、サービス実装部３２０により生成されたレスポンス１２０をレスポンス格納部３３３から入力し、入力したレスポンス１２０をサービスリクエスタ２００へ送信する。
Ｓ２４０の後、Ｓ２０１に戻る。
【００５３】
図６は、実施の形態１におけるサービス実装部３２０の動作を示すフローチャートである。
上記のＳ２３０（図５参照）で起動されたサービス実装部３２０の動作について、図６に基づいて説明する。
【００５４】
Ｓ３１１において、データ処理部３２１は、リクエストパラメータ格納部３３１からリクエストパラメータを入力する。
Ｓ３１１の後、Ｓ３２０に進む。
【００５５】
Ｓ３１２（データ処理ステップの一例）において、データ処理部３２１は、リクエストパラメータに基づいてデータ処理（データ検索）を行う。
データ処理として、データ処理部３２１は、データリソース３４０を検索して検索条件に合うデータ項目をデータリソース３４０から抽出し、抽出したデータ項目をリクエストパラメータに基づいて加工・編集する。
実施の形態において、データ処理により得られたデータを「処理結果データ」という。
【００５６】
例えば、リクエストパラメータには、検索対象のデータとして「書籍データ」が指定され、検索キーとして「ＡＢＣ」が指定され、加工・編集オプションとして「名前順のソート」が指定されているものとする。
また、データリソース３４０には書籍データを含む複数種類のデータが記憶されているものとする。
データ処理部３２１は、データリソース３４０に記憶されるデータのうち「書籍データ」を対象にして「ＡＢＣ」をタイトルに含む書籍の書籍情報を検索する。
データ処理部３２１は、ヒットした書籍情報を「名前順」にソートして処理結果データを生成する。
【００５７】
Ｓ３１２の後、Ｓ３１３に進む。
【００５８】
Ｓ３１３において、データ処理部３２１は、処理結果データを引数にして処理ロジック起動部３２２を呼び出す。
Ｓ３１３の後、Ｓ３２１に進む。
【００５９】
Ｓ３２１において、処理ロジック起動部３２２は、処理ロジック格納部３３２から処理ロジックを入力する。
Ｓ３２１の後、Ｓ３２２に進む。
【００６０】
Ｓ３２２（後処理プログラム実行ステップの一例）において、処理ロジック起動部３２２は、処理結果データを入力データにして処理ロジックを実行する。
実施の形態において、処理ロジックを実行して得られたデータを「後処理データ」という。
【００６１】
例えば、処理ロジックが、価格の高い順に上位５つの商品の商品名を抽出するスクリプトであると仮定する。
この場合、処理ロジック起動部３２２は、処理ロジックを実行して、処理結果データに含まれる多数の商品情報（書籍情報）の情報から価格が高い上位５つの商品の商品情報を抽出する。抽出した商品情報で構成されるデータが後処理データである。
【００６２】
Ｓ３２２の後、Ｓ３２３に進む。
【００６３】
Ｓ３２３において、処理ロジック起動部３２２は、後処理データをデータ処理部３２１に出力する。
Ｓ３２３の後、Ｓ３３１に進む。
【００６４】
Ｓ３３１において、データ処理部３２１は、後処理データを含んだレスポンス１２０を生成し、生成したレスポンス１２０をレスポンス格納部３３３に記憶する。
Ｓ３３１の後、Ｓ３３２に進む。
【００６５】
Ｓ３３２において、データ処理部３２１は、サービスコンテナ３１０のリクエスト受信部３１１に処理完了を通知する。
Ｓ３３２により、サービス実装部３２０の動作は終了する。
【００６６】
図７は、実施の形態１におけるサービスリクエスタ２００およびサービスプロバイダ３００のハードウェア資源の一例を示す図である。
図７において、サービスリクエスタ２００およびサービスプロバイダ３００は、ＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）（マイクロプロセッサ、マイクロコンピュータともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ドライブ装置９０４、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９０４は、ＦＤ（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【００６７】
通信ボード９１５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００６８】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
【００６９】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９１１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００７０】
ファイル群９２４には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００７１】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００７２】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００７３】
実施の形態１において、例えば、以下のようなサービス要求応答システム１００について説明した。
【００７４】
サービスリクエスタ２００はサービスプロバイダ３００に処理ロジックを送信し、サービスプロバイダ３００は受信した処理ロジックを実行する。
【００７５】
これにより、ネットワーク負荷を小さくすることができる。処理ロジックを実行するサービスプロバイダ３００は、処理結果データよりデータ量が少ない後処理データをサービスリクエスタ２００へ応答するからである。
また、サービスプロバイダ３００は、サービスリクエスタ２００の様々な要望に対応することができる。サービスプロバイダ３００は、サービスリクエスタ２００の要望に対応する処理ロジックをサービスリクエスタ２００から受信するためである。
【００７６】
即ち、サービス要求応答システム１００は以下のような効果を奏する。
第１に、サービスリクエスタ２００が必要とするデータだけがレスポンス１２０として送信されるので、ネットワーク負荷を高めない。
第２に、サービスリクエスタ２００が望むデータ加工の処理ロジックをリクエスト１１０に含めるので、リクエストパラメータを単純化することができる。
第３に、サービスプロバイダ３００は受信した処理ロジックを動的に実行するので、サービスプロバイダ３００は処理ロジックを事前に決定する必要がない。つまり、サービスプロバイダ３００の変更が不要である。
【００７７】
実施の形態２．
サービスプロバイダ３００が処理ロジックの実行前に処理ロジックの文法を検査する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項は実施の形態１と同様である。
【００７８】
図８は、実施の形態２におけるサービスプロバイダ３００の機能構成図である。
実施の形態２におけるサービスプロバイダ３００の機能構成について、図８に基づいて説明する。
【００７９】
サービスプロバイダ３００のサービスコンテナ３１０は、実施の形態１（図３参照）で説明した処理ロジック抽出部３１３の代わりに、処理ロジック抽出・検査部３１５と文法検査コード格納部３１６とを備える。
【００８０】
処理ロジック抽出・検査部３１５（後処理プログラム検査部の一例）は、リクエスト１１０（データ処理要求）に含まれる処理ロジック（後処理プログラム）が所定の実行要件を満たす有効プログラムであるか否かを所定の検査プログラム（文法検査コード、試験コード）を用いて判定する。
有効プログラムとは、コーディングのバグが無く実行しても異常終了しない実行可能なプログラムのことである。
【００８１】
具体的に、リクエスト１１０は所定のプログラミング言語（インタプリタ型言語、スクリプト言語）で記述されたソースプログラム（スクリプト）を処理ロジックとして含み、処理ロジック抽出・検査部３１５は、処理ロジックが所定のプログラム文法に従って記述された有効プログラムであるか否かを判定する。
【００８２】
処理ロジック起動部３２２（後処理プログラム実行部の一例）は、処理ロジック抽出・検査部３１５により処理ロジックが有効プログラムであると判定された場合に処理ロジックを実行して後処理データを出力し、処理ロジック抽出・検査部３１５により処理ロジックが有効プログラムでないと判定された場合に処理ロジックを実行しない。
【００８３】
レスポンス送信部３１４（データ処理応答送信部の一例）は、処理ロジック起動部３２２が処理ロジックを実行した場合に後処理データを含んだレスポンス１２０（データ処理応答）を送信し、処理ロジック起動部３２２が処理ロジックを実行しなかった場合に異常終了を示すレスポンス１２０（異常終了通知）を送信する。
【００８４】
文法検査コード格納部３１６は、処理ロジックを記述する言語として定められた所定のプログラミング言語に対応する文法検査コードを予め記憶する。
文法検査コードは、処理ロジックを構文解析および字句解析して処理ロジックの記述が所定のプログラミング言語の記述規則（プログラム文法）に従っているか否かを判定するプログラムである。
【００８５】
図９は、実施の形態２におけるサービスコンテナ３１０の動作を示すフローチャートである。
実施の形態２におけるサービスコンテナ３１０の動作について、図９に基づいて説明する。
【００８６】
サービスコンテナ３１０は、実施の形態１で説明した処理（図５参照）に加えて、Ｓ２５０、Ｓ２５１およびＳ２４１を実行する。また、Ｓ２２０の代わりにＳ２２１を実行する。
以下、Ｓ２５０、Ｓ２５１、Ｓ２２１およびＳ２４１について主に説明する。
【００８７】
Ｓ２５０において、リクエスト受信部３１１は、リクエスト１１０を引数にして処理ロジック抽出・検査部３１５を呼び出す。
処理ロジック抽出・検査部３１５は、リクエスト１１０から処理ロジックを抽出し、文法検査コード格納部３１６から文法検索コードを入力する。
処理ロジック抽出・検査部３１５は、処理ロジックを入力データにして文法検査コードを実行して処理ロジックのプログラム文法を検査する。
文法検査コードを実行することにより、「検査合格」または「検査不合格」を示す検査結果が得られる。「検査合格」は処理ロジックが所定のプログラム文法に従って記述された有効プログラムであることを意味し、「検査不合格」は処理ロジックが所定のプログラム文法に従って記述されていない無効プログラムであることを意味する。
Ｓ２５０の後、Ｓ２５１に進む。
【００８８】
Ｓ２５１において、処理ロジック抽出・検査部３１５は、文法検査コードの実行により得られた処理ロジックの検査結果を判定する。
処理ロジックの検査結果が「検査合格」を示す場合（ＹＥＳ）、Ｓ２２１に進む。
処理ロジックの検査結果が「検査不合格」を示す場合（ＮＯ）、Ｓ２４１に進む。
【００８９】
Ｓ２２１において、処理ロジック抽出・検査部３１５は、処理ロジックを処理ロジック格納部３３２に記憶し、リクエスト受信部３１１に処理完了を通知する。
Ｓ２２１の後、Ｓ２３０に進む。
【００９０】
Ｓ２４１において、処理ロジック抽出・検査部３１５は、リクエスト受信部３１１に異常完了を通知する。
リクエスト受信部３１１は、異常完了を通知してレスポンス送信部３１４を呼び出す。
レスポンス送信部３１４は、リクエストエラー（処理ロジックの文法エラー）を示すレスポンス１２０を生成し、生成したレスポンス１２０をサービスリクエスタ２００へ送信する。
Ｓ２４１の後、Ｓ２０１に戻る。
【００９１】
実施の形態２において、例えば、以下のようなサービス要求応答システム１００について説明した。
【００９２】
サービスプロバイダ３００は、受信した処理ロジックがプログラム文法に則っているか否かを検査する。
サービスプロバイダ３００は、受信した処理ロジックがプログラム文法に則っていなければその処理ロジックを実行せずにレスポンス１２０を送信する。
【００９３】
これにより、サービスプロバイダ３００が文法に則っていない処理ロジックを実行して異常終了してしまうことを防止し、サービスプロバイダ３００の動作を安全に継続させることができる。
【００９４】
実施の形態３．
サービスプロバイダ３００が処理ロジックの実行前に処理ロジックの動作を検査する形態について説明する。
以下、実施の形態１および実施の形態２と異なる事項について主に説明する。説明を省略する事項は実施の形態１または実施の形態２と同様である。
【００９５】
図１０は、実施の形態３におけるサービスプロバイダ３００の機能構成図である。
実施の形態３におけるサービスプロバイダ３００の機能構成について、図１０に基づいて説明する。
【００９６】
サービスプロバイダ３００のサービスコンテナ３１０は、実施の形態１（図３参照）で説明した処理ロジック抽出部３１３の代わりに、処理ロジック抽出・試験部３１７を備える。
また、データ処理毎に備わる各サービス実装部３２０（図１０では１つのみ図示）は、実施の形態１で説明した構成に加えて、試験コード格納部３２３を備える。
【００９７】
処理ロジック抽出・試験部３１７（後処理プログラム検査部の一例）は、処理ロジック（後処理プログラム）を用いて所定の試験データを処理し、処理ロジックが所定の試験基準を満たした有効プログラムであるか否かを処理結果に基づいて判定する。
処理ロジック抽出・試験部３１７は、試験コード格納部３２３に記憶される試験コードを実行することにより、上記の判定を行う。
【００９８】
試験コード格納部３２３は、試験データと試験プログラムとを含んだ試験コードを予め記憶する。
試験プログラムは、試験データを入力データにして処理ロジックを動作させ、処理ロジックが所定の試験基準を満たすか否かを動作結果に基づいて判定する。
例えば、試験基準（試験項目）として、例外が発生しないこと、所定の制限時間内に処理が完了すること、リターン値の型が定義通りであること、などが挙げられる。
【００９９】
図１１は、実施の形態３におけるサービスコンテナ３１０の動作を示すフローチャートである。
実施の形態３におけるサービスコンテナ３１０の動作について、図１１に基づいて説明する。
【０１００】
サービスコンテナ３１０は、実施の形態１で説明した処理（図５参照）に加えて、Ｓ２６０、Ｓ２６１およびＳ２４２を実行する。また、Ｓ２２０の代わりにＳ２２２を実行する。
以下、Ｓ２６０、Ｓ２６１、Ｓ２２２およびＳ２４２について主に説明する。
【０１０１】
Ｓ２６０において、リクエスト受信部３１１は、リクエスト１１０を引数にして処理ロジック抽出・試験部３１７を呼び出す。
処理ロジック抽出・試験部３１７は、リクエスト１１０から処理ロジックを抽出する。
処理ロジック抽出・試験部３１７は、リクエスト１１０からデータ処理種別を抽出し、抽出したデータ処理種別で識別されるデータ処理に対応するサービス実装部３２０を特定し、特定したサービス実装部３２０の試験コード格納部３２３から試験コードを入力する。
処理ロジック抽出・試験部３１７は、処理ロジックを入力データにして試験コード（試験プログラム）を実行して処理ロジックの動作を試験する。
試験コードを実行することにより、「試験合格」または「試験不合格」を示す試験結果が得られる。「試験合格」は処理ロジックが試験基準を満たした有効プログラムであることを意味し、「試験不合格」は処理ロジックが試験基準を満たさない無効プログラムであることを意味する。
Ｓ２６０の後、Ｓ２６１に進む。
【０１０２】
Ｓ２６１において、処理ロジック抽出・試験部３１７は、試験コードの実行により得られた処理ロジックの試験結果を判定する。
処理ロジックの試験結果が「試験合格」を示す場合（ＹＥＳ）、Ｓ２２２に進む。
処理ロジックの試験結果が「試験不合格」を示す場合（ＮＯ）、Ｓ２４２に進む。
【０１０３】
Ｓ２２２において、処理ロジック抽出・試験部３１７は、処理ロジックを処理ロジック格納部３３２に記憶し、リクエスト受信部３１１に処理完了を通知する。
Ｓ２２２の後、Ｓ２３０に進む。
【０１０４】
Ｓ２４２において、処理ロジック抽出・試験部３１７は、リクエスト受信部３１１に異常完了を通知する。
リクエスト受信部３１１は、異常完了を通知してレスポンス送信部３１４を呼び出す。
レスポンス送信部３１４は、リクエストエラー（処理ロジックの動作エラー）を示すレスポンス１２０を生成し、生成したレスポンス１２０をサービスリクエスタ２００へ送信する。
Ｓ２４２の後、Ｓ２０１に戻る。
【０１０５】
実施の形態３において、例えば、以下のようなサービス要求応答システム１００について説明した。
【０１０６】
サービスプロバイダ３００は、受信した処理ロジックを試験し、試験に合格しなければその処理ロジックを実行せずにレスポンス１２０を送信する。
【０１０７】
これにより、サービスプロバイダ３００が問題のある処理ロジックを実行して異常終了してしまうことを防止し、サービスプロバイダ３００の動作を安全に継続させることができる。
【０１０８】
実施の形態３において、サービスコンテナ３１０は実施の形態２（図８参照）と同様に文法検査コード格納部３１６を備え、処理ロジック抽出・試験部３１７は実施の形態２で説明した処理ロジック抽出・検査部３１５と同様に処理ロジックの文法を検査してもよい。
処理ロジック抽出・試験部３１７は、処理ロジックが文法検査と試験との両方に合格した場合に、処理ロジックを処理ロジック格納部３３２に記憶する。
レスポンス送信部３１４は、処理ロジックが文法検査と試験との少なくともいずれかで不合格であった場合に、リクエストエラーを示すレスポンス１２０をサービスリクエスタ２００へ送信する。
【符号の説明】
【０１０９】
１００  サービス要求応答システム、１０１  ネットワーク、１１０  リクエスト、１２０  レスポンス、２００  サービスリクエスタ、２１０  リクエスト送信部、２２０  レスポンス受信部、２３１  リクエストパラメータ格納部、２３２  処理ロジック格納部、２３３  後処理データ記憶部、３００  サービスプロバイダ、３１０  サービスコンテナ、３１１  リクエスト受信部、３１２  リクエストパラメータ抽出部、３１３  処理ロジック抽出部、３１４  レスポンス送信部、３１５  処理ロジック抽出・検査部、３１６  文法検査コード格納部、３１７  処理ロジック抽出・試験部、３２０  サービス実装部、３２１  データ処理部、３２２  処理ロジック起動部、３２３  試験コード格納部、３３１  リクエストパラメータ格納部、３３２  処理ロジック格納部、３３３  レスポンス格納部、３４０  データリソース、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ドライブ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2012008901.tif 000003
【図２】
2012008901.tif 000004
【図３】
2012008901.tif 000005
【図４】
2012008901.tif 000006
【図５】
2012008901.tif 000007
【図６】
2012008901.tif 000008
【図７】
2012008901.tif 000009
【図８】
2012008901.tif 000010
【図９】
2012008901.tif 000011
【図１０】
2012008901.tif 000012
【図１１】
2012008901.tif 000013