【文献】
森崎 潤 他,複数のソースファイルでハードコード化された情報に対する保守支援ツールの試作,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2007年11月12日,Vol.107 No.331,pp. 37-42,[ISSN]0913-5685
(58)【調査した分野】(Int.Cl.,DB名)
コンピュータ実行可能命令を格納するコンピュータ読取り可能プログラムであって、前記コンピュータ実行可能命令は、コンピュータのプロセッサによって実行されると、前記プロセッサに、
第1のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ(REST)ユニフォーム・リソース・ロケータ(URL)のうち少なくとも1つを含み、前記コンピュータ実行可能命令はさらに、
閾値未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、前記親トランザクションテーブルは主親キーおよび主子キーを含み、前記コンピュータ実行可能命令はさらに、
前記閾値よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、前記子トランザクションテーブルは、前記主親キー、前記主子キー、および前記親トランザクションテーブルの名前を含み、前記コンピュータ実行可能命令はさらに、
ブロックチェーンネットワークを介して前記第1のエンティティの第1のコンピューティングデバイスと第2のエンティティの第2のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
前記スタティックメンテナンステーブル内の前記ハードコード化されたプロパティを用いて前記トランザクションを確認させ、
前記トランザクションの引数の順序に従って、前記親トランザクションテーブルのカラムおよび前記子トランザクションテーブルのカラムに値をポピュレートさせ、
前記親トランザクションテーブルおよび前記子トランザクションテーブルを利用して、前記ブロックチェーンネットワークを介する、前記第2のコンピューティングデバイスに対する前記トランザクションの通信を容易にさせる、コンピュータ読取り可能プログラム。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
一実施形態において記載されている非一時的なコンピュータ読取り可能媒体および/またはコンピュータプログラムは、コンピュータ実行可能命令を格納している。コンピュータ実行可能命令は、コンピュータのプロセッサによって実行されると、当該プロセッサに、
第1のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ(representational state transfer:REST)ユニフォーム・リソース・ロケータ(uniform resource locator:URL)のうち少なくとも1つを含み、当該コンピュータ実行可能命令はさらに、
閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、当該親トランザクションテーブルは主親キーおよび主子キーを含み、当該コンピュータ実行可能命令はさらに、
当該閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、子トランザクションテーブルは、主親キー、主子キー、および親トランザクションテーブルの名前を含み、当該コンピュータ実行可能命令はさらに、
ブロックチェーンネットワークを介して当該エンティティの第1のコンピューティングデバイスと第2のエンティティの第2のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
スタティックメンテナンステーブル内のハードコード化されたプロパティを用いてトランザクションを確認させ、
トランザクションの引数の順序に従って、親トランザクションテーブルのカラムおよび子トランザクションテーブルのカラムに値をポピュレートさせ、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する、第2のコンピューティングデバイスに対するトランザクションの通信を容易にさせる。
【0004】
1つ以上の他の実施形態においては、非一時的なコンピュータ読取り可能媒体は以下の特徴の1つ以上の組合せを実行するために、実行可能命令を、上述の特徴と組合わせて含み得る。当該以下の特徴は、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する第2のコンピューティングデバイスに対するトランザクションの通信を容易にする特徴と、
テーブルオブジェクトファイルを利用して、テーブルオブジェクトファイル内のテーブル構造情報を用いてスタティックメンテナンステーブル、親トランザクションテーブルおよび子トランザクションテーブルを作成する特徴と、
ハードコード化されたプロパティをスタティックメンテナンステーブルに追加する機能を実行する特徴と、
スタティックメンテナンステーブル内のハードコード化されたプロパティを更新する機能を実行する特徴と、
ハードコード化されたプロパティを無効にするとともに、ハードコード化されたプロパティが用いられるという判断に応じて、ハードコード化されたプロパティを有効にする機能を実行する特徴と、
ブロックチェーンネットワークを介して第2のエンティティと通信するのに用いられる、ハードコード化されたプロパティのセットを識別するためにスタティックメンテナンステーブルにクエリするとともに、ハードコード化されたプロパティのセットを用いて、ブロックチェーンネットワークを介してトランザクションを送信する特徴と、
最初のトランザクションであるトランザクションに基づいてトランザクションのトランザクション識別子を主親キーとして格納する特徴と、
カレントトランザクションのカレントトランザクション識別子を主子キーとして格納する特徴とを含む。
【0005】
別の実施形態においては、この明細書中に開示されるコンピュータシステムは、メモリに接続されたプロセッサと、非一時的なコンピュータ読取り可能媒体に格納されるとともに命令で構成されたトランザクション管理モジュールとを含む。当該命令は、プロセッサによって実行されると、当該プロセッサに、
第1のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ(REST)ユニフォーム・リソース・ロケータ(URL)のうち少なくとも1つを含み、当該命令はさらに、
閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、当該親トランザクションテーブルは主親キーおよび主子キーを含み、当該命令はさらに、
当該閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、子トランザクションテーブルは、主親キー、主子キー、および親トランザクションテーブルの名前を含み、当該命令はさらに、
ブロックチェーンネットワークを介して当該エンティティの第1のコンピューティングデバイスと第2のエンティティの第2のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
スタティックメンテナンステーブル内のハードコード化されたプロパティを用いてトランザクションを確認させ、
トランザクションの引数の順序に従って、親トランザクションテーブルのカラムおよび子トランザクションテーブルのカラムに値をポピュレートさせ、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する第2のコンピューティングデバイスに対するトランザクションの通信を容易にさせる。
【0006】
1つ以上の他の実施形態においては、コンピュータシステムはさらに、以下の特徴のうち1つ以上の組合せを実行するための実行可能命令を、上述の特徴と組合わせて、含む。当該以下の特徴は、
親トランザクションテーブルおよび子トランザクションテーブルのうち少なくとも1つにトランザクションの状態を格納するために用いられる状態カラムをポピュレートする特徴と、
親トランザクションテーブルおよび子トランザクションテーブルのうち少なくとも1つに、トランザクションの宛先を追跡するために用いられる宛先エンティティカラムと、トランザクションの発信元を追跡するために用いられる発信元エンティティカラムとをポピュレートする特徴と、
親トランザクションテーブルおよび子トランザクションテーブル内のカラムの数を判断するためにテーブルオブジェクトファイルを反復処理することにより更新の引数の数を確認することと、引数の数をカラムの数に対応するものと確認することに応じて、引数の順序に従って値を挿入するために親トランザクションテーブルおよび子トランザクションテーブルを反復処理することによって更新を実現することと、によって、トランザクションを更新する機能を実行する特徴と、
トランザクションについての要求を受取り、トランザクションのデータにアクセスするために子主キーと、親主キーとを用いて子トランザクションテーブルにクエリし、トランザクションのデータにアクセスするために親主キーを用いて親トランザクションテーブルにクエリする特徴とを含み、
子主キーはカレントトランザクション識別子を含み、当該以下の特徴はさらに、
失敗したトランザクションのアレイリストを維持し、アレイリスト内の失敗したトランザクションのために最後のトランザクション通信を試みてから経過する時間のしきい値量に応じて、失敗したトランザクションをブロックチェーンネットワークを介して送信しようと試みる特徴を含む。
【0007】
明細書において援用され、その一部を構成する添付の図面は、開示されているさまざまなシステム、方法および他の実施形態を示す。図に例示される要素の境界(たとえば、箱、箱の群または他の形状)が、これら境界の一実施形態を表わすことが認識され得る。いくつかの実施形態においては、1つの要素が複数の要素として実現されてもよく、または、複数の要素が1つの要素として実現されてもよい。いくつかの実施形態においては、別の要素の内部コンポーネントとして示される要素が外部コンポーネントとして実現されてもよく、この逆であってもよい。さらに、要素は縮尺通りには図示されないこともある。
【発明を実施するための形態】
【0009】
詳細な説明
ブロックチェーンネットワークを介して通信されるトランザクションを管理する、コンピュータ化されたシステムおよび方法をこの明細書中に記載する。チェーンコード付きのハイパーレッジャーコンポーネントなどのトランザクション管理モジュールは、さまざまなタイプのブロックチェーンネットワークおよび/またはブロックチェーンネットワークの将来のインプリメンテーションに接続するとともにそれらを介して通信するように構成可能である。各々のブロックチェーンプロバイダは、他のブロックチェーンプロバイダによるインプリメンテーションとは異なり得るブロックチェーンネットワークのそれら自体のインプリメンテーションを提供することができるので、トランザクション管理モジュールは、ブロックチェーンネットワークの現在のインプリメンテーションと将来のインプリメンテーションとに接続するための拡張可能なメカニズムを提供している。このようにして、相当な量のコンピューティングリソースおよびストレージリソースを保存することができる。なぜなら、ブロックチェーンネットワークのタイプごとにカスタムのプログラミングコードの書込み、格納および実行を行なう必要がないからである。
【0010】
トランザクション管理モジュールはまた、ブロックチェーンネットワークを介して通信することとなっているさまざまなタイプのアプリケーションに接続して当該さまざまなタイプのアプリケーションと通信するように構成可能である。このため、トランザクション管理モジュールは、使用事例ごとにカスタムプログラミングコードを作成する必要なしに、さまざまなタイプのビジネス使用事例のインプリメンテーションを容易にすることができる。このようにして、トランザクション管理モジュールは、さまざまなコンピューティングデバイスによってホストされるアプリケーション間でトランザクションなどのメッセージのルーティングを容易にすることができる。
【0011】
図1Aを参照すると、ブロックチェーンネットワーク115を介して通信されるトランザクションの管理に関連するコンピュータシステム100の一実施形態が示される。コンピュータシステム100は、
図5のコンピュータ515などのコンピュータ上で実行するように構成可能なトランザクション管理モジュール105を含む。トランザクション管理モジュール105は、さまざまなタイプのブロックチェーンネットワークを介したさまざまなタイプのアプリケーション間でのさまざまな使用事例についてのメッセージの送信を容易にするように構成されている。一実施形態においては、トランザクション管理モジュール105は、第1の銀行と第2の銀行との間のトランザクションを容易にするなどのために、第1の銀行の第1の銀行アプリケーションと第2の銀行の第2の銀行アプリケーションとの間にブロックチェーンネットワーク115を介する通信を提供するように構成される。いくつかの例において、トランザクションおよびメッセージという語は、ブロックチェーンネットワークを介する2つのエンティティ間またはコンピューティングデバイス間の通信を指すものとして同義で使用できることが認識され得る。
【0012】
トランザクション管理モジュール105は、テーブルオブジェクトファイルを利用して、スタティックメンテナンステーブル125、親トランザクションテーブル130、子トランザクションテーブル135、および/または、ブロックチェーンネットワーク115を介するトランザクションをルーティングするために利用される他のテーブルを作成することができる。一実施形態においては、テーブルオブジェクトファイルは、テーブルjsonファイル、または、XMLなどの他の何らかのデータフォーマットを有するファイルを含む。テーブルオブジェクトファイルは、データベース内にテーブルを作成するために使用することができるデータを含む。テーブルオブジェクトファイルは、トランザクションデータを格納するであろうテーブルについての構造フォーマット、たとえば、特定のテーブル、カラム、ロウ、予想されるデータタイプなどを規定する構造フォーマットなど、を含み得る。このようにして、テーブルオブジェクトファイル内のテーブル構造情報を用いてテーブルを作成する。
【0013】
トランザクション管理モジュール105は、第1のエンティティのハードコード化されたプロパティを格納するためにスタティックメンテナンステーブル125を維持する。第1のエンティティが銀行である一実施形態においては、ハードコード化されたプロパティは、銀行コード、プロキシ、トランザクションを処理するための銀行のビジネス論理(たとえば、銀行への/からの送金を処理するための論理)、銀行識別子などを含む。トランザクション管理モジュール105は、銀行プロパティがハードコード化され、適切に維持され、必要に応じて更新され、必要に応じて呼出されることを確実にする。一実施形態においては、ハードコード化されたプロパティは、銀行のサーバ/サービスのホスト名、プロキシ、銀行の銀行コードなどのエンティティ識別子、および/または、金融銀行アダプタが機能しているレプレゼンテーショナル・ステート・トランスファ(REST)ユニフォーム・リソース・ロケータ(URL)を含む。トランザクション管理モジュール105は、ハードコード化されたプロパティを追加し、ハードコード化されたプロパティを更新し、ハードコード化されたプロパティを無効にし、および/または、ハードコード化されたプロパティを有効にする機能を実行するように構成される。
【0014】
別の実施形態においては、スタティックメンテナンステーブル125は、
図1Bに示されるように、銀行識別子カラム、銀行コードカラム、プロキシカラム、ホスト名カラム、ハイパーレッジャーカラムおよびREST URLカラムのうち1つ以上を含む。銀行名または他の銀行識別子は銀行識別子カラム内にポピュレートされる。銀行を世界的に識別する国際銀行コード(国際銀行間通信協会(Society for Worldwide Interbank Financial Telecommunication:SWIFT)コードまたは銀行識別コード(Bank Identification Code:BIC)は、銀行コードカラム内にポピュレートされる。プロキシならびに/または他のシステムおよび機能関連のユーティリティのプロパティはプロキシカラム内にポピュレートされる。銀行サーバ/サービスのホスト名はホスト名カラム内にポピュレートされる。銀行によって用いられているハイパーレッジャーは、ハイパーレッジャーカラム内にポピュレートされる。ハイパーレッジャーは、銀行のトランザクションを記録するために銀行によって用いられる。銀行のRESTfulウェブサービスのURLなどの銀行のREST URLは、REST URLカラムに格納される。
【0015】
トランザクション管理モジュール105は、稀にしか更新されない銀行データなどの、閾値頻度よりも低い頻度で更新されるデータのカラムを含むように親トランザクションテーブル130を維持する。親トランザクションテーブル130は、(たとえば、最初のトランザクションの最初のトランザクション識別子に対応する)親トランザクションテーブル130の主親キーと、(たとえば、カレントトランザクションのカレントトランザクション識別子に対応する)子トランザクションテーブル135の主子キーとを含む。
【0016】
一実施形態においては、親トランザクションテーブル130は、
図1Bに示されるように、希にしか更新されない銀行およびトランザクションデータの1つ以上のカラム、状態カラム、トランザクション宛先カラム、トランザクション発信元カラム、応答データカラム、ならびに、通知送信側/受信側カラムを含む。親トランザクションテーブル130の各々のロウは特定のトランザクションに対応し得る。(たとえばトランザクションが最初にハイパーレッジャーを入力するときに)未処理である、処理の準備ができている、および/または、他のトランザクション処理段階などのトランザクションの状態が状態カラム内にポピュレートされる。トランザクションの宛先銀行がトランザクション宛先カラム内にポピュレートされ、トランザクションの発信元銀行がトランザクション発信元カラム内にポピュレートされる。応答データカラムは、さまざまなトランザクション処理段階に基づいて発信元銀行と宛先銀行との間で定期的に交換される情報を格納するために用いられる。発信元銀行(送信側)および宛先銀行(受信側)に短いトランザクションメッセージが送信されるべきであるかどうかを示すブール値が通知送信側/受信側カラム内に格納される。
【0017】
トランザクション管理モジュール105は、頻繁に更新される銀行データなどの閾値頻度よりも高い頻度で更新されるデータのカラムを含むように子トランザクションテーブル135を維持する。子トランザクションテーブル135は、主親キー、主子キー、および親トランザクションテーブル130の名前を含む。一実施形態においては、子トランザクションテーブル135は、
図1Bに示されるように、頻繁に更新された銀行およびトランザクションデータの1つ以上のカラム、状態カラム、トランザクション宛先カラム、トランザクション発信元カラム、応答データカラム、ならびに、通知送信側/受信側カラムを含む。子トランザクションテーブル135の各ロウは特定のトランザクションに対応し得る。未処理である、処理の準備ができている、および/または、他のトランザクション処理段階などのトランザクションの状態が状態カラム内にポピュレートされる。トランザクションの宛先銀行がトランザクション宛先カラム内にポピュレートされるとともに、トランザクションの発信元銀行がトランザクション発信元カラム内にポピュレートされる。応答データカラムは、さまざまなトランザクション処理段階に基づいて発信元銀行と宛先銀行との間で定期的に交換される情報を格納するために用いられる。発信元銀行(送信側)および宛先銀行(受信側)に短いトランザクションメッセージが送信されるべきであるかどうかを示すブール値が通知送信側/受信側カラム内に格納される。
【0018】
トランザクション管理モジュール105は、ブロックチェーンネットワーク115を介して第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間で通信するためにトランザクションを受取る。一実施形態においては、トランザクションがアプリケーション110によって作成されていた。アプリケーション110はメッセージングモジュール140にトランザクションを送信する。次いで、このトランザクションは、ブロックチェーンネットワーク115を介してコンピューティングデバイス120に送信するためにメッセージングモジュール140からトランザクション管理モジュール105に送信される。別の実施形態においては、トランザクションが、コンピューティングデバイス120からブロックチェーンネットワーク115を介してトランザクション管理モジュール105によって受取られる。このトランザクションは、トランザクション管理モジュール105からメッセージングモジュール140にルーティングされて、処理されるとともにアプリケーション110に送達されることとなる。
【0019】
トランザクション管理モジュール105は、スタティックメンテナンステーブル125内のハードコード化されたプロパティを用いてトランザクションを確認する。一実施形態においては、ハードコード化されたプロパティは、発信元銀行コードおよび宛先銀行コードが有効であるかどうか、トランザクションが適切なセキュリティおよび認証を有しているかどうか、などを判断するために用いられる。一実施形態においては、トランザクションの銀行コード(または銀行識別子)は、当該銀行コードが維持されている発信元コードのリストに属するかどうかを最初に判断することによって確認される。次に、銀行コードが維持されている宛先コードのリストに属するかどうかが判断される。最後に、発信元銀行コードおよび宛先銀行コードが同じではないことを確実にするための判断がなされる。確認がなされると、トランザクションの引数と同じ順序で値をテーブルにポピュレートすることによって、親トランザクションテーブル130および/または子トランザクションテーブル135にトランザクションが追加される。
【0020】
トランザクション管理モジュール105は、トランザクションの引数の順序に従って、親トランザクションテーブル130および/または子トランザクションテーブル135のカラムに値をポピュレートするように構成される。トランザクション管理モジュール105は、最初のトランザクションであるトランザクションに基づいてトランザクションのトランザクション識別子を主親キーとして格納してもよい。トランザクションがカレントトランザクションである場合、トランザクション管理モジュール105はトランザクション識別子を主子キーとして格納してもよい。トランザクション管理モジュール105は、トランザクションの状態を格納するために用いられる状態カラムをテーブルにポピュレートしてもよい。状態は、未処理である、処理の準備ができているなどの現在のトランザクション処理段階に基づいて変化し得る。トランザクション管理モジュール105は、トランザクションの宛先を追跡するために用いられる宛先エンティティカラム(たとえば、宛先銀行名および/またはコード)と、トランザクションの発信元を追跡するために用いられる発信元エンティティカラム(たとえば、発信元銀行名および/またはコード)とをテーブルにポピュレートすることができる。トランザクション管理モジュール105は、さまざまなトランザクション処理段階に基づいて発信元と宛先との間で定期的に交換される情報(たとえば、閾値頻度よりも高い頻度でアクセスされる情報、処理される情報、送信される情報など)を格納するために用いられる応答カラムをテーブルにポピュレートすることができる。トランザクション管理モジュール105は、トランザクションからの更新済みの値を含む短いメッセージが発信元に送信されるべきかどうかを示す、ブール値などの通知送信側変数をテーブルにポピュレートすることができる。
【0021】
トランザクションを追加する一実施形態においては、トランザクション管理モジュール105は、スタティックメンテナンステーブル125内のハードコード化されたプロパティでトランザクションの銀行識別子および/または銀行コードを確認することにより、トランザクションをテーブル内に追加する。一実施形態においては、トランザクションの銀行コードのうち1つの銀行コードが維持された宛先銀行コードのリスト内にある場合にトランザクションの銀行コードのうち別の銀行コードが維持された発信元銀行コードのリスト内にあるかどうか、および/または、発信元銀行コードと宛先銀行コードとが異なっているかどうかについての判断がなされる。確認後、親キーカラムおよび子キーカラムを最初の2つのカラムとして親トランザクションテーブル130内に追加することなどによって、親キーカラムおよび子キーカラムを親トランザクションテーブル130内に追加することによって、トランザクションが追加される。親トランザクションテーブル130は、トランザクションの引数と同じ順序でトランザクションの値を親トランザクションテーブル130に入力することによって反復される。次に、子トランザクションテーブル135に最初の2つのカラムとして追加されるような、主子キーおよび主親キーなどの子キーおよび親キーの各々が子トランザクションテーブル135に追加される。子トランザクションテーブル135は、トランザクションの引数と同じ順序でトランザクションの値を子トランザクションテーブル135に入力することによって反復される。
【0022】
トランザクションを更新する一実施形態においては、更新すべきテーブルにおけるカラムの数を識別するためにテーブルを作成するのに用いられるテーブルオブジェクトファイルを反復処理することによって更新の引数の数を検証することにより、更新が確認される。トランザクションは、更新の引数と同じ順序で更新からの値を入力することにより、対象となるテーブルを反復処理することによって更新される。主子キーなどの子キーは、子トランザクションテーブル135および親トランザクションテーブル130において更新される。
【0023】
トランザクションにクエリする一実施形態においては、トランザクション管理モジュール105は、主子キーおよび主親キーの概念を用いてトランザクションにクエリする。このトランザクションは、カレントトランザクション識別子と等しい主子キーを用いて、子トランザクションテーブル135からカラムをフェッチすることによってクエリされる。これにより、頻繁に更新されるカラムのデータが提供される。カレントトランザクション識別子としての主子キーは、それほど頻繁に更新されないカラム内のデータについて親トランザクションテーブル130にクエリするのに使用できる主親キーを見出すために用いられる。このようにして、主親キーおよび主子キーは、トランザクションについてのクエリを完了するために用いられる。クエリの結果は、エントリがカンマ区切りされているjsonフォーマットなどのストリングを含む可能性がある。
【0024】
エラー処理の一実施形態においては、失敗したトランザクションのアレイリストが維持される。アレイリスト内の失敗したトランザクションのために、最後のトランザクション通信が試みられてから経過する時間のしきい値量に応じて、ブロックチェーンネットワーク115を介して当該失敗したトランザクションを送信する試みが再び試行される(たとえば、HTTP投稿の実行)。成功した場合、失敗したトランザクションがアレイリストから削除される。
【0025】
イベントリスニングの一実施形態においては、機能を起動する呼出しがイベントリスナーをトリガし得る。親トランザクション識別子としての主親キーは、対応するトランザクションをフェッチするために用いられる。親トランザクション識別子は、トランザクションの発信元銀行および宛先銀行などの発信元エンティティおよび宛先エンティティを識別するためにエンティティ情報にクエリするのに用いられる。発信元エンティティまたは宛先エンティティの識別子がアプリケーション110の識別子と一致する場合、呼出しが処理されるが、それ以外の場合には、呼出しは無視される。なぜなら、その呼出しはブロックチェーンネットワーク115を介してアクセス可能な別のエンティティに関係しているからである。通知送信側および通知受信側のブール変数は、トランザクションのメッセージを如何にフォーマットするか、ならびに、発信元エンティティおよび宛先エンティティにどんなメッセージを送信するか、を判断するためにチェックすることができる。トランザクションがインサートトランザクションである場合、宛先エンティティは、通知受信側の値にかかわらず、全メッセージを得る(たとえば、トランザクション全体に関するメッセージ)。通知送信側が該当する場合、発信元エンティティは短いメッセージを送り、それ以外の場合、メッセージは送信されない。トランザクションが更新トランザクションである場合、通知受信側が該当する場合、宛先エンティティは短いメッセージを得る(たとえば、トランザクションに対する更新に関するメッセージ)。それ以外の場合、メッセージは送信されない。通知送信側が該当する場合、宛先エンティティは短いメッセージを得る。それ以外の場合、メッセージは送信されない。
【0026】
トランザクション管理モジュール105は、コンピューティングデバイス120などの宛先に対するブロックチェーンネットワーク115を介するトランザクションの通信を容易にするために親トランザクションテーブル130および/または子トランザクションテーブル135を利用する。一実施形態においては、スタティックメンテナンステーブル125は、ブロックチェーンネットワーク115を介して宛先と通信するのに用いられるハードコード化されたプロパティのセットを識別するためにクエリされる。ハードコード化されたプロパティのセットはブロックチェーンネットワーク115を介してトランザクションを送信するために用いられる。ハードコード化されたプロパティのセットは、使用すべき通信メカニズムを指定し得た。一実施形態においては、通信メカニズムは、データベースを介するメッセージの通知を伝えるためのクエリ変更通知メカニズムを含む。別の実施形態においては、通信メカニズムは、待ち行列を介してメッセージを伝えるための待ち行列メカニズムを含む。別の実施形態においては、通信メカニズムは、メッセージテーブルからメッセージを抜出すためにテーブル化ポーリングメカニズムを含む。別の実施形態においては、通信メカニズムは、RESTfulサーバからメッセージを受取るためのハイパーテキスト転送プロトコル(hypertext transfer protocol:HTTP)RESTメカニズムを含む。別の実施形態においては、通信メカニズムは、メッセージを受取るためのソケットメカニズムを含む。別の実施形態においては、通信メカニズムは、通信のためのシンプル・オブジェクト・アクセス・プロトコル(simple object access protocol:SOAP)メカニズムを含む。
【0027】
一実施形態においては、トランザクションについての要求がトランザクション管理モジュール105によって受取られる。子トランザクションテーブル135は、トランザクションのデータにアクセスするための子主キーと、親主キーとを用いて、トランザクション管理モジュール105によってクエリされる。子主キーは、トランザクションのカレントトランザクション識別子を含み得る。トランザクション管理モジュール105は、トランザクションのデータにアクセスするための親主キーを用いて、親トランザクションテーブル130にクエリする。
【0028】
一実施形態においては、トランザクションを更新する命令がトランザクション管理モジュール105によって受取られる。したがって、トランザクション管理モジュール105は、トランザクションを更新する機能を実行する。特に、更新の引数の数は、親トランザクションテーブル130および/または子トランザクションテーブル135内のカラムの数を判断するためにテーブルオブジェクトファイルを反復処理することによって確認される。引数の数をカラムの数に対応するものとして確認することに応じて、引数の順序に従って更新の値を挿入するために、親トランザクションテーブル130および/または子トランザクションテーブル135を反復処理することによって、更新が実現される。
【0029】
図2を参照すると、ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連する、コンピュータによって実現される方法200の一実施形態が示される。一実施形態においては、方法200は、トランザクションの受取り、格納、処理および/または送信に関連付けられた命令を実行するために、プロセッサ520などのコンピュータ515のさまざまなコンピューティングリソースを利用して、トランザクション管理モジュール105によって実行される。メモリ535および/またはディスク555は、トランザクションデータ、スタティックメンテナンステーブル125、親トランザクションテーブル130、子トランザクションテーブル135などを格納するために用いられる。ネットワークハードウェアは、ブロックチェーンネットワークなどのネットワークを介してコンピュータ515とリモートコンピュータとの間でデータ構造および/または他のデータを通信するために用いられる。方法200は、トランザクションを格納する要求、トランザクションを処理する要求および/またはトランザクションを送信する要求を受取るとトリガされる。
【0030】
205において、トランザクション管理モジュール105は、
図3Aの例示的なシステム300によって示されるように、第1の銀行などの第1のエンティティのハードコード化されたプロパティがポピュレートされたスタティックメンテナンステーブル125を維持する。ハードコード化されたプロパティは、第1の銀行に関連付けられたコンピューティングデバイスのホスト名、プロキシ、第1の銀行の識別子、REST/URL、および/または、第1の銀行の他のプロパティを含み得る。同様に、第2の銀行などの第2のエンティティに関連付けられた第2のトランザクション管理モジュール305は、第2のエンティティのハードコード化されたプロパティの第2のスタティックメンテナンステーブル310を維持し得る。
【0031】
210において、トランザクション管理モジュール105は、閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブル130を維持する。同様に、第2のトランザクション管理モジュール305は、閾値頻度未満の頻度で更新されるデータのカラムを含む第2の親トランザクションテーブル315を維持する。
【0032】
215において、トランザクション管理モジュール105は、閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブル135を維持する。同様に、第2のトランザクション管理モジュール305は、閾値頻度よりも高い頻度で更新されるデータのカラムを含む第2の子トランザクションテーブル320を維持する。
【0033】
一実施形態においては、トランザクションに関連付けられたメッセージは、アプリケーション110からメッセージングモジュール140によって受取られ、当該メッセージが送信(390)されて、ブロックチェーンネットワーク115を介して第2のアプリケーション325に送達(395)される。一実施形態においては、メッセージは、第1の銀行と第2の銀行との間のトランザクションに関連している可能性があり、このため、第1の銀行のアプリケーション110からブロックチェーンネットワーク115を介して第2の銀行の第2のアプリケーション325に送信されている。メッセージは、チャネル構成(たとえば、アプリケーション110によって用いられる通信機能の選択およびインプリメンテーション)に従ってチャネル・イン・インターフェイス335を通じて受取られる。パーサーコンポーネント345は、さらなる処理のために、パーサー構成を用いて、メッセージをメッセージオブジェクトにパースする。
【0034】
プロセッサコンポーネント350は、トランザクションの発信元銀行および宛先銀行が有効であることを確実にするなどのために、確認および論理を用いてメッセージオブジェクトを処理するためにプロセッサ構成を用いる。トランスレーションコンポーネント355は、トランザクション管理モジュール105などの宛先によって用いられるフォーマットを有するフォーマットされたメッセージにメッセージをフォーマットするためにトランスレーション構成を用いる。フォーマットされたメッセージは、チャネル構成(たとえば、トランザクション管理モジュール105によって用いられる通信機能の選択およびインプリメンテーション)に従って、チャネル・アウト・インターフェイス340を介してトランザクション管理モジュール105にルーティングされる。
【0035】
220において、トランザクションは、トランザクション管理モジュール105によって受取られる。225において、トランザクションは、スタティックメンテナンステーブル125内のハードコード化されたプロパティを用いて確認される。230において、メッセージによって指定されるとおりトランザクションの引数の順序に従って、値が親トランザクションテーブル130および/または子トランザクションテーブル135のカラムにポピュレートされる。235において、親トランザクションテーブル130、子トランザクションテーブル135および/またはスタティックメンテナンステーブル125を用いて、フォーマットされたメッセージなどのトランザクションをブロックチェーンネットワーク115を介して第2のトランザクション管理モジュール305にルーティングする。第2のトランザクション管理モジュール305は、第2のスタティックメンテナンステーブル310、第2の親トランザクションテーブル315および/または第2の子トランザクションテーブル320を用いて、トランザクションを受取り、処理して第2のメッセージングモジュール360にルーティングし得る。このようにして、第2のトランザクション管理モジュール305はフォーマットされたメッセージをルーティングされたメッセージとして受取る。第2のメッセージングモジュール360は、チャネル構成(たとえば、第2のトランザクション管理モジュール305によって用いられる通信機能の選択およびインプリメンテーション)に従って、ルーティングされたメッセージを、第2のトランザクション管理モジュール305から第2のチャネル・イン・インターフェイス365を通じて受取る。
【0036】
第2のメッセージングモジュール360の第2のパーサーコンポーネント375、第2のプロセッサコンポーネント380および第2のトランスレーションコンポーネント385は、ルーティングされたメッセージを処理して、フォーマットされたメッセージを作成する。フォーマットされたメッセージは、チャネル構成(たとえば、第2のアプリケーション325によって用いられる通信機能の選択およびインプリメンテーション)に従って、第2のチャネル・アウト・インターフェイス370を通じてルーティングされて、第2のアプリケーション325に送達される(395)。
【0037】
図3Bは、アプリケーション110に送達(399)すべき第2のメッセージを送信する(397)第2のアプリケーション325を示す。第2のメッセージングモジュール360は、チャネル構成(たとえば、第2のアプリケーション325によって用いられる通信機能の選択およびインプリメンテーション)に従ってチャネル・イン・インターフェイス365を通じて第2のメッセージを受取る。第2のメッセージングモジュール360の第2のパーサーコンポーネント375、第2のプロセッサコンポーネント380および第2のトランスレーションコンポーネント385は、第2のメッセージを処理して第2のフォーマットされたメッセージを作成する。第2のフォーマットされたメッセージは、チャネル構成(たとえば、第2のトランザクション管理モジュール305によって用いられる通信機能の選択およびインプリメンテーション)に従ってチャネル・アウト・インターフェイス370を通じて第2のトランザクション管理モジュール305にルーティングされる。
【0038】
第2のトランザクション管理モジュール305は、第2のスタティックメンテナンステーブル310、第2の親トランザクションテーブル315および/または第2の子トランザクションテーブル320を利用して、第2のメッセージに関連付けられた第2のトランザクションをブロックチェーンネットワーク115を介して受取り、処理および/またはルーティングする。第2のトランザクション管理モジュール305は、第2のフォーマットされたメッセージを、ブロックチェーンネットワーク115を介してトランザクション管理モジュール105にルーティングする。このようにして、トランザクション管理モジュール105は第2のフォーマットされたメッセージを第2のルーティングされたメッセージとして受取る。メッセージングモジュール140は、チャネル構成(たとえば、トランザクション管理モジュール105によって用いられる通信機能の選択およびインプリメンテーション)に従って、トランザクション管理モジュール105からチャネル・イン・インターフェイス335を通じて第2のルーティングされたメッセージを受取る。
【0039】
メッセージングモジュール140のパーサーコンポーネント345、プロセッサコンポーネント350およびトランスレーションコンポーネント355は、第2のルーティングされたメッセージを処理して、第2のフォーマットされたメッセージを作成する。第2のフォーマットされたメッセージは、チャネル構成(たとえば、アプリケーション110によって用いられる通信機能の選択およびインプリメンテーション)に従って、チャネル・アウト・インターフェイス340を通じてルーティングされてアプリケーション110に送達(399)される。
【0040】
図4は、例示的な非一時的なコンピュータ読取り可能媒体405に関するシナリオ400を示す。一実施形態においては、この明細書中に記載されるコンポーネントのうち1つ以上は、非一時的なコンピュータ読取り可能媒体405に格納されたトランザクション管理モジュール105などのプログラムモジュールとして構成される。プログラムモジュールは、プロセッサ実行可能命令420などの格納された命令で構成される。プロセッサ実行可能命令420は、少なくともプロセッサ440などのプロセッサによって実行されると、コンピューティングデバイスに、この明細書中に記載される対応する機能を実行させる。一実施形態においては、非一時的なコンピュータ読取り可能媒体405に格納されるトランザクション管理モジュール105の機能は、
図2の方法200の実施形態425を実行するために、プロセッサ実行可能命令420としてプロセッサ440によって実行されてもよい。
【0041】
非一時的なコンピュータ読取り可能媒体405は、プロセッサ実行可能命令420を含む。プロセッサ実行可能命令420は、プロセッサ440によって実行されると、この明細書中に規定されるもののうち少なくともいくつかを実行させる。非一時的なコンピュータ読取り可能媒体405は、メモリ半導体(たとえば、スタティック・ランダム・アクセス・メモリ(static random access memory:SRAM)、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory:DRAM)および/または同期ダイナミック・ランダム・アクセス・メモリ(synchronous dynamic random access memory:SDRAM)技術)を利用する半導体)、ハードディスクドライブのプラッタ、フラッシュメモリデバイス、または磁気ディスクもしくは光ディスク(コンパクトディスク(compact disk:CD)、デジタル・バーサタイル・ディスク(digital versatile disk:DVD)またはフロッピー(登録商標)ディスクなど)を含む。例示的な非一時的なコンピュータ読取り可能媒体405は、デバイス430のリーダ435によって読取られた(415)(たとえば、ハードディスクドライブの読取りヘッド、またはソリッドステートストレージデバイス上で呼出された読取り動作)ときにプロセッサ実行可能命令420を表わするコンピュータ読取り可能データ410を格納している。
【0042】
いくつかの実施形態においては、プロセッサ実行可能命令420は、実行されると、たとえば、
図2の例示的な方法200のうち少なくともいくつかなどの動作を実行させる。いくつかの実施形態においては、プロセッサ実行可能命令420は、たとえば、
図1Aの例示的なシステム100のうちの少なくとも一部などのシステムを実現させるように構成されている。
【0043】
図5は、この明細書中に記載される例示的なシステムおよび方法ならびに/またはこれらの同等例のうち1つ以上で構成および/またはプログラムされる例示的なコンピューティングデバイス500を示す。例示的なコンピューティングデバイス500は、バス525によって動作可能に接続されているプロセッサ510、メモリ535および入出力(input/output:I/O)ポート545を含むコンピュータ515であってもよい。一実施形態においては、コンピュータ515は、
図1および
図2に示されるシステム100および/または方法200を容易にするように構成されたトランザクション管理モジュール105の論理を含み得る。さまざまな実施形態においては、トランザクション管理モジュール105の論理は、ハードウェア、命令が格納された非一時的なコンピュータ読取り可能媒体505、ファームウェアおよび/またはこれらの組合せで実現されてもよい。トランザクション管理モジュール105の論理がバス525に取付けられたハードウェア構成要素として例示されているとともに、他の実施形態においては、トランザクション管理モジュール105の論理がプロセッサ520において実現され得るか、メモリ535に格納され得るか、またはディスク555に格納され得ることが認識されるはずである。
【0044】
一実施形態においては、トランザクション管理モジュール105またはコンピュータ515の論理は、記載された動作を実行するための手段(たとえば、構造:ハードウェア、非一時的なコンピュータ読取り可能媒体、ファームウェア)である。いくつかの実施形態においては、コンピューティングデバイスは、クラウド・コンピューティング・システムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)アーキテクチャで構成されたサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【0045】
手段は、たとえば、割当てのためのルールベースのソースシーケンシングを実現するようにプログラムされた特定用途向け集積回路(application specific integrated circuit:ASIC)として実現されてもよい。手段はまた、メモリ535に一時的に格納されてプロセッサ520によって実行されるデータ510としてコンピュータ515に提示される、格納されたコンピュータ実行可能命令として実現されてもよい。
【0046】
トランザクション管理モジュール105の論理はまた、割当てのためのルールベースのソースシーケンシングを実行するための手段(たとえば、ハードウェア、実行可能命令を格納する非一時的なコンピュータ読取り可能媒体705、ファームウェア)を提供し得る。
【0047】
コンピュータ515の例示的な構成を概略的に記載しているが、プロセッサ520は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含むさまざまなプロセッサであってもよい。メモリ535は、揮発性メモリおよび/または不揮発性メモリを含み得る。不揮発性メモリは、たとえば、読取り専用メモリ(read-only memory:ROM)、プログラマブル読取り専用メモリ(programmable read-only memory:PROM)などを含み得る。揮発性メモリは、たとえば、ランダム・アクセス・メモリ(random access memory:RAM)、スタティック・ランダム・アクセス・メモリ(static random-access memory:SRAM)、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory:DRAM)などを含み得る。
【0048】
ディスク555は、たとえば、I/Oインターフェイス540(たとえばカード、デバイス)およびI/Oポート545を介してコンピュータ515に動作可能に接続されてもよい。ディスク555は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、ジップドライブ、フラッシュメモリカード、メモリスティックなどであってもよい。さらに、ディスク555は、CD−ROMドライブ、CD−Rドライブ、CD−RWドライブ、DVD ROMなどであってもよい。メモリ535は、たとえば、非一時的なコンピュータ読取り可能媒体505内などに、プロセスおよび/またはデータ510を格納することができる。ディスク555および/またはメモリ535は、コンピュータ515のリソースを制御して割当てるオペレーティングシステムを格納することができる。
【0049】
コンピュータ515は、I/Oインターフェイス540およびI/Oポート545を介して入出力(I/O)デバイスと対話してもよい。I/Oデバイスは、たとえば、キーボード、マイクロホン、ポインティングおよび選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク555、ネットワークデバイス550などであってもよい。I/Oポート545は、たとえば、シリアルポート、パラレルポートおよびUSBポートを含み得る。I/Oコントローラ530は、I/Oインターフェイス540をバス525に接続してもよい。
【0050】
コンピュータ515は、ネットワーク環境において動作可能であり、このため、I/Oインターフェイス540および/またはI/Oポート545を介してネットワークデバイス550に接続されてもよい。ネットワークデバイス550を介して、コンピュータ515がネットワークと対話してもよい。ネットワークを介して、コンピュータ515がリモートコンピュータに論理的に接続されてもよい(たとえば、コンピュータ515は、クライアントが接続し得る分散型コンピューティング環境内に存在していてもよい)。コンピュータ515が対話し得るネットワークは、ローカルエリアネットワーク(local area network:LAN)、新しいエリアネットワーク(WAN)および他のネットワークを含み得るがこれらに限定されない。
【0051】
図6は、本発明の一実施形態が実現され得るシステム600を示す図である。エンタープライズネットワーク604は、小売り業者、小売商、サービスプロバイダまたは他の業種などのビジネスエンタープライズに関連付けられ得る。代替的には、アプリケーション・サービス・プロバイダ(application service provider:ASP)によってホストされる(マルチテナントデータ処理プラットフォームなどの)統合型ビジネスシステムの利点に従うと、ビジネスエンタープライズは、そのエンドユーザがインターネットブラウザおよびインターネット接続にアクセスするという前提であれば、専用の設備またはビジネスネットワークを全く含まないかまたはごく少ししか含まない可能性がある。説明を単純かつ明瞭にするために、エンタープライズネットワーク604は、複数のパーソナルコンピュータ608が接続されるオン・サイトのローカルエリアネットワーク606によって表わされている。複数のパーソナルコンピュータ608は各々、一般に、例示的なリモートユーザコンピュータ610と共に、サービスエージェントまたは他の従業員などの特定のエンドユーザに専用のものである(が、このような専用性は不要である)。例示的なリモートユーザコンピュータ610は、たとえば、公共のWi−Fiアクセスポイントを介してまたは他のインターネットアクセス方法によってインターネットアクセスできる移動する従業員のラップトップコンピュータまたはタブレット型コンピュータであり得る。コンピュータ608および610に関連付けられたエンドユーザ(消費者)は、無線インターネットアクセスまたは他の同期能力を有する(PDA、タブレット、ラップトップコンピュータなどの)インターネット対応のスマートフォンまたは他の電子機器を所有していてもよい。エンタープライズネットワーク604のユーザは、インターネット612または別の好適な通信ネットワークまたはネットワークの組合せを介して統合型ビジネスシステム602とのインターフェイスとなる。
【0052】
専用の第三者によってホストされ得る統合型ビジネスシステム602は、
図6に示されるように結合された統合型ビジネスサーバ614およびウェブインターフェイスサーバ616を含み得る。統合型ビジネスサーバ614およびウェブインターフェイスサーバ616のどちらかまたは両方が、
図6に個々のユニットとして表わされているとしても、1つ以上のさまざまなハードウェアシステムおよびコンポーネント上で実現され得ることが認識されるはずである。
【0053】
各々がビジネスを運営している複数の口座所有者/テナントのために第三者によってシステム602を動作させている典型例においては、統合型ビジネスサーバ614はERPモジュール618を含むとともに、CRMモジュール620をさらに含む。多くの場合、ERPモジュール618にとって、方法、ライブラリ、データベース、サブルーチン、変数などをCRMモジュール620と共有することが望ましいだろう。また、実際には、ERPモジュール618をCRMモジュール620と絡み合わせて、(単一のテナントであり得るが、典型的にはマルチテナントである)統合型ビジネスデータ処理プラットフォームにしてもよい。
【0054】
ERPモジュール618は、財務会計モジュール、オーダー処理モジュール、時間および請求書作製モジュール、在庫管理および分配モジュール、従業員管理および給与計算モジュール、スケジュール調整および協調モジュール、報告およびセキュリティモジュール、ならびに他のERP関連モジュールを含み得るが、これらに限定されない。CRMモジュール620は、セールス・フォース・オートメーション(sales force automation:SFA)モジュール、マーケティングオートメーションモジュール、連絡先リストモジュール(図示せず)、コールセンターサポートモジュール、ウェブベース顧客サポートモジュール、報告およびセキュリティモジュール、ならびに他のCRM関連モジュールを含み得るが、これらに限定されない。統合型ビジネスサーバ614(またはマルチテナントデータ処理プラットフォーム)はさらに、ウェブストア/eコマース(eCommerce)モジュール622、パートナーおよびベンダー管理モジュール624、ならびに統合型報告モジュール630を含む他のビジネス機能を備えてもよい。サプライチェーン管理(supply chain management:SCM)モジュール626および製品ライフサイクル管理(product lifecycle management:PLM)モジュール628が設けられていてもよい。ウェブインターフェイスサーバ616は、1つ以上のウェブベースのユーザインターフェイスをエンタープライズネットワーク604のエンドユーザに提供するために統合型ビジネスサーバ614とのインターフェイスとなるように構成および適合されている。
【0055】
図6に示される統合型ビジネスシステムは、少なくとも1つの(但し、複数の可能性もある)「サーバ」で構成される分散型コンピューティングシステム上でホストされてもよい。サーバは物理的コンピュータであって、たとえば、インターネットまたは専用の「イントラネット」ネットワークなどのパブリックネットワークを介してサーバとデータ通信する他のコンピュータのユーザのニーズを満たすように意図された1つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理的コンピュータである。サーバと当該サーバが提供するサービスとが「ホスト」と称され得るとともに、当該サービスを受けているリモートコンピュータと、当該リモートコンピュータ上で動作するソフトウェアアプリケーションとが「クライアント」と称され得る。或るサーバが提供するコンピューティングサービスに応じて、そのサーバは、データベースサーバ、データストレージサーバ、ファイルサーバ、メールサーバ、プリントサーバ、ウェブサーバなどと称され得る。ウェブサーバは、ほとんどの場合、一般にウェブサイトをホストすることによって、インターネットを介してウェブサーバにアクセスするクライアント・ウェブ・ブラウザに対してコンテンツを配信するのを支援するハードウェアとソフトウェアとの組合わせである。
【0056】
図7は、本発明の実施形態が実現され得る例示的な動作環境700の要素または構成要素を示す図である。図示のとおり、さまざまなコンピューティングデバイスを組込んでいる、および/または、さまざまなコンピューティングデバイスに組込まれているさまざまなクライアント702は、1つ以上のネットワーク714を介して分散型コンピューティングサービス/プラットフォーム708と通信し得る。たとえば、クライアントは、少なくとも部分的に、コンピューティングデバイスのうち1つ以上によって実現されるクライアントアプリケーション(たとえば、ソフトウェア)を組込んでもよく、および/または、当該クライアントアプリケーションに組込まれてもよい。好適なコンピューティングデバイスの例は、パーソナルコンピュータ、サーバコンピュータ704、デスクトップコンピュータ706、ラップトップコンピュータ707、ノート型コンピュータ、タブレット型コンピュータまたは携帯情報端末(personal digital assistant:PDA)710、スマートフォン712、携帯電話、および家庭用電子機器を含み、1つ以上のコンピューティングデバイスコンポーネント、たとえば、1つ以上の電子プロセッサ、マイクロプロセッサ、中央処理装置(central processing unit:CPU)またはコントローラなどを組込んでいる。好適なネットワーク714の例は、任意の好適なネットワーキングおよび/または通信プロトコル(たとえば、インターネット)に従って動作する有線および/または無線の通信技術およびネットワークを利用するネットワークを含む。顧客サポートサービスの配信に関与する使用事例においては、上述のコンピューティングデバイスは、顧客サポート配信プロセスのエンドポイント(すなわち、消費者のデバイス)を表わしている。
【0057】
分散型コンピューティングサービス/プラットフォーム(マルチテナントビジネスデータ処理プラットフォームとも称され得る)708は、ユーザインターフェイス層716、アプリケーションサーバ層720およびデータストレージ層724を含む複数の処理層を含み得る。ユーザインターフェイス層716は、グラフィカルユーザインターフェイスおよび/またはウェブベースのインターフェイスを含む複数のユーザインターフェイス718を維持し得る。ユーザインターフェイスは、(図において「サービスUI」と示されている)サービスのユーザまたは「テナント」のためにアプリケーションおよびデータへのアクセスを提供するサービスのためのデフォルトユーザインターフェイスと、さらには、ユーザ特有の要件に従って特化/カスタマイズされた(たとえば、図中に「テナントA UI」、…「テナントZ UI」で表されるとともに、1つ以上のAPIによってアクセスされ得る)1つ以上のユーザインターフェイスとを含み得る。デフォルトのユーザインターフェイスは、データへのアクセスなどのサービスプラットフォームによって提供される機能および能力へのテナントの関与をテナントが管理することを可能にするコンポーネント、特定のデータ処理動作を実行させるコンポーネントなどを含み得る。図に示される各々の処理層は、コンピュータのセットならびに/またはコンピュータサーバおよびプロセッサを含むコンピュータコンポーネントのセットで実現されてもよく、ソフトウェアアプリケーションまたは命令のセットを実行することによって判断されるようなさまざまな機能、方法、プロセスまたは動作を実行してもよい。データストレージ層724は、サービスデータストア725および1つ以上のテナントデータストア726を含み得る1つ以上のデータストアを含み得る。
【0058】
各々のテナントデータストア726はテナント特有のデータを含み得る。テナント特有のデータは、ERP、CRM、eコマース、人事管理、給与計算などを含むがこれらに限定されない一連のテナント特有ビジネスサービスまたは機能を提供する一環として用いられる。データストアは、構造化照会言語(structured query language:SQL)ベースのリレーショナルデータベース管理システム(relational database management system:RDBMS)を含む任意の適切なデータストレージ技術で実現され得る。
【0059】
本発明の一実施形態に従うと、分散型コンピューティングサービス/プラットフォーム708はマルチテナントであってもよく、サービスプラットフォーム708は、ビジネス関連アプリケーション、データストレージおよび機能のセットを複数のテナントに提供するためにエンティティによって動作させられてもよい。これらのアプリケーションおよび機能は、或るビジネスがその運営のさまざまな局面を管理するために用いるものであってもよい。たとえば、アプリケーションおよび機能はビジネス情報システムに対するウェブベースのアクセスを提供することを含んでいてもよく、これにより、ブラウザおよびインターネットまたはイントラネットに接続するユーザが、特定の種類のビジネス情報を閲覧、入力、処理または変更することが可能になる。
【0060】
上述のとおり、このようなビジネス情報システムはエンタープライズ・リソース・プランニング(Enterprise Resource Planning:ERP)システムを含み得る。ERPシステムは、ビジネスプロセスを簡素化するとともにビジネス全体に渡るレベルで効率を高めることを意図して、いくつかの履歴上別個のビジネスコンピューティングシステムの能力を共通のシステムに統合するものである。一例として、ERPシステムの能力またはモジュールは、アカウンティング、オーダー処理、時間および請求書作製、在庫管理、小売り販売時点情報管理(point of sale:POS)システム、eコマース、製品情報管理(product information management:PIM)、需要/資材所要量計画(material requirements planning:MRP)、購買、コンテンツ管理システム(content management system:CMS)、プロフェッショナルサービスオートメーション(professional services automation:PSA)、従業員管理/給与計算、人事管理、従業員のスケジュール調整および協調、さらには、これらの機能に関する報告および分析能力を含み得る(が、これらを含む必要はなく、これらを含むもののみに限定されない)。このような機能またはビジネスアプリケーションは、典型的には、プラットフォームのアプリケーションサーバ層720の一部である1つ以上のサーバ722上で維持されるとともに1つ以上のサーバ722によって実行されるソフトウェアコード/命令の1つ以上のモジュールによって実現される。
【0061】
統合型データ処理およびサービスプラットフォームの一部として提供され得る別のビジネス情報システムは、統合型顧客関係管理(Customer Relationship Management:CRM)システムであって、顧客をより良く理解することを支援し、既存の顧客に対するサービスを向上させ、新しく有益な顧客を獲得するのを支援するように設計されている。一例として、CRMシステムの能力またはモジュールは、セールス・フォース・オートメーション(SFA)、マーケティングオートメーション、連絡先リスト、コールセンターサポート、返品管理認可(returns management authorization:RMA)、ロイヤルティプログラムサポート、および、ウェブベースの顧客サポート、さらには、これらの機能に関する報告および分析能力を含み得る(が、これらを含む必要はなく、これらを含むもののみに限定されない)。ERPおよびCRMの機能に加えて、ビジネス情報システム/プラットフォームはまた、統合型パートナーおよびベンダー管理システム、eコマースシステム(たとえば、仮想のストアフロントアプリケーションまたはプラットフォーム)、製品ライフサイクル管理(product lifecycle management:PLM)システム、(医療/歯科保険管理、給与計算などを含み得る)人事管理システム、または、サプライチェーン管理(supply chain management:SCM)システムのうち1つ以上を含み得る。このような機能またはビジネスアプリケーションは、典型的には、プラットフォームのアプリケーションサーバ層720の一部である1つ以上のサーバ722上で維持されてこれら1つ以上のサーバ722によって実行されるソフトウェアコード/命令の1つ以上のモジュールによって実現される。
【0062】
なお、機能上の利点および戦略上の利点がともに、ERP、CRMおよび他のビジネス能力を含む統合型ビジネスシステムを用いることによって獲得され得ることに留意されたい。この場合、たとえば、統合型ビジネスシステムは、小売商のeコマースプラットフォームおよび/または「ウェブストア」と統合されている。たとえば、特定の製品をサーチする顧客は、小売商のウェブサイトに誘導され得るとともに、顧客らの快適なホームコンピュータから、またはさらには顧客らの携帯電話からでさえ、多様な製品および/またはサービスが提示され得る。顧客がブラウザベースのインターフェイスを介してオンライン売買のトランザクションを開始すると、統合型ビジネスシステムは、オーダーを処理し、受取勘定を更新し、在庫データベースおよび他のERPベースのシステムを更新することができるとともに、戦略上重要な顧客情報データベースおよび他のCRMベースのシステムを自動的に更新することもできる。これらのモジュールならびに他のアプリケーションおよび機能は、有利には、統合型ビジネス管理システムまたはプラットフォームを形成する1つ以上の統合型データベースに必要に応じてアクセスする単一のコードベースによって統合および実行され得る。
【0063】
図6に関連付けて上述したように、
図7に示される統合型ビジネスシステムは、少なくとも1つの、但し典型的には複数の「サーバ」で構成される分散型コンピューティングシステム上でホストされてもよい。サーバは物理的コンピュータであって、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してサーバとデータ通信する他のコンピュータのユーザのニーズを満たすように意図された1つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理的コンピュータである。
【0064】
ビジネスは、このような統合型ビジネスシステム自体を構築して維持するのではなく、第三者によって提供されるシステムを利用してもよい。このような第三者は、マルチテナントプラットフォームの文脈において上述されるように統合型ビジネスシステム/プラットフォームを実現してもよい。この場合、単一の包括的な統合型ビジネスシステムの個々のインスタンス化がさまざまなテナントに提供される。このようなマルチテナントプラットフォームについての1つの利点は、各々のテナントが、統合型ビジネスシステムのインスタンス化をそのテナント特有のビジネスニーズまたは運営方法に合わせてカスタマイズできることである。各々のテナントは、複数のユーザにビジネスデータおよび機能を提供するためにマルチテナントプラットフォームを用いるビジネスまたはエンティティであってもよい。これら複数のユーザのうちのいくつかのユーザは、ビジネスまたはエンティティ内で別個の役割または責任を有している可能性もある。
【0065】
場合によっては、テナントは、そのアプリケーションに拡張を導入することによって既存のプラットフォームアプリケーションの機能を修正または補足することを所望する可能性もある。この場合、拡張はテナントの従業員および/または顧客に利用可能にされることとなっている。場合によっては、このような拡張は、プラットフォーム上に常駐するテナントのビジネス関連データの処理に適用されてもよい。この拡張は、テナントによって、または第3者である開発者によって開発されて、インストールできるようにテナントに利用可能にされていてもよい。プラットフォームは、テナントによってアクセスされ得るとともに対象となる拡張を識別するためにサーチされ得る、利用可能な拡張の「ライブラリ」またはカタログを含んでいてもよい。ソフトウェア開発者は、提案された拡張を適切に確認した後、ライブラリまたはカタログに対して拡張を「公表する」ことが許可され得る。
【0066】
したがって、(eコマースプラットフォームに関連付けられた機能などの、それらの末端の顧客に対する何らかのサービスを提供することを含み得る)テナントらが所望するサービスおよび機能をこれらテナントが獲得することを許可しようとして、マルチテナントサービスプラットフォームは、テナントが、利用可能なサービスの特定の局面をそれらのビジネスニーズにより良く適合するように構成することを許可し得る。このように、サービスプラットフォームの局面はカスタマイズ可能あり得るとともに、これにより、テナントが、それぞれのユーザまたはそれらユーザのグループにそれぞれ特徴的なサービスを提供するようにプラットフォームの局面を構成することを可能にし得る。たとえば、サービスプラットフォームを用いるビジネスエンタープライズは、それらの従業員および/もしくは顧客に追加機能もしくは能力を提供すること、または、それらのビジネスニーズに合った規定済みのワークフローに従って特定の方法でそれらのビジネスデータを処理させることなどを所望する可能性もある。
【0067】
プラットフォームに対するテナントカスタム化は、下位レベルのオペレーティングシステム機能の上に構築された特定用途向け機能(テナントまたはユーザ特有の機能、データ処理または動作を実行する能力など)を含み得る。いくつかのマルチテナントサービスプラットフォームは、グラフィカルユーザインターフェイスに対する審美上の変更から、独立した第三者ベンダーによって開発されたコンポーネントおよび/またはアプリケーション全体の統合の提供に至るまで、サービスプラットフォームのいくつかのさまざまなレベルで機能または動作をカスタマイズする能力を提供し得る。これは非常に有益であり得る。なぜなら、第三者ベンダーによって開発されたコンポーネントおよび/またはアプリケーションの使用を許可することにより、マルチテナントサービスが、テナントにとって利用可能な機能を著しく向上させて、プラットフォームに対するテナント満足感を高めることができるようになるからである。
【0068】
上述のとおり、ユーザカスタム化に加えて、独立したソフトウェア開発者は、マルチテナントデータ処理プラットフォームを通じてユーザにとって利用可能となる特定のアプリケーションに対する拡張を作成してもよい。この拡張は、新しい機能または能力を基礎をなすアプリケーションに追加し得る。プラットフォームの1つ以上のテナント/ユーザは、拡張によって実現可能となるアプリケーションの機能向上を利用できるようにするために、この拡張を基礎をなすアプリケーションに追加することを所望するかもしれない。さらに、開発者は、拡張に組み込むのに有益となるであろう修正または付加的機能の必要性を認識していれば、パッチをアップグレードするかまたは拡張に提供することを所望するかもしれない。場合によっては、より新しいバージョンの拡張を改善するためのフィードバックを得るために、拡張の安定性をテストするために、または、拡張のために市場を区分化するのを支援するために、開発者は、(少なくとも最初は)選択されたユーザのセットだけがアップグレードを実施できるようにすることをより好む可能性がある。
【0069】
別の実施形態においては、記載された方法および/またはそれらの同等例はコンピュータ実行可能命令で実現されてもよい。このため、一実施形態においては、非一時的なコンピュータ読取り可能/記憶媒体は、機械によって実行されたときに当該機械(および/または関連する構成要素)に方法を実行させるアルゴリズム/実行可能アプリケーションのコンピュータ実行可能命令が格納された状態で構成される。例示的な機械は、プロセッサ、コンピュータ、クラウド・コンピューティング・システムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス(SaaS)アーキテクチャで構成されるサーバ、スマートフォン、などを含むが、これらに限定されない。一実施形態においては、コンピューティングデバイスは、開示された方法のうちのいずれかを実行するように構成される1つ以上の実行可能なアルゴリズムで実現される。
【0070】
1つ以上の実施形態においては、開示された方法またはそれらの同等例は、方法を実行するように構成されたコンピュータハードウェア、または、非一時的なコンピュータ読取り可能媒体に格納されてモジュールで具体化されるコンピュータ命令、のいずれかによって実行される。この場合、上記命令は、少なくともコンピューティングデバイスのプロセッサによって実行されたときに方法を実行するように構成された実行可能なアルゴリズムとして構成されている。
【0071】
説明を簡潔にする目的で、図に例示された方法はアルゴリズムの一連のブロックとして図示および記載されているが、方法がブロックの順序によって限定されないことが認識されるはずである。いくつかのブロックは、図示および記載される他のブロックとは異なる順序で実施可能および/または同時に実施可能である。さらに、例示的な方法を実現するために、図示されるブロックがすべて用いられなくてもよい。ブロックは組合わされてもよく、または複数の動作/構成要素に分離されてもよい。さらに、付加的および/または代替的な方法は、ブロックには例示されていない追加の動作を用いることができる。
【0072】
以下は、この明細書中において用いられる選択された用語の定義を含む。定義は、用語の範囲内にあるとともに実現するのに用いられ得る構成要素のさまざまな例および/または形式を含む。これらの例は、限定するように意図されたものではない。単数形および複数形の用語はともに上記定義の範囲内であり得る。
【0073】
「一実施形態」、「実施形態」、「一例」、「例」などの言及は、そのように説明された実施形態または例が特定の特徴、構造、特性、性質、要素、または限定を含み得るものの、すべての実施形態または例が必ずしもその特定の特徴、構造、特性、性質、要素、または限定を含むとは限らない、ことを示す。さらに、「一実施形態においては」という句を繰り返し使用することは、必ずしも同じ実施形態を指すとは限らないものの、同じ実施形態を指す場合もある。
【0074】
「データ構造」は、この明細書中において用いられているように、メモリ、ストレージデバイスまたは他のコンピュータ化されたシステムに格納されるコンピューティングシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データ記録、データベース、データテーブル、グラフ、ツリー、リンクされたリストなどのうちいずれか1つであってもよい。データ構造は、他の多くのデータ構造から形成されていてもよく、他の多くのデータ構造を含んでもよい(たとえば、データベースは多くのデータ記録を含む)。データ構造の他の例は、他の実施形態に従って、同様に実現可能である。
【0075】
「コンピュータ読取り可能媒体」または「コンピュータ記憶媒体」は、この明細書中において用いられるとおり、実行されたときに、開示された機能のうち1つ以上を実行するように構成された命令および/またはデータを格納する非一時的な媒体を指している。データは、いくつかの実施形態において命令として機能し得る。コンピュータ読取り可能媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない形態を取ってもよい。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ読取り可能媒体の一般的形態は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス、コンパクトディスク(CD)、他の光学媒体、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、メモリチップまたはカード、メモリスティック、ソリッドステートストレージデバイス(solid state storage device:SSD)、フラッシュドライブ、および、コンピュータ、プロセッサまたは他の電子機器を機能させることができる他の媒体、を含み得るが、これらに限定されない。各々のタイプの媒体は、一実施形態において実現するために選択された場合、開示および/またはクレームされた機能のうち1つ以上を実行するように構成されたアルゴリズムの格納された命令を含み得る。
【0076】
「論理」は、この明細書中において用いられるとおり、この明細書中に開示されるように機能または動作のいずれかを実行するように、および/または、この明細書中に開示されるように別の論理、方法および/またはシステムから機能または動作を実行させるように、コンピュータもしくは電気的ハードウェアで実現される構成要素、実行可能なアプリケーションもしくはプログラムモジュールの命令が格納された非一時的な媒体、ならびに/または、これらの組合せを表わす。同等の論理は、ファームウェア、アルゴリズムでプログラムされたマイクロプロセッサ、個別論理(たとえばASIC)、少なくとも1つの回路、アナログ回路、デジタル回路、プログラムされた論理デバイス、アルゴリズムの命令を含むメモリデバイスなどを含んでいてもよい。これらはいずれも、開示された機能のうち1つ以上を実行するように構成され得る。一実施形態においては、論理は、1つ以上のゲート、ゲートの組合せ、または開示される機能のうち1つ以上を実行するように構成された他の回路部品を含んでいてもよい。複数の論理が説明される場合、その複数の論理を1つの論理に組込むことが可能であり得る。同様に、単一の論理が説明される場合、その単一の論理を複数の論理間に分散させることが可能であり得る。一実施形態においては、これらの論理のうち1つ以上は、開示および/またはクレームされた機能を実行することに係る対応する構造である。実現すべき論理のタイプの選択は、所望のシステム条件または規格に基づき得る。たとえば、より高速であることが重要視すべき事項であれば、機能を実現するためにハードウェアが選択されるだろう。より低コストが重要視すべき事項であれば、機能を実現するために格納された命令/実行可能なアプリケーションが選択されるだろう。
【0077】
「動作可能な接続」またはエンティティが「動作可能に接続されている」接続は、信号、物理的通信、および/または論理的通信が送信および/または受信され得る接続である。動作可能な接続は、物理インターフェイス、電気インターフェイスおよび/またはデータインターフェイスを含み得る。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび/または接続のさまざまな組合せを含み得る。たとえば、2つのエンティティは、互いに直接、または1つ以上の中間エンティティ(たとえばプロセッサ、オペレーティングシステム、論理、非一時的なコンピュータ読取り可能媒体)を介して、信号を互いに伝達するために動作可能に接続することができる。論理的および/または物理的な通信チャネルを用いて動作可能な接続を構築することができる。
【0078】
ここに使用されるような「ユーザ」は、1人以上の人間、1つ以上のコンピュータもしくは他の装置、またはこれらの組合せを含むものの、これらに限定されない。
【0079】
開示された実施形態を非常に詳細に例示および説明してきたが、添付された請求の範囲をそのような詳細に制限したり何らかの形で限定することは意図されていない。主題のさまざまな局面を説明する目的のために、構成要素または方法論のすべての考えられ得る組合せを説明することは、もちろん不可能である。したがって、この開示は、図示および説明された特定の詳細または実例に限定されない。
【0080】
「含む」または「含んで」という用語が詳細な説明または請求項において採用されている範囲では、それは、「備える」という用語と同様の態様で包括的であるよう意図されている。なぜなら、その用語は、採用された場合、請求項において過渡的な言葉として解釈されるからである。
【0081】
「または」という用語が詳細な説明または請求項において採用されている(たとえば、AまたはB)範囲では、それは、「AまたはBまたはそれら双方」を意味するよう意図されている。出願人が「AまたはBのどちらか一方だけ」を示すよう意図する場合には、「AまたはBのどちらか一方だけ」という句が使用されるであろう。このため、ここでの「または」という用語の使用は包括的使用であり、排他的使用ではない。