(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を格納するコンピュータ読取り可能プログラムであって、前記コンピュータ実行可能命令は、コンピュータのプロセッサによって実行されると、前記プロセッサに、
第１のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ（ＲＥＳＴ）ユニフォーム・リソース・ロケータ（ＵＲＬ）のうち少なくとも１つを含み、前記コンピュータ実行可能命令はさらに、
閾値未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、前記親トランザクションテーブルは主親キーおよび主子キーを含み、前記コンピュータ実行可能命令はさらに、
前記閾値よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、前記子トランザクションテーブルは、前記主親キー、前記主子キー、および前記親トランザクションテーブルの名前を含み、前記コンピュータ実行可能命令はさらに、
ブロックチェーンネットワークを介して前記第１のエンティティの第１のコンピューティングデバイスと第２のエンティティの第２のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
前記スタティックメンテナンステーブル内の前記ハードコード化されたプロパティを用いて前記トランザクションを確認させ、
前記トランザクションの引数の順序に従って、前記親トランザクションテーブルのカラムおよび前記子トランザクションテーブルのカラムに値をポピュレートさせ、
前記親トランザクションテーブルおよび前記子トランザクションテーブルを利用して、前記ブロックチェーンネットワークを介する、前記第２のコンピューティングデバイスに対する前記トランザクションの通信を容易にさせる、コンピュータ読取り可能プログラム。
【請求項２】
前記コンピュータ実行可能命令は、
テーブルオブジェクトファイルを利用して、前記テーブルオブジェクトファイル内のテーブル構造情報を用いて前記スタティックメンテナンステーブル、前記親トランザクションテーブルおよび前記子トランザクションテーブルを作成するための命令を含む、請求項１に記載のコンピュータ読取り可能プログラム。
【請求項３】
前記コンピュータ実行可能命令は、
ハードコード化されたプロパティを前記スタティックメンテナンステーブルに追加する機能を実行するための命令を含む、請求項１または２に記載のコンピュータ読取り可能プログラム。
【請求項４】
前記コンピュータ実行可能命令は、
前記スタティックメンテナンステーブル内のハードコード化されたプロパティを更新する機能を実行するための命令を含む、請求項１〜３のいずれか１項に記載のコンピュータ読取り可能プログラム。
【請求項５】
前記コンピュータ実行可能命令は、
ハードコード化されたプロパティを無効にする機能を実行するための命令と、
前記ハードコード化されたプロパティが用いられるという判断に応じて、前記ハードコード化されたプロパティを有効にするための命令とを含む、請求項１〜４のいずれか１項に記載のコンピュータ読取り可能プログラム。
【請求項６】
前記コンピュータ実行可能命令は、
前記ブロックチェーンネットワークを介して前記第２のエンティティと通信するために用いられる、ハードコード化されたプロパティのセットを識別するために前記スタティックメンテナンステーブルにクエリするための命令と、
前記ハードコード化されたプロパティのセットを用いて、前記ブロックチェーンネットワークを介して前記トランザクションを送信するための命令とを含む、請求項１〜５のいずれか１項に記載のコンピュータ読取り可能プログラム。
【請求項７】
前記コンピュータ実行可能命令は、
最初のトランザクションである前記トランザクションに基づいて前記トランザクションのトランザクション識別子を前記主親キーとして格納するための命令を含む、請求項１〜６のいずれか１項に記載のコンピュータ読取り可能プログラム。
【請求項８】
前記コンピュータ実行可能命令は、
カレントトランザクションのカレントトランザクション識別子を前記主子キーとして格納するための命令を含む、請求項７に記載のコンピュータ読取り可能プログラム。
【請求項９】
コンピューティングシステムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読取り可能媒体に格納されるとともに命令で構成されたトランザクション管理モジュールとを含み、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
第１のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ（ＲＥＳＴ）ユニフォーム・リソース・ロケータ（ＵＲＬ）のうち少なくとも１つを含み、前記命令はさらに、
閾値未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、前記親トランザクションテーブルは主親キーおよび主子キーを含み、前記命令はさらに、
前記閾値よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、前記子トランザクションテーブルは、前記主親キー、前記主子キー、および前記親トランザクションテーブルの名前を含み、前記命令はさらに、
ブロックチェーンネットワークを介して前記第１のエンティティの第１のコンピューティングデバイスと第２のエンティティの第２のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
前記スタティックメンテナンステーブル内の前記ハードコード化されたプロパティを用いて前記トランザクションを確認させ、
前記トランザクションの引数の順序に従って、前記親トランザクションテーブルのカラムおよび前記子トランザクションテーブルのカラムに値をポピュレートさせ、
前記親トランザクションテーブルおよび前記子トランザクションテーブルを利用して、前記ブロックチェーンネットワークを介する前記第２のコンピューティングデバイスに対する前記トランザクションの通信を容易にさせる、コンピューティングシステム。
【請求項１０】
前記命令は、前記プロセッサに、
前記親トランザクションテーブルおよび前記子トランザクションテーブルのうち少なくとも１つに前記トランザクションの状態を格納するのに用いられる状態カラムをポピュレートさせる命令を含む、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記命令は、前記プロセッサに、
前記親トランザクションテーブルおよび前記子トランザクションテーブルのうち少なくとも１つに、トランザクションの宛先を追跡するのに用いられる宛先エンティティカラムと、トランザクションの発信元を追跡するのに用いられる発信元エンティティカラムとをポピュレートさせる命令を含む、請求項９または１０に記載のコンピューティングシステム。
【請求項１２】
前記命令は、
前記親トランザクションテーブルおよび前記子トランザクションテーブル内のカラムの数を判断するためにテーブルオブジェクトファイルを反復処理することによって、更新の引数の数を確認することと、
前記引数の数を前記カラムの数に対応するものと確認することに応じて、前記引数の順序に従って値を挿入するために前記親トランザクションテーブルおよび前記子トランザクションテーブルを反復処理することにより更新を実現することと、
によって前記トランザクションを更新する機能を前記プロセッサに実行させる命令を含む、請求項９〜１１のいずれか１項に記載のコンピューティングシステム。
【請求項１３】
前記命令は、前記プロセッサに、
前記トランザクションについての要求を受取らせ、
前記トランザクションのデータにアクセスするための前記主子キーと、前記主親キーとを用いて、前記子トランザクションテーブルにクエリさせ、
前記トランザクションのデータにアクセスするための前記主親キーを用いて、前記親トランザクションテーブルにクエリさせる、
命令を含む、請求項９〜１２のいずれか１項に記載のコンピューティングシステム。
【請求項１４】
前記主子キーはカレントトランザクション識別子を含む、請求項１３に記載のコンピューティングシステム。
【請求項１５】
前記命令は、前記プロセッサに、
失敗したトランザクションのアレイリストを維持させ、
前記アレイリスト内の失敗したトランザクションのために最後のトランザクション通信を試みてから経過する時間のしきい値量に応じて、前記ブロックチェーンネットワーク
を介して前記失敗したトランザクションを送信するよう試みさせる、
命令を含む、請求項９〜１４のいずれか１項に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
多くのエンティティは、ネットワークを介してデータを通信するためにコンピュータを利用する。第１の銀行は、第２の銀行への送金などの銀行トランザクションを実行するために第２の銀行にトランザクションを送信することができる。安全なオンライントランザクションを容易にするために使用することができるネットワークの１タイプとしてブロックチェーンネットワークが挙げられる。ブロックチェーンネットワークは分散型および分配型のデジタル台帳であって、後続の全ブロックを変更したりブロックチェーンネットワークの結託させたりしなければ記録を遡及して変更することができないように、複数のコンピュータにわたるトランザクションを記録するために用いられている。これにより、関与者がトランザクションを低費用で検証および監査することが可能となる。このようにして、ブロックチェーンネットワークは高度なデータセキュリティを提供する。
【０００２】
エンティティが使用できる多くのブロックチェーンネットワークプロバイダが存在している。各々のエンティティは、ブロックチェーンネットワークを用いるためのさまざまなビジネス使用事例などの、ブロックチェーンネットワークにアクセスして使用する方法をそれら自体で実現し得る。したがって、特定のブロックチェーンネットワークプロバイダが如何にブロックチェーンネットワークを実現するかに応じて、特定用途向けのアプリケーションをその特定のブロックチェーンネットワークプロバイダに書込んで調整しなければならない。このアプリケーションも、エンティティがブロックチェーンネットワークへのアクセスおよびその使用をどのように実現し得るかに合わせてカスタマイズされなければならない。ビジネス使用事例ごとおよびブロックチェーンプロバイダごとにカスタムコードを作成し、格納し、維持することは非効率的であり、かなりの量のコンピューティングリソースを浪費してしまう。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
一実施形態において記載されている非一時的なコンピュータ読取り可能媒体および／またはコンピュータプログラムは、コンピュータ実行可能命令を格納している。コンピュータ実行可能命令は、コンピュータのプロセッサによって実行されると、当該プロセッサに、
第１のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ（representational state transfer：ＲＥＳＴ）ユニフォーム・リソース・ロケータ（uniform resource locator：ＵＲＬ）のうち少なくとも１つを含み、当該コンピュータ実行可能命令はさらに、
閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、当該親トランザクションテーブルは主親キーおよび主子キーを含み、当該コンピュータ実行可能命令はさらに、
当該閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、子トランザクションテーブルは、主親キー、主子キー、および親トランザクションテーブルの名前を含み、当該コンピュータ実行可能命令はさらに、
ブロックチェーンネットワークを介して当該エンティティの第１のコンピューティングデバイスと第２のエンティティの第２のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
スタティックメンテナンステーブル内のハードコード化されたプロパティを用いてトランザクションを確認させ、
トランザクションの引数の順序に従って、親トランザクションテーブルのカラムおよび子トランザクションテーブルのカラムに値をポピュレートさせ、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する、第２のコンピューティングデバイスに対するトランザクションの通信を容易にさせる。
【０００４】
１つ以上の他の実施形態においては、非一時的なコンピュータ読取り可能媒体は以下の特徴の１つ以上の組合せを実行するために、実行可能命令を、上述の特徴と組合わせて含み得る。当該以下の特徴は、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する第２のコンピューティングデバイスに対するトランザクションの通信を容易にする特徴と、
テーブルオブジェクトファイルを利用して、テーブルオブジェクトファイル内のテーブル構造情報を用いてスタティックメンテナンステーブル、親トランザクションテーブルおよび子トランザクションテーブルを作成する特徴と、
ハードコード化されたプロパティをスタティックメンテナンステーブルに追加する機能を実行する特徴と、
スタティックメンテナンステーブル内のハードコード化されたプロパティを更新する機能を実行する特徴と、
ハードコード化されたプロパティを無効にするとともに、ハードコード化されたプロパティが用いられるという判断に応じて、ハードコード化されたプロパティを有効にする機能を実行する特徴と、
ブロックチェーンネットワークを介して第２のエンティティと通信するのに用いられる、ハードコード化されたプロパティのセットを識別するためにスタティックメンテナンステーブルにクエリするとともに、ハードコード化されたプロパティのセットを用いて、ブロックチェーンネットワークを介してトランザクションを送信する特徴と、
最初のトランザクションであるトランザクションに基づいてトランザクションのトランザクション識別子を主親キーとして格納する特徴と、
カレントトランザクションのカレントトランザクション識別子を主子キーとして格納する特徴とを含む。
【０００５】
別の実施形態においては、この明細書中に開示されるコンピュータシステムは、メモリに接続されたプロセッサと、非一時的なコンピュータ読取り可能媒体に格納されるとともに命令で構成されたトランザクション管理モジュールとを含む。当該命令は、プロセッサによって実行されると、当該プロセッサに、
第１のエンティティのハードコード化されたプロパティを含むスタティックメンテナンステーブルを維持させ、ハードコード化された値は、ホスト名、プロキシ、エンティティ識別子またはレプレゼンテーショナル・ステート・トランスファ（ＲＥＳＴ）ユニフォーム・リソース・ロケータ（ＵＲＬ）のうち少なくとも１つを含み、当該命令はさらに、
閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブルを維持させ、当該親トランザクションテーブルは主親キーおよび主子キーを含み、当該命令はさらに、
当該閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブルを維持させ、子トランザクションテーブルは、主親キー、主子キー、および親トランザクションテーブルの名前を含み、当該命令はさらに、
ブロックチェーンネットワークを介して当該エンティティの第１のコンピューティングデバイスと第２のエンティティの第２のコンピューティングデバイスとの間で通信するためにトランザクションを受取らせ、
スタティックメンテナンステーブル内のハードコード化されたプロパティを用いてトランザクションを確認させ、
トランザクションの引数の順序に従って、親トランザクションテーブルのカラムおよび子トランザクションテーブルのカラムに値をポピュレートさせ、
親トランザクションテーブルおよび子トランザクションテーブルを利用して、ブロックチェーンネットワークを介する第２のコンピューティングデバイスに対するトランザクションの通信を容易にさせる。
【０００６】
１つ以上の他の実施形態においては、コンピュータシステムはさらに、以下の特徴のうち１つ以上の組合せを実行するための実行可能命令を、上述の特徴と組合わせて、含む。当該以下の特徴は、
親トランザクションテーブルおよび子トランザクションテーブルのうち少なくとも１つにトランザクションの状態を格納するために用いられる状態カラムをポピュレートする特徴と、
親トランザクションテーブルおよび子トランザクションテーブルのうち少なくとも１つに、トランザクションの宛先を追跡するために用いられる宛先エンティティカラムと、トランザクションの発信元を追跡するために用いられる発信元エンティティカラムとをポピュレートする特徴と、
親トランザクションテーブルおよび子トランザクションテーブル内のカラムの数を判断するためにテーブルオブジェクトファイルを反復処理することにより更新の引数の数を確認することと、引数の数をカラムの数に対応するものと確認することに応じて、引数の順序に従って値を挿入するために親トランザクションテーブルおよび子トランザクションテーブルを反復処理することによって更新を実現することと、によって、トランザクションを更新する機能を実行する特徴と、
トランザクションについての要求を受取り、トランザクションのデータにアクセスするために子主キーと、親主キーとを用いて子トランザクションテーブルにクエリし、トランザクションのデータにアクセスするために親主キーを用いて親トランザクションテーブルにクエリする特徴とを含み、
子主キーはカレントトランザクション識別子を含み、当該以下の特徴はさらに、
失敗したトランザクションのアレイリストを維持し、アレイリスト内の失敗したトランザクションのために最後のトランザクション通信を試みてから経過する時間のしきい値量に応じて、失敗したトランザクションをブロックチェーンネットワークを介して送信しようと試みる特徴を含む。
【０００７】
明細書において援用され、その一部を構成する添付の図面は、開示されているさまざまなシステム、方法および他の実施形態を示す。図に例示される要素の境界（たとえば、箱、箱の群または他の形状）が、これら境界の一実施形態を表わすことが認識され得る。いくつかの実施形態においては、１つの要素が複数の要素として実現されてもよく、または、複数の要素が１つの要素として実現されてもよい。いくつかの実施形態においては、別の要素の内部コンポーネントとして示される要素が外部コンポーネントとして実現されてもよく、この逆であってもよい。さらに、要素は縮尺通りには図示されないこともある。
【図面の簡単な説明】
【０００８】
【図１Ａ】ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連するシステムの一実施形態を示す図である。
【図１Ｂ】スタティックメンテナンステーブル、親トランザクションテーブルおよび子トランザクションテーブルの一実施形態を示す図である。
【図２】ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連する方法の一実施形態を示す図である。
【図３Ａ】トランザクションに関連付けられたメッセージが或るアプリケーションから第２のアプリケーションに送信されている、ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連するシステムの一実施形態を示す図である。
【図３Ｂ】アプリケーションが第２のアプリケーションからのトランザクションに関連付けられたメッセージを受取っている、ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連するシステムの一実施形態を示す図である。
【図４】非一時的なコンピュータ読取り可能媒体の一実施形態を示す図である。
【図５】開示された例示的なシステムおよび／または方法で構成されるコンピューティングシステムの一実施形態を示す図である。
【図６】本発明の一実施形態が実現され得る、統合型ビジネスシステムおよびエンタープライズネットワークの一実施形態を示す図である。
【図７】マルチテナント分散型コンピューティングサービスプラットフォームの一実施形態を示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明
ブロックチェーンネットワークを介して通信されるトランザクションを管理する、コンピュータ化されたシステムおよび方法をこの明細書中に記載する。チェーンコード付きのハイパーレッジャーコンポーネントなどのトランザクション管理モジュールは、さまざまなタイプのブロックチェーンネットワークおよび／またはブロックチェーンネットワークの将来のインプリメンテーションに接続するとともにそれらを介して通信するように構成可能である。各々のブロックチェーンプロバイダは、他のブロックチェーンプロバイダによるインプリメンテーションとは異なり得るブロックチェーンネットワークのそれら自体のインプリメンテーションを提供することができるので、トランザクション管理モジュールは、ブロックチェーンネットワークの現在のインプリメンテーションと将来のインプリメンテーションとに接続するための拡張可能なメカニズムを提供している。このようにして、相当な量のコンピューティングリソースおよびストレージリソースを保存することができる。なぜなら、ブロックチェーンネットワークのタイプごとにカスタムのプログラミングコードの書込み、格納および実行を行なう必要がないからである。
【００１０】
トランザクション管理モジュールはまた、ブロックチェーンネットワークを介して通信することとなっているさまざまなタイプのアプリケーションに接続して当該さまざまなタイプのアプリケーションと通信するように構成可能である。このため、トランザクション管理モジュールは、使用事例ごとにカスタムプログラミングコードを作成する必要なしに、さまざまなタイプのビジネス使用事例のインプリメンテーションを容易にすることができる。このようにして、トランザクション管理モジュールは、さまざまなコンピューティングデバイスによってホストされるアプリケーション間でトランザクションなどのメッセージのルーティングを容易にすることができる。
【００１１】
図１Ａを参照すると、ブロックチェーンネットワーク１１５を介して通信されるトランザクションの管理に関連するコンピュータシステム１００の一実施形態が示される。コンピュータシステム１００は、図５のコンピュータ５１５などのコンピュータ上で実行するように構成可能なトランザクション管理モジュール１０５を含む。トランザクション管理モジュール１０５は、さまざまなタイプのブロックチェーンネットワークを介したさまざまなタイプのアプリケーション間でのさまざまな使用事例についてのメッセージの送信を容易にするように構成されている。一実施形態においては、トランザクション管理モジュール１０５は、第１の銀行と第２の銀行との間のトランザクションを容易にするなどのために、第１の銀行の第１の銀行アプリケーションと第２の銀行の第２の銀行アプリケーションとの間にブロックチェーンネットワーク１１５を介する通信を提供するように構成される。いくつかの例において、トランザクションおよびメッセージという語は、ブロックチェーンネットワークを介する２つのエンティティ間またはコンピューティングデバイス間の通信を指すものとして同義で使用できることが認識され得る。
【００１２】
トランザクション管理モジュール１０５は、テーブルオブジェクトファイルを利用して、スタティックメンテナンステーブル１２５、親トランザクションテーブル１３０、子トランザクションテーブル１３５、および／または、ブロックチェーンネットワーク１１５を介するトランザクションをルーティングするために利用される他のテーブルを作成することができる。一実施形態においては、テーブルオブジェクトファイルは、テーブルｊｓｏｎファイル、または、ＸＭＬなどの他の何らかのデータフォーマットを有するファイルを含む。テーブルオブジェクトファイルは、データベース内にテーブルを作成するために使用することができるデータを含む。テーブルオブジェクトファイルは、トランザクションデータを格納するであろうテーブルについての構造フォーマット、たとえば、特定のテーブル、カラム、ロウ、予想されるデータタイプなどを規定する構造フォーマットなど、を含み得る。このようにして、テーブルオブジェクトファイル内のテーブル構造情報を用いてテーブルを作成する。
【００１３】
トランザクション管理モジュール１０５は、第１のエンティティのハードコード化されたプロパティを格納するためにスタティックメンテナンステーブル１２５を維持する。第１のエンティティが銀行である一実施形態においては、ハードコード化されたプロパティは、銀行コード、プロキシ、トランザクションを処理するための銀行のビジネス論理（たとえば、銀行への／からの送金を処理するための論理）、銀行識別子などを含む。トランザクション管理モジュール１０５は、銀行プロパティがハードコード化され、適切に維持され、必要に応じて更新され、必要に応じて呼出されることを確実にする。一実施形態においては、ハードコード化されたプロパティは、銀行のサーバ／サービスのホスト名、プロキシ、銀行の銀行コードなどのエンティティ識別子、および／または、金融銀行アダプタが機能しているレプレゼンテーショナル・ステート・トランスファ（ＲＥＳＴ）ユニフォーム・リソース・ロケータ（ＵＲＬ）を含む。トランザクション管理モジュール１０５は、ハードコード化されたプロパティを追加し、ハードコード化されたプロパティを更新し、ハードコード化されたプロパティを無効にし、および／または、ハードコード化されたプロパティを有効にする機能を実行するように構成される。
【００１４】
別の実施形態においては、スタティックメンテナンステーブル１２５は、図１Ｂに示されるように、銀行識別子カラム、銀行コードカラム、プロキシカラム、ホスト名カラム、ハイパーレッジャーカラムおよびＲＥＳＴ  ＵＲＬカラムのうち１つ以上を含む。銀行名または他の銀行識別子は銀行識別子カラム内にポピュレートされる。銀行を世界的に識別する国際銀行コード（国際銀行間通信協会（Society for Worldwide Interbank Financial Telecommunication：ＳＷＩＦＴ）コードまたは銀行識別コード（Bank Identification Code：ＢＩＣ）は、銀行コードカラム内にポピュレートされる。プロキシならびに／または他のシステムおよび機能関連のユーティリティのプロパティはプロキシカラム内にポピュレートされる。銀行サーバ／サービスのホスト名はホスト名カラム内にポピュレートされる。銀行によって用いられているハイパーレッジャーは、ハイパーレッジャーカラム内にポピュレートされる。ハイパーレッジャーは、銀行のトランザクションを記録するために銀行によって用いられる。銀行のＲＥＳＴｆｕｌウェブサービスのＵＲＬなどの銀行のＲＥＳＴ  ＵＲＬは、ＲＥＳＴ  ＵＲＬカラムに格納される。
【００１５】
トランザクション管理モジュール１０５は、稀にしか更新されない銀行データなどの、閾値頻度よりも低い頻度で更新されるデータのカラムを含むように親トランザクションテーブル１３０を維持する。親トランザクションテーブル１３０は、（たとえば、最初のトランザクションの最初のトランザクション識別子に対応する）親トランザクションテーブル１３０の主親キーと、（たとえば、カレントトランザクションのカレントトランザクション識別子に対応する）子トランザクションテーブル１３５の主子キーとを含む。
【００１６】
一実施形態においては、親トランザクションテーブル１３０は、図１Ｂに示されるように、希にしか更新されない銀行およびトランザクションデータの１つ以上のカラム、状態カラム、トランザクション宛先カラム、トランザクション発信元カラム、応答データカラム、ならびに、通知送信側／受信側カラムを含む。親トランザクションテーブル１３０の各々のロウは特定のトランザクションに対応し得る。（たとえばトランザクションが最初にハイパーレッジャーを入力するときに）未処理である、処理の準備ができている、および／または、他のトランザクション処理段階などのトランザクションの状態が状態カラム内にポピュレートされる。トランザクションの宛先銀行がトランザクション宛先カラム内にポピュレートされ、トランザクションの発信元銀行がトランザクション発信元カラム内にポピュレートされる。応答データカラムは、さまざまなトランザクション処理段階に基づいて発信元銀行と宛先銀行との間で定期的に交換される情報を格納するために用いられる。発信元銀行（送信側）および宛先銀行（受信側）に短いトランザクションメッセージが送信されるべきであるかどうかを示すブール値が通知送信側／受信側カラム内に格納される。
【００１７】
トランザクション管理モジュール１０５は、頻繁に更新される銀行データなどの閾値頻度よりも高い頻度で更新されるデータのカラムを含むように子トランザクションテーブル１３５を維持する。子トランザクションテーブル１３５は、主親キー、主子キー、および親トランザクションテーブル１３０の名前を含む。一実施形態においては、子トランザクションテーブル１３５は、図１Ｂに示されるように、頻繁に更新された銀行およびトランザクションデータの１つ以上のカラム、状態カラム、トランザクション宛先カラム、トランザクション発信元カラム、応答データカラム、ならびに、通知送信側／受信側カラムを含む。子トランザクションテーブル１３５の各ロウは特定のトランザクションに対応し得る。未処理である、処理の準備ができている、および／または、他のトランザクション処理段階などのトランザクションの状態が状態カラム内にポピュレートされる。トランザクションの宛先銀行がトランザクション宛先カラム内にポピュレートされるとともに、トランザクションの発信元銀行がトランザクション発信元カラム内にポピュレートされる。応答データカラムは、さまざまなトランザクション処理段階に基づいて発信元銀行と宛先銀行との間で定期的に交換される情報を格納するために用いられる。発信元銀行（送信側）および宛先銀行（受信側）に短いトランザクションメッセージが送信されるべきであるかどうかを示すブール値が通知送信側／受信側カラム内に格納される。
【００１８】
トランザクション管理モジュール１０５は、ブロックチェーンネットワーク１１５を介して第１のコンピューティングデバイスと第２のコンピューティングデバイスとの間で通信するためにトランザクションを受取る。一実施形態においては、トランザクションがアプリケーション１１０によって作成されていた。アプリケーション１１０はメッセージングモジュール１４０にトランザクションを送信する。次いで、このトランザクションは、ブロックチェーンネットワーク１１５を介してコンピューティングデバイス１２０に送信するためにメッセージングモジュール１４０からトランザクション管理モジュール１０５に送信される。別の実施形態においては、トランザクションが、コンピューティングデバイス１２０からブロックチェーンネットワーク１１５を介してトランザクション管理モジュール１０５によって受取られる。このトランザクションは、トランザクション管理モジュール１０５からメッセージングモジュール１４０にルーティングされて、処理されるとともにアプリケーション１１０に送達されることとなる。
【００１９】
トランザクション管理モジュール１０５は、スタティックメンテナンステーブル１２５内のハードコード化されたプロパティを用いてトランザクションを確認する。一実施形態においては、ハードコード化されたプロパティは、発信元銀行コードおよび宛先銀行コードが有効であるかどうか、トランザクションが適切なセキュリティおよび認証を有しているかどうか、などを判断するために用いられる。一実施形態においては、トランザクションの銀行コード（または銀行識別子）は、当該銀行コードが維持されている発信元コードのリストに属するかどうかを最初に判断することによって確認される。次に、銀行コードが維持されている宛先コードのリストに属するかどうかが判断される。最後に、発信元銀行コードおよび宛先銀行コードが同じではないことを確実にするための判断がなされる。確認がなされると、トランザクションの引数と同じ順序で値をテーブルにポピュレートすることによって、親トランザクションテーブル１３０および／または子トランザクションテーブル１３５にトランザクションが追加される。
【００２０】
トランザクション管理モジュール１０５は、トランザクションの引数の順序に従って、親トランザクションテーブル１３０および／または子トランザクションテーブル１３５のカラムに値をポピュレートするように構成される。トランザクション管理モジュール１０５は、最初のトランザクションであるトランザクションに基づいてトランザクションのトランザクション識別子を主親キーとして格納してもよい。トランザクションがカレントトランザクションである場合、トランザクション管理モジュール１０５はトランザクション識別子を主子キーとして格納してもよい。トランザクション管理モジュール１０５は、トランザクションの状態を格納するために用いられる状態カラムをテーブルにポピュレートしてもよい。状態は、未処理である、処理の準備ができているなどの現在のトランザクション処理段階に基づいて変化し得る。トランザクション管理モジュール１０５は、トランザクションの宛先を追跡するために用いられる宛先エンティティカラム（たとえば、宛先銀行名および／またはコード）と、トランザクションの発信元を追跡するために用いられる発信元エンティティカラム（たとえば、発信元銀行名および／またはコード）とをテーブルにポピュレートすることができる。トランザクション管理モジュール１０５は、さまざまなトランザクション処理段階に基づいて発信元と宛先との間で定期的に交換される情報（たとえば、閾値頻度よりも高い頻度でアクセスされる情報、処理される情報、送信される情報など）を格納するために用いられる応答カラムをテーブルにポピュレートすることができる。トランザクション管理モジュール１０５は、トランザクションからの更新済みの値を含む短いメッセージが発信元に送信されるべきかどうかを示す、ブール値などの通知送信側変数をテーブルにポピュレートすることができる。
【００２１】
トランザクションを追加する一実施形態においては、トランザクション管理モジュール１０５は、スタティックメンテナンステーブル１２５内のハードコード化されたプロパティでトランザクションの銀行識別子および／または銀行コードを確認することにより、トランザクションをテーブル内に追加する。一実施形態においては、トランザクションの銀行コードのうち1つの銀行コードが維持された宛先銀行コードのリスト内にある場合にトランザクションの銀行コードのうち別の銀行コードが維持された発信元銀行コードのリスト内にあるかどうか、および／または、発信元銀行コードと宛先銀行コードとが異なっているかどうかについての判断がなされる。確認後、親キーカラムおよび子キーカラムを最初の２つのカラムとして親トランザクションテーブル１３０内に追加することなどによって、親キーカラムおよび子キーカラムを親トランザクションテーブル１３０内に追加することによって、トランザクションが追加される。親トランザクションテーブル１３０は、トランザクションの引数と同じ順序でトランザクションの値を親トランザクションテーブル１３０に入力することによって反復される。次に、子トランザクションテーブル１３５に最初の２つのカラムとして追加されるような、主子キーおよび主親キーなどの子キーおよび親キーの各々が子トランザクションテーブル１３５に追加される。子トランザクションテーブル１３５は、トランザクションの引数と同じ順序でトランザクションの値を子トランザクションテーブル１３５に入力することによって反復される。
【００２２】
トランザクションを更新する一実施形態においては、更新すべきテーブルにおけるカラムの数を識別するためにテーブルを作成するのに用いられるテーブルオブジェクトファイルを反復処理することによって更新の引数の数を検証することにより、更新が確認される。トランザクションは、更新の引数と同じ順序で更新からの値を入力することにより、対象となるテーブルを反復処理することによって更新される。主子キーなどの子キーは、子トランザクションテーブル１３５および親トランザクションテーブル１３０において更新される。
【００２３】
トランザクションにクエリする一実施形態においては、トランザクション管理モジュール１０５は、主子キーおよび主親キーの概念を用いてトランザクションにクエリする。このトランザクションは、カレントトランザクション識別子と等しい主子キーを用いて、子トランザクションテーブル１３５からカラムをフェッチすることによってクエリされる。これにより、頻繁に更新されるカラムのデータが提供される。カレントトランザクション識別子としての主子キーは、それほど頻繁に更新されないカラム内のデータについて親トランザクションテーブル１３０にクエリするのに使用できる主親キーを見出すために用いられる。このようにして、主親キーおよび主子キーは、トランザクションについてのクエリを完了するために用いられる。クエリの結果は、エントリがカンマ区切りされているｊｓｏｎフォーマットなどのストリングを含む可能性がある。
【００２４】
エラー処理の一実施形態においては、失敗したトランザクションのアレイリストが維持される。アレイリスト内の失敗したトランザクションのために、最後のトランザクション通信が試みられてから経過する時間のしきい値量に応じて、ブロックチェーンネットワーク１１５を介して当該失敗したトランザクションを送信する試みが再び試行される（たとえば、ＨＴＴＰ投稿の実行）。成功した場合、失敗したトランザクションがアレイリストから削除される。
【００２５】
イベントリスニングの一実施形態においては、機能を起動する呼出しがイベントリスナーをトリガし得る。親トランザクション識別子としての主親キーは、対応するトランザクションをフェッチするために用いられる。親トランザクション識別子は、トランザクションの発信元銀行および宛先銀行などの発信元エンティティおよび宛先エンティティを識別するためにエンティティ情報にクエリするのに用いられる。発信元エンティティまたは宛先エンティティの識別子がアプリケーション１１０の識別子と一致する場合、呼出しが処理されるが、それ以外の場合には、呼出しは無視される。なぜなら、その呼出しはブロックチェーンネットワーク１１５を介してアクセス可能な別のエンティティに関係しているからである。通知送信側および通知受信側のブール変数は、トランザクションのメッセージを如何にフォーマットするか、ならびに、発信元エンティティおよび宛先エンティティにどんなメッセージを送信するか、を判断するためにチェックすることができる。トランザクションがインサートトランザクションである場合、宛先エンティティは、通知受信側の値にかかわらず、全メッセージを得る（たとえば、トランザクション全体に関するメッセージ）。通知送信側が該当する場合、発信元エンティティは短いメッセージを送り、それ以外の場合、メッセージは送信されない。トランザクションが更新トランザクションである場合、通知受信側が該当する場合、宛先エンティティは短いメッセージを得る（たとえば、トランザクションに対する更新に関するメッセージ）。それ以外の場合、メッセージは送信されない。通知送信側が該当する場合、宛先エンティティは短いメッセージを得る。それ以外の場合、メッセージは送信されない。
【００２６】
トランザクション管理モジュール１０５は、コンピューティングデバイス１２０などの宛先に対するブロックチェーンネットワーク１１５を介するトランザクションの通信を容易にするために親トランザクションテーブル１３０および／または子トランザクションテーブル１３５を利用する。一実施形態においては、スタティックメンテナンステーブル１２５は、ブロックチェーンネットワーク１１５を介して宛先と通信するのに用いられるハードコード化されたプロパティのセットを識別するためにクエリされる。ハードコード化されたプロパティのセットはブロックチェーンネットワーク１１５を介してトランザクションを送信するために用いられる。ハードコード化されたプロパティのセットは、使用すべき通信メカニズムを指定し得た。一実施形態においては、通信メカニズムは、データベースを介するメッセージの通知を伝えるためのクエリ変更通知メカニズムを含む。別の実施形態においては、通信メカニズムは、待ち行列を介してメッセージを伝えるための待ち行列メカニズムを含む。別の実施形態においては、通信メカニズムは、メッセージテーブルからメッセージを抜出すためにテーブル化ポーリングメカニズムを含む。別の実施形態においては、通信メカニズムは、ＲＥＳＴｆｕｌサーバからメッセージを受取るためのハイパーテキスト転送プロトコル（hypertext transfer protocol：ＨＴＴＰ）ＲＥＳＴメカニズムを含む。別の実施形態においては、通信メカニズムは、メッセージを受取るためのソケットメカニズムを含む。別の実施形態においては、通信メカニズムは、通信のためのシンプル・オブジェクト・アクセス・プロトコル（simple object access protocol：ＳＯＡＰ）メカニズムを含む。
【００２７】
一実施形態においては、トランザクションについての要求がトランザクション管理モジュール１０５によって受取られる。子トランザクションテーブル１３５は、トランザクションのデータにアクセスするための子主キーと、親主キーとを用いて、トランザクション管理モジュール１０５によってクエリされる。子主キーは、トランザクションのカレントトランザクション識別子を含み得る。トランザクション管理モジュール１０５は、トランザクションのデータにアクセスするための親主キーを用いて、親トランザクションテーブル１３０にクエリする。
【００２８】
一実施形態においては、トランザクションを更新する命令がトランザクション管理モジュール１０５によって受取られる。したがって、トランザクション管理モジュール１０５は、トランザクションを更新する機能を実行する。特に、更新の引数の数は、親トランザクションテーブル１３０および／または子トランザクションテーブル１３５内のカラムの数を判断するためにテーブルオブジェクトファイルを反復処理することによって確認される。引数の数をカラムの数に対応するものとして確認することに応じて、引数の順序に従って更新の値を挿入するために、親トランザクションテーブル１３０および／または子トランザクションテーブル１３５を反復処理することによって、更新が実現される。
【００２９】
図２を参照すると、ブロックチェーンネットワークを介して通信されるトランザクションの管理に関連する、コンピュータによって実現される方法２００の一実施形態が示される。一実施形態においては、方法２００は、トランザクションの受取り、格納、処理および／または送信に関連付けられた命令を実行するために、プロセッサ５２０などのコンピュータ５１５のさまざまなコンピューティングリソースを利用して、トランザクション管理モジュール１０５によって実行される。メモリ５３５および／またはディスク５５５は、トランザクションデータ、スタティックメンテナンステーブル１２５、親トランザクションテーブル１３０、子トランザクションテーブル１３５などを格納するために用いられる。ネットワークハードウェアは、ブロックチェーンネットワークなどのネットワークを介してコンピュータ５１５とリモートコンピュータとの間でデータ構造および／または他のデータを通信するために用いられる。方法２００は、トランザクションを格納する要求、トランザクションを処理する要求および／またはトランザクションを送信する要求を受取るとトリガされる。
【００３０】
２０５において、トランザクション管理モジュール１０５は、図３Ａの例示的なシステム３００によって示されるように、第１の銀行などの第１のエンティティのハードコード化されたプロパティがポピュレートされたスタティックメンテナンステーブル１２５を維持する。ハードコード化されたプロパティは、第１の銀行に関連付けられたコンピューティングデバイスのホスト名、プロキシ、第１の銀行の識別子、ＲＥＳＴ／ＵＲＬ、および／または、第１の銀行の他のプロパティを含み得る。同様に、第２の銀行などの第２のエンティティに関連付けられた第２のトランザクション管理モジュール３０５は、第２のエンティティのハードコード化されたプロパティの第２のスタティックメンテナンステーブル３１０を維持し得る。
【００３１】
２１０において、トランザクション管理モジュール１０５は、閾値頻度未満の頻度で更新されるデータのカラムを含む親トランザクションテーブル１３０を維持する。同様に、第２のトランザクション管理モジュール３０５は、閾値頻度未満の頻度で更新されるデータのカラムを含む第２の親トランザクションテーブル３１５を維持する。
【００３２】
２１５において、トランザクション管理モジュール１０５は、閾値頻度よりも高い頻度で更新されるデータのカラムを含む子トランザクションテーブル１３５を維持する。同様に、第２のトランザクション管理モジュール３０５は、閾値頻度よりも高い頻度で更新されるデータのカラムを含む第２の子トランザクションテーブル３２０を維持する。
【００３３】
一実施形態においては、トランザクションに関連付けられたメッセージは、アプリケーション１１０からメッセージングモジュール１４０によって受取られ、当該メッセージが送信（３９０）されて、ブロックチェーンネットワーク１１５を介して第２のアプリケーション３２５に送達（３９５）される。一実施形態においては、メッセージは、第１の銀行と第２の銀行との間のトランザクションに関連している可能性があり、このため、第１の銀行のアプリケーション１１０からブロックチェーンネットワーク１１５を介して第２の銀行の第２のアプリケーション３２５に送信されている。メッセージは、チャネル構成（たとえば、アプリケーション１１０によって用いられる通信機能の選択およびインプリメンテーション）に従ってチャネル・イン・インターフェイス３３５を通じて受取られる。パーサーコンポーネント３４５は、さらなる処理のために、パーサー構成を用いて、メッセージをメッセージオブジェクトにパースする。
【００３４】
プロセッサコンポーネント３５０は、トランザクションの発信元銀行および宛先銀行が有効であることを確実にするなどのために、確認および論理を用いてメッセージオブジェクトを処理するためにプロセッサ構成を用いる。トランスレーションコンポーネント３５５は、トランザクション管理モジュール１０５などの宛先によって用いられるフォーマットを有するフォーマットされたメッセージにメッセージをフォーマットするためにトランスレーション構成を用いる。フォーマットされたメッセージは、チャネル構成（たとえば、トランザクション管理モジュール１０５によって用いられる通信機能の選択およびインプリメンテーション）に従って、チャネル・アウト・インターフェイス３４０を介してトランザクション管理モジュール１０５にルーティングされる。
【００３５】
２２０において、トランザクションは、トランザクション管理モジュール１０５によって受取られる。２２５において、トランザクションは、スタティックメンテナンステーブル１２５内のハードコード化されたプロパティを用いて確認される。２３０において、メッセージによって指定されるとおりトランザクションの引数の順序に従って、値が親トランザクションテーブル１３０および／または子トランザクションテーブル１３５のカラムにポピュレートされる。２３５において、親トランザクションテーブル１３０、子トランザクションテーブル１３５および／またはスタティックメンテナンステーブル１２５を用いて、フォーマットされたメッセージなどのトランザクションをブロックチェーンネットワーク１１５を介して第２のトランザクション管理モジュール３０５にルーティングする。第２のトランザクション管理モジュール３０５は、第２のスタティックメンテナンステーブル３１０、第２の親トランザクションテーブル３１５および／または第２の子トランザクションテーブル３２０を用いて、トランザクションを受取り、処理して第２のメッセージングモジュール３６０にルーティングし得る。このようにして、第２のトランザクション管理モジュール３０５はフォーマットされたメッセージをルーティングされたメッセージとして受取る。第２のメッセージングモジュール３６０は、チャネル構成（たとえば、第２のトランザクション管理モジュール３０５によって用いられる通信機能の選択およびインプリメンテーション）に従って、ルーティングされたメッセージを、第２のトランザクション管理モジュール３０５から第２のチャネル・イン・インターフェイス３６５を通じて受取る。
【００３６】
第２のメッセージングモジュール３６０の第２のパーサーコンポーネント３７５、第２のプロセッサコンポーネント３８０および第２のトランスレーションコンポーネント３８５は、ルーティングされたメッセージを処理して、フォーマットされたメッセージを作成する。フォーマットされたメッセージは、チャネル構成（たとえば、第２のアプリケーション３２５によって用いられる通信機能の選択およびインプリメンテーション）に従って、第２のチャネル・アウト・インターフェイス３７０を通じてルーティングされて、第２のアプリケーション３２５に送達される（３９５）。
【００３７】
図３Ｂは、アプリケーション１１０に送達（３９９）すべき第２のメッセージを送信する（３９７）第２のアプリケーション３２５を示す。第２のメッセージングモジュール３６０は、チャネル構成（たとえば、第２のアプリケーション３２５によって用いられる通信機能の選択およびインプリメンテーション）に従ってチャネル・イン・インターフェイス３６５を通じて第２のメッセージを受取る。第２のメッセージングモジュール３６０の第２のパーサーコンポーネント３７５、第２のプロセッサコンポーネント３８０および第２のトランスレーションコンポーネント３８５は、第２のメッセージを処理して第２のフォーマットされたメッセージを作成する。第２のフォーマットされたメッセージは、チャネル構成（たとえば、第２のトランザクション管理モジュール３０５によって用いられる通信機能の選択およびインプリメンテーション）に従ってチャネル・アウト・インターフェイス３７０を通じて第２のトランザクション管理モジュール３０５にルーティングされる。
【００３８】
第２のトランザクション管理モジュール３０５は、第２のスタティックメンテナンステーブル３１０、第２の親トランザクションテーブル３１５および／または第２の子トランザクションテーブル３２０を利用して、第２のメッセージに関連付けられた第２のトランザクションをブロックチェーンネットワーク１１５を介して受取り、処理および／またはルーティングする。第２のトランザクション管理モジュール３０５は、第２のフォーマットされたメッセージを、ブロックチェーンネットワーク１１５を介してトランザクション管理モジュール１０５にルーティングする。このようにして、トランザクション管理モジュール１０５は第２のフォーマットされたメッセージを第２のルーティングされたメッセージとして受取る。メッセージングモジュール１４０は、チャネル構成（たとえば、トランザクション管理モジュール１０５によって用いられる通信機能の選択およびインプリメンテーション）に従って、トランザクション管理モジュール１０５からチャネル・イン・インターフェイス３３５を通じて第２のルーティングされたメッセージを受取る。
【００３９】
メッセージングモジュール１４０のパーサーコンポーネント３４５、プロセッサコンポーネント３５０およびトランスレーションコンポーネント３５５は、第２のルーティングされたメッセージを処理して、第２のフォーマットされたメッセージを作成する。第２のフォーマットされたメッセージは、チャネル構成（たとえば、アプリケーション１１０によって用いられる通信機能の選択およびインプリメンテーション）に従って、チャネル・アウト・インターフェイス３４０を通じてルーティングされてアプリケーション１１０に送達（３９９）される。
【００４０】
図４は、例示的な非一時的なコンピュータ読取り可能媒体４０５に関するシナリオ４００を示す。一実施形態においては、この明細書中に記載されるコンポーネントのうち１つ以上は、非一時的なコンピュータ読取り可能媒体４０５に格納されたトランザクション管理モジュール１０５などのプログラムモジュールとして構成される。プログラムモジュールは、プロセッサ実行可能命令４２０などの格納された命令で構成される。プロセッサ実行可能命令４２０は、少なくともプロセッサ４４０などのプロセッサによって実行されると、コンピューティングデバイスに、この明細書中に記載される対応する機能を実行させる。一実施形態においては、非一時的なコンピュータ読取り可能媒体４０５に格納されるトランザクション管理モジュール１０５の機能は、図２の方法２００の実施形態４２５を実行するために、プロセッサ実行可能命令４２０としてプロセッサ４４０によって実行されてもよい。
【００４１】
非一時的なコンピュータ読取り可能媒体４０５は、プロセッサ実行可能命令４２０を含む。プロセッサ実行可能命令４２０は、プロセッサ４４０によって実行されると、この明細書中に規定されるもののうち少なくともいくつかを実行させる。非一時的なコンピュータ読取り可能媒体４０５は、メモリ半導体（たとえば、スタティック・ランダム・アクセス・メモリ（static random access memory：ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（dynamic random access memory：ＤＲＡＭ）および／または同期ダイナミック・ランダム・アクセス・メモリ（synchronous dynamic random access memory：ＳＤＲＡＭ）技術）を利用する半導体）、ハードディスクドライブのプラッタ、フラッシュメモリデバイス、または磁気ディスクもしくは光ディスク（コンパクトディスク（compact disk：ＣＤ）、デジタル・バーサタイル・ディスク（digital versatile disk：ＤＶＤ）またはフロッピー（登録商標）ディスクなど）を含む。例示的な非一時的なコンピュータ読取り可能媒体４０５は、デバイス４３０のリーダ４３５によって読取られた（４１５）（たとえば、ハードディスクドライブの読取りヘッド、またはソリッドステートストレージデバイス上で呼出された読取り動作）ときにプロセッサ実行可能命令４２０を表わするコンピュータ読取り可能データ４１０を格納している。
【００４２】
いくつかの実施形態においては、プロセッサ実行可能命令４２０は、実行されると、たとえば、図２の例示的な方法２００のうち少なくともいくつかなどの動作を実行させる。いくつかの実施形態においては、プロセッサ実行可能命令４２０は、たとえば、図１Ａの例示的なシステム１００のうちの少なくとも一部などのシステムを実現させるように構成されている。
【００４３】
図５は、この明細書中に記載される例示的なシステムおよび方法ならびに／またはこれらの同等例のうち１つ以上で構成および／またはプログラムされる例示的なコンピューティングデバイス５００を示す。例示的なコンピューティングデバイス５００は、バス５２５によって動作可能に接続されているプロセッサ５１０、メモリ５３５および入出力（input/output：Ｉ／Ｏ）ポート５４５を含むコンピュータ５１５であってもよい。一実施形態においては、コンピュータ５１５は、図１および図２に示されるシステム１００および／または方法２００を容易にするように構成されたトランザクション管理モジュール１０５の論理を含み得る。さまざまな実施形態においては、トランザクション管理モジュール１０５の論理は、ハードウェア、命令が格納された非一時的なコンピュータ読取り可能媒体５０５、ファームウェアおよび／またはこれらの組合せで実現されてもよい。トランザクション管理モジュール１０５の論理がバス５２５に取付けられたハードウェア構成要素として例示されているとともに、他の実施形態においては、トランザクション管理モジュール１０５の論理がプロセッサ５２０において実現され得るか、メモリ５３５に格納され得るか、またはディスク５５５に格納され得ることが認識されるはずである。
【００４４】
一実施形態においては、トランザクション管理モジュール１０５またはコンピュータ５１５の論理は、記載された動作を実行するための手段（たとえば、構造：ハードウェア、非一時的なコンピュータ読取り可能媒体、ファームウェア）である。いくつかの実施形態においては、コンピューティングデバイスは、クラウド・コンピューティング・システムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）アーキテクチャで構成されたサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【００４５】
手段は、たとえば、割当てのためのルールベースのソースシーケンシングを実現するようにプログラムされた特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）として実現されてもよい。手段はまた、メモリ５３５に一時的に格納されてプロセッサ５２０によって実行されるデータ５１０としてコンピュータ５１５に提示される、格納されたコンピュータ実行可能命令として実現されてもよい。
【００４６】
トランザクション管理モジュール１０５の論理はまた、割当てのためのルールベースのソースシーケンシングを実行するための手段（たとえば、ハードウェア、実行可能命令を格納する非一時的なコンピュータ読取り可能媒体７０５、ファームウェア）を提供し得る。
【００４７】
コンピュータ５１５の例示的な構成を概略的に記載しているが、プロセッサ５２０は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含むさまざまなプロセッサであってもよい。メモリ５３５は、揮発性メモリおよび／または不揮発性メモリを含み得る。不揮発性メモリは、たとえば、読取り専用メモリ（read-only memory：ＲＯＭ）、プログラマブル読取り専用メモリ（programmable read-only memory：ＰＲＯＭ）などを含み得る。揮発性メモリは、たとえば、ランダム・アクセス・メモリ（random access memory：ＲＡＭ）、スタティック・ランダム・アクセス・メモリ（static random-access memory：ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（dynamic random access memory：ＤＲＡＭ）などを含み得る。
【００４８】
ディスク５５５は、たとえば、Ｉ／Ｏインターフェイス５４０（たとえばカード、デバイス）およびＩ／Ｏポート５４５を介してコンピュータ５１５に動作可能に接続されてもよい。ディスク５５５は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、ジップドライブ、フラッシュメモリカード、メモリスティックなどであってもよい。さらに、ディスク５５５は、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、ＤＶＤ  ＲＯＭなどであってもよい。メモリ５３５は、たとえば、非一時的なコンピュータ読取り可能媒体５０５内などに、プロセスおよび／またはデータ５１０を格納することができる。ディスク５５５および／またはメモリ５３５は、コンピュータ５１５のリソースを制御して割当てるオペレーティングシステムを格納することができる。
【００４９】
コンピュータ５１５は、Ｉ／Ｏインターフェイス５４０およびＩ／Ｏポート５４５を介して入出力（Ｉ／Ｏ）デバイスと対話してもよい。Ｉ／Ｏデバイスは、たとえば、キーボード、マイクロホン、ポインティングおよび選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク５５５、ネットワークデバイス５５０などであってもよい。Ｉ／Ｏポート５４５は、たとえば、シリアルポート、パラレルポートおよびＵＳＢポートを含み得る。Ｉ／Ｏコントローラ５３０は、Ｉ／Ｏインターフェイス５４０をバス５２５に接続してもよい。
【００５０】
コンピュータ５１５は、ネットワーク環境において動作可能であり、このため、Ｉ／Ｏインターフェイス５４０および／またはＩ／Ｏポート５４５を介してネットワークデバイス５５０に接続されてもよい。ネットワークデバイス５５０を介して、コンピュータ５１５がネットワークと対話してもよい。ネットワークを介して、コンピュータ５１５がリモートコンピュータに論理的に接続されてもよい（たとえば、コンピュータ５１５は、クライアントが接続し得る分散型コンピューティング環境内に存在していてもよい）。コンピュータ５１５が対話し得るネットワークは、ローカルエリアネットワーク（local area network：ＬＡＮ）、新しいエリアネットワーク（ＷＡＮ）および他のネットワークを含み得るがこれらに限定されない。
【００５１】
図６は、本発明の一実施形態が実現され得るシステム６００を示す図である。エンタープライズネットワーク６０４は、小売り業者、小売商、サービスプロバイダまたは他の業種などのビジネスエンタープライズに関連付けられ得る。代替的には、アプリケーション・サービス・プロバイダ（application service provider：ＡＳＰ）によってホストされる（マルチテナントデータ処理プラットフォームなどの）統合型ビジネスシステムの利点に従うと、ビジネスエンタープライズは、そのエンドユーザがインターネットブラウザおよびインターネット接続にアクセスするという前提であれば、専用の設備またはビジネスネットワークを全く含まないかまたはごく少ししか含まない可能性がある。説明を単純かつ明瞭にするために、エンタープライズネットワーク６０４は、複数のパーソナルコンピュータ６０８が接続されるオン・サイトのローカルエリアネットワーク６０６によって表わされている。複数のパーソナルコンピュータ６０８は各々、一般に、例示的なリモートユーザコンピュータ６１０と共に、サービスエージェントまたは他の従業員などの特定のエンドユーザに専用のものである（が、このような専用性は不要である）。例示的なリモートユーザコンピュータ６１０は、たとえば、公共のＷｉ−Ｆｉアクセスポイントを介してまたは他のインターネットアクセス方法によってインターネットアクセスできる移動する従業員のラップトップコンピュータまたはタブレット型コンピュータであり得る。コンピュータ６０８および６１０に関連付けられたエンドユーザ（消費者）は、無線インターネットアクセスまたは他の同期能力を有する（ＰＤＡ、タブレット、ラップトップコンピュータなどの）インターネット対応のスマートフォンまたは他の電子機器を所有していてもよい。エンタープライズネットワーク６０４のユーザは、インターネット６１２または別の好適な通信ネットワークまたはネットワークの組合せを介して統合型ビジネスシステム６０２とのインターフェイスとなる。
【００５２】
専用の第三者によってホストされ得る統合型ビジネスシステム６０２は、図６に示されるように結合された統合型ビジネスサーバ６１４およびウェブインターフェイスサーバ６１６を含み得る。統合型ビジネスサーバ６１４およびウェブインターフェイスサーバ６１６のどちらかまたは両方が、図６に個々のユニットとして表わされているとしても、１つ以上のさまざまなハードウェアシステムおよびコンポーネント上で実現され得ることが認識されるはずである。
【００５３】
各々がビジネスを運営している複数の口座所有者／テナントのために第三者によってシステム６０２を動作させている典型例においては、統合型ビジネスサーバ６１４はＥＲＰモジュール６１８を含むとともに、ＣＲＭモジュール６２０をさらに含む。多くの場合、ＥＲＰモジュール６１８にとって、方法、ライブラリ、データベース、サブルーチン、変数などをＣＲＭモジュール６２０と共有することが望ましいだろう。また、実際には、ＥＲＰモジュール６１８をＣＲＭモジュール６２０と絡み合わせて、（単一のテナントであり得るが、典型的にはマルチテナントである）統合型ビジネスデータ処理プラットフォームにしてもよい。
【００５４】
ＥＲＰモジュール６１８は、財務会計モジュール、オーダー処理モジュール、時間および請求書作製モジュール、在庫管理および分配モジュール、従業員管理および給与計算モジュール、スケジュール調整および協調モジュール、報告およびセキュリティモジュール、ならびに他のＥＲＰ関連モジュールを含み得るが、これらに限定されない。ＣＲＭモジュール６２０は、セールス・フォース・オートメーション（sales force automation：ＳＦＡ）モジュール、マーケティングオートメーションモジュール、連絡先リストモジュール（図示せず）、コールセンターサポートモジュール、ウェブベース顧客サポートモジュール、報告およびセキュリティモジュール、ならびに他のＣＲＭ関連モジュールを含み得るが、これらに限定されない。統合型ビジネスサーバ６１４（またはマルチテナントデータ処理プラットフォーム）はさらに、ウェブストア／ｅコマース（eCommerce）モジュール６２２、パートナーおよびベンダー管理モジュール６２４、ならびに統合型報告モジュール６３０を含む他のビジネス機能を備えてもよい。サプライチェーン管理（supply chain management：ＳＣＭ）モジュール６２６および製品ライフサイクル管理（product lifecycle management：ＰＬＭ）モジュール６２８が設けられていてもよい。ウェブインターフェイスサーバ６１６は、１つ以上のウェブベースのユーザインターフェイスをエンタープライズネットワーク６０４のエンドユーザに提供するために統合型ビジネスサーバ６１４とのインターフェイスとなるように構成および適合されている。
【００５５】
図６に示される統合型ビジネスシステムは、少なくとも１つの（但し、複数の可能性もある）「サーバ」で構成される分散型コンピューティングシステム上でホストされてもよい。サーバは物理的コンピュータであって、たとえば、インターネットまたは専用の「イントラネット」ネットワークなどのパブリックネットワークを介してサーバとデータ通信する他のコンピュータのユーザのニーズを満たすように意図された１つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理的コンピュータである。サーバと当該サーバが提供するサービスとが「ホスト」と称され得るとともに、当該サービスを受けているリモートコンピュータと、当該リモートコンピュータ上で動作するソフトウェアアプリケーションとが「クライアント」と称され得る。或るサーバが提供するコンピューティングサービスに応じて、そのサーバは、データベースサーバ、データストレージサーバ、ファイルサーバ、メールサーバ、プリントサーバ、ウェブサーバなどと称され得る。ウェブサーバは、ほとんどの場合、一般にウェブサイトをホストすることによって、インターネットを介してウェブサーバにアクセスするクライアント・ウェブ・ブラウザに対してコンテンツを配信するのを支援するハードウェアとソフトウェアとの組合わせである。
【００５６】
図７は、本発明の実施形態が実現され得る例示的な動作環境７００の要素または構成要素を示す図である。図示のとおり、さまざまなコンピューティングデバイスを組込んでいる、および／または、さまざまなコンピューティングデバイスに組込まれているさまざまなクライアント７０２は、１つ以上のネットワーク７１４を介して分散型コンピューティングサービス／プラットフォーム７０８と通信し得る。たとえば、クライアントは、少なくとも部分的に、コンピューティングデバイスのうち１つ以上によって実現されるクライアントアプリケーション（たとえば、ソフトウェア）を組込んでもよく、および／または、当該クライアントアプリケーションに組込まれてもよい。好適なコンピューティングデバイスの例は、パーソナルコンピュータ、サーバコンピュータ７０４、デスクトップコンピュータ７０６、ラップトップコンピュータ７０７、ノート型コンピュータ、タブレット型コンピュータまたは携帯情報端末（personal digital assistant：ＰＤＡ）７１０、スマートフォン７１２、携帯電話、および家庭用電子機器を含み、１つ以上のコンピューティングデバイスコンポーネント、たとえば、１つ以上の電子プロセッサ、マイクロプロセッサ、中央処理装置（central processing unit：ＣＰＵ）またはコントローラなどを組込んでいる。好適なネットワーク７１４の例は、任意の好適なネットワーキングおよび／または通信プロトコル（たとえば、インターネット）に従って動作する有線および／または無線の通信技術およびネットワークを利用するネットワークを含む。顧客サポートサービスの配信に関与する使用事例においては、上述のコンピューティングデバイスは、顧客サポート配信プロセスのエンドポイント（すなわち、消費者のデバイス）を表わしている。
【００５７】
分散型コンピューティングサービス／プラットフォーム（マルチテナントビジネスデータ処理プラットフォームとも称され得る）７０８は、ユーザインターフェイス層７１６、アプリケーションサーバ層７２０およびデータストレージ層７２４を含む複数の処理層を含み得る。ユーザインターフェイス層７１６は、グラフィカルユーザインターフェイスおよび／またはウェブベースのインターフェイスを含む複数のユーザインターフェイス７１８を維持し得る。ユーザインターフェイスは、（図において「サービスＵＩ」と示されている）サービスのユーザまたは「テナント」のためにアプリケーションおよびデータへのアクセスを提供するサービスのためのデフォルトユーザインターフェイスと、さらには、ユーザ特有の要件に従って特化／カスタマイズされた（たとえば、図中に「テナントＡ  ＵＩ」、…「テナントＺ  ＵＩ」で表されるとともに、１つ以上のＡＰＩによってアクセスされ得る）１つ以上のユーザインターフェイスとを含み得る。デフォルトのユーザインターフェイスは、データへのアクセスなどのサービスプラットフォームによって提供される機能および能力へのテナントの関与をテナントが管理することを可能にするコンポーネント、特定のデータ処理動作を実行させるコンポーネントなどを含み得る。図に示される各々の処理層は、コンピュータのセットならびに／またはコンピュータサーバおよびプロセッサを含むコンピュータコンポーネントのセットで実現されてもよく、ソフトウェアアプリケーションまたは命令のセットを実行することによって判断されるようなさまざまな機能、方法、プロセスまたは動作を実行してもよい。データストレージ層７２４は、サービスデータストア７２５および１つ以上のテナントデータストア７２６を含み得る１つ以上のデータストアを含み得る。
【００５８】
各々のテナントデータストア７２６はテナント特有のデータを含み得る。テナント特有のデータは、ＥＲＰ、ＣＲＭ、ｅコマース、人事管理、給与計算などを含むがこれらに限定されない一連のテナント特有ビジネスサービスまたは機能を提供する一環として用いられる。データストアは、構造化照会言語（structured query language：ＳＱＬ）ベースのリレーショナルデータベース管理システム（relational database management system：ＲＤＢＭＳ）を含む任意の適切なデータストレージ技術で実現され得る。
【００５９】
本発明の一実施形態に従うと、分散型コンピューティングサービス／プラットフォーム７０８はマルチテナントであってもよく、サービスプラットフォーム７０８は、ビジネス関連アプリケーション、データストレージおよび機能のセットを複数のテナントに提供するためにエンティティによって動作させられてもよい。これらのアプリケーションおよび機能は、或るビジネスがその運営のさまざまな局面を管理するために用いるものであってもよい。たとえば、アプリケーションおよび機能はビジネス情報システムに対するウェブベースのアクセスを提供することを含んでいてもよく、これにより、ブラウザおよびインターネットまたはイントラネットに接続するユーザが、特定の種類のビジネス情報を閲覧、入力、処理または変更することが可能になる。
【００６０】
上述のとおり、このようなビジネス情報システムはエンタープライズ・リソース・プランニング（Enterprise Resource Planning：ＥＲＰ）システムを含み得る。ＥＲＰシステムは、ビジネスプロセスを簡素化するとともにビジネス全体に渡るレベルで効率を高めることを意図して、いくつかの履歴上別個のビジネスコンピューティングシステムの能力を共通のシステムに統合するものである。一例として、ＥＲＰシステムの能力またはモジュールは、アカウンティング、オーダー処理、時間および請求書作製、在庫管理、小売り販売時点情報管理（point of sale：ＰＯＳ）システム、ｅコマース、製品情報管理（product information management：ＰＩＭ）、需要／資材所要量計画（material requirements planning：ＭＲＰ）、購買、コンテンツ管理システム（content management system：ＣＭＳ）、プロフェッショナルサービスオートメーション（professional services automation：ＰＳＡ）、従業員管理／給与計算、人事管理、従業員のスケジュール調整および協調、さらには、これらの機能に関する報告および分析能力を含み得る（が、これらを含む必要はなく、これらを含むもののみに限定されない）。このような機能またはビジネスアプリケーションは、典型的には、プラットフォームのアプリケーションサーバ層７２０の一部である１つ以上のサーバ７２２上で維持されるとともに１つ以上のサーバ７２２によって実行されるソフトウェアコード／命令の１つ以上のモジュールによって実現される。
【００６１】
統合型データ処理およびサービスプラットフォームの一部として提供され得る別のビジネス情報システムは、統合型顧客関係管理（Customer Relationship Management：ＣＲＭ）システムであって、顧客をより良く理解することを支援し、既存の顧客に対するサービスを向上させ、新しく有益な顧客を獲得するのを支援するように設計されている。一例として、ＣＲＭシステムの能力またはモジュールは、セールス・フォース・オートメーション（ＳＦＡ）、マーケティングオートメーション、連絡先リスト、コールセンターサポート、返品管理認可（returns management authorization：ＲＭＡ）、ロイヤルティプログラムサポート、および、ウェブベースの顧客サポート、さらには、これらの機能に関する報告および分析能力を含み得る（が、これらを含む必要はなく、これらを含むもののみに限定されない）。ＥＲＰおよびＣＲＭの機能に加えて、ビジネス情報システム／プラットフォームはまた、統合型パートナーおよびベンダー管理システム、ｅコマースシステム（たとえば、仮想のストアフロントアプリケーションまたはプラットフォーム）、製品ライフサイクル管理（product lifecycle management：ＰＬＭ）システム、（医療／歯科保険管理、給与計算などを含み得る）人事管理システム、または、サプライチェーン管理（supply chain management：ＳＣＭ）システムのうち１つ以上を含み得る。このような機能またはビジネスアプリケーションは、典型的には、プラットフォームのアプリケーションサーバ層７２０の一部である１つ以上のサーバ７２２上で維持されてこれら１つ以上のサーバ７２２によって実行されるソフトウェアコード／命令の１つ以上のモジュールによって実現される。
【００６２】
なお、機能上の利点および戦略上の利点がともに、ＥＲＰ、ＣＲＭおよび他のビジネス能力を含む統合型ビジネスシステムを用いることによって獲得され得ることに留意されたい。この場合、たとえば、統合型ビジネスシステムは、小売商のｅコマースプラットフォームおよび／または「ウェブストア」と統合されている。たとえば、特定の製品をサーチする顧客は、小売商のウェブサイトに誘導され得るとともに、顧客らの快適なホームコンピュータから、またはさらには顧客らの携帯電話からでさえ、多様な製品および／またはサービスが提示され得る。顧客がブラウザベースのインターフェイスを介してオンライン売買のトランザクションを開始すると、統合型ビジネスシステムは、オーダーを処理し、受取勘定を更新し、在庫データベースおよび他のＥＲＰベースのシステムを更新することができるとともに、戦略上重要な顧客情報データベースおよび他のＣＲＭベースのシステムを自動的に更新することもできる。これらのモジュールならびに他のアプリケーションおよび機能は、有利には、統合型ビジネス管理システムまたはプラットフォームを形成する１つ以上の統合型データベースに必要に応じてアクセスする単一のコードベースによって統合および実行され得る。
【００６３】
図６に関連付けて上述したように、図７に示される統合型ビジネスシステムは、少なくとも１つの、但し典型的には複数の「サーバ」で構成される分散型コンピューティングシステム上でホストされてもよい。サーバは物理的コンピュータであって、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してサーバとデータ通信する他のコンピュータのユーザのニーズを満たすように意図された１つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理的コンピュータである。
【００６４】
ビジネスは、このような統合型ビジネスシステム自体を構築して維持するのではなく、第三者によって提供されるシステムを利用してもよい。このような第三者は、マルチテナントプラットフォームの文脈において上述されるように統合型ビジネスシステム／プラットフォームを実現してもよい。この場合、単一の包括的な統合型ビジネスシステムの個々のインスタンス化がさまざまなテナントに提供される。このようなマルチテナントプラットフォームについての１つの利点は、各々のテナントが、統合型ビジネスシステムのインスタンス化をそのテナント特有のビジネスニーズまたは運営方法に合わせてカスタマイズできることである。各々のテナントは、複数のユーザにビジネスデータおよび機能を提供するためにマルチテナントプラットフォームを用いるビジネスまたはエンティティであってもよい。これら複数のユーザのうちのいくつかのユーザは、ビジネスまたはエンティティ内で別個の役割または責任を有している可能性もある。
【００６５】
場合によっては、テナントは、そのアプリケーションに拡張を導入することによって既存のプラットフォームアプリケーションの機能を修正または補足することを所望する可能性もある。この場合、拡張はテナントの従業員および／または顧客に利用可能にされることとなっている。場合によっては、このような拡張は、プラットフォーム上に常駐するテナントのビジネス関連データの処理に適用されてもよい。この拡張は、テナントによって、または第３者である開発者によって開発されて、インストールできるようにテナントに利用可能にされていてもよい。プラットフォームは、テナントによってアクセスされ得るとともに対象となる拡張を識別するためにサーチされ得る、利用可能な拡張の「ライブラリ」またはカタログを含んでいてもよい。ソフトウェア開発者は、提案された拡張を適切に確認した後、ライブラリまたはカタログに対して拡張を「公表する」ことが許可され得る。
【００６６】
したがって、（ｅコマースプラットフォームに関連付けられた機能などの、それらの末端の顧客に対する何らかのサービスを提供することを含み得る）テナントらが所望するサービスおよび機能をこれらテナントが獲得することを許可しようとして、マルチテナントサービスプラットフォームは、テナントが、利用可能なサービスの特定の局面をそれらのビジネスニーズにより良く適合するように構成することを許可し得る。このように、サービスプラットフォームの局面はカスタマイズ可能あり得るとともに、これにより、テナントが、それぞれのユーザまたはそれらユーザのグループにそれぞれ特徴的なサービスを提供するようにプラットフォームの局面を構成することを可能にし得る。たとえば、サービスプラットフォームを用いるビジネスエンタープライズは、それらの従業員および／もしくは顧客に追加機能もしくは能力を提供すること、または、それらのビジネスニーズに合った規定済みのワークフローに従って特定の方法でそれらのビジネスデータを処理させることなどを所望する可能性もある。
【００６７】
プラットフォームに対するテナントカスタム化は、下位レベルのオペレーティングシステム機能の上に構築された特定用途向け機能（テナントまたはユーザ特有の機能、データ処理または動作を実行する能力など）を含み得る。いくつかのマルチテナントサービスプラットフォームは、グラフィカルユーザインターフェイスに対する審美上の変更から、独立した第三者ベンダーによって開発されたコンポーネントおよび／またはアプリケーション全体の統合の提供に至るまで、サービスプラットフォームのいくつかのさまざまなレベルで機能または動作をカスタマイズする能力を提供し得る。これは非常に有益であり得る。なぜなら、第三者ベンダーによって開発されたコンポーネントおよび／またはアプリケーションの使用を許可することにより、マルチテナントサービスが、テナントにとって利用可能な機能を著しく向上させて、プラットフォームに対するテナント満足感を高めることができるようになるからである。
【００６８】
上述のとおり、ユーザカスタム化に加えて、独立したソフトウェア開発者は、マルチテナントデータ処理プラットフォームを通じてユーザにとって利用可能となる特定のアプリケーションに対する拡張を作成してもよい。この拡張は、新しい機能または能力を基礎をなすアプリケーションに追加し得る。プラットフォームの１つ以上のテナント／ユーザは、拡張によって実現可能となるアプリケーションの機能向上を利用できるようにするために、この拡張を基礎をなすアプリケーションに追加することを所望するかもしれない。さらに、開発者は、拡張に組み込むのに有益となるであろう修正または付加的機能の必要性を認識していれば、パッチをアップグレードするかまたは拡張に提供することを所望するかもしれない。場合によっては、より新しいバージョンの拡張を改善するためのフィードバックを得るために、拡張の安定性をテストするために、または、拡張のために市場を区分化するのを支援するために、開発者は、（少なくとも最初は）選択されたユーザのセットだけがアップグレードを実施できるようにすることをより好む可能性がある。
【００６９】
別の実施形態においては、記載された方法および／またはそれらの同等例はコンピュータ実行可能命令で実現されてもよい。このため、一実施形態においては、非一時的なコンピュータ読取り可能／記憶媒体は、機械によって実行されたときに当該機械（および／または関連する構成要素）に方法を実行させるアルゴリズム／実行可能アプリケーションのコンピュータ実行可能命令が格納された状態で構成される。例示的な機械は、プロセッサ、コンピュータ、クラウド・コンピューティング・システムにおいて動作するサーバ、ソフトウェア・アズ・ア・サービス（ＳａａＳ）アーキテクチャで構成されるサーバ、スマートフォン、などを含むが、これらに限定されない。一実施形態においては、コンピューティングデバイスは、開示された方法のうちのいずれかを実行するように構成される１つ以上の実行可能なアルゴリズムで実現される。
【００７０】
１つ以上の実施形態においては、開示された方法またはそれらの同等例は、方法を実行するように構成されたコンピュータハードウェア、または、非一時的なコンピュータ読取り可能媒体に格納されてモジュールで具体化されるコンピュータ命令、のいずれかによって実行される。この場合、上記命令は、少なくともコンピューティングデバイスのプロセッサによって実行されたときに方法を実行するように構成された実行可能なアルゴリズムとして構成されている。
【００７１】
説明を簡潔にする目的で、図に例示された方法はアルゴリズムの一連のブロックとして図示および記載されているが、方法がブロックの順序によって限定されないことが認識されるはずである。いくつかのブロックは、図示および記載される他のブロックとは異なる順序で実施可能および／または同時に実施可能である。さらに、例示的な方法を実現するために、図示されるブロックがすべて用いられなくてもよい。ブロックは組合わされてもよく、または複数の動作／構成要素に分離されてもよい。さらに、付加的および／または代替的な方法は、ブロックには例示されていない追加の動作を用いることができる。
【００７２】
以下は、この明細書中において用いられる選択された用語の定義を含む。定義は、用語の範囲内にあるとともに実現するのに用いられ得る構成要素のさまざまな例および／または形式を含む。これらの例は、限定するように意図されたものではない。単数形および複数形の用語はともに上記定義の範囲内であり得る。
【００７３】
「一実施形態」、「実施形態」、「一例」、「例」などの言及は、そのように説明された実施形態または例が特定の特徴、構造、特性、性質、要素、または限定を含み得るものの、すべての実施形態または例が必ずしもその特定の特徴、構造、特性、性質、要素、または限定を含むとは限らない、ことを示す。さらに、「一実施形態においては」という句を繰り返し使用することは、必ずしも同じ実施形態を指すとは限らないものの、同じ実施形態を指す場合もある。
【００７４】
「データ構造」は、この明細書中において用いられているように、メモリ、ストレージデバイスまたは他のコンピュータ化されたシステムに格納されるコンピューティングシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データ記録、データベース、データテーブル、グラフ、ツリー、リンクされたリストなどのうちいずれか１つであってもよい。データ構造は、他の多くのデータ構造から形成されていてもよく、他の多くのデータ構造を含んでもよい（たとえば、データベースは多くのデータ記録を含む）。データ構造の他の例は、他の実施形態に従って、同様に実現可能である。
【００７５】
「コンピュータ読取り可能媒体」または「コンピュータ記憶媒体」は、この明細書中において用いられるとおり、実行されたときに、開示された機能のうち１つ以上を実行するように構成された命令および／またはデータを格納する非一時的な媒体を指している。データは、いくつかの実施形態において命令として機能し得る。コンピュータ読取り可能媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない形態を取ってもよい。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ読取り可能媒体の一般的形態は、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス、コンパクトディスク（ＣＤ）、他の光学媒体、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、メモリチップまたはカード、メモリスティック、ソリッドステートストレージデバイス（solid state storage device：ＳＳＤ）、フラッシュドライブ、および、コンピュータ、プロセッサまたは他の電子機器を機能させることができる他の媒体、を含み得るが、これらに限定されない。各々のタイプの媒体は、一実施形態において実現するために選択された場合、開示および／またはクレームされた機能のうち１つ以上を実行するように構成されたアルゴリズムの格納された命令を含み得る。
【００７６】
「論理」は、この明細書中において用いられるとおり、この明細書中に開示されるように機能または動作のいずれかを実行するように、および／または、この明細書中に開示されるように別の論理、方法および／またはシステムから機能または動作を実行させるように、コンピュータもしくは電気的ハードウェアで実現される構成要素、実行可能なアプリケーションもしくはプログラムモジュールの命令が格納された非一時的な媒体、ならびに／または、これらの組合せを表わす。同等の論理は、ファームウェア、アルゴリズムでプログラムされたマイクロプロセッサ、個別論理（たとえばＡＳＩＣ）、少なくとも１つの回路、アナログ回路、デジタル回路、プログラムされた論理デバイス、アルゴリズムの命令を含むメモリデバイスなどを含んでいてもよい。これらはいずれも、開示された機能のうち１つ以上を実行するように構成され得る。一実施形態においては、論理は、１つ以上のゲート、ゲートの組合せ、または開示される機能のうち１つ以上を実行するように構成された他の回路部品を含んでいてもよい。複数の論理が説明される場合、その複数の論理を１つの論理に組込むことが可能であり得る。同様に、単一の論理が説明される場合、その単一の論理を複数の論理間に分散させることが可能であり得る。一実施形態においては、これらの論理のうち１つ以上は、開示および／またはクレームされた機能を実行することに係る対応する構造である。実現すべき論理のタイプの選択は、所望のシステム条件または規格に基づき得る。たとえば、より高速であることが重要視すべき事項であれば、機能を実現するためにハードウェアが選択されるだろう。より低コストが重要視すべき事項であれば、機能を実現するために格納された命令／実行可能なアプリケーションが選択されるだろう。
【００７７】
「動作可能な接続」またはエンティティが「動作可能に接続されている」接続は、信号、物理的通信、および／または論理的通信が送信および／または受信され得る接続である。動作可能な接続は、物理インターフェイス、電気インターフェイスおよび／またはデータインターフェイスを含み得る。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび／または接続のさまざまな組合せを含み得る。たとえば、２つのエンティティは、互いに直接、または１つ以上の中間エンティティ（たとえばプロセッサ、オペレーティングシステム、論理、非一時的なコンピュータ読取り可能媒体）を介して、信号を互いに伝達するために動作可能に接続することができる。論理的および／または物理的な通信チャネルを用いて動作可能な接続を構築することができる。
【００７８】
ここに使用されるような「ユーザ」は、１人以上の人間、１つ以上のコンピュータもしくは他の装置、またはこれらの組合せを含むものの、これらに限定されない。
【００７９】
開示された実施形態を非常に詳細に例示および説明してきたが、添付された請求の範囲をそのような詳細に制限したり何らかの形で限定することは意図されていない。主題のさまざまな局面を説明する目的のために、構成要素または方法論のすべての考えられ得る組合せを説明することは、もちろん不可能である。したがって、この開示は、図示および説明された特定の詳細または実例に限定されない。
【００８０】
「含む」または「含んで」という用語が詳細な説明または請求項において採用されている範囲では、それは、「備える」という用語と同様の態様で包括的であるよう意図されている。なぜなら、その用語は、採用された場合、請求項において過渡的な言葉として解釈されるからである。
【００８１】
「または」という用語が詳細な説明または請求項において採用されている（たとえば、ＡまたはＢ）範囲では、それは、「ＡまたはＢまたはそれら双方」を意味するよう意図されている。出願人が「ＡまたはＢのどちらか一方だけ」を示すよう意図する場合には、「ＡまたはＢのどちらか一方だけ」という句が使用されるであろう。このため、ここでの「または」という用語の使用は包括的使用であり、排他的使用ではない。
【図１Ａ】
0006971395.tif 000002
【図１Ｂ】
0006971395.tif 000003
【図２】
0006971395.tif 000004
【図３Ａ】
0006971395.tif 000005
【図３Ｂ】
0006971395.tif 000006
【図４】
0006971395.tif 000007
【図５】
0006971395.tif 000008
【図６】
0006971395.tif 000009
【図７】
0006971395.tif 000010