(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6906942
(24)【登録日】2021年7月2日
(45)【発行日】2021年7月21日
(54)【発明の名称】情報処理装置、情報処理方法および情報処理プログラム
(51)【国際特許分類】
G06F 9/445 20180101AFI20210708BHJP
G06Q 50/10 20120101ALI20210708BHJP
【FI】
G06F9/445
G06Q50/10
【請求項の数】6
【全頁数】11
(21)【出願番号】特願2016-245172(P2016-245172)
(22)【出願日】2016年12月19日
(65)【公開番号】特開2018-101182(P2018-101182A)
(43)【公開日】2018年6月28日
【審査請求日】2019年10月1日
(73)【特許権者】
【識別番号】515339332
【氏名又は名称】株式会社インターファクトリー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】蕪木 登
【審査官】
石川 亮
(56)【参考文献】
【文献】
特開平09−034821(JP,A)
【文献】
長谷川 裕一,外2名,3.6.1アノテーションを使ったAOP,Spring 3 入門,2012年12月 5日,pp.88-90
【文献】
Klab株式会社,Windowsに土足で乱入?!〜APIフックのための予備知識,2007年 2月 2日,URL,https://dsas.blog.klab.org/archives/50908743.html
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44−9/445
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、
受信した処理結果を前記標準プログラムの処理結果に反映する手段と
を備え、
前記アプリケーションプログラムインタフェースによる処理の結果が存在しない場合には、前記標準プログラム中の実行対象の処理の結果を返却し、前記アプリケーションプログラムインタフェースによる処理の結果が存在する場合には、前記アプリケーションプログラムインタフェースによる処理の結果を返却する
ことを特徴とする情報処理装置。
【請求項2】
前記データベースは、前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前または後のいずれにおいて実行するかを区別して前記呼び出しアドレスを保持する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、
受信した処理結果を前記標準プログラムの処理結果に反映する手段と
を備え、
前記データベースは、前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前または後のいずれにおいて実行するかを区別して前記呼び出しアドレスを保持し、
前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前に実行した場合、
前記アプリケーションプログラムインタフェースによる処理の結果が得られた場合は、前記標準プログラム中の実行対象の処理を実行せず、前記アプリケーションプログラムインタフェースによる処理の結果を返却し、
前記アプリケーションプログラムインタフェースによる処理により結果が得られなかった場合は、前記標準プログラム中の実行対象の処理を実行する
ことを特徴とする情報処理装置。
【請求項4】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、
受信した処理結果を前記標準プログラムの処理結果に反映する手段と
を備え、
前記データベースは、前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の前または後のいずれにおいて実行するかを区別して前記呼び出しアドレスを保持し、
前記アプリケーションプログラムインタフェースによる処理を前記標準プログラム中の実行対象の処理の後に実行した場合、
前記アプリケーションプログラムインタフェースによる処理の結果が得られた場合は、前記標準プログラム中の実行対象の処理の結果を前記アプリケーションプログラムインタフェースによる処理の結果で上書きし、上書きされた結果を返却し、
前記アプリケーションプログラムインタフェースによる処理により結果が得られなかった場合は、前記標準プログラム中の実行対象の処理の結果を返却する
ことを特徴とする情報処理装置。
【請求項5】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断し、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得し、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信し、
受信した処理結果を前記標準プログラムの処理結果に反映し、
前記アプリケーションプログラムインタフェースによる処理の結果が存在しない場合には、前記標準プログラム中の実行対象の処理の結果を返却し、前記アプリケーションプログラムインタフェースによる処理の結果が存在する場合には、前記アプリケーションプログラムインタフェースによる処理の結果を返却する
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項6】
標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断し、
アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得し、
取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信し、
受信した処理結果を前記標準プログラムの処理結果に反映し、
前記アプリケーションプログラムインタフェースによる処理の結果が存在しない場合には、前記標準プログラム中の実行対象の処理の結果を返却し、前記アプリケーションプログラムインタフェースによる処理の結果が存在する場合には、前記アプリケーションプログラムインタフェースによる処理の結果を返却する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【0002】
各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムが存在する(例えば、特許文献1等を参照)。例えば、電子商取引の仮想店舗を運営するための各種のプログラム(プログラム群)を複数の顧客が共通に利用し、それぞれの顧客が外見上は自前のシステムを運営しているように見せる形態がある。この場合、プログラムの開発側としても、大規模なシステムの開発に要する莫大な開発コストを安定して回収できるメリットがあるとともに、利用側としても、利用の度合いに応じたリーズナブルなコストでシステムを構築することができるというメリットがある。
【0003】
情報処理システムが提供する各種の業務プログラムは、可能な限りそのままの形で利用できるように作られるものではあるが、顧客によっては例外的な処理を望む場合も多い。例えば、商品購入者の電話番号が適切なものであるか否かをチェックするプログラム部分は、市外局番、局番、番号の数字を「−」で区切った形式が一般的であることから、数字と「−」が混在した形式でも許容するように作られるのが一般的である。しかし、顧客によっては、数字以外に「−」が含まれる場合にはエラーにしたいという場合がある。
【0004】
従来、このような例外的な処理に対応するには、本体上のプログラムの処理を、新たに定義した処理によりオーバーライドする手法が用いられる。オーバーライドされた処理が実行される場面では、オーバーライドした処理が実際に実行される。ただし、オーバーライドの手法を利用する場合、本体のシステム内にプログラムを記述しなければならない。例えば、本体がJava(登録商標)で記述されている場合、オーバーライドする処理も本体内にJavaで記述する必要がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2013−33449号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、本体の標準的な業務プログラムと異なる処理を行わせる場合、処理のオーバーライドを行う必要があり、更に本体と同じプログラミング言語を用いなければならず、自由度が低いという問題があった。顧客によっては、独自に改造を行う場合もあるが、既に所有しているプログラム資産が異なるプログラミング言語によるものであったり、使い慣れたプログラミング言語が異なるものであったりする場合、容易に対応することはできない。
【0007】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入できるようにすることにある。
【課題を解決するための手段】
【0008】
上記の課題を解決するため、本発明にあっては、標準プログラム中の実行対象の処理にアプリケーションプログラムインタフェース名を指定したアノテーションの記述が含まれているか否かを判断する手段と、アノテーションの記述が含まれていると判断された場合に、アプリケーションプログラムインタフェース名とアプリケーションプログラムインタフェースの呼び出しアドレスとを対応付けたデータベースを参照し、アノテーションで指定されたアプリケーションプログラムインタフェース名に対応する呼び出しアドレスを取得する手段と、取得した呼び出しアドレスに対して処理要求を送信し、処理結果を受信する手段と、受信した処理結果を前記標準プログラムの処理結果に反映する手段とを備え、前記アプリケーションプログラムインタフェースによる処理の結果
が存在しない場合には、前記標準プログラム中の実行対象の処理の結果を返却
し、前記アプリケーションプログラムインタフェースによる処理の結果が存在する場合には、前記アプリケーションプログラムインタフェースによる処理の結果を返却する。
【発明の効果】
【0009】
本発明にあっては、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入することができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態にかかるシステムの構成例を示す図である。
【
図2】標準プログラムに付加されるAPI用アノテーションの概要を示す図である。
【
図3】API・OUTテーブルのデータ構造例を示す図である。
【
図4】情報処理装置のハードウェア構成例を示す図である。
【
図5】実施形態の処理例を示すフローチャート(その1)である。
【
図6】実施形態の処理例を示すフローチャート(その2)である。
【発明を実施するための形態】
【0011】
以下、本発明の好適な実施形態につき説明する。
【0012】
<構成>
図1は本発明の一実施形態にかかるシステムの構成例を示す図である。
図1において、各種の業務プログラムを複数の顧客にテナントを割り当てて利用させる形態の情報サービスを提供する情報処理装置1は、インターネット等のネットワーク2に接続されている。また、ネットワーク2には、顧客等の管理下にある情報処理装置3や、顧客の運営する電子商取引の仮想店舗等へアクセスする一般ユーザの使用する情報処理装置(端末装置)4も接続される。
【0013】
情報処理装置1には、OS(Operating System)等の基本ソフトのほか、複数の顧客の管理を行う機能を有する基本プログラム11と、EC(Electronic Commerce)ロジック等の標準プログラム(業務プログラム)12とが保持されている。基本プログラム11および標準プログラム12は、Java等のプログラミング言語で記述されており、ソースプログラムとバイナリコードとを含んでいる。標準プログラム12には、処理(function等)を単位に、例外的な処理への代替の可能性があることを示すAPI(Application Program Interface)用アノテーションが付加されている。
【0014】
図2は標準プログラム12にAPI用アノテーションが付加された様子を示している。API用アノテーションの実際上の記述形式は、実装されるプログラムにより異なるが、少なくとも、API用アノテーションであることを識別する記述と、呼出先のAPI名とを含んでいる。
図2において、@Customizableで囲まれている個所がAPI用アノテーションであり、その下のpublic boolean check() throws SQLExceptionが対象となる処理である。なお、API用アノテーションはソースプログラムに付加するが、そのソースプログラムをコンパイルしたバイナリコードにも、API用アノテーションが含まれることになる。
【0015】
図1に戻り、情報処理装置1は、基本プログラム11と標準プログラム12に基づいて本体システムを初期化し、本体システム領域14を構築する本体初期化部13を備えている。本体システム領域14には、本体システムとしての機能を実行する本体システム機能実行部141と、本体システムに固有の本体システムデータ142とが含まれる。
【0016】
また、情報処理装置1は、基本プログラム11と標準プログラム12に基づいて各テナントシステムを初期化し、テナントシステム領域16を構築するテナント初期化部15を備えている。テナントシステム領域16には、顧客の運営する電子商取引の仮想店舗等への一般ユーザまたは管理者のアクセスに応じて標準プログラム12を呼び出す処理呼出部161と、テナントシステムに固有のテナント固有データ162と、標準プログラム12のAPI用アノテーションに対応するAPI情報を保持するAPI・OUTテーブル163とが含まれる。
【0017】
図3はAPI・OUTテーブル163のデータ構造例を示す図であり、「名称(NAME)」「アドレス(URL)」「アプリID(APP_ID)」とを含んでいる。「名称(NAME)」は、API名に、事前処理か事後処理かを示す「/before」「/after」が付いたものとなる。例えば、API名が「admin/member/check」である場合、事前処理を行う場合には「admin/member/check/before」となり、事後処理を行う場合、「admin/member/check/after」となる。「アドレス(URL)」は、対応するAPIの呼出先となるURL(Uniform Resource Locator)である。「アプリID(APP_ID)」は、対応するAPIを有するアプリを識別する情報である。ここに登録されるアプリは、情報処理装置1内のアプリ19でもよいし、ネットワーク接続された外部の情報処理装置3等に保持されるアプリでもよい。テナントシステムの運営者は、標準とは異なる処理を行わせたい場合、処理に付されるAPI用アノテーションに対応させて、アプリのAPI情報をAPI・OUTテーブル163に予め登録を行う。
【0018】
図1に戻り、情報処理装置1は、その他に、プログラム実行部17とAPI呼出部18とを備えている。プログラム実行部17は、各テナントシステム領域16の処理呼出部161からの呼出に応じて標準プログラム12を実行する。API呼出部18は、プログラム実行部17によるプログラム実行時に、API用アノテーションが付加された処理を実行する際に、API・OUTテーブル163を参照し、対応するAPI情報が登録されている場合に、該当するAPIを呼び出す機能を有している。
【0019】
図4は情報処理装置1、3、4のハードウェア構成例を示す図であり、一般的なコンピュータのハードウェア構成である。
図4において、情報処理装置1等は、システムバス101に接続されたCPU(Central Processing Unit)102、ROM(Read Only Memory)103、RAM(Random Access Memory)104、NVRAM(Non-Volatile Random Access Memory)105を備えている。また、情報処理装置1等は、I/F(Interface)106と、I/F106に接続された、I/O(Input/Output Device)107、HDD(Hard Disk Drive)/SSD(Solid State Drive)108、NIC(Network Interface Card)109とを備えている。また、情報処理装置1等は、I/O107に接続されたモニタ110、キーボード111、マウス112等を備えている。I/O107にはCD/DVD(Compact Disk/Digital Versatile Disk)ドライブ等を接続することもできる。
【0020】
図1で説明した情報処理装置1等の機能は、CPU102において所定のプログラムが実行されることで実現される。プログラムは、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ROM組込でもよい。
【0021】
<動作>
図5および
図6は上記の実施形態の処理例を示すフローチャートである。先ず、
図5において、いずれかのテナントシステムの処理呼出部161により何らかの処理の呼出が行われて処理を開始すると、API呼出部18は、標準プログラム12における実行対象の処理に所定のAPI用アノテーションが付加されているか否か判断する(ステップS101)。
【0022】
ここで、実行対象の処理にAPI用アノテーションが付加されていないと判断された場合(ステップS101のNo)、プログラム実行部17は、標準プログラム12から対応する処理を実行し(ステップS102)、標準の処理結果を取得し(ステップS103)、処理結果を呼出元に返却し(ステップS104)、処理を終了する。
【0023】
また、実行対象の処理にAPI用アノテーションが付加されていると判断された場合(ステップS101のYes)、API呼出部18は、API用アノテーションからアノテーション情報を解析し、API名を抽出する(ステップS105)。
【0024】
次いで、API呼出部18は、抽出したAPI名がデータベースとしてのAPI・OUTテーブル163に事前API呼出として登録されているか否か判断する(ステップS106)。すなわち、
図3に示したAPI・OUTテーブル163の「名称(NAME)」に、抽出したAPI名に「/before」を加えた文字列から始まるものが登録されているか否か判断する。
【0025】
API名がAPI・OUTテーブル163に事前API呼出として登録されていると判断された場合(ステップS106のYes)、API呼出部18は、API・OUTテーブル163からアプリ情報、すなわちアドレス(URL)等を取得し(ステップS107)、APIを呼び出し、レスポンスを取得する(ステップS108)。
【0026】
次いで、API呼出部18は、APIのレスポンスを解析し(ステップS109)、APIのレスポンスに処理結果が存在するか否か判断する(ステップS110)。
【0027】
APIのレスポンスに処理結果が存在すると判断された場合(ステップS110のYes)、API呼出部18は、APIから取得した処理結果を標準プログラム12の処理結果として出力し(ステップS111)、処理結果を呼出元の処理呼出部161に返却し(ステップS112)、処理を終了する。すなわち、事前処理のAPIで処理結果が得られた場合には、事前処理のAPIだけを実行して終了する。
【0028】
一方、API名がAPI・OUTテーブル163に事前API呼出として登録されていないと判断された場合(ステップS106のNo)またはAPIのレスポンスに処理結果が存在しないと判断された場合(ステップS110のNo)は、
図6の処理に移行する。すなわち、プログラム実行部17は、標準プログラム12から対応する処理を実行し(ステップS113)、標準の処理結果を取得する(ステップS114)。
【0029】
次いで、API呼出部18は、API用アノテーションから抽出したAPI名がデータベースとしてのAPI・OUTテーブル163に事後API呼出として登録されているか否か判断する(ステップS115)。すなわち、
図3に示したAPI・OUTテーブル163の「名称(NAME)」に、抽出したAPI名に「/after」を加えた文字列から始まるものが登録されているか否か判断する。
【0030】
API名がAPI・OUTテーブル163に事後API呼出として登録されていると判断された場合(ステップS115のYes)、API呼出部18は、API・OUTテーブル163からアプリ情報、すなわちアドレス(URL)等を取得し(ステップS116)、APIを呼び出し、レスポンスを取得する(ステップS117)。
【0031】
次いで、API呼出部18は、APIのレスポンスを解析し(ステップS118)、APIのレスポンスに処理結果が存在するか否か判断する(ステップS119)。
【0032】
APIのレスポンスに処理結果が存在すると判断された場合(ステップS119のYes)、API呼出部18は、APIから取得した処理結果を標準プログラム12の処理結果に上書きし(ステップS120)、処理結果を呼出元の処理呼出部161に返却し(ステップS121)、処理を終了する。
【0033】
一方、API名がAPI・OUTテーブル163に事後API呼出として登録されていないと判断された場合(ステップS115のNo)またはAPIのレスポンスに処理結果が存在しないと判断された場合(ステップS119のNo)は、標準プログラム12の処理結果を呼出元に返却し(ステップS122)、処理を終了する。
【0034】
図7はAPIの呼出の例を示す図であり、商品購入者の情報の登録可否をチェックする処理の例を示している。前提として、標準プログラム12による対応する処理では、電話番号について数字と「−」が混在した形式でも許容するものとしているのに対し、代替させるAPIでは数字以外に「−」が含まれる場合を許可しないものとしている。
【0035】
図7(a)はチェック対象となる商品購入者の情報の例を示しており、最後から3行目〜4行目の「TEL」は「090-1111-1111」となっており、「−」が含まれている。
図7(b)は標準プログラム12による処理結果を示しており、「TRUE」(登録可)が返される。これに対し、
図7(c)はAPI呼出による処理結果の例を示しており、メッセージとして「電話番号には−は入力できません。」とされ、チェック結果として「FALSE」(登録否)が返されている。
【0036】
このAPIによる処理は、標準プログラム12による処理よりも前に行ってもよいし、後に行ってもよい。前に行う場合には、標準プログラム12による処理は行われない。後に行う場合には、標準プログラム12による処理結果がAPIによる処理結果により上書きされる。
【0037】
なお、処理結果を返すAPIの例について説明したが、処理結果を返さないAPIについては、APIにより呼び出された処理の中でテナントシステムの状態等を変更することができ、対象となる処理の前または後(前と後の両方も可)に実行することで、その後の処理の挙動を修正することができる。
【0038】
<総括>
以上説明したように、本実施形態によれば、各種の業務プログラムを複数の顧客に利用させる形態の情報処理システムにおいて、例外的な処理を容易に導入することができる。
【0039】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【0040】
1 情報処理装置
11 基本プログラム
12 標準プログラム
13 本体初期化部
14 本体システム領域
141 本体システム機能実行部
142 本体システムデータ
15 テナント初期化部
16 テナントシステム領域
161 処理呼出部
162 テナント固有データ
163 API・OUTテーブル
17 プログラム実行部
18 API呼出部
19 アプリ
2 ネットワーク
3、4 情報処理装置