JP6720613B2 - 情報処理システム及び情報処理プログラム - Google Patents

情報処理システム及び情報処理プログラム Download PDF

Info

Publication number
JP6720613B2
JP6720613B2 JP2016058398A JP2016058398A JP6720613B2 JP 6720613 B2 JP6720613 B2 JP 6720613B2 JP 2016058398 A JP2016058398 A JP 2016058398A JP 2016058398 A JP2016058398 A JP 2016058398A JP 6720613 B2 JP6720613 B2 JP 6720613B2
Authority
JP
Japan
Prior art keywords
information
request
information processing
authority
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016058398A
Other languages
English (en)
Other versions
JP2017174074A (ja
Inventor
寺尾 太郎
太郎 寺尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2016058398A priority Critical patent/JP6720613B2/ja
Priority to US15/257,124 priority patent/US10657139B2/en
Publication of JP2017174074A publication Critical patent/JP2017174074A/ja
Application granted granted Critical
Publication of JP6720613B2 publication Critical patent/JP6720613B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、情報処理システム及び情報処理プログラムに関する。
特許文献1には、オブジェクトの情報とオブジェクトの処理に関する権限とを同一のデータ構造で管理し、クライアントからの要求を柔軟に制御することを課題とし、情報処理装置は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理し、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定と、権限オブジェクトを用いて実行する処理の要求とをクライアント装置から受け付け、権限情報を認可したオブジェクトである所有者オブジェクトと、権限オブジェクトの親であるオブジェクトとの情報の比較結果に基づいて、クライアント装置からの要求を受理するか否かを判断することが開示されている。
特許文献2には、クライアントから受け付けた要求に係る権限オブジェクトに応じて決定される関数により要求を処理することを課題とし、情報管理装置は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理するオブジェクト情報管理部と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付けるリクエスト受付部と、権限オブジェクトに関連付けられた関数オブジェクトを取得する関数オブジェクト取得部と、関数オブジェクトにより要求を処理するリクエスト処理部を有することが開示されている。
特許文献3には、クライアントから受け付けた要求に係る権限オブジェクトに応じたコンテンツを提供することを課題とし、情報管理装置は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの少なくとも一部にコンテンツを構成する要素の要素名と要素値を関連付けて管理し、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付け、権限オブジェクトに基づいて対象のオブジェクトを設定し、対象のオブジェクトに要求が指定する要素名が関連付けられていない場合には、対象のオブジェクトの親のオブジェクトを新たな対象のオブジェクトに設定する処理を、予め定められた条件が満足されるまで繰り返し実行し、設定された対象のオブジェクトに要求が指定する要素名が関連付けられている場合には、対象のオブジェクトに関連付けられた要素値を要求に対し応答することが開示されている。
特許第5447722号公報 特開2015−162057号公報 特開2015−162058号公報
前述の特許文献に記載の技術では、オブジェクトの情報を管理する記憶手段は、1箇所の記憶手段にあることを前提としている。
しかし、その1箇所の記憶手段に負荷が集中し、その記憶手段が稼働していない場合は使用することができない。
そこで、本発明は、権限オブジェクトを比較して、要求に対応する処理を行う場合にあって、オブジェクトの情報を、少なくとも1つの情報処理装置内の記憶手段と複数の情報処理装置からアクセス可能な記憶手段の複数箇所で管理するようにした情報処理システム及び情報処理プログラムを提供することを目的としている。
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の発明は、複数の情報処理装置を有し、少なくとも1つの情報処理装置は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置内の記憶手段で管理する第1の管理手段と、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、本情報処理装置又は他の情報処理装置から受け付ける受付手段と、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段を有し、前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、本情報処理装置内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、ことを特徴とする情報処理システムである。
請求項2の発明は、前記要求がオブジェクトの情報の変更を禁止する要求である場合は、該オブジェクトの子孫のオブジェクトの情報に対しても、変更を禁止する禁止手段をさらに有することを特徴とする請求項1に記載の情報処理システムである。
請求項3の発明は、前記第2の管理手段が管理する記憶手段にオブジェクトの情報の書き込みを始める前に、前記第1の管理手段が管理する記憶手段内の対応するオブジェクトの情報の変更を禁止し、該書き込みが完了したときに、該禁止を解除することを特徴とする請求項2に記載の情報処理システムである。
請求項4の発明は、前記第2の管理手段が管理する記憶手段内のオブジェクトの情報に対して要求を行った利用者を記憶し、該オブジェクトの情報の変更が行われた場合は、該利用者に通知を行う通知手段をさらに有することを特徴とする請求項1から3のいずれか一項に記載の情報処理システムである。
請求項5の発明は、コンピュータを、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ内の記憶手段で管理する第1の管理手段と、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、前記コンピュータ又は他の情報処理装置から受け付ける受付手段と、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段として機能させ、前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、前記コンピュータ内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、情報処理プログラムである。
請求項1の情報処理システムによれば、権限オブジェクトを比較して、要求に対応する処理を行う場合にあって、オブジェクトの情報を、少なくとも1つの情報処理装置内の記憶手段と複数の情報処理装置からアクセス可能な記憶手段の複数箇所で管理することができる。
請求項2の情報処理システムによれば、オブジェクトの子孫のオブジェクトの情報に対しても、変更を禁止することができる。
請求項3の情報処理システムによれば、第2の管理手段が管理する記憶手段にオブジェクトの情報の書き込みがある場合は、その間、第1の管理手段が管理する記憶手段内の対応するオブジェクトの情報の変更を禁止することができる。
請求項4の情報処理システムによれば、第2の管理手段が管理する記憶手段内のオブジェクトの情報に対して要求を行った利用者に対して、そのオブジェクトの情報の変更が行われたことを通知することができる。
請求項5の情報処理プログラムによれば、権限オブジェクトを比較して、要求に対応する処理を行う場合にあって、オブジェクトの情報をコンピュータ内の記憶手段と複数の情報処理装置からアクセス可能な記憶手段の複数箇所で管理することができる。
本実施の形態の構成例についての概念的なモジュール構成図である。 本実施の形態を利用したシステム構成例を示す説明図である。 プロトタイプベースのオブジェクトの具体例を示す図である。 オブジェクト管理テーブルの一例を示す図である。 バリュー管理テーブルの一例を示す図である。 配信用アクセストークンの生成処理のシーケンス図である。 配信用オブジェクトのコンテンツ表示処理のシーケンス図である。 配信用オブジェクトの無効化処理のシーケンス図である。 配信用オブジェクトの無効化処理のシーケンス図である。 配信用オブジェクトの凍結処理のシーケンス図である。 配信用オブジェクトに対する任意関数の追加処理のシーケンス図である。 認証が追加された配信用オブジェクトのコンテンツ表示処理のシーケンス図である。 オブジェクトの構成例を示す図である。 オブジェクトの構成例を示す図である。 オブジェクトの構成例を示す図である。 KVSテーブルのデータ構造例を示す説明図である。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 オブジェクトストアKVSテーブルのデータ構造例を示す説明図である。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
[1.情報処理装置100に備えられた機能の説明]
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、全ての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理ごとに又はモジュール内で複数の処理を行う場合はその処理ごとに、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
本実施の形態である情報処理装置100は、図1の例に示すように、データ格納モジュール110、リクエスト受付モジュール120、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140、リクエスト処理モジュール150、処理結果提供モジュール160を有している。情報処理装置100は、マスターデータ自体ではなく、その子孫オブジェクトを参照させ、子孫オブジェクトが有していないデータ項目についてはマスターデータのデータ項目を提供し、子孫オブジェクトが有しているデータ項目については子孫オブジェクトのデータ項目を提供する事により、一のマスターデータについての提供内容を個別に制御できるものである。
データ格納モジュール110は、オブジェクト管理テーブル111、バリュー管理テーブル112を有しており、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140と接続されている。
リクエスト受付モジュール120は、権限オブジェクト検証モジュール130と接続されている。
権限オブジェクト検証モジュール130は、データ格納モジュール110、リクエスト受付モジュール120、リクエスト処理モジュール150と接続されている。
オブジェクト管理モジュール140は、配信用オブジェクト生成モジュール141を有しており、データ格納モジュール110、リクエスト処理モジュール150と接続されている。
リクエスト処理モジュール150は、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140、処理結果提供モジュール160と接続されている。
処理結果提供モジュール160は、リクエスト処理モジュール150と接続されている。
データ格納モジュール110は、プロトタイプベースのオブジェクトの情報を管理する。ここで、プロトタイプベースのオブジェクトには、権限情報が関連付けられたアクセストークンと呼ばれる権限オブジェクトを含む。プロトタイプベースのオブジェクトは変更可能(ミュータブル)なオブジェクトであり、典型的にはランダムに生成されたIDで識別される。
図3には、情報処理装置100により管理されるプロトタイプベースのオブジェクト群(オブジェクト木)の具体例を示した。図3に示される例においては、各ノードはオブジェクトを、ノードをつなぐエッジはプロトタイプ継承による親子関係を表している。
図3に示されるように、「root」オブジェクトD1の子オブジェクトとして、「crudScope」オブジェクトD11、「readOnlyScope」オブジェクトD12、「contentOwner」オブジェクトD13が設けられている。さらに、「contentOwner」オブジェクトD13の子オブジェクトとして、「contentOwnerToken」オブジェクトD131、「masterContent」オブジェクトD132、「masterContentToken」オブジェクトD133が設けられている。そしてさらに、「masterContent」オブジェクトD132の子オブジェクトとして、「childContent」オブジェクトD1321、「childContentToken」オブジェクトD1322が設けられている。
図3に示した例において、「crudScope」オブジェクトD11はCRUD(Create,Read,Update,Delete)の範囲(すなわち、作成、読み込み、更新、削除)を許可するスコープ、「readOnlyScope」オブジェクトD12は読みのみを許可するスコープに相当する。
さらに、「contentOwner」オブジェクトD13は、「masterContent」オブジェクトD132の所有者に相当する。「contentOwnerToken」オブジェクトD131は、「contentOwner」オブジェクトD13がCRUDするためのトークンに相当し、所有者を「contentOwner」、クライアント(権限委譲先)を「contentOwner」、スコープを「crudScope」とするトークンである。
さらに、「masterContent」オブジェクトD132がマスターデータに相当し、「masterContentToken」オブジェクトD133は、マスターデータの子を作成するためのトークンに相当する。なお、「masterContentToken」オブジェクトD133は、所有者を「masterContent」、クライアント(権限委譲先)を「masterContent」、スコープを「crudScope」とするトークンである。
さらに、「childContent」オブジェクトD1321が配信用の子オブジェクトに相当し、「childContentToken」オブジェクトD1322が「childContent」オブジェクトD1321を更新するためのトークンに相当する。なお、「childContent」オブジェクトD1321は、所有者を「masterContent」、クライアント(権限委譲先)を「childContent」、スコープを「crudScope」とするトークンである。
本実施の形態では、データ格納モジュール110には、オブジェクト管理テーブル111と、バリュー管理テーブル112が含まれ、プロトタイプベースのオブジェクトの情報を、オブジェクト管理テーブル111と、バリュー管理テーブル112に格納して管理している。
図4には、オブジェクト管理テーブル111の一例を、そして図5にはバリュー管理テーブル112の一例をそれぞれ示した。
図4に示されるように、オブジェクト管理テーブル111には、プロトタイプベースのオブジェクトの識別情報であるオブジェクトID、オブジェクトの親(プロトタイプ)オブジェクトの識別情報であるプロトタイプID、オブジェクトが有効化されているか否か(Tが有効、Fが無効)を示す有効化フラグ、オブジェクトの属性情報が関連付けて記憶される。また、オブジェクトの属性情報には、オブジェクトの型を示すtype、オブジェクトのデータ内容を格納したデータオブジェクトの識別情報を表すetag、オブジェクトの名称を格納したname、オブジェクトの生成日時を表すtimeを含む。なお、プロトタイプベースのオブジェクトのデータ構成は、図4に示された例に限定されるものではなく、上述した要素以外の要素を含み構成されていても構わない。また、オブジェクトが有効であるか否かはフラグではなく無効化日時を表す属性情報として取り扱ってもよい。その場合は、プロトタイプ継承のため、あるノードを無効化することでそのノードをルートとする部分木の全てのノードを一括して無効化することができる。
また、図5に示されるように、バリュー管理テーブル112には、etagにバリューが関連付けられている。例えば、バリューは任意のオクテット配列であり、etagの値はそのオクテット配列のハッシュ値とするようにしてもよい。
例えば、コンテンツに相当するオブジェクトであれば、etagのバリューとして例えば「HEADER」や「BODY」のそれぞれの項目について情報が格納される。また例えば、第1オブジェクトを親、第2オブジェクトを第1オブジェクトの子とするコンテンツに関し、第1オブジェクトのetagのバリューとして「HEADER」や「BODY」に情報が格納され、第2オブジェクトのetagのバリューとして「HEADER」や「BODY」に情報が格納されていない場合には、第2オブジェクトのコンテンツを参照した場合には、第1オブジェクトの「HEADER」や「BODY」に格納された情報が第2オブジェクトのコンテンツとして用いられる。また、第2オブジェクトのコンテンツに「HEADER」や「BODY」に格納された情報がある場合には、その格納された情報が第2オブジェクトのコンテンツとして用いられる。
また例えば、アクセストークンであればetagのバリューとして、{“owner”:owner(オーナー)のオブジェクトID、“client”:client(クライアント)のオブジェクトID、“スコープ”:認可された処理の範囲}の形式の情報を含む。端末装置から受け付ける処理要求にはアクセストークンが添付されるが、ここで、アクセストークンを検証することにより、オーナー、クライアント、スコープの情報が特定される。なお、オーナーが処理のリクエスタ、クライアントが処理の代理リクエスタとして扱われる。
リクエスト受付モジュール120は、図2の例を用いて後述する端末装置250からリクエストを受け付ける。例えば、リクエスト受付モジュール120は、端末装置250からデータ格納モジュール110で管理されるオブジェクトの処理に関するリクエストを受け付けることとしてよい。なお、リクエスト受付モジュール120は、端末装置250からリクエストとともにリクエストに係るアクセストークンの情報を受け付けることとしてよい。この際、リクエスト受付モジュール120は、例えば端末装置250からHTTPリクエストの形式でリクエストを受け付けることとしてよい。
権限オブジェクト検証モジュール130は、リクエスト受付モジュール120で受け付けたリクエストに係る権限オブジェクト(アクセストークン)の情報を取得し、取得した権限オブジェクトを検証する。例えば、権限オブジェクト検証モジュール130は、アクセストークンの情報を、HTTPリクエストのAuthorizationフィールドから得てもよいし、アクセストークンの情報を含むクッキーが存在すれば、クッキーから得てもよい。
権限オブジェクト検証モジュール130は、上記取得したアクセストークン(権限オブジェクト)の情報が正当なものであるか否かを検証する。以下、権限オブジェクト検証モジュール130による検証処理の具体例について説明する。
まず、権限オブジェクト検証モジュール130は、アクセストークンのIDが、データ格納モジュール110で管理するオブジェクト管理テーブル111に含まれているか否か(第1の条件の適否)を判断し、含まれていない場合には検証失敗と判断する。
次に、権限オブジェクト検証モジュール130は、第1の条件が満たされている場合に、アクセストークンのデータ形式(タイプ)が所定の型(すなわち、application/json)であるか否か(第2の条件の適否)を判断し、所定の型でない場合には検証失敗と判断する。すなわち、アクセストークンのetagについてバリュー管理テーブル112に記憶されるバリューが所定の型(owner、client、scopeを指定したデータ形式)でない場合には、検証失敗と判断する。
次に、権限オブジェクト検証モジュール130は、第2の条件が満たされている場合に、アクセストークンのバリューの値(owner、client、scopeの値)を取得し、owner、client、scopeのそれぞれの値がデータ格納モジュール110で管理されるデータであるか否か(第3の条件の適否)を判断し、いずれかの値がデータ格納モジュール110で管理されるデータでない場合には検証失敗と判断する。
次に、権限オブジェクト検証モジュール130は、第3の条件が満足されている場合に、データ格納モジュール110からアクセストークンのプロトタイプの情報を取得し、アクセストークンのプロトタイプが、アクセストークンのオーナーと一致しているか、オーナーのプロトタイプチェーン(オーナーの親、さらにその親へとオーナーの祖先を順に接続した経路)に含まれるか否か(第4の条件の適否)を判断し、上記のいずれにも合致しない場合には検証失敗と判断する。また、上記のプロトタイプチェーンは、オブジェクトの親、さらにその親を再帰的にたどる列ともいえる。なお、以上の第1から第4の条件を満足した場合には、権限オブジェクト検証モジュール130は、アクセストークンの検証を成功と判断することとしてよい。
権限オブジェクト検証モジュール130は、上記の検証の結果と、アクセストークンにより認可されているスコープ(処理の範囲)の情報と、受け付けたリクエストをリクエスト処理モジュール150に通知する。
リクエスト処理モジュール150は、リクエスト受付モジュール120で受け付けたリクエストについて取得したアクセストークン(権限オブジェクト)についての権限オブジェクト検証モジュール130から通知された検証結果と、該受け付けたアクセストークンについて認可されたスコープ(処理の範囲)に基づいて、リクエスト受付モジュール120で受け付けたリクエストの処理を制御する。例えば、リクエスト処理モジュール150は、リクエスト受付モジュール120で受け付けたリクエストに係るアクセストークンについての検証結果が検証失敗である場合には、リクエストに係る処理を不受理としてエラーを処理結果提供モジュール160に出力することとしてよい。また、リクエスト処理モジュール150は、リクエスト受付モジュール120で受け付けたリクエストに係るアクセストークンについての検証結果が検証成功である場合には、リクエスト受付モジュール120で受け付けたリクエストを、該リクエストに関して受け付けたアクセストークンについて認可されたスコープに基づいて処理し、その処理結果を処理結果提供モジュール160に出力する。
例えば、リクエスト処理モジュール150は、受け付けたリクエストに基づいて、オブジェクト管理モジュール140にオブジェクトの生成、読み出し、更新、削除を依頼し、オブジェクト管理モジュール140から処理結果を受け取る。
具体的には、リクエスト処理モジュール150は、受け付けたリクエストが、マスターデータについての配信用オブジェクトの生成である場合には、オブジェクト管理モジュール140に、マスターデータ(オブジェクト)の子オブジェクト(又は子孫オブジェクト)の生成を要求し、生成された子オブジェクト(又は子孫オブジェクト)のオブジェクトIDを処理結果として処理結果提供モジュール160を介して端末装置250に送信させることとしてよい。
オブジェクト管理モジュール140は、データ格納モジュール110により管理されるオブジェクトの情報を管理する。例えば、オブジェクト管理モジュール140は、リクエスト処理モジュール150から受け付ける要求に基づいて、オブジェクト管理テーブル111、バリュー管理テーブル112に対して情報の追加、読み出し、更新、削除等の処理を実行する。
また、オブジェクト管理モジュール140は、配信用オブジェクト生成モジュール141を含み、リクエスト処理モジュール150から受け付ける配信用オブジェクトの生成要求に基づいて、マスターデータの子(又は子孫)である配信用オブジェクトを生成する。
また、オブジェクト管理モジュール140は、リクエスト処理モジュール150から受け付ける配信用オブジェクトの読み出し要求に基づいて、配信用オブジェクトの情報を読み出す。ここで、オブジェクト管理モジュール140は、配信用オブジェクトの有していないデータ項目については、配信用オブジェクトの親(又は先祖)のオブジェクトのデータ項目の情報を参照し、配信用オブジェクトの情報として返す。
また、オブジェクト管理モジュール140は、リクエスト処理モジュール150から受け付ける配信用オブジェクトの更新要求に基づいて、配信用オブジェクトの内容を更新する。また、オブジェクト管理モジュール140は、リクエスト処理モジュール150から受け付ける配信用オブジェクトの削除要求に基づいて、配信用オブジェクトを削除する。
処理結果提供モジュール160は、リクエスト処理モジュール150による処理結果を、リクエストの要求元である端末装置250に対して提供する。例えば、処理結果提供モジュール160は、リクエスト受付モジュール120により受け付けた処理要求が、配信用オブジェクトの生成である場合には、生成された配信用オブジェクトのオブジェクトIDを端末装置250に提供することとしてよい。また例えば、処理結果提供モジュール160は、リクエスト受付モジュール120により受け付けた処理要求が、配信用オブジェクトの読み出しである場合には、読み出された配信用オブジェクトの情報(すなわちコンテンツデータ)を端末装置250に提供することとしてよい。また例えば、処理結果提供モジュール160は、リクエスト受付モジュール120により受け付けた処理要求が、配信用オブジェクトの更新、削除である場合には、配信用オブジェクトの更新、削除の成否情報を端末装置250に提供することとしてよい。
[2.システム構成の説明]
図2は、本実施の形態を利用したシステム構成例を示す説明図である。
情報処理装置100A、第1端末装置250A、第2端末装置250B、第3端末装置250C、第4端末装置250D、認証装置280は、通信回線290を介してそれぞれ接続されている。第3端末装置250Cは、情報処理装置100Cを有している。第4端末装置250Dは、情報処理装置100Dを有している。通信回線290は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置100による機能は、クラウドサービスとして実現してもよい。
情報処理装置100を有していない第1端末装置250A、第2端末装置250Bの例は、リモートでのみ情報処理装置100Aを用いる場合を示している。情報処理装置100を有している第3端末装置250C、第4端末装置250Dの例は、リモートで情報処理装置100Aを用いる場合とローカルの情報処理装置100C、情報処理装置100Dを用いる場合を示している。[1]から[4]の説明では、主に、第1端末装置250A、第2端末装置250Bによる情報処理装置100Aの利用を示しており、[5]以降の説明では、第3端末装置250C、第4端末装置250Dによるリモート(情報処理装置100A)とローカル(情報処理装置100C、情報処理装置100D)での利用を示している。
情報処理装置100は、プロトタイプベースのオブジェクトを管理する。ここで、プロトタイプベースのオブジェクトとは、プロトタイプベースのオブジェクトの集合に唯一存在するルートオブジェクトを除けば、唯一つの親のオブジェクト(プロトタイプ)を持つオブジェクトのことである。なお、ルートオブジェクトは自身のプロトタイプを持たない。
また、オブジェクトAがオブジェクトBのプロトタイプであるとき、オブジェクトBはオブジェクトAのアーティファクトであるともいう。オブジェクト間のプロトタイプ関係により、プロトタイプベースのオブジェクト全体の集合は木構造で表現される。また、オブジェクトにより構成される木構造を破壊しないならば、プロトタイプを再接続することで木構造を変形することが可能である。
さらに、情報処理装置100で管理するオブジェクトには、属性及び属性値を持たせることができる。REST(REpresentational State Transfer)アーキテクチャスタイルにおいては、オブジェクトをリソース、値を表現と呼ぶこともある。オブジェクトには、単にオブジェクト識別子とプロトタイプのみからなる純粋なアイデンティティのみを表すもの、任意のコンテント型の値を持つデータを表すもの、アクセス資格を証明するクレデンシャルであるアクセストークン、あるいはオブジェクトの所有者であるリソースオーナーやリソースオーナーの認可のもとにオブジェクトへのアクセスを行うアプリケーション(クライアント)のようなエンティティを表すものが含まれることとしてよい。そして、これらのオブジェクトが1つの木構造の中に含まれる。なお、上記のアクセストークンは、権限情報が関連付けられるオブジェクトともいえる。
情報処理装置100は、アクセストークンを提示したリクエストを受け付け、アクセストークンが有効と検証された場合に、アクセストークンに基づき特定された権限の範囲で、上記受け付けたリクエストを処理する。例えば、アクセストークンにより特定される権限の範囲は、オブジェクトを作成(追加)、内容の参照、更新、削除等のいずれかを認可(又は不認可)したものである。また例えば、情報処理装置100は、端末装置250から受け付けたリクエストにしたがって、管理するオブジェクトの追加、更新、情報の読み出し、削除等を実行する。
情報処理装置100は、第1端末装置250Aからのリクエストに基づいて生成した、配信用のマスターデータであるコンテンツを管理していることとする。そして、情報処理装置100は、第1端末装置250Aからのリクエストに基づいて、マスターデータであるコンテンツの子であるオブジェクトを生成する。第1端末装置250Aは、マスターデータそのものではなく、マスターデータの子のオブジェクトの情報を第2端末装置250Bに配信することとする。このマスターデータの子のオブジェクトについては、個別に内容の追加、更新、削除等が可能であり、そうした内容の追加、更新、削除は親であるマスターデータの内容には影響を与えることがない。
[3.処理の一例についての説明]
次に、図6から図12に示されたシーケンス図に基づいて、情報処理システムで実行される処理の一例について詳細に説明する。
[3.1.配信用オブジェクトの生成処理]
まず、図6に示したシーケンス図に基づいて、第1端末装置250Aと情報処理装置100とにより実行される配信用アクセストークンの生成処理の一例について説明する。まず、図6のフローにおいては、第1端末装置250Aはマスターデータ(masterCotent)の親オブジェクト(contentOwner)について子オブジェクトの生成、取得、更新、削除が可能なスコープが定められたアクセストークンT1(contentOwnerToken)を有することとする。
図6に示されるように、第1端末装置250Aは、アクセストークンT1を用いて、マスターデータ(masterCotent)の子オブジェクトを作成するためのアクセストークンT2(masterContentToken)の作成を情報処理装置100に対して指示する(S3101)。
情報処理装置100は、第1端末装置250AからアクセストークンT2の作成指示を受け付けると(S1101)、アクセストークンT1を検証し、検証が成功した場合に、アクセストークンT2を作成する(S1102)。そして、情報処理装置100は、上記作成したアクセストークンT2のID(オブジェクトID)を第1端末装置250Aに対して送信する(S1103)。
第1端末装置250Aは、情報処理装置100から送信されるアクセストークンT2のIDを受信する(S3102)。
次に、第1端末装置250Aは、アクセストークンT2を用いて、マスターデータの配信用オブジェクトとして、マスターデータの子オブジェクトの作成を情報処理装置100に対して指示する(S3103)。
情報処理装置100は、第1端末装置250Aから配信用オブジェクトの作成指示を受け付けると(S1104)、アクセストークンT2を検証し、検証が成功した場合に、配信用オブジェクト、すなわちマスターデータの子オブジェクトを作成する(S1105)。そして、情報処理装置100は、上記作成した配信用オブジェクトのID(オブジェクトID)を第1端末装置250Aに対して送信する(S1106)。
第1端末装置250Aは、情報処理装置100から送信される配信用オブジェクトのIDを受信する(S3104)。そして、第1端末装置250Aは、配信用オブジェクトのIDに基づいて生成される、配信用オブジェクトの内容を参照するためのURIを第2端末装置250Bに提供する(S3105)。
また、第1端末装置250Aは、第2端末装置250Bに対して、上記のURIに加えて、配信用オブジェクトの内容を更新するためのアクセストークンT2の情報も提供することとしても構わない。
以上が、配信用オブジェクトの生成に関する処理の一例である。
[3.2.配信用オブジェクトのコンテンツ表示処理]
次に、図7に示したシーケンス図に基づいて、第2端末装置250Bと情報処理装置100により実行される、第2端末装置250Bが配信用オブジェクトのコンテンツを表示する処理の一例について説明する。以下のシーケンス例においては、第2端末装置250Bは、配信用オブジェクトの参照が可能なスコープが定められたアクセストークンtを有することとする。
第2端末装置250Bは、アクセストークンtを用いて、配信用オブジェクトの内容を参照するためのURIにアクセスし、配信用オブジェクトの情報の取得を、情報処理装置100に対して指示する(S3201)。
情報処理装置100は、第2端末装置250Bから配信用オブジェクトの情報取得指示を受け付けると(S1201)、アクセストークンtを検証し、検証が成功した場合に、配信用オブジェクトの情報を取得する(S1202)。例えば、配信用オブジェクトにtype属性、etag属性が設定されていない場合には、情報処理装置100は配信用オブジェクトのtype属性、etag属性に、配信用オブジェクトの親であるマスターデータのtype属性、etag属性を設定した上で、配信用オブジェクトの情報を取得する。
そして、情報処理装置100は、上記取得した配信用オブジェクトの情報(コンテンツ)を第2端末装置250Bに対して送信する(S1203)。
第2端末装置250Bは、情報処理装置100から配信用オブジェクトの情報を受信し(S3202)、受信した配信用オブジェクトの情報に基づいて、配信用オブジェクトの情報を表示する(S3203)。
以上が、配信用オブジェクトの表示処理の一例である。
[3.3.配信用オブジェクトの無効化処理(1)]
次に、図8に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの無効化処理の一例について説明する。以下のシーケンス例は、マスターデータの所有者(コンテンツオーナー)が配信用オブジェクトに無効化属性を付与することで配信用オブジェクトを無効化する例に相当する。
図8に示されるように、第1端末装置250Aは、アクセストークンT2を用いて、配信用オブジェクトの属性を更新するためのアクセストークンT3(childContentToken)の作成指示を情報処理装置100に対して送信する(S3301)。
情報処理装置100は、アクセストークンT3の作成指示を受け付けると(S1301)、アクセストークンT2を検証し、検証が成功した場合に、アクセストークンT3を作成する(S1302)。そして、情報処理装置100は、上記作成したアクセストークンT3のIDを第1端末装置250Aに対して送信する(S1303)。
第1端末装置250Aは、情報処理装置100からアクセストークンT3のIDを受信すると(S3302)、アクセストークンT3を用いて、配信用オブジェクトに無効化属性を付与する指示を、情報処理装置100に対して送信する(S3303)。
情報処理装置100は、配信用オブジェクトに無効化属性を付与する指示を受け付けると(S1304)、アクセストークンT3を検証し、検証が成功した場合に、配信用オブジェクトに無効化属性を付与する(S1305)。例えば、情報処理装置100は、配信用オブジェクトの有効化フラグの情報をFに更新することにより上記の無効化処理を行うこととしてよい。
そして、情報処理装置100は、上記の無効化処理の結果を第1端末装置250Aに対して送信する(S1306)。
第1端末装置250Aは、情報処理装置100から、上記の無効化処理の結果を受信する(S3304)。以上が、配信用オブジェクトの無効化処理の第1の例である。
なお、上記において、配信用オブジェクトを再有効化する場合には、配信用オブジェクトの無効化属性を削除(すなわち、有効化フラグの情報をTに更新)すればよい。
[3.4.配信用オブジェクトの無効化処理(2)]
次に、図9に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの無効化処理の第2の例について説明する。以下のシーケンス例においては、配信用オブジェクトの無効化を、配信用オブジェクトを削除することにより実行する。
第1端末装置250Aは、アクセストークンT2を用いて、配信用オブジェクトの削除指示を情報処理装置100に対して送信する(S3401)。
情報処理装置100は、配信用オブジェクトの削除指示を受け付けると(S1401)、アクセストークンT2を検証し、検証が成功した場合に、配信用オブジェクトを削除する(S1402)。そして、情報処理装置100は、上記削除処理の結果を第1端末装置250Aに対して送信する(S1403)。
第1端末装置250Aは、情報処理装置100から、上記の削除処理の結果を受信する(S3402)。以上が、配信用オブジェクトの無効化処理の第2の例である。
[3.5.配信用オブジェクトの凍結処理]
次に、図10に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの凍結処理について説明する。なお、凍結処理とは、予め定められた時点(例えば業務委託の終了時点)で配信用オブジェクトのマスターデータへの継続的な参照を終了させ、その時点で配信用オブジェクトの情報を固定化させる処理のことをいう。
第1端末装置250Aは、アクセストークンT3を用いて、配信用オブジェクトの凍結指示を情報処理装置100に対して送信する(S3501)。
情報処理装置100は、配信用オブジェクトの凍結指示を受け付けると(S1501)、アクセストークンT3を検証し、検証が成功した場合に、配信用オブジェクトを凍結化する(S1502)。例えば、情報処理装置100は、配信用オブジェクトのetag属性に、凍結指示を受け付けた時点でのマスターデータのetag属性を設定する。これにより、マスターデータがその後更新されたとしても、配信用オブジェクトのコンテンツは凍結指示を受け付けた時点でのマスターデータの内容に固定化される。なお、配信用オブジェクトのtype属性については更新しなくともよい。
そして、情報処理装置100は、上記凍結処理の結果を第1端末装置250Aに対して送信する(S1503)。
第1端末装置250Aは、情報処理装置100から、上記の凍結処理の結果を受信する(S3502)。以上が、配信用オブジェクトの凍結処理の一例である。
なお、上記において、配信用オブジェクトの凍結を解除する場合には、配信用オブジェクトのetag属性の値を削除すればよい。これにより、配信用オブジェクトの親オブジェクトであるマスターデータへの参照が回復する。
[3.6.配信用オブジェクトに対する任意関数(例えば認証)の追加処理]
次に、図11に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトに対する任意関数の追加処理について説明する。なお、以下のシーケンスの例においては、配信用オブジェクトへのアクセス時に認証装置における認証処理を行うための関数を追加することとする。
第1端末装置250Aは、アクセストークンT3を用いて、配信用オブジェクトへの関数の追加指示を情報処理装置1000に対して送信する(S3601)。
情報処理装置100は、配信用オブジェクトへの関数の追加指示を受け付けると(S1601)、アクセストークンT3を検証し、検証が成功した場合に、配信用オブジェクトに指定された関数を追加する(S1602)。例えば、上記の指定された関数は、認証装置において認証されているか否かを真又は偽で返すものとする。
そして、情報処理装置100は、上記追加処理の結果を第1端末装置250Aに対して送信する(S1603)。
第1端末装置250Aは、情報処理装置100から、上記の追加処理の結果を受信する(S3602)。以上が、配信用オブジェクトへの関数の追加処理の一例である。
なお、配信用オブジェクトに追加される関数は、上記の認証処理に限られるものではない。例えば、配信用オブジェクトに対して、配信用オブジェクトが参照された場合に、コンテンツのオーナーに対して、参照があった旨を通知する関数を追加するようにしてもよい。
[3.7.認証が追加された配信用オブジェクトのコンテンツ表示処理]
次に、図12に示されるシーケンス図に基づき、認証が追加された配信用オブジェクトを第2端末装置250Bが表示する際に実行される処理の一例について説明する。以下に説明するシーケンスの例は、認証装置280による認証が済んでいない場合に相当する。
第2端末装置250Bは、アクセストークンtを用いて、配信用オブジェクトの内容を参照するためのURIにアクセスし、配信用オブジェクトの情報の取得を、情報処理装置100に対して指示する(S3701)。
情報処理装置100は、第2端末装置250Bから配信用オブジェクトの情報取得指示を受け付けると(S1701)、アクセストークンtを検証し、検証が成功した場合に、追加された認証の関数を実行する(S1702)。そして、情報処理装置100は、認証先である認証装置280をリダイレクト先として第2端末装置250Bに指示する(S1703)。
第2端末装置250Bは、情報処理装置100からリダイレクト先を受信すると(S3702)、リダイレクト先である認証装置280にアクセスする(S3703)。
認証装置280は、第2端末装置250Bからのアクセスを受け付けると(S5701)、ログイン画面を第2端末装置250Bに送信する(S5702)。
第2端末装置250Bは、認証装置280からログイン画面を受信すると(S3704)、受信したログイン画面を表示して、ユーザから認証情報の入力を受け付ける。第2端末装置250Bは、認証情報の入力を受け付けると、受け付けた認証情報を認証装置280に送信する(S3705)。
認証装置280は、第2端末装置250Bから認証情報を受信すると(S5703)、受信した認証情報に基づく認証処理を実行する(S5704)。そして、認証装置280は、認証処理の結果(認証の成功/失敗)を第2端末装置250Bに送信する(S5705)。
第2端末装置250Bは、認証装置280から認証処理の結果を受信し(S3706)、受信した認証処理の結果を情報処理装置100に送信する(S3707)。
情報処理装置100は、第2端末装置250Bから認証処理の結果を受信し(S1704)、受信した認証処理の結果が成功である場合には、配信用オブジェクトの情報(コンテンツ)を取得する(S1705)。
そして、情報処理装置100は、上記取得した配信用オブジェクトの情報(コンテンツ)を第2端末装置250Bに対して送信する(S1706)。
第2端末装置250Bは、情報処理装置100から配信用オブジェクトの情報を受信し(S3708)、受信した配信用オブジェクトの情報に基づいて、配信用オブジェクトの情報を表示する。
以上が、認証処理が追加された配信用オブジェクトの表示処理の一例である。
なお、第2端末装置250Bが既に認証装置280における認証が済んでいる場合には、第2端末装置250Bは、S3703〜S3706を省略し、S3702の後にS3707を実行するようにしてよい。
[4.オブジェクトの他の構成例]
本発明は以上説明した実施の形態に限定されるものではない。例えば、配信用オブジェクトは以下のように構成してもよい。
[4.1.構成例1]
図13には、配信先ごとに配信用オブジェクトを作成した場合のオブジェクトの構成例を示した。図13に示すオブジェクトの木構造は、図3に示すオブジェクトの木構造と、第2ユーザへの配信オブジェクトである「childContent_2」オブジェクトD1323と、「childContent_2」オブジェクトを更新するための「childContentToken_2」オブジェクトD1324が追加されている点で相違し、その他の点で共通している。このように、配信先ごとに配信用オブジェクトを作成することにより、配信先ごとにカスタマイズされた内容での情報提供、制御の実行が可能となる。
[4.2.構成例2]
図14には、配信先が属するテナント(組織)ごとにマスターデータの子オブジェクトを作成し、配信先をテナントの子オブジェクトとして構成した場合のオブジェクトの構成例を示した。「tenantA」D1321及び「tenantB」D1322はそれぞれ、「masterContent」D132の子オブジェクトである。そして、「tenantA」に属する配信先A1とA2に対して、それぞれ配信用オブジェクトである「childContentA1」D13211と「childContentA2」D13212を作成する。さらに、「tenantB」に属する配信先B1とB2に対して、それぞれ配信用オブジェクトである「childContentB1」D13221と「childContentB2」D13222を作成する。
なお、配信先A1とA2とにおいて共通する内容(ただし配信先B1とB2とは相違する内容)については、「tenantA」D1321に記述すればよい。そして、配信先A1とA2とにおいて相違する内容については、それぞれ「childContentA1」D13211と「childContentA2」D13212に記述すればよい。配信先B1とB2についても同様である。
[4.3.構成例3]
図15には、配信先が属するテナントがさらに階層構造になっている場合に対応するオブジェクトの構成例を示した。図15に示されるように、「tenantA」D1321の子オブジェクトとして、「tenantX」D13213と、「tenantAToken」D13214とが作成される。ここで、「tenantAToken」D13214は、オーナーを「tenantA」、クライアントを「tenantX」、スコープをCRUDとするアクセストークンとする。これにより、テナントAは、「tenantA」の下にオブジェクトの子孫を作成することが可能となる。
以上は、オブジェクトの構成の例示であり、コンテンツを配信する対象の組織に応じてオブジェクト構成を対応させることが容易であり、こうした場合のコンテンツの内容、制御等も容易である。
なお、以上説明した実施の形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施の形態に種々の変形、例えば、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
[5.分散リソース管理例]
図2の例を用いて前述したように、情報処理装置100を有している第3端末装置250C、第4端末装置250Dが、リモートで情報処理装置100Aを用いる場合とローカルの情報処理装置100C、情報処理装置100Dを用いる場合の例を示す。特に、記憶手段に関しては、リモート側を情報処理装置100Aとし、ローカル側をデータ格納モジュール110として説明する。
オブジェクト管理モジュール140は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、情報処理装置100で管理する。
そして、オブジェクト管理モジュール140は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、複数の端末装置250からアクセス可能な情報処理装置100Aで管理する。
リクエスト受付モジュール120は、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、データ格納モジュール110又は情報処理装置100Aにより管理される対象オブジェクトに対する要求を受け付ける。
リクエスト処理モジュール150は、権限情報を認可したオブジェクトである所有者オブジェクトと、権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、対象オブジェクトの情報に対して、要求に対応する処理を行う。
そして、リクエスト処理モジュール150は、要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、データ格納モジュール110を用いてその処理を行い、要求が、データ格納モジュール110内の生成、更新、又は廃棄された情報を、情報処理装置100Aに反映させる処理である場合は、情報処理装置100A内のデータ格納モジュール110に対してその処理を行う。
また、リクエスト処理モジュール150は、要求がオブジェクトの情報の変更を禁止する要求である場合は、そのオブジェクトの子孫のオブジェクトの情報に対しても、変更を禁止するようにしてもよい。
また、リクエスト処理モジュール150は、情報処理装置100Aにオブジェクトの情報の書き込みを始める前に、データ格納モジュール110内の対応するオブジェクトの情報の変更を禁止し、その書き込みが完了したときに、その禁止を解除するようにしてもよい。
また、処理結果提供モジュール160は、情報処理装置100A内のオブジェクトの情報に対して要求を行った利用者を記憶し、そのオブジェクトの情報の変更が行われた場合は、その利用者に通知を行うようにしてもよい。
第1端末装置250Aが情報処理装置100Aをリモートで利用する場合は、プロトタイプベースのオブジェクト空間がホストできる実行環境ということを前提としていた。したがって、メモリ空間の制約やプロセスを永続的に稼働できない(プロセスが終了するとヒープが失われる)という制約は問題とならなかった。
しかし、大規模なデータ集約の基盤を実際に構築する場合、次に挙げる三点が問題となる。基本的には、「リモートのKVS(Key Value Store)とローカルなKVSを同期する」ということになるが、ファイルの変更履歴を記録・追跡するための分散型バージョン管理システムであるGitの場合のように、同期する対象が明確(ひとつのリポジトリに含まれる全オブジェクト)ではない。
(1)インターフェイスはサービスへのリクエストレスポンスであり、サービスが稼働していなければ利用できない。また、サービスへの負荷が集中する。リソース管理機能は、処理に必要な範囲のオブジェクトとデータのみで完結し、全オブジェクト及びデータのハンドリングとトークン検証を単一のリモートサービスで実行することは必須ではない。
例えば、多くのクラウド基盤では基本的なKVS機能はサービスとして提供されており、これらサービスの可用性は利用者の責務ではない。KVS機能によるアクセス(つまりput、get等のCRUD)をプロトタイプ継承によるトポロジカルな特権制御と矛盾なく両立できれば、サービス維持・運用の責務を負うこと無く、実質的に従来技術の効用を享受できる。また、スケーラビリティも自動的に増大できる。
(2)オブジェクト及びデータの保持部とCRUDのインターフェイスをリポジトリという。リポジトリがリモートにあることによるレイテンシーがユースケースによっては無視できない。例えば、50000台のデバイス情報をオブジェクトとして表現するとき、それらのオブジェクトに新たな属性情報(例えば、ある評価関数によるスコア評価値)を付与又は更新する場合、1オブジェクトあたり20回のオブジェクト取得・加工・変更等の処理を行う場合、オブジェクトのput/getの回数に換算すると1000000回のアクセスになる。レイテンシーが1msecのオーダーでも全体では1000秒の処理時間となり、バッチ的な処理となってしまう。
(3)スキャン操作等の非ルックアップ処理が行えない。例えば、従来技術でのオブジェクト識別子はケースによってはクレデンシャル情報であるため、一般的にルックアップしか許さないことは論理的に必須である一方、自己の所有オブジェクト(これは利用者自身のものであるため、利用者にとっては知り得ない情報ではない)に対してもこれらの制限が強制されるのは利便性・パフォーマンスの観点で引き合わない。識別子の紛失によるオブジェクトの放棄やオブジェクトのコレクションをオブジェクトとしてネストした場合の参照のオーバーヘッド等はその一例である。
そこで、本実施の形態は、プロトタイプ継承によるトポロジカルな特権制御と矛盾しない形でKVSとしてのリポジトリを分散構成し、状態の同期を効率的に行える機構を導入する。具体的には、オブジェクト取得はリモートから透過的に、副作用のある生成、更新、削除はローカルに、副作用を与えた一連の結果を一括してローカルからリモートに反映する(プッシュ)。また、リモートからローカルに反映する(プル)。
なお、データ集約のユースケースでは、大きなデータセットを持っているサービス(データソース)がローカルにデータ加工した後でマスターのリモートにプッシュすることが効率的である。また、データを利用するクライアントの立場では、プルによって他のオーナーが更新したデータを取り込む必要がある。
情報処理装置100Aは、リモートのオブジェクトを保持する。具体的には、KVSとしてオブジェクトを保持する(識別子はランダムで推定できず偶然一致することもない)。ここでは保持された全てのキーの列挙を行うようなAPIは提供されない。また、情報処理装置100Aは、永続的な記憶を持ち、後述の実行手段の起動・終了を超えた寿命を持つ。
そして、情報処理装置100Aは、リモートのデータを保持する。具体的には、KVSとしてデータを保持する。なお、識別子はデータ自身のハッシュ値とすればよい。ここでは保持された全てのキーの列挙を行うようなAPIは提供されない。また、保持手段は永続的な記憶を持ち、後述の実行手段の起動・終了を超えた寿命を持つ。
権限オブジェクト検証モジュール130は、リクエスト(要求)に含まれるトークンを検証し、成功すればスコープを取り出す。ここでトークンの検証が成功するためには、トークンは情報処理装置100Aに含まれる無効化されていないオブジェクトの識別子であり、トークンのクレームするオーナーのプロトタイプチェーンにトークンの指すオブジェクトのプロトタイプが含まれることが必要である。
データ格納モジュール110は、ローカルのオブジェクトを保持する。具体的には、KVSとしてオブジェクトを保持する。なお、識別子はランダムで推定できず偶然一致することもない。ここでは保持された全てのキーの列挙を行うような、キーのルックアップにとどまらない任意のAPIが利用できても構わない。
またデータ格納モジュール110は、ローカルのデータを保持する。具体的には、KVSとしてデータを保持する。なお、識別子はデータ自身のハッシュ値とすればよい。ここでは保持された全てのキーの列挙を行うような、キーのルックアップにとどまらない任意のAPIが利用できても構わない。
オブジェクト管理モジュール140は、変更オブジェクトのリストを保持する。データ格納モジュール110の保持する生成、更新、削除したオブジェクト(かつ、情報処理装置100Aへ未だ反映していないもの)のリストを保持する。
リクエスト処理モジュール150は、リクエストに対応する処理を行う。プロトタイプ継承されたオブジェクトがロードされプログラムが実行される。具体的には、メモリを備えた(JavaScript(登録商標)等の)実行環境である。リクエスト処理モジュール150は、情報処理装置100A、データ格納モジュール110のいずれに接続しても構わない。
オブジェクト管理モジュール140は、識別子で指定されるオブジェクトが、リクエスト処理モジュール150に既にロードされていれば、そのオブジェクトを返す。無ければ、データ格納モジュール110からオブジェクトを取得し、リクエスト処理モジュール150にロードする。データ格納モジュール110にない場合は情報処理装置100Aから取得し、リクエスト処理モジュール150にロードする一方、データ格納モジュール110にも記憶する。以上の処理を指定されたオブジェクトのプロトタイプにも再帰的に行うことで、オブジェクト取得時には、リクエスト処理モジュール150に指定オブジェクトのプロトタイプチェーンがロードされ、また、リクエスト処理モジュール150の再起動時にも、同一オブジェクトに対しては、プロトタイプチェーンはデータ格納モジュール110からロード可能となる。
また、オブジェクト管理モジュール140は、オブジェクトの更新を行う。ロードされたオブジェクト(ロード後の変更が許される)をデータ格納モジュール110に書き戻し(又は、新規にリクエスト処理モジュール150で生起したオブジェクトの場合は追加し)、変更オブジェクトのリストに書き戻した又は追加したオブジェクトを記録する。
オブジェクト管理モジュール140は、変更オブジェクトのプッシュを行う。変更オブジェクトのリストが記録したオブジェクトの集合の状態を、データ格納モジュール110から情報処理装置100Aに一括して反映する。
なお、データ格納モジュール110のローカルのオブジェクトの変更については権限の判定は不要であるが、一方、情報処理装置100Aのリモートのオブジェクトの変更については、付随して送付されるトークンによってクレームされる権限を逸脱する処理は失敗する。
情報処理装置100Aのリモートのオブジェクトの変更は、KVSの直接操作ではなく、リクエストを受信し、添付のトークンのスコープを実行する。情報処理装置100A内のリクエスト処理モジュール150を介して行ってもよい。この場合も当然、トークンによってクレームされる権限を逸脱する処理は失敗する。
以下にAPIとしての例を示す。
(1)永続化処理(KVSへのアクセスを行う)
・put(k, v), get(k), del(k)
・bind(buf), resolve(etag), unbind(etag)
(2)実行処理(永続化処理はリモートとローカルの2種類がある)
・rs.gen(proto)
protoの子オブジェクトobjを生成し、そのオブジェクトobjを返す。
なお、永続化はせず、メモリにのみ存在する。
・rs.get(id)
実行環境に既にオブジェクトがロードされていれば、そのオブジェクトを返す。
ロードされておらず、ローカルからgetできればその値を実行環境にロードする。ローカルには無くリモートからgetできれば、その値をローカルにキャッシュし、実行環境にロードする。
また、ロードされたオブジェクトのプロトタイプを再帰的にrs.getする。
・rs.up(obj)
実行環境中のオブジェクトobjをローカルの永続化層にputする。
変更オブジェクトリストにobj.idを追加する。
・rs.down(id)
実行環境中にidのオブジェクトがロードされていれば、永続化層から再取得する。プロトタイプが別のオブジェクトに付け替えられていれば、そのプロトタイプをrs.getする。
・rs.bind(buf), rs.resolve(etag)
永続化手段のbind,resolveのラッパー(メモリへのロード・セーブを挟む)を行う。ここでラッパーとは、あるクラスや関数、データ型などが提供する機能やデータを含み、別の形で提供することである。
・rs.push()
ローカルの変更オブジェクトリストにあるオブジェクトの変更をリモートに反映する。反映が成功したオブジェクトのIDはリストから除去する。
・rs.pull()
リモートの変更オブジェクトのリスト(さらに、ローカル向けのリスト)にあるオブジェクトの変更をローカルに反映する。反映が成功したオブジェクトのIDはリストから除去する。
トランザクション処理について説明する。
・(リモートの)オブジェクトツリーの一部にロック(変更禁止)をかける場合、トランザクション中のノードのルートにロックフラグを付与することで、その子孫達を一斉にロックする。
・トランザクションが完了した時に、ルートノードのロックフラグを解除することで、その子孫達のロックも一斉に解除される。
・具体的には、オブジェクト管理モジュール140が、変更オブジェクトをプッシュする場合に、リモートへの書き込みを始める前に、その変更オブジェクトに対応するローカルのオーナーオブジェクトにロックを付与し、リモートへの書き込みが完了したときに、ロックを解除する。また、オブジェクト管理モジュール140は、オブジェクトを取得する場合、情報処理装置100Aから取得したオブジェクトがロックされている場合は、ロード及びデータ格納モジュール110へのキャッシュは行わない。
変更の通知について説明する。
・オブジェクトをCRUDした自前のKVSを持つピア(つまり、ローカルのオブジェクトとデータを保持するデータ格納モジュール110を有する端末装置250に対応)をオブジェクトごとに記憶しておき、オブジェクトに変更があった場合にそのピアに通知する。又は、ピアからの要求に応じて変更されたオブジェクトリストを渡せるようにする。
・具体的には、情報処理装置100A内のリモートのオブジェクトに対してCRUD操作を行ったピアを、オブジェクトの購読者属性(ここには購読者リストが記録される)に追加し、情報処理装置100Aのリモートのオブジェクトに対してCRUD操作(ただし、R(取得)操作は除く)が行われるときに、対象オブジェクトの購読者リストのピアに対して対象オブジェクトが更新されたことを通知する、又は、対象オブジェクトをピアのMutate属性(ここには変更されたオブジェクトリストが記録される)に追加する。なお、ここで購読者とは、CRUD操作の要求を行った利用者である。
ファイルシステムへのマッピングについて説明する。
・ファイルシステムの階層構造をオブジェクトのプロトタイプ継承関係にマップし、ルートの識別子を`.owner`に保持する。これによって、例えば、Git管理されたリポジトリと同様に直感的なオブジェクト管理、配布が可能となる。
・`.rs`ディレクトリにメタ情報やKVSをまとめる。例えば、Gitにおける`.git`ディレクトリと同様である。
ファイルシステムのREST APIについて説明する。
・ファイルシステムへのマッピングの元に、従来技術のREST APIをローカルで起動する。これによって、ローカルなサービスを起動でき、テストや限定されたコンテンツ配布に利用できる。
トランザクション処理について、より詳細に説明する。
従来技術(本実施の形態を用いない技術)は、リモートの処理装置に多数の端末装置がアクセスし、処理が集中しており、そのため、処理装置がボトルネックになっていた。クラスタ化等も実装又は運用に複雑性を惹起し、結局、処理装置がダウンすればサービス提供できないこととなる。また、セキュリティ要件からKVSはルックアップのみとなっていた。
本実施の形態は、分散リソースの基盤となり、データソースごとに自前の実行環境(第3端末装置250C内の情報処理装置100C)とKVSを具備し、生成、更新、廃棄については、リモートの処理装置(情報処理装置100A)とは無関係に動作する。例えば、リモートのKVSの可用性はクラウドサービス側に担保させればよい。
ローカルのKVSには、その利用者が所有するオブジェクト又は参照取得できた情報だけである。そのため、セキュリティ要件からくる制約が無くなり、任意のAPIが利用可能である。
なお、第3端末装置250Cとして、大規模なデータソースを扱うものであってもよい。
リモートのKVSは、次のように、SDK経由でアクセスする。
aws = require(’aws−sdk’)
なお、aws−sdkはクラウドとして提供されているWeb ServiceのSDK等が該当する。
ローカルのKVSは、次のように、SDK経由でアクセスする。
levelDB = require(’levelDB’)
なお、levelDBはリレーショナルデータベース管理システムにおけるライブラリ等が該当する。
KVSであるので、aws.put(key, value)やlevelDB.get(key)のようなAPIを持つ。
これらのAPIが、データ格納モジュール110、情報処理装置100Aにおけるオブジェクト又はデータ保持機能のKVSインターフェイスである。
また、オブジェクト管理モジュール140において、
オブジェクト取得機能である、rs.get(id)
オブジェクト更新機能である、rs.up(obj)
変更オブジェクトプッシュ機能である、rs.push()
等は、ローカル実行環境にロードされるリソース基盤ライブラリの提供するAPIとして実現できる。これらのAPIの動作例を示すフローチャートについては後述する。
本実施の形態は、これらのAPIを利用してKVSを操作する、ローカルの実行環境で動作するプログラムとしてもよい。
KVSのデータ構造について、KVSテーブル1600の例を用いて説明する。図16は、KVSテーブル1600のデータ構造例を示す説明図である。KVSテーブル1600は、キー欄1610、値欄1620を有している。キー欄1610は、キーを記憶している。値欄1620は、そのキーに対応する値を記憶している。
PUT処理によって、キーと値を指定してキーに対応する値を更新できる。GET処理によって、キーを指定して対応する値を取得できる。
オブジェクトストア、データストア、変更オブジェクトリストを、KVSテーブル1600として構成可能である。
オブジェクトストアは、例えば、ランダム生成された32バイトのオブジェクト識別子をキーとしてJavaScriptオブジェクトを値とする。
データストアは、例えば、バイト配列を値として、そのバイト配列のSHA−256値(32バイト)をキーとする。
変更オブジェクトリストは、例えば、変更されたオブジェクトの識別子を記録する。例えば、ここでは値は変更された時刻(又は日時(年、月、日、時、分、秒、秒以下、又はこれらの組み合わせであってもよい))とすればよい。
オブジェクト木については、図3の例で示した通りである。
図17は、本実施の形態による処理例(オブジェクト生成)を示すフローチャートである。前述の「rs.gen(proto)」の処理である。protoの子オブジェクトobjを生成する。なお、ここで作られたオブジェクトはメモリに存在するだけで、rs.up(obj)するまでは永続化されていない。
ステップS1700では、オブジェクト生成処理を開始する。
ステップS1702では、protoの子オブジェクトobjを生成する。
ステップS1704では、idを生成する。具体的には、proto.idがある場合、obj.protoにproto.idをセットする。そして、obj.idにランダムに生成した識別子idをセットする。
ステップS1706では、現在時刻をセットする。具体的には、obj.createdAtに現在時刻をセットする。
ステップS1708では、オブジェクト識別子idのオブジェクトがローカル記憶装置(メモリ)に存在することをマークする。例えば、objsというキャッシュオブジェクトを用意して、objs[id] = objとする。
ステップS1710では、objを返却する。
図18は、本実施の形態による処理例(オブジェクト取得)を示すフローチャートである。前述の「rs.get(id) → obj」の処理である。オブジェクト識別子idを引数に与えて、対応するobjを返す。
ステップS1800では、オブジェクト取得処理を開始する。
ステップS1802では、オブジェクト識別子idのオブジェクトobjはロード済みか否かを判断し、ロード済みの場合はステップS1804へ進み、それ以外の場合はステップS1806へ進む。
ステップS1804では、objを返却し、処理を終了する(ステップS1899)。
ステップS1806では、オブジェクト識別子idのレコードはローカルなKVSにあるか否かを判断し、ある場合はステップS1808へ進み、それ以外の場合はステップS1814へ進む。
ステップS1808では、objをローカルなKVSからロードする。
ステップS1810では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS1812では、objを返却し、処理を終了する(ステップS1899)。
ステップS1814では、オブジェクト識別子idのレコードはリモートのKVSにあるか否かを判断し、ある場合はステップS1816へ進み、それ以外の場合はステップS1822へ進む。
ステップS1816では、objをリモートのKVSからロードし、ローカルのKVSにセーブする。
ステップS1818では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS1820では、objを返却し、処理を終了する(ステップS1899)。
ステップS1822では、オブジェクト識別子idのオブジェクトは無いのでundefinedを返す。
図19は、本実施の形態による処理例(オブジェクト更新)を示すフローチャートである。前述の「rs.up(obj)」の処理である。ロードされたオブジェクトobjをKVSにセーブする。
ステップS1900では、オブジェクト更新処理を開始する。
ステップS1902では、オブジェクトobjをローカルなKVSにセーブする。
ステップS1904では、オブジェクト識別子obj.idを変更オブジェクトリストにセーブする。
図20は、本実施の形態による処理例(変更オブジェクトのリストのプッシュ)を示すフローチャートである。前述の「rs.push()」の処理である。ローカルのKVSにあり、リモートに変更が未だ反映されていないオブジェクト集合をリモートのKVSに反映する。
ステップS2000では、変更オブジェクトリストプッシュ処理を開始する。
ステップS2002では、変更オブジェクトリストidsとローカルの権限を表すトークンtokenを取得する。
ステップS2004では、リモートへの処理ストリームを作成する。
ステップS2006では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2008では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
次にトランザクション処理について説明する。プロトタイプ継承を活用したロックに関する処理である。
変更オブジェクトプッシュ「rs.push()」の呼び出し前におおもとのオブジェクト(情報処理装置100Aに記憶されているオブジェクト)にロック属性を付与し、呼び出し後にそのロック属性を除去する。
また、オブジェクト取得でロックされているオブジェクトはローカルのKVSにはキャッシュされず、ロードもされないようにする。
ローカルリポジトリを持つのがあるサービスだとすると、そのサービスが変更するのはそのサービスの所有するオブジェクトである。したがって、サービス自体を表すオブジェクトに属性を付与すると、その子孫の全てのオブジェクトはロック属性を持つことになる。図3の例を用いて説明すると、サービス対象となるオブジェクトが「root」オブジェクトD1であるとすると、「root」オブジェクトD1の子孫である「crudScope」オブジェクトD11等の全てのオブジェクトにおけるisLocked属性を全て「true」とする。
これによって、第三のローカル実行環境(そのオブジェクトを編集している端末装置250以外の端末装置250)がトランザクション中のオブジェクト取得を行い、中途半端な状態(編集中のオブジェクト)をロードしたり、ローカルのKVSにキャッシュすることを防ぐことができる。
図21は、本実施の形態による処理例を示すフローチャートである。(変更オブジェクトのリストのプッシュ)前述の「rs.push()」の処理である。ローカルのKVSにあり、リモートに変更が反映されていないオブジェクト集合をリモートのKVSに反映する。なお、図21の例に示すフローチャートは、図20の例に示すフローチャートにステップS2106の処理とステップS2110の処理を付加したものである。
ステップS2100では、変更オブジェクトリストプッシュ処理を開始する。
ステップS2102では、変更オブジェクトリストidsとローカルの権限を表すトークンtokenを取得する。
ステップS2104では、リモートへの処理ストリームを作成する。
ステップS2106では、[プロトタイプにisLocked属性を付与]とトークンをリモートのKVSに適用する。
ステップS2108では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2110では、[プロトタイプにisLocked属性を除去]とトークンをリモートのKVSに適用する。
ステップS2012では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
図22は、本実施の形態による処理例(オブジェクト取得)を示すフローチャートである。前述の「rs.get(id) → obj」の処理である。オブジェクト識別子idを引数に与えて、対応するobjを返す。なお、図22の例に示すフローチャートは、図18の例に示すフローチャートにステップS2220の処理とステップS2222の処理を付加したものである。これらは、ロックされたオブジェクトをリモートから取得してしまうのを防ぐために、前述のrs.get(id)を変更したものである。
ステップS2200では、オブジェクト取得処理を開始する。
ステップS2202では、オブジェクト識別子idのオブジェクトobjはロード済みか否かを判断し、ロード済みの場合はステップS2204へ進み、それ以外の場合はステップS2206へ進む。
ステップS2204では、objを返却し、処理を終了する(ステップS2299)。
ステップS2206では、オブジェクト識別子idのレコードはローカルなKVSにあるか否かを判断し、ある場合はステップS2208へ進み、それ以外の場合はステップS2214へ進む。
ステップS2208では、objをローカルなKVSからロードする。
ステップS2210では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS2212では、objを返却し、処理を終了する(ステップS2299)。
ステップS2214では、オブジェクト識別子idのレコードはリモートのKVSにあるか否かを判断し、ある場合はステップS2216へ進み、それ以外の場合はステップS2226へ進む。
ステップS2216では、objをリモートのKVSからロードし、ローカルのKVSにセーブする。
ステップS2218では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS2220では、objがロックされているか否かを判断し、ロックされている場合はステップS2222へ進み、それ以外の場合はステップS2224へ進む。
ステップS2222では、ローカルのKVSへのセーブを破棄して例外をスローする。
ステップS2224では、objを返却し、処理を終了する(ステップS2299)。
ステップS2226では、オブジェクト識別子idのオブジェクトは無いのでundefinedを返す。
次に、変更通知又はプルの処理について説明する。
ローカルなKVSを持つエンティティがリモートのKVSにアクセスし、その後、リモートのKVSが変更されることで、リモートとローカルに不整合がおきる。つまり、リモートである情報処理装置100A内の情報が変更されているにもかかわらず、ローカルである第3端末装置250C内の情報は変更前の状態となってしまうことが生じる。
本実施の形態によって、リモートでの変更をローカルに伝達することを可能にする。
ローカルなKVSを持つエンティティがリモートのKVSにアクセスするときには、どのような権限(owner)で誰(client)がアクセスしているかの情報が必要になる。
ここでは、「e」がローカルKVSの識別子、「r」がリモートKVSにアクセスする権限の識別子とする。
リモートのKVSでは、購読者属性とMutate属性を新しく追加し、リモートのKVSでのCRUD操作に伴い、これらの属性を更新する。
なお、購読者属性とMutate属性は、Object Storeのオプショナルな属性である。
ローカルなKVSを持つエンティティが操作したオブジェクトには、購読者属性が付与されて操作したエンティティを追加する。
購読者オブジェクト(購読者属性に追加されたエンティティ)には、Mutate属性を付与し、変更を反映すべきオブジェクトを追加する。
これらを示すKVSとして、例えば、オブジェクトストアKVSテーブル2300を用いる。図23は、オブジェクトストアKVSテーブル2300のデータ構造例を示す説明図である。オブジェクトストアKVSテーブル2300は、図16の例に示したKVSテーブル1600に購読者属性欄2330、Mutate属性欄2340を付加したものである。オブジェクトストアKVSテーブル2300は、キー欄2310、値欄2320、購読者属性欄2330、Mutate属性欄2340を有している。キー欄2310は、キーを記憶している。値欄2320は、そのキーに対応する値を記憶している。購読者属性欄2330は、そのキーに対応する購読者属性を記憶している。購読者属性として、例えば「そのオブジェクトを操作したエンティティのリスト」がある。Mutate属性欄2340は、そのキーに対応するMutate属性を記憶している。Mutate属性として、例えば「そのエンティティが反映すべき変更されたオブジェクトのリスト」がある。
図24は、本実施の形態による処理例(リモートの「Object Store」へのPUT処理)を示すフローチャートである。前述したput処理「put(k, v)」の処理である。権限rでエンティティeがput(k, v)を実行する。なお、以下でr,e,kは正確には識別子であるが、説明上、その識別子が指し示すオブジェクトとして扱う。ここで、kはCRUDの対象オブジェクトである。
ステップS2400では、リモートObject StoreへのPUT処理を開始する。
ステップS2402では、権限rは対象オブジェクトkのプロトタイプ(チェーンに含まれる)か否かを判断し、プロトタイプ(チェーンに含まれる)場合はステップS2404へ進み、それ以外の場合はステップS2406へ進む。
ステップS2404では、エンティティeをオブジェクトkの購読者リストに追加する。
ステップS2406では、処理を拒絶し、終了する(ステップS2499)。
ステップS2408では、オブジェクトkの購読者リストに含まれる購読者sはあるか否かを判断し、ある場合はステップS2410へ進み、それ以外の場合はステップS2420へ進む。
ステップS2410では、購読者sは無効化されているか否かを判断し、無効化されている場合はステップS2412へ進み、それ以外の場合はステップS2414へ進む。
ステップS2412では、オブジェクトkの購読者リストからsを除去し、ステップS2408へ戻る。
ステップS2414では、購読者sがエンティティeに一致しているか否かを判断し、一致している場合はステップS2416へ進み、それ以外の場合はステップS2418へ進む。
ステップS2416では、購読者sの変更オブジェクトリストからkを除去し、ステップS2408へ戻る。
ステップS2418では、購読者sの変更オブジェクトリストにkを追加し、ステップS2408へ戻る。
ステップS2420では、put(k,v)を実行する。
図25は、本実施の形態による処理例(リモートの「Object Store」へのGET処理)を示すフローチャートである。前述のget処理「get(k, v)」の処理である。権限rでエンティティeがput(k, v)を実行する。なお、以下でr,e,kは正確には識別子であるが、説明上、その識別子が指し示すオブジェクトとして扱う。ここで、kはCRUDの対象オブジェクトである。
ステップS2500では、リモートObject StoreへのGET処理を開始する。
ステップS2502では、エンティティeをオブジェクトkの購読者リストに追加する。
ステップS2504では、エンティティeの変更オブジェクトリストからkを除去する。
ステップS2506では、get(k)を実行する。
図26は、本実施の形態による処理例(オブジェクト更新処理(永続化層からメモリへのロード処理))を示すフローチャートである。前述の「rs.down(id)」の処理である。idで指定されたオブジェクトobjがロードされていれば、KVSから再ロードする。ロードされていなければ、何もしない。
ステップS2600では、オブジェクト更新処理を開始する。
ステップS2602では、オブジェクト識別子idのオブジェクトobjがロードされているか否かを判断し、ロードされている場合はステップS2604へ進み、それ以外の場合(オブジェクト識別子idのオブジェクトobjがロードされていない場合)はステップS2610へ進む。
ステップS2604では、KVSからobjを再ロードして、メモリ中のオブジェクトを変更する。
ステップS2606では、プロトタイプが変更されているか否かを判断し、変更されている場合はステップS2608へ進み、それ以外の場合は処理を終了する(ステップS2699)。
ステップS2608では、プロトタイプをrs.get(obj.id)し、それをobjのプロトタイプにセットする。
ステップS2610では、何も行わず、処理を終了する(ステップS2699)。
図27は、本実施の形態による処理例(変更オブジェクトのリストのプル処理)を示すフローチャートである。前述した「rs.pull()」の処理である。ローカルのKVSにキャッシュがあり、リモートでの変更が未だ反映されていないオブジェクト集合をローカルのKVSに反映する。
ステップS2700では、変更オブジェクトリストプル処理を開始する。
ステップS2702では、変更オブジェクトリストをリモートのKVSから取得する。
ステップS2704では、リモートへの処理ストリームを作成する。例えば、変更オブジェクトリストに含まれるオブジェクトを取得する。
ステップS2706では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2708では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
次に、本実施の形態によるファイルシステムへのマッピング処理について説明する。具体的には、ローカルリポジトリの生成や管理に関する処理である。
図28は、本実施の形態による処理例(パスをオブジェクトにアタッチする処理)を示すフローチャートである。「attachPath(obj, path)」の処理である。オブジェクトobjにファイルシステム上のpathをアタッチする。
ファイルは、
{ type: {コンテント型},
etag: {ハッシュ値} }
という属性を持つオブジェクトで表現される。ディレクトリは、それがfoo, bar, buzを含むとすれば、
{ foo: {fooの指すオブジェクトの識別子},
bar: {barの指すオブジェクトの識別子},
bar: {bazの指すオブジェクトの識別子} }
という属性を持つオブジェクトで表現される。
ステップS2800では、パスをオブジェクトにアタッチする処理を開始する。
ステップS2802では、pathを判断し、ファイルの場合はステップS2804へ進み、ディレクトリの場合はステップS2808へ進む。
ステップS2804では、ファイルの内容をDate Storeに保存する。
ステップS2806では、obj.type=コンテント型、obj.etag=ファイルの内容のハッシュ値として、objをObject Storeにセーブする。
ステップS2808では、ディレクトリに含まれるパス名subを属性名とし、パス名subに対応するオブジェクトの識別子をその属性値とする。
ステップS2810では、objにパス名subに対応する属性が既にあるか否かを判断し、ある場合はステップS2812へ進み、ない場合はステップS2814へ進む。
ステップS2812では、それが指すオブジェクトにsubを再帰的にアタッチする。
ステップS2814では、subに対応するオブジェクトはobjの子として生成し、ディレクトリの階層構造がオブジェクトのプロトタイプ継承ツリーと一致するようにする。
図29は、本実施の形態による処理例(ローカルリポジトリのinitとcommit)を示すフローチャートである。ワーキングディレクトリひとつのローカルリポジトリへ初期化したり反映したりする。なお、コマンドツールで「rs commit」とすると、ワーキングディレクトリに、rsディレクトリが未だ無い場合はrsディレクトリを追加し、現状のディレクトリがローカルリポジトリにコミットされる。
ステップS2900では、ローカルリポジトリのinit&commit処理を開始する。
ステップS2902では、ワーキングディレクトリに「.rs」ディレクトリが無いか否かを判断し、無い場合はステップS2904へ進み、それ以外の場合はステップS2906へ進む。
ステップS2904では、ワーキングディレクトリに「.rs」ディレクトリを作る。
ステップS2906では、「.rs/owner」が無いか否かを判断し、無い場合はステップS2908へ進み、それ以外の場合はステップS2910へ進む。
ステップS2908では、新たなルートオブジェクトを生成・永続化し、そのIDを「.rs/owner」に書き込む。
ステップS2910では、IDが「.rs/owner」のオブジェクトをownerとする。
ステップS2912では、ownerにワーキングディレクトリをアタッチする。
ステップS2914では、「.rs/client」が無いか否かを判断し、無い場合はステップS2916へ進み、それ以外の場合はステップS2918へ進む。
ステップS2916では、ownerの子オブジェクトを生成・永続化し、そのIDを、「.rs/client」に書き込む。
ステップS2918では、IDが「.rs/client」のオブジェクトをclientとする。
ステップS2920では、clientにderefしたリーフをアタッチする。つまり、foo/bar/buzという構造のとき、
client = { ’foo/bar/buz’: オブジェクトbuzのID Z }
とする。アタッチでできるオブジェクトはネストしているため、キーを展開してリーフを並べることを行う。
次に、ファイルシステムのREST APIに関して説明する。
具体的には、ローカルリポジトリの公開処理を説明する。
コマンドツールで「rs publish」とすると、ワーキングディレクトリを起点とした「http server」が起動する。なお、ワーキングディレクトリは既に「rs commit」済みとする。
このようなローカルREST APIサーバーを起動することで共用の公開サーバーに負荷を掛けず、公開サーバーと同じAPIを利用できる。また、ローカルな環境でデータやスコープを開発・テストし、完了後にrs.push()することで、共用公開サーバーにデプロイできる。もちろんのことながら、更新もできる。
具体的には、ローカルに、特開2015−162057号公報に記載されたリソース管理基盤のREST APIサービスを起動する。
より具体的には、リソース管理基盤のREST APIサービスは、情報処理システムAによって実現される。
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、前記関数オブジェクトにより前記要求を処理する処理手段と、を含む情報処理システムAを用いる。
また、情報処理システムAは、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの情報の比較結果に基づいて、前記要求を受理するか否かを判断する判断手段を含み、前記処理手段は、前記要求を受理すると判断した場合に、前記関数オブジェクトにより前記要求を処理してもよい。
また、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとが一致する場合に、前記要求を受理するようにしてもよい。
また、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトの親であるオブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記権限オブジェクトの親であるオブジェクトが含まれる場合に、前記要求を受理するようにしてもよい。
また、前記判断手段は、前記権限オブジェクトが前記管理手段により管理されない場合には、前記要求を受理しないようにしてもよい。
また、前記判断手段は、前記権限オブジェクトが、前記権限情報を認可したオブジェクトである所有者オブジェクト、前記権限情報の委譲先を示すオブジェクトであるクライアントオブジェクト、前記権限情報により実行が許可される関数をそれぞれ指定するデータを含まない場合には、前記要求を受理しないようにしてもよい。
また、情報処理システムAは、関数のソースコードを含むデータオブジェクトを登録する手段と、所与の所有者オブジェクト、所与のクライアントオブジェクト、前記データオブジェクトを指定する情報を含む権限オブジェクトを生成する生成手段と、を含むようにしてもよい。
また、情報処理システムAは、前記権限オブジェクトに含まれる情報により指定される前記データオブジェクトに含まれる関数のソースコードに基づいて関数オブジェクトが生成できない場合には、前記要求を受理しないようにしてもよい。
また、前記取得手段は、前記権限オブジェクトに含まれる前記処理指定オブジェクトにより指定される前記データオブジェクトに含まれる関数のソースコードに基づいて生成された関数オブジェクトを取得するようにしてもよい。
ここで、アノニマスなアクセス(つまり、OAuth 2.0アクセストークンもクッキーも指定しないアクセス)に対して、「.rs/client」の値をIDとするオブジェクトclientの子オブジェクトaUserを生成し、以下の内容のアクセストークン
{ owner: client.id,
client: aUser.id,
scope: readOnly.id }
を発行すればよい。
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図30に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部(演算部)としてCPU3001を用い、記憶装置としてRAM3002、ROM3003、HD3004を用いている。HD3004として、例えばハードディスク、SSD(Solid State Drive)を用いてもよい。リクエスト受付モジュール120、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140、配信用オブジェクト生成モジュール141、リクエスト処理モジュール150、処理結果提供モジュール160等のプログラムを実行するCPU3001と、そのプログラムやデータを記憶するRAM3002と、本コンピュータを起動するためのプログラム等が格納されているROM3003と、データ格納モジュール110、オブジェクト管理テーブル111、バリュー管理テーブル112としての機能を有する補助記憶装置(フラッシュ・メモリ等であってもよい)であるHD3004と、キーボード、マウス、タッチスクリーン、マイク等に対する利用者の操作に基づいてデータを受け付ける受付装置3006と、CRT、液晶ディスプレイ、スピーカー等の出力装置3005と、ネットワークインターフェイスカード等の通信ネットワークと接続するための通信回線インターフェイス3007、そして、それらをつないでデータのやりとりをするためのバス3008により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図30に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図30に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに図30に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器(携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む)、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読み出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読み出し専用メモリ(ROM)、電気的消去及び書換可能な読み出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分又は全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
前述の実施の形態は以下のように把握してもよい。そして、これらと組み合わせてもよい。
[A] それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記管理手段により管理される提供対象オブジェクトへの読み出し要求を受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記提供対象オブジェクトの情報を提供する提供手段と、を含み、
前記提供手段は、前記提供対象オブジェクトが有していないデータ項目については、前記提供対象オブジェクトの親やさらにその親を再帰的にたどる列に含まれる祖先オブジェクトのデータ項目の情報を提供する、ことを特徴とする情報処理システム。
[B] 前記提供手段は、前記祖先オブジェクトに含まれる項目のうち、前記提供対象オブジェクトに含まれる項目と一致する項目については、前記提供対象オブジェクトに含まれる項目の情報を提供する
[A]に記載の情報処理システム。
[C] 前記受付手段が、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記祖先オブジェクトの子オブジェクトの生成の要求を受け付けた場合に、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記祖先オブジェクトの子オブジェクトとして前記提供対象オブジェクトを生成する生成手段、をさらに有する
[A]又は[B]に記載の情報処理システム。
[D] 前記祖先オブジェクトの子となる提供対象オブジェクトを生成する権限を有する第1の権限オブジェクト、又は前記提供対象オブジェクトを更新する権限を有する第2の権限オブジェクトに基づいて、前記提供対象オブジェクトを無効化する手段をさらに含む
[A]から[C]のいずれか一項に記載の情報処理システム。
[E] 前記提供対象オブジェクトの情報の更新を凍結する指示を受け付けた場合には、前記提供対象オブジェクトの情報を、当該凍結する指示を受け付けた時点の情報に固定する
[A]から[D]のいずれか一項に記載の情報処理システム。
[F] 前記凍結する指示を受け付けた後において、当該凍結を解除する指示を受け付けた場合には、前記提供対象オブジェクトの情報を、前記祖先オブジェクトの情報に基づいて更新する
[E]に記載の情報処理システム。
[G] 前記第2の権限オブジェクトに基づいて、前記提供対象オブジェクトに処理を追加する手段をさらに含む
[D]に記載の情報処理システム。
[H] 前記生成手段は、複数の提供先ごとに前記祖先オブジェクトの子である提供対象オブジェクトをそれぞれ生成する
[A]から[G]のいずれか一項に記載の情報処理システム。
[I] 前記提供手段は、提供先に対して前記提供対象オブジェクトの情報と、前記第2の権限オブジェクトを提供する
[D]に記載の情報処理システム。
[J] 前記生成手段は、前記第1の権限オブジェクトの所有者オブジェクトの親であるオブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記第1の権限オブジェクトの親であるオブジェクトが含まれる場合に、前記提供対象オブジェクトを生成する
[C]に記載の情報処理システム。
[K] 前記生成手段は、前記第1の権限オブジェクトが前記管理手段により管理されない場合には、前記提供対象オブジェクトを生成しない
[C]に記載の情報処理システム。
[L] 前記提供手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトが一致する場合に、前記提供対象オブジェクトの情報を提供する、
[A]から[K]のいずれか一項に記載の情報処理システム。
[M] 前記提供手段は、前記権限情報を認可したオブジェクトである所有者オブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記権限オブジェクトの親であるオブジェクトが含まれる場合に、前記提供対象オブジェクトの情報を提供する、
[A]から[L]のいずれか一項に記載の情報処理システム。
[N] それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記管理手段により管理される提供対象オブジェクトへの読み出し要求を受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記提供対象オブジェクトの情報を提供する提供手段と、してコンピュータを機能させ、
前記提供手段を、前記提供対象オブジェクトが有していないデータ項目については、前記提供対象オブジェクトの親やさらにその親を再帰的にたどる列に含まれる祖先オブジェクトのデータ項目の情報を提供する、ように機能させるためのプログラム。
そして、前述の発明は、以下の効果を有する。
[A]及び[N]に記載の発明によれば、一のマスターデータについての提供内容を個別に制御できる。
[B]に記載の発明によれば、子孫オブジェクトのデータ項目内容に応じて提供されるデータの内容を個別に設定できる。
[C]に記載の発明によれば、マスターデータの子孫オブジェクトを生成できる。
[D]に記載の発明によれば、提供先に応じたオブジェクトを個別に無効化できる。
[E]に記載の発明によれば、提供先の個別のオブジェクトが参照する先のオブジェクトの変化によらず、提供先の個別のオブジェクトの内容が変わらないように凍結化できる。
[F]に記載の発明によれば、提供先の個別のオブジェクトの内容の凍結化を解除できる。
[G]に記載の発明によれば、提供先の個別のオブジェクトに処理を追加できる。
[H]に記載の発明によれば、複数の提供先ごとに個別のオブジェクトを設定できる。
[I]に記載の発明によれば、提供先に対し提供された個別のオブジェクトの更新を認可することができる。
[J]から[M]に記載の発明によれば、適正な権限を有する場合に提供先に個別に設定するコンテンツを生成したり、コンテンツの情報を提供したりすることを認可することができる。
100…情報処理装置
110…データ格納モジュール
111…オブジェクト管理テーブル
112…バリュー管理テーブル
120…リクエスト受付モジュール
130…権限オブジェクト検証モジュール
140…オブジェクト管理モジュール
141…配信用オブジェクト生成モジュール
150…リクエスト処理モジュール
160…処理結果提供モジュール
250…端末装置
280…認証装置
290…通信回線

Claims (5)

  1. 複数の情報処理装置を有し、
    少なくとも1つの情報処理装置は、
    それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置内の記憶手段で管理する第1の管理手段と、
    それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、
    権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、本情報処理装置又は他の情報処理装置から受け付ける受付手段と、
    前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段
    を有し、
    前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、
    前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、
    本情報処理装置内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、
    ことを特徴とする情報処理システム
  2. 前記要求がオブジェクトの情報の変更を禁止する要求である場合は、該オブジェクトの子孫のオブジェクトの情報に対しても、変更を禁止する禁止手段
    をさらに有することを特徴とする請求項1に記載の情報処理システム
  3. 前記第2の管理手段が管理する記憶手段にオブジェクトの情報の書き込みを始める前に、前記第1の管理手段が管理する記憶手段内の対応するオブジェクトの情報の変更を禁止し、該書き込みが完了したときに、該禁止を解除する
    ことを特徴とする請求項2に記載の情報処理システム
  4. 前記第2の管理手段が管理する記憶手段内のオブジェクトの情報に対して要求を行った利用者を記憶し、該オブジェクトの情報の変更が行われた場合は、該利用者に通知を行う通知手段
    をさらに有することを特徴とする請求項1から3のいずれか一項に記載の情報処理システム
  5. コンピュータを、
    それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ内の記憶手段で管理する第1の管理手段と、
    それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、
    権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、前記コンピュータ又は他の情報処理装置から受け付ける受付手段と、
    前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段
    として機能させ、
    前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、
    前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、
    前記コンピュータ内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、
    情報処理プログラム。
JP2016058398A 2016-03-23 2016-03-23 情報処理システム及び情報処理プログラム Active JP6720613B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016058398A JP6720613B2 (ja) 2016-03-23 2016-03-23 情報処理システム及び情報処理プログラム
US15/257,124 US10657139B2 (en) 2016-03-23 2016-09-06 Information processing apparatus and non-transitory computer readable medium for distributed resource management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016058398A JP6720613B2 (ja) 2016-03-23 2016-03-23 情報処理システム及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2017174074A JP2017174074A (ja) 2017-09-28
JP6720613B2 true JP6720613B2 (ja) 2020-07-08

Family

ID=59898785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016058398A Active JP6720613B2 (ja) 2016-03-23 2016-03-23 情報処理システム及び情報処理プログラム

Country Status (2)

Country Link
US (1) US10657139B2 (ja)
JP (1) JP6720613B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7119448B2 (ja) * 2018-03-16 2022-08-17 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
US11537786B2 (en) * 2020-11-16 2022-12-27 Dropbox, Inc. Generating fillable documents and fillable templates in a collaborative environment

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438549B1 (en) * 1998-12-03 2002-08-20 International Business Machines Corporation Method for storing sparse hierarchical data in a relational database
US6785674B2 (en) * 2003-01-17 2004-08-31 Intelitrac, Inc. System and method for structuring data in a computer system
JP4303101B2 (ja) * 2003-12-26 2009-07-29 株式会社エヌ・ティ・ティ・ドコモ 通信端末およびプログラム
JP4174032B2 (ja) * 2004-02-20 2008-10-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 設定装置、設定方法、プログラム、及び記録媒体
US8887271B2 (en) * 2009-06-15 2014-11-11 Sap Se Method and system for managing object level security using an object definition hierarchy
JP2011090415A (ja) * 2009-10-21 2011-05-06 Hitachi Ltd 更新情報通知方法およびシステム
JP2011118884A (ja) * 2009-11-04 2011-06-16 Fujitsu Ltd 通信端末装置、ソフトウェア取得方法及びソフトウェア取得プログラム
US8572126B2 (en) * 2010-06-25 2013-10-29 Educational Testing Service Systems and methods for optimizing very large n-gram collections for speed and memory
US20120023138A1 (en) * 2010-07-26 2012-01-26 International Business Machines Corporation Deleting objects with group authority
US9892203B2 (en) * 2012-10-29 2018-02-13 Dropbox, Inc. Organizing network-stored content items into shared groups
JP2014153746A (ja) * 2013-02-05 2014-08-25 Mitsubishi Electric Corp ファイル共有システム及びファイル共有方法
JP5447722B1 (ja) * 2013-07-17 2014-03-19 富士ゼロックス株式会社 情報処理システム及びプログラム
US9270647B2 (en) * 2013-12-06 2016-02-23 Shape Security, Inc. Client/server security by an intermediary rendering modified in-memory objects
JP6136980B2 (ja) * 2014-02-27 2017-05-31 富士ゼロックス株式会社 情報処理システム及びプログラム
JP6225749B2 (ja) 2014-02-27 2017-11-08 富士ゼロックス株式会社 情報処理システム及びプログラム
US10394606B2 (en) * 2014-09-30 2019-08-27 Hewlett Packard Enterprise Development Lp Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy

Also Published As

Publication number Publication date
US20170277754A1 (en) 2017-09-28
JP2017174074A (ja) 2017-09-28
US10657139B2 (en) 2020-05-19

Similar Documents

Publication Publication Date Title
CN110870253B (zh) 使用分布式分类账管理公共软件组件生态系统的系统和方法
US7930346B2 (en) Security in peer to peer synchronization applications
JP2022521915A (ja) 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成
CN101568919B (zh) 具有分布式存储的联网计算机系统中的单个数据视图
KR100959473B1 (ko) 저장 플랫폼과 애플리케이션 프로그램 사이의 애플리케이션프로그래밍 인터페이스
US7036149B2 (en) Computer system
KR101024730B1 (ko) 항목 기반 저장 플랫폼 내에서 데이터 모델링하기 위한시스템 및 방법
WO2020168692A1 (zh) 海量数据共享方法、开放共享平台及电子设备
JP2008547118A (ja) 異種アプリケーションのための統一権限付与
JP2007299063A (ja) 情報処理装置、情報処理方法
JP4714788B2 (ja) 装置構成統合情報管理プログラムおよび装置構成統合情報管理装置
US20230342437A1 (en) Blockchain-based system and method for publishing an operating system
JP6720613B2 (ja) 情報処理システム及び情報処理プログラム
US11728928B2 (en) Securely sharing public and private blockchain data
KR102109044B1 (ko) 연구데이터 리포지터리 시스템 및 연구데이터 리포지터리 시스템의 동작 방법
KR102132118B1 (ko) 블록체인 기반 작업공간 제공 장치 및 방법
TW200925889A (en) Method and apparatus for managing lightweight directory access protocol information
RU2412461C2 (ru) Системы и способы сопряжения прикладных программ с платформой хранения на основе статей
JP6467999B2 (ja) 情報処理システム及びプログラム
CN117955701A (zh) 实现数据安全交换的方法、系统和电子设备及存储介质
CN117271441A (zh) 实时数据网络系统及查询和处理分布式数据的方法
Singh Cloudsearch, Dell Cloud service application

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200601

R150 Certificate of patent or registration of utility model

Ref document number: 6720613

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350