(57)【要約】【課題】各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入できるようにする。【解決手段】標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、受信した処理結果を前記標準プログラムの処理結果に反映する手段とを備える。【選択図】図１
2018101182.tif 000002
【特許請求の範囲】
【請求項１】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、
受信した処理結果を前記標準プログラムの処理結果に反映する手段と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記データベースは、前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前または後のいずれにおいて実行するかを区別して前記呼び出しアドレスを保持する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前に実行した場合、
前記アプリケーションプログラムインタフェースによる処理の結果が得られた場合は、前記標準プログラム中の実行対象の処理を実行せず、前記アプリケーションプログラムインタフェースによる処理の結果を返却し、
前記アプリケーションプログラムインタフェースによる処理により結果が得られなかった場合は、前記標準プログラム中の実行対象の処理を実行する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の後に実行した場合、
前記アプリケーションプログラムインタフェースによる処理の結果が得られた場合は、前記標準プログラム中の実行対象の処理の結果を前記アプリケーションプログラムインタフェースによる処理の結果で上書きし、上書きされた結果を返却し、
前記アプリケーションプログラムインタフェースによる処理により結果が得られなかった場合は、前記標準プログラム中の実行対象の処理の結果を返却する
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断し、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得し、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信し、
受信した処理結果を前記標準プログラムの処理結果に反映する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項６】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断し、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得し、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信し、
受信した処理結果を前記標準プログラムの処理結果に反映する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムが存在する（例えば、特許文献１等を参照）。例えば、電子商取引の仮想店舗を運営するための各種のプログラム（プログラム群）を複数の顧客が共通に利用し、それぞれの顧客が外見上は自前のシステムを運営しているように見せる形態がある。この場合、プログラムの開発側としても、大規模なシステムの開発に要する莫大な開発コストを安定して回収できるメリットがあるとともに、利用側としても、利用の度合いに応じたリーズナブルなコストでシステムを構築することができるというメリットがある。
【０００３】
情報処理システムが提供する各種の業務プログラムは、可能な限りそのままの形で利用できるように作られるものではあるが、顧客によっては例外的な処理を望む場合も多い。例えば、商品購入者の電話番号が適切なものであるか否かをチェックするプログラム部分は、市外局番、局番、番号の数字を「−」で区切った形式が一般的であることから、数字と「−」が混在した形式でも許容するように作られるのが一般的である。しかし、顧客によっては、数字以外に「−」が含まれる場合にはエラーにしたいという場合がある。
【０００４】
従来、このような例外的な処理に対応するには、本体上のプログラムの処理を、新たに定義した処理によりオーバーライドする手法が用いられる。オーバーライドされた処理が実行される場面では、オーバーライドした処理が実際に実行される。ただし、オーバーライドの手法を利用する場合、本体のシステム内にプログラムを記述しなければならない。例えば、本体がＪａｖａ（登録商標）で記述されている場合、オーバーライドする処理も本体内にＪａｖａで記述する必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−３３４４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、本体の標準的な業務プログラムと異なる処理を行わせる場合、処理のオーバーライドを行う必要があり、更に本体と同じプログラミング言語を用いなければならず、自由度が低いという問題があった。顧客によっては、独自に改造を行う場合もあるが、既に所有しているプログラム資産が異なるプログラミング言語によるものであったり、使い慣れたプログラミング言語が異なるものであったりする場合、容易に対応することはできない。
【０００７】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入できるようにすることにある。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明にあっては、標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、受信した処理結果を前記標準プログラムの処理結果に反映する手段とを備える。
【発明の効果】
【０００９】
本発明にあっては、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態にかかるシステムの構成例を示す図である。
【図２】標準プログラムに付加されるＡＰＩ用アノテーションの概要を示す図である。
【図３】ＡＰＩ・ＯＵＴテーブルのデータ構造例を示す図である。
【図４】情報処理装置のハードウェア構成例を示す図である。
【図５】実施形態の処理例を示すフローチャート（その１）である。
【図６】実施形態の処理例を示すフローチャート（その２）である。
【図７】ＡＰＩの呼出の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の好適な実施形態につき説明する。
【００１２】
＜構成＞
図１は本発明の一実施形態にかかるシステムの構成例を示す図である。図１において、各種の業務プログラムを複数の顧客にテナントを割り当てて利用させる形態の情報サービスを提供する情報処理装置１は、インターネット等のネットワーク２に接続されている。また、ネットワーク２には、顧客等の管理下にある情報処理装置３や、顧客の運営する電子商取引の仮想店舗等へアクセスする一般ユーザの使用する情報処理装置（端末装置）４も接続される。
【００１３】
情報処理装置１には、ＯＳ（Operating System）等の基本ソフトのほか、複数の顧客の管理を行う機能を有する基本プログラム１１と、ＥＣ（Electronic Commerce）ロジック等の標準プログラム（業務プログラム）１２とが保持されている。基本プログラム１１および標準プログラム１２は、Ｊａｖａ等のプログラミング言語で記述されており、ソースプログラムとバイナリコードとを含んでいる。標準プログラム１２には、処理（function等）を単位に、例外的な処理への代替の可能性があることを示すＡＰＩ（Application Program Interface）用アノテーションが付加されている。
【００１４】
図２は標準プログラム１２にＡＰＩ用アノテーションが付加された様子を示している。ＡＰＩ用アノテーションの実際上の記述形式は、実装されるプログラムにより異なるが、少なくとも、ＡＰＩ用アノテーションであることを識別する記述と、呼出先のＡＰＩ名とを含んでいる。図２において、@Customizableで囲まれている個所がＡＰＩ用アノテーションであり、その下のpublic boolean check() throws SQLExceptionが対象となる処理である。なお、ＡＰＩ用アノテーションはソースプログラムに付加するが、そのソースプログラムをコンパイルしたバイナリコードにも、ＡＰＩ用アノテーションが含まれることになる。
【００１５】
図１に戻り、情報処理装置１は、基本プログラム１１と標準プログラム１２に基づいて本体システムを初期化し、本体システム領域１４を構築する本体初期化部１３を備えている。本体システム領域１４には、本体システムとしての機能を実行する本体システム機能実行部１４１と、本体システムに固有の本体システムデータ１４２とが含まれる。
【００１６】
また、情報処理装置１は、基本プログラム１１と標準プログラム１２に基づいて各テナントシステムを初期化し、テナントシステム領域１６を構築するテナント初期化部１５を備えている。テナントシステム領域１６には、顧客の運営する電子商取引の仮想店舗等への一般ユーザまたは管理者のアクセスに応じて標準プログラム１２を呼び出す処理呼出部１６１と、テナントシステムに固有のテナント固有データ１６２と、標準プログラム１２のＡＰＩ用アノテーションに対応するＡＰＩ情報を保持するＡＰＩ・ＯＵＴテーブル１６３とが含まれる。
【００１７】
図３はＡＰＩ・ＯＵＴテーブル１６３のデータ構造例を示す図であり、「名称（NAME）」「アドレス（URL）」「アプリＩＤ（APP_ID）」とを含んでいる。「名称（NAME）」は、ＡＰＩ名に、事前処理か事後処理かを示す「/before」「/after」が付いたものとなる。例えば、ＡＰＩ名が「admin/member/check」である場合、事前処理を行う場合には「admin/member/check/before」となり、事後処理を行う場合、「admin/member/check/after」となる。「アドレス（URL）」は、対応するＡＰＩの呼出先となるＵＲＬ（Uniform Resource Locator）である。「アプリＩＤ（APP_ID）」は、対応するＡＰＩを有するアプリを識別する情報である。ここに登録されるアプリは、情報処理装置１内のアプリ１９でもよいし、ネットワーク接続された外部の情報処理装置３等に保持されるアプリでもよい。テナントシステムの運営者は、標準とは異なる処理を行わせたい場合、処理に付されるＡＰＩ用アノテーションに対応させて、アプリのＡＰＩ情報をＡＰＩ・ＯＵＴテーブル１６３に予め登録を行う。
【００１８】
図１に戻り、情報処理装置１は、その他に、プログラム実行部１７とＡＰＩ呼出部１８とを備えている。プログラム実行部１７は、各テナントシステム領域１６の処理呼出部１６１からの呼出に応じて標準プログラム１２を実行する。ＡＰＩ呼出部１８は、プログラム実行部１７によるプログラム実行時に、ＡＰＩ用アノテーションが付加された処理を実行する際に、ＡＰＩ・ＯＵＴテーブル１６３を参照し、対応するＡＰＩ情報が登録されている場合に、該当するＡＰＩを呼び出す機能を有している。
【００１９】
図４は情報処理装置１、３、４のハードウェア構成例を示す図であり、一般的なコンピュータのハードウェア構成である。図４において、情報処理装置１等は、システムバス１０１に接続されたＣＰＵ（Central Processing Unit）１０２、ＲＯＭ（Read Only Memory）１０３、ＲＡＭ（Random Access Memory）１０４、ＮＶＲＡＭ（Non-Volatile Random Access Memory）１０５を備えている。また、情報処理装置１等は、Ｉ／Ｆ（Interface）１０６と、Ｉ／Ｆ１０６に接続された、Ｉ／Ｏ（Input/Output Device）１０７、ＨＤＤ（Hard Disk Drive）／ＳＳＤ（Solid State Drive）１０８、ＮＩＣ（Network Interface Card）１０９とを備えている。また、情報処理装置１等は、Ｉ／Ｏ１０７に接続されたモニタ１１０、キーボード１１１、マウス１１２等を備えている。Ｉ／Ｏ１０７にはＣＤ／ＤＶＤ（Compact Disk/Digital Versatile Disk）ドライブ等を接続することもできる。
【００２０】
図１で説明した情報処理装置１等の機能は、ＣＰＵ１０２において所定のプログラムが実行されることで実現される。プログラムは、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ＲＯＭ組込でもよい。
【００２１】
＜動作＞
図５および図６は上記の実施形態の処理例を示すフローチャートである。先ず、図５において、いずれかのテナントシステムの処理呼出部１６１により何らかの処理の呼出が行われて処理を開始すると、ＡＰＩ呼出部１８は、標準プログラム１２における実行対象の処理に所定のＡＰＩ用アノテーションが付加されているか否か判断する（ステップＳ１０１）。
【００２２】
ここで、実行対象の処理にＡＰＩ用アノテーションが付加されていないと判断された場合（ステップＳ１０１のＮｏ）、プログラム実行部１７は、標準プログラム１２から対応する処理を実行し（ステップＳ１０２）、標準の処理結果を取得し（ステップＳ１０３）、処理結果を呼出元に返却し（ステップＳ１０４）、処理を終了する。
【００２３】
また、実行対象の処理にＡＰＩ用アノテーションが付加されていると判断された場合（ステップＳ１０１のＹｅｓ）、ＡＰＩ呼出部１８は、ＡＰＩ用アノテーションからアノテーション情報を解析し、ＡＰＩ名を抽出する（ステップＳ１０５）。
【００２４】
次いで、ＡＰＩ呼出部１８は、抽出したＡＰＩ名がデータベースとしてのＡＰＩ・ＯＵＴテーブル１６３に事前ＡＰＩ呼出として登録されているか否か判断する（ステップＳ１０６）。すなわち、図３に示したＡＰＩ・ＯＵＴテーブル１６３の「名称（NAME）」に、抽出したＡＰＩ名に「/before」を加えた文字列から始まるものが登録されているか否か判断する。
【００２５】
ＡＰＩ名がＡＰＩ・ＯＵＴテーブル１６３に事前ＡＰＩ呼出として登録されていると判断された場合（ステップＳ１０６のＹｅｓ）、ＡＰＩ呼出部１８は、ＡＰＩ・ＯＵＴテーブル１６３からアプリ情報、すなわちアドレス（URL）等を取得し（ステップＳ１０７）、ＡＰＩを呼び出し、レスポンスを取得する（ステップＳ１０８）。
【００２６】
次いで、ＡＰＩ呼出部１８は、ＡＰＩのレスポンスを解析し（ステップＳ１０９）、ＡＰＩのレスポンスに処理結果が存在するか否か判断する（ステップＳ１１０）。
【００２７】
ＡＰＩのレスポンスに処理結果が存在すると判断された場合（ステップＳ１１０のＹｅｓ）、ＡＰＩ呼出部１８は、ＡＰＩから取得した処理結果を標準プログラム１２の処理結果として出力し（ステップＳ１１１）、処理結果を呼出元の処理呼出部１６１に返却し（ステップＳ１１２）、処理を終了する。すなわち、事前処理のＡＰＩで処理結果が得られた場合には、事前処理のＡＰＩだけを実行して終了する。
【００２８】
一方、ＡＰＩ名がＡＰＩ・ＯＵＴテーブル１６３に事前ＡＰＩ呼出として登録されていないと判断された場合（ステップＳ１０６のＮｏ）またはＡＰＩのレスポンスに処理結果が存在しないと判断された場合（ステップＳ１１０のＮｏ）は、図６の処理に移行する。すなわち、プログラム実行部１７は、標準プログラム１２から対応する処理を実行し（ステップＳ１１３）、標準の処理結果を取得する（ステップＳ１１４）。
【００２９】
次いで、ＡＰＩ呼出部１８は、ＡＰＩ用アノテーションから抽出したＡＰＩ名がデータベースとしてのＡＰＩ・ＯＵＴテーブル１６３に事後ＡＰＩ呼出として登録されているか否か判断する（ステップＳ１１５）。すなわち、図３に示したＡＰＩ・ＯＵＴテーブル１６３の「名称（NAME）」に、抽出したＡＰＩ名に「/after」を加えた文字列から始まるものが登録されているか否か判断する。
【００３０】
ＡＰＩ名がＡＰＩ・ＯＵＴテーブル１６３に事後ＡＰＩ呼出として登録されていると判断された場合（ステップＳ１１５のＹｅｓ）、ＡＰＩ呼出部１８は、ＡＰＩ・ＯＵＴテーブル１６３からアプリ情報、すなわちアドレス（URL）等を取得し（ステップＳ１１６）、ＡＰＩを呼び出し、レスポンスを取得する（ステップＳ１１７）。
【００３１】
次いで、ＡＰＩ呼出部１８は、ＡＰＩのレスポンスを解析し（ステップＳ１１８）、ＡＰＩのレスポンスに処理結果が存在するか否か判断する（ステップＳ１１９）。
【００３２】
ＡＰＩのレスポンスに処理結果が存在すると判断された場合（ステップＳ１１９のＹｅｓ）、ＡＰＩ呼出部１８は、ＡＰＩから取得した処理結果を標準プログラム１２の処理結果に上書きし（ステップＳ１２０）、処理結果を呼出元の処理呼出部１６１に返却し（ステップＳ１２１）、処理を終了する。
【００３３】
一方、ＡＰＩ名がＡＰＩ・ＯＵＴテーブル１６３に事後ＡＰＩ呼出として登録されていないと判断された場合（ステップＳ１１５のＮｏ）またはＡＰＩのレスポンスに処理結果が存在しないと判断された場合（ステップＳ１１９のＮｏ）は、標準プログラム１２の処理結果を呼出元に返却し（ステップＳ１２２）、処理を終了する。
【００３４】
図７はＡＰＩの呼出の例を示す図であり、商品購入者の情報の登録可否をチェックする処理の例を示している。前提として、標準プログラム１２による対応する処理では、電話番号について数字と「−」が混在した形式でも許容するものとしているのに対し、代替させるＡＰＩでは数字以外に「−」が含まれる場合を許可しないものとしている。
【００３５】
図７（ａ）はチェック対象となる商品購入者の情報の例を示しており、最後から３行目〜４行目の「TEL」は「090-1111-1111」となっており、「−」が含まれている。図７（ｂ）は標準プログラム１２による処理結果を示しており、「TRUE」（登録可）が返される。これに対し、図７（ｃ）はＡＰＩ呼出による処理結果の例を示しており、メッセージとして「電話番号には−は入力できません。」とされ、チェック結果として「FALSE」（登録否）が返されている。
【００３６】
このＡＰＩによる処理は、標準プログラム１２による処理よりも前に行ってもよいし、後に行ってもよい。前に行う場合には、標準プログラム１２による処理は行われない。後に行う場合には、標準プログラム１２による処理結果がＡＰＩによる処理結果により上書きされる。
【００３７】
なお、処理結果を返すＡＰＩの例について説明したが、処理結果を返さないＡＰＩについては、ＡＰＩにより呼び出された処理の中でテナントシステムの状態等を変更することができ、対象となる処理の前または後（前と後の両方も可）に実行することで、その後の処理の挙動を修正することができる。
【００３８】
＜総括＞
以上説明したように、本実施形態によれば、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入することができる。
【００３９】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【００４０】
１          情報処理装置
１１        基本プログラム
１２        標準プログラム
１３        本体初期化部
１４        本体システム領域
１４１      本体システム機能実行部
１４２      本体システムデータ
１５        テナント初期化部
１６        テナントシステム領域
１６１      処理呼出部
１６２      テナント固有データ
１６３      ＡＰＩ・ＯＵＴテーブル
１７        プログラム実行部
１８        ＡＰＩ呼出部
１９        アプリ
２          ネットワーク
３、４      情報処理装置
【図１】
2018101182.tif 000003
【図２】
2018101182.tif 000004
【図３】
2018101182.tif 000005
【図４】
2018101182.tif 000006
【図５】
2018101182.tif 000007
【図６】
2018101182.tif 000008
【図７】
2018101182.tif 000009