IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-22375情報処理プログラム、情報処理方法、および情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024022375
(43)【公開日】2024-02-16
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
   G06F 16/23 20190101AFI20240208BHJP
   G06F 9/52 20060101ALI20240208BHJP
   G06Q 50/04 20120101ALI20240208BHJP
   G06F 16/27 20190101ALI20240208BHJP
   G06F 16/182 20190101ALI20240208BHJP
【FI】
G06F16/23
G06F9/52 150Z
G06Q50/04
G06F16/27
G06F16/182
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022125918
(22)【出願日】2022-08-05
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】長田 菜美
(72)【発明者】
【氏名】伊藤 章
【テーマコード(参考)】
5B175
5L049
【Fターム(参考)】
5B175AA01
5B175CA09
5L049CC04
(57)【要約】
【課題】データを柔軟に更新可能にすること。
【解決手段】符号1010に示すように、疑似的に、ブロックC1の複製の1つ前にブロックE1を連結する。例えば、ブロックC1を管理する情報処理装置は、ブロックC1の複製を生成してリネージュに追加し、ブロックE1の1つ後ろにブロックC1の複製を連結するよう、リネージュを制御する。例えば、ブロックD1を管理する情報処理装置は、ブロックD1の複製を生成してリネージュに追加し、ブロックC1の複製の1つ後ろにブロックD1の複製を連結するよう、リネージュを制御する。
【選択図】図10
【特許請求の範囲】
【請求項1】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記第1ブロックの複製であることを示す複製フラグを含めて、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記複数のブロックの全部または一部に対する表示依頼を受け付け、
前記表示依頼を受け付けた場合、前記複数のブロックの全部または一部を表示するにあたって、前記複製フラグに基づいて、前記第1ブロックの複製を特定し、元である前記第1ブロックとして表示するか、または、元である前記第1ブロックとの対応を判別可能に表示する、
処理を前記コンピュータに実行させることを特徴とする請求項2に記載の情報処理プログラム。
【請求項4】
前記複数のブロックのうち、自装置が管理する第3ブロックを無効化する第2依頼を受け付け、
前記第2依頼を受け付けた場合、前記第3ブロックを無効化することを示す第4ブロックを、前記複数のブロックに追加して前記第3ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理を前記コンピュータに実行させることを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項5】
前記複数のブロックの全部または一部に対する表示依頼を受け付け、
前記表示依頼を受け付けた場合、前記複数のブロックの全部または一部を表示するにあたって、前記第4ブロックに基づいて、前記第3ブロックを特定し、表示対象から除外するか、または、無効化に対応する表示態様で表示する、
処理を前記コンピュータに実行させることを特徴とする請求項4に記載の情報処理プログラム。
【請求項6】
前記それぞれのブロックは、当該ブロックのデータに関連する関連データを含む付随ブロックが接続されており、
前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結すると共に、前記第1ブロックに接続された付随ブロックの複製を、前記第1ブロックの複製に接続するよう、前記複数のブロックを制御する、ことを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項7】
前記それぞれのブロックは、当該ブロックのデータに関連する関連データの識別子を含む付随ブロックが接続されており、
前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結すると共に、前記第1ブロックに接続された付随ブロックの複製を、前記第1ブロックの複製に接続するよう、前記複数のブロックを制御する、ことを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項8】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項9】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
制御部を有することを特徴とする情報処理装置。
【請求項10】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項11】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項12】
それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、処理の内容等を記録したデータブロックについて、それぞれのブロックに当該ブロックの前後に存在する他ブロックの識別子を含むよう形成される一連のブロックを生成するCDL(Chain Data Lineage)と呼ばれるシステムがある。一連のブロックは、例えば、ハッシュチェーンとも呼ばれる。それぞれのブロックは、例えば、異なるコンピュータで管理されていてもよい。
【0003】
先行技術としては、例えば、第1データに関する第1処理を実行した際、第1処理の実行前に行った第1データに関する処理の履歴の識別子である元識別子と、第1処理の履歴の識別子である次回識別子とを対応付けたポインタ情報を記憶するものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2022-035494号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、ハッシュチェーンを柔軟に更新することができない場合がある。例えば、ハッシュチェーンの仕様上、ブロックの生成時に限り、当該ブロックの前に存在する他ブロックの識別子を、当該ブロックに記録可能であるため、当該ブロックの前に、他ブロックを事後的に連結することはできない。
【0006】
1つの側面では、本発明は、データを柔軟に更新可能にすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【0008】
1つの実施態様によれば、それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0009】
一態様によれば、データを柔軟に更新可能にすることが可能になる。
【図面の簡単な説明】
【0010】
図1図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、CDL300の一例を示す説明図(その1)である。
図4図4は、CDL300の一例を示す説明図(その2)である。
図5図5は、CDL300の一例を示す説明図(その3)である。
図6図6は、CDL300の一例を示す説明図(その4)である。
図7図7は、情報処理装置100のハードウェア構成例を示すブロック図である。
図8図8は、情報処理装置100の機能的構成の一例を示すブロック図である。
図9図9は、情報処理システム200の機能的構成の具体例を示すブロック図である。
図10図10は、情報処理装置100の動作の第1の例を示す説明図である。
図11図11は、情報処理装置100の動作の第2の例を示す説明図である。
図12図12は、第1の具体例における新規データを登録する一例を示す説明図である。
図13図13は、第1の具体例における自社登録処理手順の一例を示すフローチャートである。
図14図14は、第1の具体例における新規登録処理手順の一例を示すフローチャートである。
図15図15は、第1の具体例における修正登録処理手順の一例を示すフローチャートである。
図16図16は、分岐を表すリネージュ1600の一例を示す説明図である。
図17図17は、リネージュ1600の接続状態を記憶する一例を示す説明図である。
図18図18は、合流を表すリネージュ1800の一例を示す説明図である。
図19図19は、リネージュ1800の接続状態を記憶する一例を示す説明図である。
図20図20は、合流を表すリネージュを形成する一例を示す説明図である。
図21図21は、複製データの登録用JSONフォーマット2100の一例を示す説明図である。
図22図22は、第1の具体例における複製登録処理手順の一例を示すフローチャートである。
図23図23は、無効化する一例を示す説明図である。
図24図24は、無効化を表すリネージュ2400の一例を示す説明図である。
図25図25は、リネージュ2400の接続状態を記憶する一例を示す説明図である。
図26図26は、登録データを無効化する具体例を示す説明図である。
図27図27は、無効化データの登録用JSONフォーマット2700の一例を示す説明図である。
図28図28は、分岐登録処理手順の一例を示すフローチャートである。
図29図29は、第1無効化処理手順の一例を示すフローチャートである。
図30図30は、第2無効化処理手順の一例を示すフローチャートである。
図31図31は、無効化する別の一例を示す説明図(その1)である。
図32図32は、無効化する別の一例を示す説明図(その2)である。
図33図33は、登録データを無効化する別の具体例を示す説明図である。
図34図34は、第3無効化処理手順の一例を示すフローチャートである。
図35図35は、第4無効化処理手順の一例を示すフローチャートである。
図36図36は、各種通知のデータ構造の一例を示す説明図である。
図37図37は、未登録リスト3700のデータ構造の一例を示す説明図である。
図38図38は、登録済みリスト3800のデータ構造の一例を示す説明図である。
図39図39は、可視化処理手順の一例を示すフローチャートである。
図40図40は、水平チェーン4000の一例を示す説明図である。
図41図41は、垂直チェーン4100の一例を示す説明図である。
図42図42は、水平チェーン4000のブロック4200の具体例を示す説明図である。
図43図43は、垂直チェーン4100のブロック4300の具体例を示す説明図である。
図44図44は、第2の具体例における新規データを登録する一例を示す説明図である。
図45図45は、第2の具体例における自社登録処理手順の一例を示すフローチャートである。
図46図46は、第2の具体例における新規登録処理手順の一例を示すフローチャートである。
図47図47は、第2の具体例における修正登録処理手順の一例を示すフローチャートである。
図48図48は、各種通知のデータ構造の一例を示す説明図である。
図49図49は、未登録リスト4900のデータ構造の一例を示す説明図である。
図50図50は、登録済みリスト5000のデータ構造の一例を示す説明図である。
図51図51は、合流を表すリネージュを形成する一例を示す説明図である。
図52図52は、第1の具体例における複製登録処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0012】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、対象データを柔軟に更新可能にするためのコンピュータである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0013】
対象データは、例えば、複数のブロックを含む。対象データは、具体的には、異なる2以上のブロックを連結した一連のブロックを含む。複数のブロックは、例えば、1以上のハッシュチェーンを形成する。複数のブロックは、具体的には、1以上のCDLを形成する。対象データの実体は、例えば、情報処理装置100以外の1以上のコンピュータが記憶していてもよい。情報処理装置100は、例えば、対象データに含まれる複数のブロックのうち少なくともいずれかのブロックを管理する。
【0014】
例えば、ハッシュチェーンのいずれかの既存ブロックの後ろに、新規ブロックを追加することが要求された場合、当該既存ブロックのIDを取得し、当該既存ブロックの後ろに、当該既存ブロックのIDを格納した新規ブロックを生成して追加することになる。IDは、識別情報(identification)である。また、既存ブロックの後ろに、新規ブロックを追加したことに応じて、既存ブロックに、追加した新規ブロックのIDを格納することになる。このように、新規ブロックを追加していくことにより、ハッシュチェーンを形成および更新することになる。
【0015】
しかしながら、従来では、ハッシュチェーンを柔軟に更新することができない場合がある。例えば、ハッシュチェーンの仕様上、新規ブロックの生成時に限り、当該新規ブロックの前に存在する既存ブロックのIDを、当該新規ブロックに格納可能である。このため、既存ブロックの前に、他ブロックを事後的に連結しようとしても、当該既存ブロックに、当該他ブロックのIDを格納することはできない。従って、既存ブロックの前に、他ブロックを事後的に連結することはできない。
【0016】
例えば、ハッシュチェーンの仕様上、既存ブロックを削除することができず、当該既存ブロックを削除することにより、当該既存ブロックを無効化することができない。このため、連続する2つの既存ブロックのうち前段の既存ブロックの後ろに、後段の既存ブロックの代わりとなる、新規ブロックを事後的に連結した際、後段の既存ブロックを無効化することを、ハッシュチェーン上で表現することができない。
【0017】
そこで、本実施の形態では、対象データを柔軟に更新可能にすることができる情報処理方法について説明する。
【0018】
図1において、複数のブロックを含む対象データが存在する。ブロックは、1以上のデータの集まりである。ブロックは、例えば、当該ブロックの前後に連結する他ブロックの識別子を含む。複数のブロックは、例えば、それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される。
【0019】
複数のブロックは、例えば、ハッシュチェーンを形成する。複数のブロックは、具体的には、CDLを形成する。情報処理装置100は、複数のブロックの少なくともいずれかのブロックを管理する。情報処理装置100は、例えば、複数のブロックのうち、第1ブロックを管理する。
【0020】
図1の例では、対象データは、ブロックAと、ブロックBと、ブロックCと、ブロックDとを含む。例えば、ブロックAの後ろにブロックBが連結される。ブロックBの後ろにブロックCが連結される。例えば、ブロックDは、他ブロックとは独立して存在する。対象データの実体は、例えば、情報処理装置100以外の1以上のコンピュータが分散して記憶していてもよい。
【0021】
(1-1)情報処理装置100は、第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付ける。情報処理装置100は、例えば、他のコンピュータから、第1依頼を受信することにより、第1依頼を受け付ける。他のコンピュータは、例えば、第2ブロックを生成し、第2ブロックを、複数のブロックに追加したコンピュータである。図1の例では、情報処理装置100は、符号101に示すように、ブロックBの前に、ブロックDを新たに連結する第1依頼を受け付ける。
【0022】
(1-2)情報処理装置100は、第1依頼を受け付けた場合、第1ブロックの複製を、複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御する。図1の例では、情報処理装置100は、符号102に示すように、ブロックBに代わり、ブロックBの複製を、ブロックDの後ろに連結することにより、疑似的に、ブロックBの前に、ブロックDを新たに連結すると決定し、複数のブロックを制御する。
【0023】
情報処理装置100は、具体的には、ブロックBに代わり、ブロックBの複製を、ブロックDの後ろに連結するよう、対象データの実体を分散して記憶するいずれかのコンピュータを制御する。当該いずれかのコンピュータは、具体的には、情報処理装置100の制御に従い、符号103に示すように、ブロックBに代わり、ブロックBの複製を生成し、複数のブロックに追加し、ブロックBの複製を、ブロックDの後ろに連結する。
【0024】
これにより、情報処理装置100は、複数のブロックの仕様上、第1ブロックの前に、第2ブロックを連結することが困難である場合、第1ブロックの複製を利用して、第1ブロックと、第2ブロックとの前後関係を表現することができる。従って、情報処理装置100は、第1ブロックの複製を利用して、第1ブロックと、第2ブロックとの前後関係を参照可能に、対象データを柔軟に更新可能にすることができる。情報処理装置100は、例えば、疑似的に、既存の第1ブロックの前に、第2ブロックを事後的に連結可能にすることができる。
【0025】
ここでは、情報処理装置100が、第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付ける場合について説明したが、これに限らない。例えば、情報処理装置100が、複数のブロックのうち、自装置が管理する第3ブロックを無効化する第2依頼を受け付ける場合があってもよい。
【0026】
この場合、情報処理装置100は、第3ブロックを無効化することを示す第4ブロックを、複数のブロックに追加して第3ブロックの後ろに連結するよう、複数のブロックを制御することが考えられる。これにより、情報処理装置100は、複数のブロックの仕様上、第3ブロックを削除することが困難である場合、第3ブロックを無効化することを示す第4ブロックを利用して、第3ブロックを無効化することを表現することができる。従って、情報処理装置100は、対象データを柔軟に更新可能にすることができる。
【0027】
ここでは、情報処理装置100が、単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働して、上述した情報処理装置100としての機能を実現する場合があってもよい。例えば、複数のコンピュータが、上述した情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に、上述した情報処理装置100としての機能が実現される場合があってもよい。
【0028】
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0029】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、1以上の情報処理装置100と、1以上のリネージュ管理装置201と、1以上のクライアント装置202とを含む。
【0030】
情報処理システム200において、情報処理装置100とリネージュ管理装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。情報処理システム200において、情報処理装置100とクライアント装置202とは、有線または無線のネットワーク210を介して接続される。
【0031】
情報処理装置100は、対象データを柔軟に更新可能にするコンピュータである。対象データは、複数のブロックを含む。複数のブロックは、例えば、1以上のハッシュチェーンを形成する。複数のブロックは、具体的には、ハッシュチェーンとなる一連のブロックを含む。複数のブロックは、具体的には、1以上のCDLを形成する。複数のブロックは、より具体的には、CDLとなる一連のブロックを含む。以下の説明では、対象データは、具体的には、1つのCDLを形成する複数のブロックを含むとする。CDLの一例については、具体的には、図3図6を用いて後述する。
【0032】
情報処理装置100は、CDLを制御可能である。情報処理装置100は、例えば、CDLを形成する複数のブロックの少なくともいずれかのブロックを制御可能であるとする。情報処理装置100は、具体的には、CDLを形成する複数のブロックの少なくともいずれかのブロックを管理するいずれかのリネージュ管理装置201を制御することにより、CDLを制御可能である。情報処理装置100は、より具体的には、リネージュ管理装置201を制御することにより、CDLに新規ブロックを追加するよう、CDLを制御可能である。
【0033】
情報処理装置100は、CDLを更新することの更新要求を、クライアント装置202から受信する。更新要求は、例えば、複数のブロックのいずれかの既存ブロックの前に、他ブロックを新たに連結することの連結要求である。更新要求は、例えば、複数のブロックのいずれかの既存ブロックを無効化することの無効化要求である。情報処理装置100は、例えば、連結要求、または、無効化要求などを、クライアント装置202から受信する。
【0034】
情報処理装置100は、受信した更新要求に応じて、CDLを制御する。情報処理装置100は、例えば、受信した更新要求に応じて、CDLを形成する複数のブロックの少なくともいずれかのブロックを管理するいずれかのリネージュ管理装置201を制御する。情報処理装置100は、受信した更新要求に応じて、リネージュ管理装置201を制御することにより、CDLを制御し、CDLに新規ブロックを追加する。
【0035】
情報処理装置100は、CDLを表示することの表示要求を、クライアント装置202から受信してもよい。情報処理装置100は、受信した表示要求に応じて、CDLを表す表示内容を生成する。情報処理装置100は、例えば、CDLを形成する複数のブロックの前後関係を特定可能に示す表示内容を生成する。情報処理装置100は、生成したCDLを表す表示内容を、クライアント装置202に送信する。情報処理装置100は、システム運用者によって用いられる。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0036】
リネージュ管理装置201は、CDLを形成する少なくともいずれかのブロックを記憶するためのコンピュータである。リネージュ管理装置201は、例えば、CDLを形成する複数のブロックのうち、自装置が担当するいずれかのブロックを記憶して管理する。リネージュ管理装置201は、情報処理装置100の制御に従い、CDLを更新する。リネージュ管理装置201は、例えば、情報処理装置100の制御に従い、CDLに新規ブロックを追加する。リネージュ管理装置201は、システム運用者によって用いられる。リネージュ管理装置201は、例えば、サーバ、または、PCなどである。
【0037】
クライアント装置202は、システム利用者によって用いられるコンピュータである。クライアント装置202は、システム利用者の操作入力に基づき、CDLを更新することの更新要求を生成し、情報処理装置100に送信する。クライアント装置202は、システム利用者の操作入力に基づき、CDLを表示することの表示要求を生成し、情報処理装置100に送信する。クライアント装置202は、CDLを表す表示内容を、情報処理装置100から受信し、システム利用者が参照可能に出力する。クライアント装置202は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0038】
ここで、情報処理装置100が、リネージュ管理装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、リネージュ管理装置201としての機能を有し、リネージュ管理装置201としても動作する場合があってもよい。
【0039】
ここで、情報処理装置100が、クライアント装置202とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置202としての機能を有し、クライアント装置202としても動作する場合があってもよい。
【0040】
(情報処理システム200の利用例)
次に、情報処理システム200の利用例について説明する。情報処理システム200は、例えば、サプライチェーンを管理する用途に利用される場合がある。この場合、リネージュ管理装置201は、それぞれ、サプライチェーンの参加者によって用いられる。参加者は、上述したシステム運用者に対応する。参加者は、例えば、個人または組織などである。この場合、CDLは、例えば、最終製品に対応するブロック、最終製品の部品に対応するブロック、部品の材料に対応するブロックなどの複数のブロックによって形成される。そして、CDLは、例えば、製品の製造工程を管理する。
【0041】
(CDL300の一例)
次に、図3図6を用いて、CDL300の一例について説明する。
【0042】
図3図6は、CDL300の一例を示す説明図である。図3に示すように、CDL300は、互いに第1方向に連結する1以上のブロック301と、ブロック301と第2方向に連結する1以上のブロック302とを含む。ブロック301は、リネージュ管理装置201によって記憶される。ブロック302は、リネージュ管理装置201によって記憶される。
【0043】
ブロック301は、データID303と、前のID304と、次のID305と、ハッシュ値306と、ハッシュ値307とを含む。データID303は、ブロック301を識別する識別情報である。前のID304は、ブロック301の1つ前に連結する他ブロック301のデータID303である。次のID305は、ブロック301の後ろに連結する他ブロック301のデータID303である。
【0044】
一方のハッシュ値306は、自ブロック301の1つ前に連結する他ブロック301に関するハッシュ値であり、第1方向にハッシュチェーンを形成可能にするための要素である。他方のハッシュ値307は、自ブロック301に連結する他ブロック302に関するハッシュ値であり、第2方向にハッシュチェーンを形成可能にするための要素である。
【0045】
1以上のブロック301は、それぞれブロック301のハッシュ値306により、第1方向にハッシュチェーンを形成する。それぞれのブロック301と、当該ブロック301に連結するブロック302とは、当該ブロック301のハッシュ値307により、第2方向にハッシュチェーンを形成する。
【0046】
ブロック301は、例えば、サプライチェーンの参加者に対応する。ブロック301は、全参加者に公開するデータを含むグローバルなブロックである。当該データは、例えば、最終製品、部品、または、材料などに関するデータである。ブロック302は、ブロック301の後ろに連結する。ブロック302は、指定の参加者に公開するデータを含むローカルなブロックである。当該データは、例えば、最終製品、部品、または、材料などに関するデータである。
【0047】
リネージュ管理装置201は、CDL300に、新規ブロック301を追加する際、当該新規ブロック301に、当該新規ブロック301の1つ前に連結する他ブロック301のデータID303を、前のID304として設定する。リネージュ管理装置201は、CDL300に、新規ブロック301を追加する際、当該新規ブロック301の1つ前に連結する他ブロック301に、当該新規ブロック301のIDを、次のID305として設定する。
【0048】
CDL300は、例えば、ブロック301の分岐または合流などを含んでいてもよい。情報処理システム200は、第1方向に1以上のブロック301によりハッシュチェーンを形成し、第2方向にブロック301とブロック302とによりハッシュチェーンを形成することにより、耐改竄性の向上を図ることができる。次に、図4の説明に移行する。
【0049】
図4に示すように、CDL300は、データID303“#01”のブロック301の後ろに、データID303“#02”のブロック301と、データID303“#03”のブロック301とを連結する。図4の例では、CDL300は、データID303“#01”のブロック301から、データID303“#02”のブロック301と、データID303“#03”のブロック301とに分岐する。また、CDL300は、ブロック301の合流などを含んでいてもよい。
【0050】
それぞれのブロック301の前のID304を辿ることにより、連結した2以上のブロック301を前方向に辿ることが可能である。それぞれのブロック301の次のID305を辿ることにより、それぞれのブロック301を後ろ方向に辿ることが可能である。このように、CDL300は、ブロック301間の前後関係を表現し、ブロック301のデータ間について順序関係を有する対応関係を、耐改竄性を有するよう記憶する。次に、図5および図6の説明に移行し、ブロック301の具体的な内容について説明する。
【0051】
図5に示すように、CDL300を形成するそれぞれのブロック301は、ヘッダ501と、イベント502と、タグ503と、改竄検証504と、デジタル署名505とを含む。ここでは、CDLは、3つのブロック301によって形成されるとする。
【0052】
以下の説明では、CDL300の先頭のブロック301を「ブロック301-1」と表記する場合がある。また、以下の説明では、CDL300の2番目のブロック301を「ブロック301-2」と表記する場合がある。また、以下の説明では、CDL300の末尾のブロック301を「ブロック301-3」と表記する場合がある。
【0053】
ブロック301-1のヘッダ501は、例えば、イベントIDと、リネージュIDと、前イベントID群と、次イベントID群と、履歴登録者情報と、履歴登録時刻とを含む。イベントIDは、自ブロック301のIDである。イベントIDは、例えば、データIDに対応する。リネージュIDは、CDL300のIDである。
【0054】
前イベントID群は、上述した“前のID304”に対応する自ブロック301の1つ前に連結する他ブロック301のIDを含む。前イベントID群は、自ブロック301の生成時に確定する。ブロック301-1が、先頭のブロック301であるため、ブロック301-1において、前イベントID群は、空である。次イベントID群は、上述した“次のID305”に対応する自ブロック301の次に連結する他ブロック301のIDを含む。次イベントID群は、自ブロック301の生成時、空であり、ブロック301-2の生成時、ブロック301-2のIDが設定される。
【0055】
履歴登録者情報は、ブロック301の生成および追加を依頼したサプライチェーンの参加者を示す情報である。履歴登録時刻は、CDL300にブロック301を追加した時刻である。ブロック301-1のイベント502は、例えば、参加者が指定した、イベントを示すユーザ定義データを含む。当該ユーザ定義データは、例えば、最終製品、部品、または、材料に関する情報であってもよい。ブロック301-1のイベント502は、例えば、グローバルなブロックに対応する。ブロック301-1のタグ503は、参加者が指定した、タグとなるユーザ定義データを含む。ブロック301-1のタグ503は、例えば、ローカルなブロックに対応する。
【0056】
ブロック301-1の改竄検証504は、改竄検証用のSHA(Secure Hash Algorithm)256のハッシュ値を含む。改竄検証504は、例えば、ヘッダ501のイベントIDのハッシュ値、ヘッダ501のリネージュIDのハッシュ値、ヘッダ501の前イベントID群のハッシュ値を含む。
【0057】
改竄検証504は、例えば、ヘッダ501の履歴登録者情報のハッシュ値、ヘッダ501の履歴登録時刻のハッシュ値を含む。改竄検証504は、例えば、イベント502のハッシュ値、タグ503のハッシュ値を含む。改竄検証504は、例えば、自ブロック301の1つ前に連結する他ブロック301群の改竄検証504を含んでいてもよい。ブロック301-1が、先頭のブロック301であるため、ブロック301-1において、改竄検証504は、他ブロック301群の改竄検証504を含まなくてもよい。
【0058】
ブロック301-1のデジタル署名505は、改竄検証504に対するデジタル署名である。デジタル署名505の検証により、改竄検証504の真正性を検証可能である。改竄検証504の検証により、ヘッダ501、イベント502、および、タグ503の真正性を検証可能である。改竄検証504の検証により、自ブロック301の1つ前に連結する他ブロック301群があれば、他ブロック301群の真正性を検証可能である。
【0059】
ブロック301-2のヘッダ501は、例えば、イベントIDと、リネージュIDと、前イベントID群と、次イベントID群と、履歴登録者情報と、履歴登録時刻とを含む。イベントIDは、自ブロック301のIDである。リネージュIDは、CDL300のIDである。
【0060】
前イベントID群は、上述した“前のID304”に対応する自ブロック301の1つ前に連結する他ブロック301のIDを含む。前イベントID群は、自ブロック301の生成時に確定する。ブロック301-2が、2番目のブロック301であるため、ブロック301-2において、前イベントID群は、ブロック301-1のIDが設定される。次イベントID群は、上述した“次のID305”に対応する自ブロック301の次に連結する他ブロック301のIDを含む。次イベントID群は、自ブロック301の生成時、空であり、ブロック301-3の生成時、ブロック301-3のIDが設定される。
【0061】
履歴登録者情報は、ブロック301の生成および追加を依頼したサプライチェーンの参加者を示す情報である。履歴登録時刻は、CDL300にブロック301を追加した時刻である。ブロック301-2のイベント502は、例えば、参加者が指定した、イベントを示すユーザ定義データを含む。当該ユーザ定義データは、例えば、最終製品、部品、または、材料に関する情報であってもよい。ブロック301-2のタグ503は、参加者が指定した、タグとなるユーザ定義データを含む。
【0062】
ブロック301-2の改竄検証504は、改竄検証用のSHA256のハッシュ値を含む。改竄検証504は、例えば、ヘッダ501のイベントIDのハッシュ値、ヘッダ501のリネージュIDのハッシュ値、ヘッダ501の前イベントID群のハッシュ値を含む。
【0063】
改竄検証504は、例えば、ヘッダ501の履歴登録者情報のハッシュ値、ヘッダ501の履歴登録時刻のハッシュ値を含む。改竄検証504は、例えば、イベント502のハッシュ値、タグ503のハッシュ値を含む。改竄検証504は、例えば、自ブロック301の1つ前に連結する他ブロック301群の改竄検証504を含んでいてもよい。ブロック301-2が、2番目のブロック301であるため、ブロック301-2において、改竄検証504は、先頭のブロック301-1の改竄検証504を含む。
【0064】
ブロック301-2のデジタル署名505は、改竄検証504に対するデジタル署名である。デジタル署名505の検証により、改竄検証504の真正性を検証可能である。改竄検証504の検証により、ヘッダ501、イベント502、および、タグ503の真正性を検証可能である。改竄検証504の検証により、自ブロック301の1つ前に連結する他ブロック301群があれば、他ブロック301群の真正性を検証可能である。次に、図6の説明に移行する。
【0065】
図6に示すように、ブロック301-3のヘッダ501は、例えば、イベントIDと、リネージュIDと、前イベントID群と、次イベントID群と、履歴登録者情報と、履歴登録時刻とを含む。イベントIDは、自ブロック301のIDである。リネージュIDは、CDL300のIDである。
【0066】
前イベントID群は、上述した“前のID304”に対応する自ブロック301の1つ前に連結する他ブロック301のIDを含む。前イベントID群は、自ブロック301の生成時に確定する。ブロック301-3が、3番目のブロック301であるため、ブロック301-3において、前イベントID群は、ブロック301-2のIDが設定される。次イベントID群は、上述した“次のID305”に対応する自ブロック301の次に連結する他ブロック301のIDを含む。次イベントID群は、自ブロック301の生成時、空である。ブロック301-3が、3番目のブロック301であるため、ブロック301-3において、次イベントID群は、空である。
【0067】
履歴登録者情報は、ブロック301の生成および追加を依頼したサプライチェーンの参加者を示す情報である。履歴登録時刻は、CDL300にブロック301を追加した時刻である。ブロック301-3のイベント502は、例えば、参加者が指定した、イベントを示すユーザ定義データを含む。当該ユーザ定義データは、例えば、最終製品、部品、または、材料に関する情報であってもよい。ブロック301-3のタグ503は、参加者が指定した、タグとなるユーザ定義データを含む。
【0068】
ブロック301-3の改竄検証504は、改竄検証用のSHA256のハッシュ値を含む。改竄検証504は、例えば、ヘッダ501のイベントIDのハッシュ値、ヘッダ501のリネージュIDのハッシュ値、ヘッダ501の前イベントID群のハッシュ値を含む。
【0069】
改竄検証504は、例えば、ヘッダ501の履歴登録者情報のハッシュ値、ヘッダ501の履歴登録時刻のハッシュ値を含む。改竄検証504は、例えば、イベント502のハッシュ値、タグ503のハッシュ値を含む。改竄検証504は、例えば、自ブロック301の1つ前に連結する他ブロック301群の改竄検証504を含んでいてもよい。ブロック301-3が、3番目のブロック301であるため、ブロック301-3において、改竄検証504は、先頭のブロック301-1の改竄検証504を含む。
【0070】
ブロック301-3のデジタル署名505は、改竄検証504に対するデジタル署名を含む。ブロック301-3のデジタル署名505は、CDL300の読み出し時には、改竄検証504に対するSHA256ハッシュ値を含むよう、SHA256ハッシュ値が追加される。デジタル署名505の検証により、改竄検証504の真正性を検証可能である。改竄検証504の検証により、ヘッダ501、イベント502、および、タグ503の真正性を検証可能である。改竄検証504の検証により、自ブロック301の1つ前に連結する他ブロック301群があれば、他ブロック301群の真正性を検証可能である。
【0071】
このように、CDL300を形成するブロック301の改竄検証504が、ブロック301の生成時に、前イベントID群のハッシュ値を含むため、事後的に、前イベントID群を更新すると、自ブロック301の真正性を保証困難になる。従って、ブロック301の1つ前に、事後的に他ブロック301を連結することが難しいという性質がある。一方で、ブロック301の1つ後ろには、事後的に他ブロック301を連結可能である。
【0072】
(情報処理装置100のハードウェア構成例)
次に、図7を用いて、情報処理装置100のハードウェア構成例について説明する。
【0073】
図7は、情報処理装置100のハードウェア構成例を示すブロック図である。図7において、情報処理装置100は、CPU(Central Processing Unit)701と、メモリ702と、ネットワークI/F(Interface)703と、記録媒体I/F704と、記録媒体705とを有する。また、各構成部は、バス700によってそれぞれ接続される。
【0074】
ここで、CPU701は、情報処理装置100の全体の制御を司る。メモリ702は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU701のワークエリアとして使用される。メモリ702に記憶されるプログラムは、CPU701にロードされることにより、コーディングされている処理をCPU701に実行させる。
【0075】
ネットワークI/F703は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F703は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F703は、例えば、モデムやLANアダプタなどである。
【0076】
記録媒体I/F704は、CPU701の制御に従って記録媒体705に対するデータのリード/ライトを制御する。記録媒体I/F704は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体705は、記録媒体I/F704の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体705は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体705は、情報処理装置100から着脱可能であってもよい。
【0077】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F704や記録媒体705を複数有していてもよい。また、情報処理装置100は、記録媒体I/F704や記録媒体705を有していなくてもよい。
【0078】
(リネージュ管理装置201のハードウェア構成例)
リネージュ管理装置201のハードウェア構成例は、具体的には、図7に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0079】
(クライアント装置202のハードウェア構成例)
クライアント装置202のハードウェア構成例は、具体的には、図7に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0080】
(情報処理装置100の機能的構成の一例)
次に、図8を用いて、情報処理装置100の機能的構成の一例について説明する。
【0081】
図8は、情報処理装置100の機能的構成の一例を示すブロック図である。情報処理装置100は、記憶部800と、取得部801と、更新部802と、出力部803とを含む。
【0082】
記憶部800は、例えば、図7に示したメモリ702や記録媒体705などの記憶領域によって実現される。以下では、記憶部800が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部800が、情報処理装置100とは異なる装置に含まれ、記憶部800の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0083】
取得部801~出力部803は、制御部の一例として機能する。取得部801~出力部803は、具体的には、例えば、図7に示したメモリ702や記録媒体705などの記憶領域に記憶されたプログラムをCPU701に実行させることにより、または、ネットワークI/F703により、その機能を実現する。各機能部の処理結果は、例えば、図7に示したメモリ702や記録媒体705などの記憶領域に記憶される。
【0084】
記憶部800は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部800は、複数のブロックに含まれる少なくともいずれかのブロックを記憶していてもよい。複数のブロックは、それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される。
【0085】
複数のブロックは、例えば、1以上のハッシュチェーンである。複数のブロックは、例えば、1以上のCDLである。記憶部800は、例えば、複数のブロックのうち、自装置が担当するブロックを記憶する。複数のブロックは、情報処理装置100以外の他のコンピュータによって記憶されていてもよい。複数のブロックは、例えば、1以上のリネージュ管理装置201によって分散して記憶されていてもよい。
【0086】
記憶部800は、ブロック間の順序関係を記憶していてもよい。記憶部800は、例えば、複数のブロックについて、自装置が担当するブロックに関するブロック間の順序関係を記憶する。記憶部800は、複数のブロック全体についてブロック間の順序関係を記憶していてもよい。
【0087】
取得部801は、各機能部の処理に用いられる各種情報を取得する。取得部801は、取得した各種情報を、記憶部800に記憶し、または、各機能部に出力する。また、取得部801は、記憶部800に記憶しておいた各種情報を、各機能部に出力してもよい。取得部801は、例えば、自装置利用者の操作入力に基づき、各種情報を取得する。取得部801は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0088】
取得部801は、例えば、複数のブロックに対して特定の処理を実施する依頼を受け付ける。取得部801は、具体的には、第1依頼を受け付ける。第1依頼は、複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結することを要求する。第2ブロックは、複数のブロックに既に含まれるブロックである。第2ブロックは、複数のブロックにまだ含まれないブロックである場合があってもよい。取得部801は、より具体的には、第1依頼を、他のコンピュータから受信することにより取得する。取得部801は、より具体的には、自装置利用者の操作入力に基づき、第1依頼の入力を受け付けることにより、第1依頼を取得する。
【0089】
取得部801は、具体的には、第2依頼を受け付ける。第2依頼は、複数のブロックのうち、自装置が管理する第3ブロックを無効化することを要求する。取得部801は、より具体的には、第2依頼を、他のコンピュータから受信することにより取得する。取得部801は、より具体的には、自装置利用者の操作入力に基づき、第2依頼の入力を受け付けることにより、第2依頼を取得する。
【0090】
取得部801は、具体的には、第3依頼を受け付ける。第3依頼は、第2ブロックを生成し、生成した第2ブロックを、複数のブロックに追加することを要求する。取得部801は、より具体的には、第3依頼を、他のコンピュータから受信することにより取得する。取得部801は、より具体的には、自装置利用者の操作入力に基づき、第3依頼の入力を受け付けることにより、第3依頼を取得する。
【0091】
取得部801は、具体的には、複数のブロックの全部または一部に対する表示依頼を受け付ける。取得部801は、より具体的には、表示依頼を、他のコンピュータから受信することにより取得する。取得部801は、より具体的には、自装置利用者の操作入力に基づき、表示依頼の入力を受け付けることにより、表示依頼を取得する。
【0092】
取得部801は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、自装置利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
【0093】
取得部801は、具体的には、第1依頼、第2依頼、または、第3依頼を受け付けたことを、更新部802の処理を開始する開始トリガーとして受け付けてもよい。取得部801は、具体的には、表示依頼を受け付けたことを、出力部803の処理を開始する開始トリガーとして受け付けてもよい。
【0094】
更新部802は、取得部801で第1依頼を受け付けた場合、第1ブロックの複製を、複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御する。更新部802は、例えば、第1ブロックを管理する他のコンピュータを制御し、第1ブロックの複製を、複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御する。他のコンピュータは、例えば、リネージュ管理装置201である。
【0095】
更新部802は、例えば、第1ブロックの複製を、記憶部800に記憶された複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御してもよい。これにより、更新部802は、疑似的に、第1ブロックの前に、第2ブロックを事後的に連結可能にすることができる。更新部802は、複数のブロックにおける、第1ブロックと、第2ブロックとの順序関係を適切に表現可能にすることができる。
【0096】
この際、更新部802は、第1ブロックの複製を、第1ブロックの複製であることを示す複製フラグを含めて、複数のブロックに追加してもよい。更新部802は、例えば、第1ブロックを管理する他のコンピュータを制御し、第1ブロックの複製を、第1ブロックの複製であることを示す複製フラグを含めて、複数のブロックに追加するよう、複数のブロックを制御する。他のコンピュータは、例えば、リネージュ管理装置201である。
【0097】
更新部802は、例えば、第1ブロックの複製を、第1ブロックの複製であることを示す複製フラグを含めて、記憶部800に記憶された複数のブロックに追加するよう、複数のブロックを制御してもよい。これにより、更新部802は、第1ブロックの複製が、第1ブロックの複製であることを特定可能にすることができる。更新部802は、複数のブロックにおける、第1ブロックと、第2ブロックとの順序関係を特定し易くすることができる。
【0098】
更新部802は、取得部801で第2依頼を受け付けた場合、第3ブロックを無効化することを示す第4ブロックを、複数のブロックに追加して第3ブロックの後ろに連結するよう、複数のブロックを制御する。更新部802は、例えば、第3ブロックを管理する他のコンピュータを制御し、第3ブロックを無効化することを示す第4ブロックを、複数のブロックに追加して第3ブロックの後ろに連結するよう、複数のブロックを制御する。他のコンピュータは、例えば、リネージュ管理装置201である。
【0099】
更新部802は、例えば、第3ブロックを無効化することを示す第4ブロックを、記憶部800に記憶された複数のブロックに追加して第3ブロックの後ろに連結するよう、複数のブロックを制御してもよい。これにより、更新部802は、疑似的に、第3ブロックを無効化することができる。更新部802は、第3ブロックを削除することが難しい場合であっても、第3ブロックを無効化することを適切に表現可能にすることができる。
【0100】
更新部802は、取得部801で第3依頼を受け付けた場合、第2ブロックを生成し、生成した第2ブロックを、複数のブロックに追加するよう、複数のブロックを制御する。更新部802は、例えば、他のコンピュータを制御し、第2ブロックを、複数のブロックに追加するよう、複数のブロックを制御する。他のコンピュータは、例えば、リネージュ管理装置201である。
【0101】
更新部802は、例えば、第2ブロックを、記憶部800に記憶された複数のブロックに追加するよう、複数のブロックを制御してもよい。これにより、更新部802は、複数のブロックを適切に更新することができる。更新部802は、複数のブロックに新規ブロックを追加可能にすることができる。
【0102】
出力部803は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F703による外部装置への送信、または、メモリ702や記録媒体705などの記憶領域への記憶である。これにより、出力部803は、少なくともいずれかの機能部の処理結果を自装置利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0103】
出力部803は、複数のブロックの全部または一部を出力する。出力部803は、例えば、表示依頼を受け付けた場合、複数のブロックの全部または一部を表示する。出力部803は、具体的には、複数のブロックの全部または一部を、ブロック間の順序関係を特定可能な態様で表示する。これにより、出力部803は、ブロック間の順序関係を、システム利用者が把握可能にすることができる。
【0104】
出力部803は、例えば、複数のブロックの全部または一部を表示するにあたって、複製フラグに基づいて、第1ブロックの複製を特定する。出力部803は、例えば、特定した第1ブロックの複製を、複製の元である第1ブロックとして表示するか、または、複製の元である第1ブロックとの対応を判別可能に表示する。これにより、出力部803は、第1ブロックの前に第2ブロックを連結したことを、システム利用者が直感的に把握し易くすることができる。
【0105】
出力部803は、例えば、複数のブロックの全部または一部を表示するにあたって、第4ブロックに基づいて、第3ブロックを特定する。出力部803は、例えば、特定した第3ブロックを、表示対象から除外するか、または、無効化に対応する表示態様で表示する。これにより、出力部803は、第3ブロックを無効化したことを、システム利用者が直感的に把握し易くすることができる。
【0106】
(情報処理システム200の機能的構成の具体例)
次に、図9を用いて、情報処理システム200の機能的構成の具体例について説明する。
【0107】
図9は、情報処理システム200の機能的構成の具体例を示すブロック図である。図9において、情報処理システム200は、それぞれサプライチェーンの参加者となる複数の組織によって用いられる。複数の組織は、前後関係を有する。
【0108】
複数の組織は、例えば、他組織の製品を受け取ったり、他組織の製品を用いて自組織の製品を製造したり、自組織の製品を他組織に提供したりする。複数の組織は、製品の提供または利用により、前後関係を有する。以下の説明では、他組織の製品を用いて自組織の製品を製造する側を、他組織に比べて「下流」と扱う場合がある。
【0109】
情報処理システム200は、サプライチェーンを表す連結した一連のブロックを管理する。以下の説明では、連結した一連のブロックを「リネージュ」と表記する場合がある。情報処理システム200は、例えば、サプライチェーンにおけるそれぞれの参加者の製品の関係性を表現する連結した一連のブロックを管理する。ブロックは、例えば、製品のデータである。
【0110】
情報処理システム200は、組織ごとの上位アプリケーション900と、当該組織に対応するCDL基盤制御部910と、当該組織に対応するCDL基盤920とを含む。上位アプリケーション900は、例えば、クライアント装置202によって実現される。CDL基盤制御部910は、例えば、情報処理装置100によって実現される。CDL基盤920は、例えば、リネージュ管理装置201によって実現される。CDL基盤920は、具体的には、リネージュ管理装置201のエージェントによって実現される。
【0111】
上位アプリケーション900は、GUI(Graphical User Interface)901を含む。GUI901は、例えば、データ登録を要求する操作入力を受け付ける。GUI901は、例えば、データ変更を要求する操作入力を受け付ける。GUI901は、例えば、設計変更などによるデータ無効化を要求する操作入力を受け付ける。GUI901は、例えば、サプライチェーンを表すリネージュの表示を要求する操作入力を受け付ける。GUI901は、例えば、受け付けた操作入力に応じた処理要求を、CDL基盤制御部910に送信する。
【0112】
CDL基盤制御部910は、通知検知部911と、リネージュ制御部912と、リネージュ可視化部913と、登録通知生成部914とを含む。通知検知部911は、自組織宛てのデータ登録通知を検知する。通知検知部911は、検知した自組織宛てのデータ登録通知を、リネージュ制御部912に送信する。通知検知部911は、自組織宛ての可視化要求を検知する。通知検知部911は、検知した自組織宛ての可視化要求を、リネージュ可視化部913に送信する。
【0113】
リネージュ制御部912は、前段の組織からのデータ登録通知を、上位アプリケーション900に通知する。リネージュ制御部912は、上位アプリケーション900の入力、または、前段の組織からのデータ登録通知をトリガーとして、CDL基盤920にデータを登録する。リネージュ制御部912は、前段の組織からのデータ登録通知による2回目以降のデータの登録時に、登録済みデータの複製を生成する。リネージュ制御部912は、無効化通知を受け付けたことに応じて、登録済みデータに、無効化履歴を追加登録する。リネージュ制御部912は、データの登録後に、次のデータの登録を実施する組織で必要な情報を登録通知生成部に通知する。
【0114】
リネージュ可視化部913は、上位アプリケーション900からの可視化要求を受け付ける。リネージュ可視化部913は、可視化要求に応じて、リネージュを取得する。リネージュ可視化部913は、リネージュのうち、無効化したデータを除去し、かつ、重複したデータを除去する。リネージュ可視化部913は、リネージュを返却する。登録通知生成部914は、リネージュ制御部912から取得した情報に基づいて、登録通知を生成する。登録通知生成部914は、生成した登録通知を、後段の組織に送信する。
【0115】
CDL基盤920は、履歴登録部921と、履歴検索部922と、リネージュ取得部923と、ポリシー設定部924とを含む。履歴登録部921は、リネージュ制御部912の制御に従い、履歴となるデータを、リネージュに登録する。履歴検索部922は、リネージュ制御部912の制御に従い、リネージュに含まれる履歴となるデータを検索し、リネージュ制御部912に返却する。リネージュ取得部923は、リネージュ可視化部913の制御に従い、リネージュをリネージュ可視化部913に返却する。ポリシー設定部924は、ポリシーを設定する。
【0116】
(情報処理装置100の動作の第1の例)
次に、図10を用いて、情報処理装置100の動作の第1の例について説明する。第1の例は、情報処理装置100が、リネージュのブランチを合流する際に、どのように動作するのかを示す一例である。ブランチは、ブロックを連結する流れである。
【0117】
図10は、情報処理装置100の動作の第1の例を示す説明図である。図10において、当初、リネージュは、ブロックA1、ブロックB1、ブロックC1、ブロックD1、および、ブロックE1を含むとする。ブロックA1、ブロックB1、ブロックC1、ブロックD1は、順に連結されているとする。ブロックA1、ブロックE1は、順に連結されているとする。
【0118】
これに対し、ブロックB1からブロックC1への第1ブランチと、ブロックE1からブロックC1への第2ブランチとを合流するよう、リネージュを制御することが望まれる場合がある。この場合、符号1000に示すように、事後的に、ブロックC1の1つ前にブロックE1を連結することは難しいため、第1ブランチと第2ブランチとを合流することは難しい。従って、符号1010に示すように、疑似的に、ブロックC1の複製の1つ前にブロックE1を連結することにする。
【0119】
例えば、ブロックC1を管理する情報処理装置100は、ブロックC1の複製を生成してリネージュに追加し、ブロックE1の1つ後ろにブロックC1の複製を連結するよう、リネージュを制御する。例えば、ブロックD1を管理する情報処理装置100は、ブロックD1の複製を生成してリネージュに追加し、ブロックC1の複製の1つ後ろにブロックD1の複製を連結するよう、リネージュを制御する。
【0120】
これにより、情報処理装置100は、CDLの仕様上、事後的に、ブロックの1つ前に他ブロックを連結することが難しい状況であっても、疑似的に、第1ブランチと第2ブランチとを合流することができる。情報処理装置100は、リネージュにおいて、第1ブランチと第2ブランチとが合流することを表現可能にすることができる。
【0121】
(情報処理装置100の動作の第2の例)
次に、図11を用いて、情報処理装置100の動作の第2の例について説明する。第2の例は、情報処理装置100が、リネージュのブロックを無効化する際に、どのように動作するのかを示す一例である。
【0122】
図11は、情報処理装置100の動作の第2の例を示す説明図である。図11において、当初、リネージュは、ブロックA1、ブロックB1、ブロックC1、ブロックD1を含むとする。ブロックA1、ブロックB1、ブロックC1、ブロックD1は、順に連結されているとする。
【0123】
これに対し、ブロックB1、ブロックC1、ブロックD1に代わり、ブロックA1の後ろに、ブロックE1、ブロックF1、ブロックG1を連結することが望まれる場合がある。この場合、ブロックB1、ブロックC1、ブロックD1を無効化することになる。例えば、ブロックB1、ブロックC1、ブロックD1のそれぞれのブロックの1つ後ろに、無効化を表すブロックを連結することにより、ブロックB1、ブロックC1、ブロックD1を無効化することにする。
【0124】
例えば、ブロックB1を管理する情報処理装置100は、符号1100に示すように、ブロックE1を生成してリネージュに追加し、ブロックA1の1つ後ろに連結するよう、リネージュを制御する。また、ブロックB1を管理する情報処理装置100は、符号1111に示すように、無効化を表すブロックを生成してリネージュに追加し、ブロックB1の1つ後ろに無効化を表すブロックを連結するよう、リネージュを制御する。
【0125】
例えば、ブロックC1を管理する情報処理装置100は、符号1100に示すように、ブロックF1を生成してリネージュに追加し、ブロックE1の1つ後ろに連結するよう、リネージュを制御する。また、ブロックC1を管理する情報処理装置100は、符号1111に示すように、無効化を表すブロックを生成してリネージュに追加し、ブロックC1の1つ後ろに無効化を表すブロックを連結するよう、リネージュを制御する。
【0126】
例えば、ブロックD1を管理する情報処理装置100は、符号1100に示すように、ブロックG1を生成してリネージュに追加し、ブロックF1の1つ後ろに連結するよう、リネージュを制御する。また、ブロックD1を管理する情報処理装置100は、符号1111に示すように、無効化を表すブロックを生成してリネージュに追加し、ブロックD1の1つ後ろに無効化を表すブロックを連結するよう、リネージュを制御する。
【0127】
これにより、情報処理装置100は、CDLの仕様上、ブロックを削除することが難しい状況であっても、ブロックを無効化することができる。情報処理装置100は、リネージュにおいて、ブロックを無効化することを表現可能にすることができる。
【0128】
情報処理装置100は、上述した第1の例を実現する機能と、上述した第2の例を実現する機能とを両方とも有していてもよい。情報処理装置100は、上述した第1の例を実現する機能と、上述した第2の例を実現する機能とのいずれか一方の機能のみを有していてもよい。
【0129】
(情報処理装置100の動作の第1の具体例)
次に、図12図39を用いて、情報処理装置100の動作の第1の具体例について説明する。第1の具体例では、サプライチェーンの参加者となるA社とB社とC社とが存在するとする。以下の説明では、X社に対応する情報処理装置100を「情報処理装置100X」と表記する場合がある。X=A,B,C,・・・である。
【0130】
以下の説明では、X社に対応する上位アプリケーション900を「上位アプリケーション900X」と表記する場合がある。以下の説明では、X社に対応するCDL基盤制御部910を「CDL基盤制御部910X」と表記する場合がある。以下の説明では、X社に対応するCDL基盤920を「CDL基盤920X」と表記する場合がある。まず、図12を用いて、第1の具体例において、情報処理装置100のCDL基盤制御部910が、リネージュに新規データを登録する一例について説明する。
【0131】
図12は、第1の具体例における新規データを登録する一例を示す説明図である。図12において、(12-1)A社の利用者は、例えば、B社の製品を用いたA社の製品のデータを、リネージュに登録することを望んだとする。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Aに送信する。
【0132】
ここで、自社IDは、A社を識別する識別情報である。自社製品IDは、データを登録するA社の製品を識別する識別情報である。発注先IDは、A社の製品に用いる他社製品を発注するB社を識別する識別情報である。発注先製品IDは、B社の製品を識別する識別情報である。製品情報は、A社の製品のデータである。製品情報は、例えば、A社の製品に用いるB社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0133】
(12-2)CDL基盤制御部910Aは、データ登録要求を受け付ける。CDL基盤制御部910Aは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Aは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図38を用いて後述する。
【0134】
ここでは、CDL基盤制御部910Aは、新規データであると判定したとする。ここで、CDL基盤制御部910Aは、自社が最下流であるため、前データID=空と設定する。CDL基盤制御部910Aは、新規データであると判定したため、データ登録要求の対象となる登録データ=製品情報と、設定した前データID=空とを含めた、登録用JSON(Java(登録商標) Script Object Notation)フォーマットを生成する。
【0135】
登録用JSONフォーマットは、例えば、前データID=空を含むグローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Aは、生成した登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。
【0136】
(12-3)CDL基盤920Aは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Aは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Aは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Aは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Aは、生成したデータIDを含む応答を、CDL基盤制御部910Aに送信する。
【0137】
(12-4)CDL基盤制御部910Aは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、登録データを含むローカルなブロックがリネージュに追加されることにより、登録データがリネージュに登録されたと判定する。CDL基盤制御部910Aは、登録データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Aは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910Bに送信する。
【0138】
(12-5)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、登録通知を受け付けると、B社の利用者宛てにアラームを出力する。B社の利用者は、アラームを参照して、A社の製品にB社の製品を用いることを把握する。
【0139】
(12-6)B社の利用者は、例えば、C社の製品を用いたB社の製品のデータを、リネージュに登録することを望む。上位アプリケーション900Bは、B社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Bに送信する。
【0140】
ここで、自社IDは、B社を識別する識別情報である。自社製品IDは、データを登録するB社の製品を識別する識別情報である。発注先IDは、B社の製品に用いる他社製品を発注するC社を識別する識別情報である。発注先製品IDは、C社の製品を識別する識別情報である。製品情報は、B社の製品のデータである。製品情報は、例えば、B社の製品に用いるC社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0141】
(12-7)CDL基盤制御部910Bは、データ登録要求を受け付ける。CDL基盤制御部910Bは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Bは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図38を用いて後述する。
【0142】
ここでは、CDL基盤制御部910Bは、新規データであると判定したとする。ここで、CDL基盤制御部910Bは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Bは、新規データであると判定したため、データ登録要求の対象となる登録データ=製品情報と、設定した前データID=登録通知のデータIDとを含めた、登録用JSONフォーマットを生成する。
【0143】
登録用JSONフォーマットは、例えば、前データID=登録通知のデータIDを含むグローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Bは、生成した登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。
【0144】
(12-8)CDL基盤920Bは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Bは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Bは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Bは、生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0145】
(12-9)CDL基盤制御部910Bは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、登録データを含むローカルなブロックがリネージュに追加されることにより、登録データがリネージュに登録されたと判定する。CDL基盤制御部910Bは、登録データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Bは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910Cに送信する。
【0146】
(12-10)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、登録通知を受け付けると、C社の利用者宛てにアラームを出力する。C社の利用者は、アラームを参照して、B社の製品にC社の製品を用いることを把握する。
【0147】
(12-11)C社の利用者は、例えば、D社(不図示)の製品を用いたC社の製品のデータを、リネージュに登録することを望む。上位アプリケーション900Cは、C社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Cに送信する。
【0148】
ここで、自社IDは、C社を識別する識別情報である。自社製品IDは、データを登録するC社の製品を識別する識別情報である。発注先IDは、C社の製品に用いる他社製品を発注するD社を識別する識別情報である。発注先製品IDは、D社の製品を識別する識別情報である。製品情報は、C社の製品のデータである。製品情報は、例えば、C社の製品に用いるD社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0149】
(12-12)CDL基盤制御部910Cは、データ登録要求を受け付ける。CDL基盤制御部910Cは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Cは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図38を用いて後述する。
【0150】
ここでは、CDL基盤制御部910Cは、新規データであると判定したとする。ここで、CDL基盤制御部910Cは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Cは、新規データであると判定したため、データ登録要求の対象となる登録データ=製品情報と、設定した前データID=登録通知のデータIDとを含めた、登録用JSONフォーマットを生成する。
【0151】
登録用JSONフォーマットは、例えば、前データID=登録通知のデータIDを含むグローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Cは、生成した登録用JSONフォーマットを用いて、CDL基盤920Cに対して登録APIを実行する。
【0152】
(12-13)CDL基盤920Cは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Cは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Cは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Cは、生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0153】
(12-14)CDL基盤制御部910Cは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、登録データを含むローカルなブロックがリネージュに追加されることにより、登録データがリネージュに登録されたと判定する。CDL基盤制御部910Cは、登録データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Cは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910D(不図示)に送信する。
【0154】
このように、情報処理システム200は、リネージュに新規データを登録していくことができる。情報処理システム200は、例えば、グローバルなブロックに付随する、新規データを含むローカルなブロックを、リネージュに追加していくことができる。CDL基盤制御部910が、リネージュに新規データを登録する処理の流れについては、図14を用いて後述する。
【0155】
ここでは、CDL基盤制御部910が、リネージュに新規データを登録する場合について説明したが、これに限らない。例えば、CDL基盤制御部910が、リネージュにおいて、登録済みデータを修正データで更新する場合があってもよい。CDL基盤制御部910が、リネージュにおいて、登録済みデータを修正データで更新する処理の流れについては、図15を用いて後述する。
【0156】
(自社登録処理手順)
次に、図13を用いて、CDL基盤制御部910が実行する、自社登録処理手順の一例について説明する。自社登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0157】
図13は、第1の具体例における自社登録処理手順の一例を示すフローチャートである。図13において、CDL基盤制御部910は、APIを介して、自社上位アプリケーション900から、データ登録要求を受け付ける(ステップS1301)。データ登録要求は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、登録データなどを含む。登録データは、例えば、製品情報などを含む。
【0158】
CDL基盤制御部910は、データ登録要求によって指定された登録データが、新規データであるか否かを判定する(ステップS1302)。ここで、新規データである場合(ステップS1302:Yes)、CDL基盤制御部910は、ステップS1303の処理に移行する。一方で、新規データではなく修正データである場合(ステップS1302:No)、CDL基盤制御部910は、ステップS1304の処理に移行する。
【0159】
ステップS1303では、CDL基盤制御部910は、図14に後述する新規登録処理を実行する(ステップS1303)。そして、CDL基盤制御部910は、自社登録処理を終了する。
【0160】
ステップS1304では、CDL基盤制御部910は、図15に後述する修正登録処理を実行する(ステップS1304)。そして、CDL基盤制御部910は、自社登録処理を終了する。
【0161】
(新規登録処理手順)
次に、図14を用いて、CDL基盤制御部910が実行する、新規登録処理手順の一例について説明する。新規登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0162】
図14は、第1の具体例における新規登録処理手順の一例を示すフローチャートである。図14において、CDL基盤制御部910は、データ登録要求の自社製品IDに対する、前段のCDL基盤制御部910からの登録通知があれば、当該登録通知のデータIDを、前データIDとして取得する(ステップS1401)。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む。
【0163】
ここで、CDL基盤制御部910は、登録通知の自社IDを、通知元組織IDとして、未登録リストに記録して管理する。CDL基盤制御部910は、登録通知の自社製品IDを、通知元製品IDとして、未登録リストに記録して管理する。CDL基盤制御部910は、前データIDを、未登録リストに記録して管理する。
【0164】
次に、CDL基盤制御部910は、未登録リストを参照して、データ登録要求の登録データと、取得した前データIDとを用いて、登録用JSONフォーマットを生成する(ステップS1402)。そして、CDL基盤制御部910は、登録用JSONフォーマットを用いて登録APIを実行する(ステップS1403)。
【0165】
次に、CDL基盤制御部910は、登録APIの応答を取得し、未登録リストをクリアし、応答のデータIDを、登録済みリストに追加する(ステップS1404)。そして、CDL基盤制御部910は、自社ID、自社製品ID、発注先ID、発注先製品ID、応答のデータIDを含む登録通知を生成し、後段のCDL基盤制御部910に登録通知を送信する(ステップS1405)。その後、CDL基盤制御部910は、新規登録処理を終了する。
【0166】
(修正登録処理手順)
次に、図15を用いて、CDL基盤制御部910が実行する、修正登録処理手順の一例について説明する。修正登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0167】
図15は、第1の具体例における修正登録処理手順の一例を示すフローチャートである。図15において、CDL基盤制御部910は、登録済みリストを参照して、データ登録要求の自社製品IDをキーに、登録済みデータを検索する(ステップS1501)。
【0168】
次に、CDL基盤制御部910は、検索した登録済みデータのうち、最新の登録済みデータのデータIDを、前データIDとして取得する(ステップS1502)。そして、CDL基盤制御部910は、データ登録要求の登録データと、取得した前データIDとを用いて、登録用JSONフォーマットを生成する(ステップS1503)。
【0169】
次に、CDL基盤制御部910は、生成した登録用JSONフォーマットを用いて登録APIを実行する(ステップS1504)。そして、CDL基盤制御部910は、修正登録処理を終了する。
【0170】
次に、図16を用いて、分岐を表すリネージュ1600の一例について説明する。以下の説明では、グローバルなブロックを単に「ブロック」と表記する場合がある。
【0171】
図16は、分岐を表すリネージュ1600の一例を示す説明図である。図16に示すように、リネージュ1600は、例えば、データID#01のブロックと、データID#02のブロックと、データID#03のブロックと、データID#04のブロックと、データID#05のブロックとを含む。
【0172】
リネージュ1600において、例えば、データID#01のブロックが、分岐点である。リネージュ1600は、具体的には、データID#01のブロックから、データID#02のブロックへのブランチと、データID#04のブロックへのブランチとに分岐する。次に、図17を用いて、CDL基盤制御部910が、リネージュ1600の接続状態を記憶する一例について説明する。
【0173】
図17は、リネージュ1600の接続状態を記憶する一例を示す説明図である。図17に示すように、CDL基盤制御部910は、リネージュ管理テーブル1700を用いて、リネージュ1600の接続状態を記憶する。
【0174】
リネージュ管理テーブル1700は、データIDと、前データIDと、次データIDとのフィールドを有する。リネージュ管理テーブル1700は、リネージュを形成するブロックごとに各フィールドに情報を設定することにより、リネージュ管理情報がレコードとして記憶される。
【0175】
データIDのフィールドには、ブロックのデータIDが設定される。前データIDのフィールドには、上記ブロックの1つ前に連結する他ブロックのデータIDが設定される。次データIDのフィールドには、上記ブロックの1つ後ろに連結する他ブロックのデータIDが設定される。
【0176】
リネージュ管理テーブル1700は、リネージュ1600が、データID#01のブロックから、データID#02のブロックへのブランチと、データID#04のブロックへのブランチとに分岐することを表現することができる。
【0177】
次に、図18を用いて、合流を表すリネージュ1800の一例について説明する。
【0178】
図18は、合流を表すリネージュ1800の一例を示す説明図である。図18に示すように、リネージュ1800は、例えば、データID#01のブロックと、データID#02のブロックと、データID#03のブロックと、データID#04のブロックと、データID#05のブロックと、データID#06のブロックとを含む。
【0179】
リネージュ1800において、例えば、データID#02のブロックが、疑似的な合流点である。リネージュ1800は、具体的には、データID#04のブロックの後ろに、データID#02のブロックの複製であるデータID#05のブロックを連結することにより、データID#02のブロックを、疑似的な合流点とする。
【0180】
リネージュ1800は、より具体的には、疑似的に、データID#01のブロックからデータID#02のブロックへのブランチと、データID#04のブロックからデータID#02のブロックへのブランチとを合流する。次に、図19を用いて、CDL基盤制御部910が、リネージュ1800の接続状態を記憶する一例について説明する。
【0181】
図19は、リネージュ1800の接続状態を記憶する一例を示す説明図である。図19に示すように、CDL基盤制御部910は、リネージュ管理テーブル1900を用いて、リネージュ1800の接続状態を記憶する。リネージュ管理テーブル1900のデータ構造は、リネージュ管理テーブル1700のデータ構造と同様であるため、説明を省略する。
【0182】
リネージュ管理テーブル1900は、リネージュ1800が、データID#04のブロックの後ろに、データID#02のブロックの複製であるデータID#05のブロックを連結することを表現することができる。
【0183】
次に、図20を用いて、情報処理システム200が、合流を表すリネージュを形成する一例について説明する。具体的には、CDL基盤制御部910が、合流を表現するよう、リネージュに、ブロックの複製を追加するよう、リネージュを制御することになる。
【0184】
図20は、合流を表すリネージュを形成する一例を示す説明図である。図20において、(20-1)A社の利用者は、例えば、B社の製品B1を用いたA社の製品A2のデータを、リネージュに登録することを望んだとする。B社の製品B1は、A社の製品A1にも用いられるとする。このため、合流を表すリネージュを形成することが望まれる。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Aに送信する。
【0185】
(20-2)CDL基盤制御部910Aは、データ登録要求を受け付ける。CDL基盤制御部910Aは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Aは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図38を用いて後述する。
【0186】
ここでは、CDL基盤制御部910Aは、新規データであると判定したとする。ここで、CDL基盤制御部910Aは、自社が最下流であるため、前データID=空と設定する。CDL基盤制御部910Aは、新規データであると判定したため、データ登録要求の対象となる登録データ=製品情報と、設定した前データID=空とを含めた、登録用JSONフォーマットを生成する。
【0187】
登録用JSONフォーマットは、例えば、前データID=空を含むグローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Aは、生成した登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。
【0188】
(20-3)CDL基盤920Aは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Aは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Aは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Aは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Aは、生成したデータIDを含む応答を、CDL基盤制御部910Aに送信する。
【0189】
(20-4)CDL基盤制御部910Aは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、登録データを含むローカルなブロックがリネージュに追加されることにより、登録データがリネージュに登録されたと判定する。CDL基盤制御部910Aは、登録データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Aは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910Bに送信する。
【0190】
(20-5)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、登録通知を受け付ける。CDL基盤制御部910Bは、登録通知の発注先製品IDをキーに、登録済みリストから、登録通知の発注先製品IDと一致する製品IDを検索する。
【0191】
ここで、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見しなければ、B社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見すると、合流を表すよう既存ブロックの複製を生成すると判定し、B社の利用者宛てにアラームを出力せずに処理を続行する。ここでは、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見したとする。
【0192】
(20-6)CDL基盤制御部910Bは、発見した製品IDをキーに、登録済みリストから、複製元データID、自社製品ID、発注先ID、および、発注先製品IDを読み出して取得する。複製元データIDは、発見した製品IDに対応するデータIDである。自社製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Bは、自社IDを取得しておく。
【0193】
(20-7)CDL基盤制御部910Bは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Bは、設定した前データID=登録通知のデータIDと、複製元データIDのブロックに付随する、複製データを表すローカルなブロックの複製とを含めた、複製データの登録用JSONフォーマットを生成する。複製データの登録用JSONフォーマットの一例については、具体的には、図21を用いて後述する。
【0194】
登録用JSONフォーマットは、例えば、前データID=登録通知のデータIDを含み、複製フラグ:1を設定したグローバルなブロックと、複製元データIDのブロックに付随するローカルなブロックの複製との組み合わせである。CDL基盤制御部910Bは、生成した登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。
【0195】
(20-8)CDL基盤920Bは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Bは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Bは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Bは、生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0196】
(20-9)CDL基盤制御部910Bは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、複製データを含むローカルなブロックがリネージュに追加されることにより、複製データがリネージュに登録されたと判定する。CDL基盤制御部910Bは、複製データがリネージュに登録されたため、リネージュにおいて、合流を表現したと判定する。CDL基盤制御部910Bは、複製データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Bは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910Cに送信する。
【0197】
(20-10)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、登録通知を受け付ける。CDL基盤制御部910Cは、登録通知の発注先製品IDをキーに、登録済みリストから、登録通知の発注先製品IDと一致する製品IDを検索する。
【0198】
ここで、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見しなければ、C社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見すると、合流を表すよう既存ブロックの複製を生成すると判定し、C社の利用者宛てにアラームを出力せずに処理を続行する。ここでは、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見したとする。
【0199】
(20-11)CDL基盤制御部910Cは、発見した製品IDをキーに、登録済みリストから、複製元データID、自社製品ID、発注先ID、および、発注先製品IDを読み出して取得する。複製元データIDは、発見した製品IDに対応するデータIDである。自社製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Cは、自社IDを取得しておく。
【0200】
(20-12)CDL基盤制御部910Cは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Cは、設定した前データID=登録通知のデータIDと、複製元データIDのブロックに付随する、複製データを表すローカルなブロックの複製とを含めた、複製データの登録用JSONフォーマットを生成する。
【0201】
登録用JSONフォーマットは、例えば、前データID=登録通知のデータIDを含み、複製フラグ:1を設定したグローバルなブロックと、複製元データIDのブロックに付随するローカルなブロックの複製との組み合わせである。CDL基盤制御部910Cは、生成した登録用JSONフォーマットを用いて、CDL基盤920Cに対して登録APIを実行する。
【0202】
(20-13)CDL基盤920Cは、登録APIを介して、登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Cは、登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Cは、登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Cは、生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0203】
(20-14)CDL基盤制御部910Cは、データIDを含む応答を受け付けると、グローバルなブロックに付随する、複製データを含むローカルなブロックがリネージュに追加されることにより、複製データがリネージュに登録されたと判定する。CDL基盤制御部910Cは、複製データがリネージュに登録されたため、リネージュにおいて、合流を表現したと判定する。CDL基盤制御部910Cは、複製データがリネージュに登録されたため、応答に含まれるデータIDを取得する。CDL基盤制御部910Cは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910D(不図示)に送信する。
【0204】
このように、情報処理システム200は、リネージュにおいて、直接的に、ブランチの合流を表現することが難しい場合であっても、疑似的に、ブランチの合流を表現することができる。このため、情報処理システム200は、CDLを柔軟に更新可能にすることができる。情報処理システム200は、B社の利用者、および、C社の利用者宛てにアラームを出力せずに、ブランチの合流を表現することができる。このため、情報処理システム200は、利用者にかかる作業負担の低減化を図ることができる。次に、図21を用いて、複製データの登録用JSONフォーマット2100の一例について説明する。
【0205】
図21は、複製データの登録用JSONフォーマット2100の一例を示す説明図である。図21に示すように、複製データの登録用JSONフォーマット2100は、複製フラグ:1が設定されたグローバルなブロックを含む。複製フラグは、例えば、値が1であると複製であることを示す。複製データの登録用JSONフォーマット2100のグローバルなブロックは、元のグローバルなブロックとはデータID、前データIDなどが異なっていてもよい。
【0206】
複製データの登録用JSONフォーマット2100は、元のグローバルなブロックに付随するローカルなブロックの複製を含む。複製データの登録用JSONフォーマット2100は、次データIDと、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを含まない。
【0207】
次データIDと、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とは、CDL基盤920によって設定される。次データIDと、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とが設定されることにより、リネージュに追加する具体的なグローバルなブロック2101と、ローカルなブロック2102とが生成される。
【0208】
(複製登録処理手順)
次に、図22を用いて、CDL基盤制御部910が実行する、複製登録処理手順の一例について説明する。複製登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0209】
図22は、第1の具体例における複製登録処理手順の一例を示すフローチャートである。図22において、CDL基盤制御部910は、前段のCDL基盤制御部910から、登録通知を受け付ける(ステップS2201)。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む。
【0210】
次に、CDL基盤制御部910は、登録済みリストを参照して、登録通知のデータIDが、登録済みであるか否かを判定する(ステップS2202)。ここで、登録済みではない場合(ステップS2202:No)、CDL基盤制御部910は、ステップS2203の処理に移行する。一方で、登録済みである場合(ステップS2202:Yes)、CDL基盤制御部910は、ステップS2204の処理に移行する。
【0211】
ステップS2203では、CDL基盤制御部910は、登録通知のデータIDを、未登録リストに記録する(ステップS2203)。CDL基盤制御部910は、例えば、登録通知の自社ID、自社製品ID、データIDなどを、未登録リストに記録して管理する。そして、CDL基盤制御部910は、複製登録処理を終了する。
【0212】
ステップS2204では、CDL基盤制御部910は、登録済みのデータIDをキーに、ローカルなブロックに含まれる登録済みデータを取得する(ステップS2204)。次に、CDL基盤制御部910は、登録済みデータを複製した複製データを取得し、取得した複製データの登録用JSONフォーマットを生成する(ステップS2205)。そして、CDL基盤制御部910は、複製データの登録用JSONフォーマットを用いて登録APIを実行する(ステップS2206)。
【0213】
次に、CDL基盤制御部910は、登録APIの応答を取得し、未登録リストをクリアし、応答のデータIDを、登録済みリストに追加する(ステップS2207)。そして、CDL基盤制御部910は、自社ID、自社製品ID、発注先ID、発注先製品ID、応答のデータIDを含む登録通知を生成し、後段のCDL基盤制御部910に送信する(ステップS2208)。そして、CDL基盤制御部910は、複製登録処理を終了する。
【0214】
次に、図23を用いて、CDL基盤制御部910が、リネージュの登録済みデータを無効化する一例について説明する。
【0215】
図23は、無効化する一例を示す説明図である。図23において、リネージュ2300は、例えば、データID#01のブロックと、データID#02のブロックと、データID#03のブロックとを含むとする。ここで、リネージュ2300に、例えば、データID#04のブロックと、データID#05のブロックとを追加するとする。
【0216】
リネージュ2300に、データID#04のブロックと、データID#05のブロックとを追加する代わりに、データID#02のブロックの登録データと、データID#03のブロックの登録データとを無効化することが望まれる場合が考えられる。このため、登録データを含むデータID#02のブロックと、登録データを含むデータID#03のブロックとを無効化し、データID#02のブロックから、データID#03のブロックへのブランチを無効化することになる。
【0217】
この場合、例えば、データID#01のブロックを管理するCDL基盤制御部910が、データID#02のブロックを管理するCDL基盤制御部910に、無効化通知を送信することが考えられる。
【0218】
例えば、データID#02のブロックを管理するCDL基盤制御部910は、無効化通知に応じて、データID#02のブロックの1つ後ろに無効フラグ:1であるデータID#07のブロックを連結するよう、リネージュを制御する。CDL基盤制御部910は、データID#02のブロックの次データIDに、連結したデータID#07のブロックのデータID#07を設定する。CDL基盤制御部910は、無効化通知を、後段のデータID#03のブロックを管理するCDL基盤制御部910に送信する。
【0219】
同様に、例えば、データID#03のブロックを管理するCDL基盤制御部910は、無効化通知に応じて、データID#03のブロックの1つ後ろに無効フラグ:1であるデータID#07のブロックを連結するよう、リネージュを制御する。CDL基盤制御部910は、データID#03のブロックの次データIDに、連結したデータID#07のブロックのデータID#07を設定する。このように、情報処理システム200は、登録済みデータを含むブロックを削除することなく、リネージュの登録済みデータを無効化することができる。次に、図24を用いて、無効化を表すリネージュ2400の一例について説明する。
【0220】
図24は、無効化を表すリネージュ2400の一例を示す説明図である。図24に示すように、リネージュ2400は、例えば、データID#01のブロックと、データID#02のブロックと、データID#03のブロックとを含むとする。ここで、リネージュ2400に、例えば、データID#04のブロックと、データID#05のブロックとを追加する代わりに、データID#02のブロックと、データID#03のブロックとを無効化することが望まれる場合が考えられる。
【0221】
リネージュ2400は、具体的には、データID#02のブロックの1つ後ろに、無効化を表すデータID#06のブロックを連結することにより、データID#02のブロックを無効化することを表現する。同様に、リネージュ2400は、具体的には、データID#03のブロックの1つ後ろに、無効化を表すデータID#07のブロックを連結することにより、データID#03のブロックを無効化することを表現する。次に、図25を用いて、CDL基盤制御部910が、リネージュ2400の接続状態を記憶する一例について説明する。
【0222】
図25は、リネージュ2400の接続状態を記憶する一例を示す説明図である。図25に示すように、CDL基盤制御部910は、リネージュ管理テーブル2500を用いて、リネージュ2400の接続状態を記憶する。リネージュ管理テーブル2500のデータ構造は、リネージュ管理テーブル1700のデータ構造と同様であるため、説明を省略する。
【0223】
例えば、リネージュ管理テーブル2500は、リネージュ2400が、データID#02のブロックの1つ後ろに、データID#06のブロックを連結することを表現することができる。リネージュ管理テーブル2500は、リネージュ2400が、データID#03のブロックの1つ後ろに、データID#07のブロックを連結することを表現することができる。
【0224】
次に、図26を用いて、情報処理システム200が、登録データを無効化する具体例について説明する。具体的には、CDL基盤制御部910が、登録データを無効化することを表現するよう、リネージュに、無効化を表す新たなブロックを追加するよう、リネージュを制御することになる。
【0225】
図26は、登録データを無効化する具体例を示す説明図である。図26において、(26-1)A社の利用者は、例えば、A社の製品A1にB社の製品B1を用いなくなったため、B社の製品B1の登録済みデータを無効化することを望んだとする。このため、B社の製品B1の登録データを含むブロックを無効化することが望まれる。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、発注先ID、発注先製品IDを含むキャンセル要求を、CDL基盤制御部910Aに送信する。
【0226】
(26-2)CDL基盤制御部910Aは、キャンセル要求を受け付ける。CDL基盤制御部910Aは、キャンセル要求から、発注先ID、発注先製品IDを取得する。CDL基盤制御部910Aは、自社IDを、発注元IDとして取得する。CDL基盤制御部910Aは、自社製品IDを、発注元製品IDとして取得する。CDL基盤制御部910Aは、取得した発注元ID、発注元製品ID、発注先ID、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910Bに送信する。
【0227】
(26-3)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、キャンセル通知を受け付ける。CDL基盤制御部910Bは、キャンセル通知の発注先製品IDをキーに、登録済みリストから、キャンセル通知の発注先製品IDと一致する製品IDを検索する。
【0228】
ここで、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見しなければ、B社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見すると、発見した製品IDに対応する登録済みデータを含むブロックを無効化する対象に設定する。ここでは、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見したとする。
【0229】
(26-4)CDL基盤制御部910Bは、発見した製品IDをキーに、登録済みリストから、製品IDに対応するデータID、発注先ID、発注先製品IDを読み出して取得する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Cは、発見した製品IDをキーに、次データIDを取得してもよい。
【0230】
(26-5)CDL基盤制御部910Bは、製品IDに対応するデータIDを、前データIDとして取得する。CDL基盤制御部910Bは、設定した前データIDを含めた、無効化データの登録用JSONフォーマットを生成する。無効化データの登録用JSONフォーマットの一例については、具体的には、図27を用いて後述する。
【0231】
無効化データの登録用JSONフォーマットは、例えば、前データIDを含み、無効フラグ:1を設定したグローバルなブロックを含む。無効化データの登録用JSONフォーマットは、例えば、ローカルなブロックを含んでいなくてもよい。CDL基盤制御部910Bは、生成した無効化データの登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。
【0232】
(26-6)CDL基盤920Bは、登録APIを介して、無効化データの登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた無効化データの登録用JSONフォーマットに設定する。CDL基盤920Bは、無効化データの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値を算出し、グローバルなブロックに設定する。その後、CDL基盤920Bは、無効化データの登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Bは、生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0233】
(26-7)CDL基盤制御部910Bは、データIDを含む応答を受け付けると、無効化データのブロックがリネージュに追加されることにより、リネージュの既存ブロックが無効化されたと判定する。CDL基盤制御部910Bは、既存ブロックが無効化されたため、リネージュにおいて、既存ブロックの登録済みデータの無効化を表現したと判定する。
【0234】
CDL基盤制御部910Bは、発注元ID、発注元製品ID、発注先ID、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910Cに送信する。発注元IDは、自社IDである。発注元製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。
【0235】
(26-8)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、キャンセル通知を受け付ける。CDL基盤制御部910Cは、キャンセル通知の発注先製品IDをキーに、登録済みリストから、キャンセル通知の発注先製品IDと一致する製品IDを検索する。
【0236】
ここで、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見しなければ、C社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見すると、発見した製品IDに対応する登録済みデータを含むブロックを無効化する対象に設定する。ここでは、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見したとする。
【0237】
(26-9)CDL基盤制御部910Cは、発見した製品IDをキーに、登録済みリストから、製品IDに対応するデータID、発注先ID、発注先製品IDを読み出して取得する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Cは、発見した製品IDをキーに、次データIDを取得してもよい。
【0238】
(26-10)CDL基盤制御部910Cは、製品IDに対応するデータIDを、前データIDとして取得する。CDL基盤制御部910Cは、設定した前データIDを含めた、無効化データの登録用JSONフォーマットを生成する。無効化データの登録用JSONフォーマットの一例については、具体的には、図27を用いて後述する。
【0239】
無効化データの登録用JSONフォーマットは、例えば、前データIDを含み、無効フラグ:1を設定したグローバルなブロックを含む。無効化データの登録用JSONフォーマットは、例えば、ローカルなブロックを含んでいなくてもよい。CDL基盤制御部910Cは、生成した無効化データの登録用JSONフォーマットを用いて、CDL基盤920Cに対して登録APIを実行する。
【0240】
(26-11)CDL基盤920Cは、登録APIを介して、無効化データの登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた無効化データの登録用JSONフォーマットに設定する。CDL基盤920Cは、無効化データの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値を算出し、グローバルなブロックに設定する。その後、CDL基盤920Cは、無効化データの登録用JSONフォーマットを、リネージュに追加する。CDL基盤920Cは、生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0241】
(26-12)CDL基盤制御部910Cは、データIDを含む応答を受け付けると、無効化データのブロックがリネージュに追加されることにより、リネージュの既存ブロックが無効化されたと判定する。CDL基盤制御部910Cは、既存ブロックが無効化されたため、リネージュにおいて、既存ブロックの登録済みデータの無効化を表現したと判定する。
【0242】
CDL基盤制御部910Cは、発注元ID、発注元製品ID、発注先ID、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910D(不図示)に送信する。発注元IDは、自社IDである。発注元製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。
【0243】
このように、情報処理システム200は、リネージュにおいて、直接的に、ブロックを削除することが難しい場合であっても、ブロックの登録済みデータを無効化することを表現することができる。このため、情報処理システム200は、CDLを柔軟に更新可能にすることができる。情報処理システム200は、B社の利用者、および、C社の利用者宛てにアラームを出力せずに、ブロックの登録済みデータを無効化することを表現することができる。このため、情報処理システム200は、利用者にかかる作業負担の低減化を図ることができる。次に、図27を用いて、無効化データの登録用JSONフォーマット2700の一例について説明する。
【0244】
図27は、無効化データの登録用JSONフォーマット2700の一例を示す説明図である。図27に示すように、無効化データの登録用JSONフォーマット2700は、無効フラグ:1が設定されたグローバルなブロックを含む。無効フラグは、例えば、値が1であると、1つ前に連結したブロックの登録済みデータが無効であることを示す。無効化データの登録用JSONフォーマット2700は、ローカルなブロックを含まなくてもよい。
【0245】
無効化データの登録用JSONフォーマット2700は、次データIDと、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを含まない。グローバルなブロックに関するハッシュ値は、CDL基盤920によって設定される。グローバルなブロックに関するハッシュ値が設定されることにより、リネージュに追加する具体的なグローバルなブロック2701が生成される。
【0246】
(分岐登録処理手順)
次に、図28を用いて、CDL基盤制御部910が実行する、分岐登録処理手順の一例について説明する。分岐登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0247】
図28は、分岐登録処理手順の一例を示すフローチャートである。図28において、CDL基盤制御部910は、分岐要求を受け付ける(ステップS2801)。分岐要求は、例えば、分岐対象の自社製品ID、追加部材の発注先ID、および、追加部材の発注先製品IDなどを含む。
【0248】
次に、CDL基盤制御部910は、分岐対象の自社製品ID、追加部材の発注先ID、および、発注先製品IDを、分岐要求のパラメータから抽出する(ステップS2802)。そして、CDL基盤制御部910は、自社製品IDをキーに、分岐点となるブロックを特定可能にするデータIDを抽出する(ステップS2803)。
【0249】
次に、CDL基盤制御部910は、抽出したデータIDを、前データIDとして採用し、新たな分岐先とするブロックではなく既存の分岐先となるブロックに関する情報を修正するための修正データを生成し、リネージュに追加する(ステップS2804)。具体的には、修正データは、上述した修正登録処理によってリネージュに追加される。
【0250】
そして、CDL基盤制御部910は、抽出したデータID、または、修正登録処理の応答に含まれるデータIDを、前データIDとして取得する。CDL基盤制御部910は、取得した前データIDを、追加部材の発注先ID、自社製品IDと共に、後段のCDL基盤制御部910に送信する(ステップS2805)。その後、CDL基盤制御部910は、分岐登録処理を終了する。
【0251】
(第1無効化処理手順)
次に、図29を用いて、CDL基盤制御部910が実行する、第1無効化処理手順の一例について説明する。第1無効化処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0252】
図29は、第1無効化処理手順の一例を示すフローチャートである。図29において、CDL基盤制御部910は、自社上位アプリケーション900から、無効化要求を受け付ける(ステップS2901)。
【0253】
無効化要求は、例えば、無効化対象の登録済みデータを含むブロックによって形成されるブランチの起点となる、発注元製品の登録済みデータを含むブロックを特定可能にする発注元製品ID、および、発注元IDを含む。無効化要求は、例えば、無効化対象の登録済みデータに対応する発注先ID、および、無効化対象の登録済みデータに対応する発注先製品IDなどを含む。
【0254】
次に、CDL基盤制御部910は、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを、無効化要求のパラメータから抽出する(ステップS2902)。そして、CDL基盤制御部910は、取得した発注先製品IDをキーに、登録済みデータを検索し、発見した登録済みデータのデータID、発注先ID、および、発注先製品IDを抽出する(ステップS2903)。
【0255】
次に、CDL基盤制御部910は、抽出したデータIDを、前データIDとして採用し、既存の分岐先となるブロックに関する情報を修正するための修正データを生成し、リネージュに追加する(ステップS2904)。具体的には、修正データは、上述した修正登録処理によってリネージュに追加される。
【0256】
そして、CDL基盤制御部910は、抽出した発注元ID、発注元製品ID、発注先ID、および、発注先製品IDに基づいて、後段のCDL基盤制御部910に無効化通知を送信する(ステップS2905)。無効化通知は、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを含む。CDL基盤制御部910は、第1無効化処理を終了する。
【0257】
(第2無効化処理手順)
次に、図30を用いて、CDL基盤制御部910が実行する、第2無効化処理手順の一例について説明する。第2無効化処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0258】
図30は、第2無効化処理手順の一例を示すフローチャートである。図30において、CDL基盤制御部910は、登録済みリストを参照して、前段のCDL基盤制御部910から受信した無効化通知の発注元製品ID、および、発注先製品IDをキーに、登録済みデータを検索する(ステップS3001)。無効化通知は、例えば、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDなどを含む。
【0259】
次に、CDL基盤制御部910は、登録済みリストを参照して、検索した登録済みデータのうち、最新の登録済みデータのデータID、通知先組織ID、および、通知先製品IDを取得する(ステップS3002)。CDL基盤制御部910は、無効化通知の発注先ID、および、発注先製品IDを、次の発注元ID、および、次の発注元製品IDとして採用する。CDL基盤制御部910は、取得した通知先組織ID、および、通知先製品IDを、次の発注先ID、および、次の発注先製品IDとして採用する。
【0260】
そして、CDL基盤制御部910は、取得したデータIDを前データIDに採用し、採用した前データID、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを用いて、無効化データをリネージュに登録する(ステップS3003)。CDL基盤制御部910は、例えば、前データID、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを用いて、無効化データの登録用JSONフォーマットを生成し、登録APIを実行し、無効化データをリネージュに登録する。
【0261】
次に、CDL基盤制御部910は、採用した発注元ID、発注元製品ID、発注先ID、および、発注先製品IDに基づいて、後段のCDL基盤制御部910に無効化通知を送信する(ステップS3004)。無効化通知は、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを含む。そして、CDL基盤制御部910は、第2無効化処理を終了する。
【0262】
次に、図31および図32を用いて、CDL基盤制御部910が、リネージュの登録済みデータを無効化する別の一例について説明する。
【0263】
図31および図32は、無効化する別の一例を示す説明図である。図31に示すように、リネージュ3100のデータID#02のブロックと、データID#03のブロックと、データID#04のブロックとを無効化することが望まれたとする。
【0264】
これに対し、CDL基盤制御部910が、無効化管理テーブル3101を用いて、データID#02のブロックと、データID#03のブロックと、データID#04のブロックとを無効化することを表現する場合が考えられる。この場合、CDL基盤制御部910は、データID#02のブロックと、データID#03のブロックと、データID#04のブロックとに、無効化を表すブロックを連結しなくてもよい。
【0265】
無効化管理テーブル3101は、データIDと、無効フラグとのフィールドを有する。無効化管理テーブル3101は、リネージュを形成するブロックごとに各フィールドに情報を設定することにより、無効化管理情報がレコードとして記憶される。
【0266】
データIDのフィールドには、ブロックのデータIDが設定される。無効フラグのフィールドには、上記ブロックを無効化するか否かを表す無効フラグが設定される。無効フラグは、例えば、値が1であれば、無効化することを示す。無効フラグは、例えば、値が0であれば、無効化しないことを示す。次に、図32の説明に移行する。
【0267】
図31の例では、CDL基盤制御部910が、無効化管理テーブル3101を用いて、リネージュ3100のすべてのブロックの無効化有無を管理する場合について説明した。これに対し、図32に示すように、CDL基盤制御部910が、無効化管理テーブル3201~3204などを用いて、リネージュ3200のうち、自社に対応するブロックの無効化有無を管理する場合があってもよい。
【0268】
図32に示すように、リネージュ3200のうち、データID#01のブロックは、A社に対応するとする。リネージュ3200のうち、データID#02のブロックと、データID#05のブロックとは、B社に対応するとする。リネージュ3200のうち、データID#03のブロックと、データID#06のブロックとは、C社に対応するとする。リネージュ3200のうち、データID#04のブロックと、データID#07のブロックとは、D社に対応するとする。ここで、リネージュ3200のデータID#02のブロックと、データID#03のブロックと、データID#04のブロックとを無効化することが望まれたとする。
【0269】
これに対し、B社のCDL基盤制御部910Bは、無効化管理テーブル3202を用いて、データID#02のブロックを無効化することを表現する。C社のCDL基盤制御部910Cは、無効化管理テーブル3203を用いて、データID#03のブロックを無効化することを表現する。D社のCDL基盤制御部910Dは、無効化管理テーブル3204を用いて、データID#04のブロックを無効化することを表現する。
【0270】
無効化管理テーブル3201~3204のデータ構造は、具体的には、無効化管理テーブル3101のデータ構造と同様であるため、説明を省略する。このように、情報処理システム200は、登録済みデータを含むブロックを削除することなく、リネージュの登録済みデータを無効化することができる。
【0271】
次に、図33を用いて、情報処理システム200が、登録データを無効化する別の具体例について説明する。具体的には、CDL基盤制御部910が、無効化管理テーブルを用いて、登録データを無効化することを表現することになる。
【0272】
図33は、登録データを無効化する別の具体例を示す説明図である。図33において、(33-1)A社の利用者は、例えば、A社の製品A1にB社の製品B1を用いなくなったため、B社の製品B1の登録済みデータを無効化することを望んだとする。このため、B社の製品B1の登録データを含むブロックを無効化することが望まれる。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、発注先ID、発注先製品IDを含むキャンセル要求を、CDL基盤制御部910Aに送信する。
【0273】
(33-2)CDL基盤制御部910Aは、キャンセル要求を受け付ける。CDL基盤制御部910Aは、キャンセル要求から、発注先ID、および、発注先製品IDを取得する。CDL基盤制御部910Aは、取得した発注先ID、および、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910Bに送信する。
【0274】
(33-3)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、キャンセル通知を受け付ける。CDL基盤制御部910Bは、キャンセル通知の発注先製品IDをキーに、登録済みリストから、キャンセル通知の発注先製品IDと一致する製品IDを検索する。
【0275】
ここで、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見しなければ、B社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見すると、発見した製品IDに対応する登録済みデータを含むブロックを無効化する対象に設定する。ここでは、CDL基盤制御部910Bは、キャンセル通知の発注先製品IDと一致する製品IDを発見したとする。
【0276】
(33-4)CDL基盤制御部910Bは、発見した製品IDをキーに、登録済みリストから、製品IDに対応するデータID、発注先ID、発注先製品IDを読み出して取得する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Bは、発見した製品IDをキーに、次データIDを取得してもよい。
【0277】
(33-5)CDL基盤制御部910Bは、自社用の無効化管理テーブル3300Bを用いて、取得したデータIDと、無効フラグ:1とを対応付けて記憶する。このように、CDL基盤制御部910Bは、取得したデータIDのブロックの登録済みデータを無効化することを表現する。
【0278】
(33-6)CDL基盤制御部910Bは、発注先ID、および、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910Cに送信する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。
【0279】
(33-7)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、キャンセル通知を受け付ける。CDL基盤制御部910Cは、キャンセル通知の発注先製品IDをキーに、登録済みリストから、キャンセル通知の発注先製品IDと一致する製品IDを検索する。
【0280】
ここで、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見しなければ、C社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見すると、発見した製品IDに対応する登録済みデータを含むブロックを無効化する対象に設定する。ここでは、CDL基盤制御部910Cは、キャンセル通知の発注先製品IDと一致する製品IDを発見したとする。
【0281】
(33-8)CDL基盤制御部910Cは、発見した製品IDをキーに、登録済みリストから、製品IDに対応するデータID、発注先ID、発注先製品IDを読み出して取得する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Cは、発見した製品IDをキーに、次データIDを取得してもよい。
【0282】
(33-9)CDL基盤制御部910Cは、自社用の無効化管理テーブル3300Cを用いて、取得したデータIDと、無効フラグ:1とを対応付けて記憶する。このように、CDL基盤制御部910Cは、取得したデータIDのブロックの登録済みデータを無効化することを表現する。
【0283】
(33-10)CDL基盤制御部910Cは、発注先ID、および、発注先製品IDを含むキャンセル通知を、後段のCDL基盤制御部910Dに送信する。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。
【0284】
このように、情報処理システム200は、リネージュにおいて、直接的に、ブロックを削除することが難しい場合であっても、ブロックの登録済みデータを無効化することを表現することができる。このため、情報処理システム200は、CDLを柔軟に更新可能にすることができる。情報処理システム200は、B社の利用者、および、C社の利用者宛てにアラームを出力せずに、ブロックの登録済みデータを無効化することを表現することができる。このため、情報処理システム200は、利用者にかかる作業負担の低減化を図ることができる。
【0285】
(第3無効化処理手順)
次に、図34を用いて、CDL基盤制御部910が実行する、第3無効化処理手順の一例について説明する。第3無効化処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。第3無効化処理は、例えば、第1無効化処理に代わり実行される。
【0286】
図34は、第3無効化処理手順の一例を示すフローチャートである。図34において、CDL基盤制御部910は、自社上位アプリケーション900から、無効化要求を受け付ける(ステップS3401)。
【0287】
無効化要求は、例えば、無効化対象の登録済みデータを含むブロックによって形成されるブランチの起点となる、発注元製品の登録済みデータを含むブロックを特定可能にする発注元製品IDを含む。無効化要求は、例えば、無効化対象の登録済みデータに対応する発注先ID、および、無効化対象の登録済みデータに対応する発注先製品IDを含む。
【0288】
次に、CDL基盤制御部910は、発注元製品ID、発注先ID、発注先製品IDを、無効化要求のパラメータから抽出する(ステップS3402)。そして、CDL基盤制御部910は、発注元製品IDをキーに、登録済みデータを検索し、発見した登録済みデータのデータID、発注先ID、および、発注先製品IDを抽出する(ステップS3403)。
【0289】
次に、CDL基盤制御部910は、抽出したデータIDを、前データIDとして採用し、既存の分岐先となるブロックに関する情報を修正するための修正データを生成し、リネージュに追加する(ステップS3404)。具体的には、修正データは、上述した修正登録処理によってリネージュに追加される。
【0290】
そして、CDL基盤制御部910は、抽出した発注元ID、発注元製品ID、発注先ID、および、発注先製品IDに基づいて、後段のCDL基盤制御部910に無効化通知を送信する(ステップS3405)。無効化通知は、発注元ID、発注元製品ID、発注先ID、および、発注先製品IDを含む。CDL基盤制御部910は、第3無効化処理を終了する。
【0291】
(第4無効化処理手順)
次に、図35を用いて、CDL基盤制御部910が実行する、第4無効化処理手順の一例について説明する。第4無効化処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。第4無効化処理は、例えば、第2無効化処理に代わり実行される。
【0292】
図35は、第4無効化処理手順の一例を示すフローチャートである。図35において、CDL基盤制御部910は、前段のCDL基盤制御部910から受信した無効化通知の発注元ID、発注元製品ID、発注先ID、および、発注先製品IDをキーに、登録済みリストのレコードを検索する(ステップS3501)。
【0293】
次に、CDL基盤制御部910は、検索したレコードのデータIDに、無効フラグ:1を設定し、無効化管理テーブルを用いて記録する(ステップS3502)。CDL基盤制御部910は、無効化通知の発注先ID、および、発注先製品IDを、次の発注元ID、および、次の発注元製品IDとして採用する。CDL基盤制御部910は、検索したレコードの通知先組織ID、および、通知先製品IDを、次の発注先ID、および、次の発注先製品IDとして採用する。
【0294】
そして、CDL基盤制御部910は、採用した発注元ID、発注元製品ID、発注先ID、および、発注先製品IDに基づいて、後段のCDL基盤制御部910に無効化通知を送信する(ステップS3503)。その後、CDL基盤制御部910は、第4無効化処理を終了する。
【0295】
次に、図36図38を用いて、第1の具体例における各種データ構造の一例について説明する。まず、図36を用いて、データ登録通知、および、キャンセル通知などの各種通知のデータ構造の一例について説明する。
【0296】
図36は、各種通知のデータ構造の一例を示す説明図である。図36に示すように、データ登録通知、または、キャンセル通知として用いられる通知3600は、通知種別と、通知先組織IDと、通知先製品IDと、通知元組織IDと、通知元製品IDと、前データIDとのフィールドを有する。
【0297】
通知種別のフィールドには、通知3600が、データ登録通知であるか、または、キャンセル通知であるかを示すフラグ情報が設定される。フラグ情報は、例えば、値が0であれば、データ登録通知であることを示す。フラグ情報は、例えば、値が1であれば、キャンセル通知であることを示す。
【0298】
通知先組織IDのフィールドには、通知3600の通知先を識別する通知先組織IDが設定される。通知先製品IDのフィールドには、通知3600の通知先における製品を識別する通知先製品IDが設定される。通知先製品IDは、例えば、通知3600の通知元でリネージュに追加したブロックに対応する製品に用いられる、通知3600の通知先における製品を識別する。通知先製品IDは、例えば、無効化する対象となる、通知3600の通知先における製品を識別する。
【0299】
通知元組織IDのフィールドには、通知3600の通知元を識別する通知元組織IDが設定される。通知元組織IDのフィールドは、通知3600がキャンセル通知である場合、空であってもよい。通知元製品IDのフィールドには、通知3600の通知元における製品を識別する通知元製品IDが設定される。通知元製品IDは、例えば、通知3600の通知元でリネージュに追加したブロックに対応する製品を識別する。通知元製品IDのフィールドは、通知3600がキャンセル通知である場合、空であってもよい。
【0300】
前データIDのフィールドには、通知3600の通知元におけるブロックのデータIDが設定される。前データIDは、例えば、通知3600の通知元でリネージュに追加したブロックのデータIDである。前データIDのフィールドは、通知3600がキャンセル通知である場合、空であってもよい。次に、図37を用いて、未登録リスト3700のデータ構造の一例について説明する。
【0301】
図37は、未登録リスト3700のデータ構造の一例を示す説明図である。図37に示すように、未登録リスト3700は、通知先製品IDと、通知元組織IDと、通知元製品IDと、前データIDとのフィールドを有する。未登録リスト3700は、登録データごとに各フィールドに情報を設定することにより、未登録データ管理情報がレコードとして記憶される。
【0302】
通知先製品IDのフィールドには、登録通知の発注先製品IDが、通知先製品IDとして設定される。通知元組織IDのフィールドには、登録通知の発注先製品IDが、通知先組織IDとして設定される。通知元製品IDのフィールドには、登録通知の自社製品IDが、通知元製品IDとして設定される。前データIDのフィールドには、登録通知のデータIDが、前データIDとして設定される。次に、図38を用いて、登録済みリスト3800のデータ構造の一例について説明する。
【0303】
図38は、登録済みリスト3800のデータ構造の一例を示す説明図である。図38に示すように、登録済みリスト3800は、製品IDと、データIDと、通知元組織IDと、通知元製品IDと、前データIDと、通知先組織IDと、通知先製品IDと、登録種別とのフィールドを有する。登録済みリスト3800は、登録済みデータごとに各フィールドに情報を設定することにより、登録済みデータ管理情報がレコードとして記憶される。
【0304】
製品IDのフィールドには、登録済みデータに対応する製品IDが設定される。データIDのフィールドには、登録済みデータに対応し、登録済みデータを含むブロックに設定されたデータIDが設定される。通知元組織IDのフィールドには、登録済みデータの登録に際して参照した登録通知の自社IDが設定される。通知元製品IDのフィールドには、登録済みデータの登録に際して参照した登録通知の自社製品IDが設定される。
【0305】
前データIDのフィールドには、登録済みデータのブロックの1つ前に連結する、上記通知元である前段のCDL基盤制御部910が管理するブロックのデータIDが設定される。通知先組織IDのフィールドには、登録通知の発注先IDが、通知先組織IDとして設定される。通知先製品IDのフィールドには、登録通知の発注先製品IDが、通知先製品IDとして設定される。
【0306】
登録種別のフィールドには、登録済みデータの種別が、複製データであるか否かを示すフラグ情報が設定される。フラグ情報は、例えば、値が1であれば、複製データであることを示す。フラグ情報は、例えば、値が0であれば、複製データではなく、元データであることを示す。元データは、他データの複製ではないオリジナルデータである。
【0307】
(可視化処理手順)
次に、図39を用いて、CDL基盤制御部910が実行する、可視化処理手順の一例について説明する。可視化処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0308】
図39は、可視化処理手順の一例を示すフローチャートである。図39において、CDL基盤制御部910は、自社上位アプリケーション900から、リネージュ取得要求を受け付ける(ステップS3901)。リネージュ取得要求は、例えば、リネージュを特定可能にする製品IDなどを含む。
【0309】
次に、CDL基盤制御部910は、リネージュ取得要求で指定された製品IDなどをキーに、一連のリネージュを取得する(ステップS3902)。そして、CDL基盤制御部910は、取得したリネージュに含まれる無効フラグ:1のブロックを抽出し、取得したリネージュから、抽出したブロックの1つ前に連結する前段ブロックを削除する(ステップS3903)。
【0310】
次に、CDL基盤制御部910は、取得したリネージュに含まれる修正データのブロックを抽出し、最新データのユーザ定義部に含まれる元データのユーザ定義部を、修正データに置き換えて、修正データを削除する(ステップS3904)。
【0311】
次に、CDL基盤制御部910は、取得したリネージュに含まれる製品IDのうち、登録済みリストに基づいて、複製が存在する製品IDを特定し、特定した製品IDを合流点に採用し、取得したリネージュの接続関係を更新する(ステップS3905)。
【0312】
そして、CDL基盤制御部910は、リネージュ取得要求の要求元に、リネージュを返却する(ステップS3906)。その後、CDL基盤制御部910は、可視化処理を終了する。
【0313】
(情報処理装置100の動作の第2の具体例)
次に、図40図52を用いて、情報処理装置100の動作の第2の具体例について説明する。第1の具体例は、グローバルなブロックに付随するローカルなブロックに、ユーザ定義情報を含む場合についての具体例である。
【0314】
これに対し、第2の具体例は、グローバルなブロックに付随するローカルなブロックに、直接的にユーザ定義情報を含まず、ユーザ定義情報の識別子を含む場合についての具体例である。これによれば、ローカルなブロックの複製を生成する場合における、リネージュのデータ量の増大化を抑制することができる。
【0315】
第2の具体例では、情報処理システム200は、サプライチェーンの参加者に関する製品間の前後関係を表現する第1リネージュと、参加者ごとの製品に関する情報の変更履歴を表現する第2リネージュとを利用する。以下の説明では、第1リネージュを「水平チェーン」と表記する場合がある。以下の説明では、第2リネージュを「垂直チェーン」と表記する場合がある。ここで、図40の説明に移行し、水平チェーン4000の一例について説明する。
【0316】
図40は、水平チェーン4000の一例を示す説明図である。図40において、A社の製品A01と、A社の製品A02とが、B社の製品B11を用いるため、水平チェーン4000は、ブランチの合流を表現することが望まれる。これに対し、水平チェーン4000は、データID#H01の製品A01のブロックと、データID#H02の製品B11のブロックと、データID#H03の製品C21のブロックと、データID#H06の製品A02のブロックとを含む。
【0317】
水平チェーン4000は、合流を表現するため、データID#H07の製品B11のブロックと、データID#H08の製品C21のブロックとを含む。データID#H07の製品B11のブロックは、データID#H02の製品B11のブロックの複製に相当する。データID#H08の製品C21のブロックは、データID#H03の製品C21のブロックの複製に相当する。
【0318】
水平チェーン4000は、データID#H01の製品A01のブロックと、データID#H02の製品B11のブロックと、データID#H03の製品C21のブロックとを順に連結する。水平チェーン4000は、データID#H06の製品A02のブロックと、データID#H07の製品B11のブロックと、データID#H08の製品C21のブロックとを順に連結する。
【0319】
このように、水平チェーン4000は、ブランチの合流を表現することができる。水平チェーン4000の各ブロックは、当該ブロックに付随するローカルなブロックを介して、垂直チェーン4100のブロックを参照する。次に、図41を用いて、垂直チェーン4100の一例について説明する。
【0320】
図41は、垂直チェーン4100の一例を示す説明図である。図41に示すように、垂直チェーン4100は、製品ごとに、当該製品に対応する一連のブロックを含む。垂直チェーン4100は、例えば、データVL01を含むデータID#V01のブロックと、データVL01を含むデータID#V09のブロックと、データVL01を含むデータID#V16のブロックとを順に連結する。
【0321】
例えば、データVL01は、製品A01に対応するデータである。データID#V09のブロックのデータVL01は、データID#V01のブロックのデータVL01を修正したデータである。データID#V16のブロックのデータVL01は、データID#V09のブロックのデータVL01を修正したデータである。
【0322】
垂直チェーン4100は、例えば、データID#V02のブロックと、データID#V10のブロックと、データID#V17のブロックと、データID#V21のブロックとを順に連結する。データID#V02のブロックと、データID#V10のブロックと、データID#V17のブロックと、データID#V21のブロックとは、それぞれ、データVL02を含む。
【0323】
例えば、データVL02は、製品A02に対応するデータである。データID#V10のブロックのデータVL02は、データID#V02のブロックのデータVL02を修正したデータである。データID#V17のブロックのデータVL02は、データID#V10のブロックのデータVL02を修正したデータである。データID#V21のブロックのデータVL02は、データID#V17のブロックのデータVL02を修正したデータである。
【0324】
垂直チェーン4100は、例えば、データVL03を含むデータID#V03のブロックと、データVL03を含むデータID#V11のブロックと、データVL03を含むデータID#V18のブロックとを順に連結する。
【0325】
データVL03は、製品B11に対応するデータである。データID#V11のブロックのデータVL03は、データID#V03のブロックのデータVL03を修正したデータである。データID#V18のブロックのデータVL03は、データID#V11のブロックのデータVL03を修正したデータである。
【0326】
垂直チェーン4100は、例えば、データVL05を含むデータID#V05のブロックを含む。データVL05は、製品C21に対応するデータである。このように、垂直チェーン4100は、製品ごとに、当該製品に関する情報の変更履歴を表現することができる。垂直チェーン4100の一連のブロックは、水平チェーン4000の各ブロックから参照可能に、当該ブロックに対応付けられる。次に、図42を用いて、水平チェーン4000のブロック4200の具体例について説明する。
【0327】
図42は、水平チェーン4000のブロック4200の具体例を示す説明図である。図42に示すように、ブロック4200は、グローバルなブロックである。ブロック4200は、データID、前データID、次データID、組織ID、および、製品IDなどを含む。データIDは、ブロック4200を識別する識別情報である。
【0328】
前データIDは、ブロック4200の1つ前に連結する他ブロックを識別する識別情報である。次データIDは、ブロック4200の1つ後ろに連結する他ブロックを識別する識別情報である。次データIDは、水平チェーン4000にブロック4200を追加した際には空であってもよい。組織IDは、ブロック4200に対応する組織を識別する識別情報である。製品IDは、ブロック4200に対応する製品を識別する識別情報である。
【0329】
ブロック4200は、ローカルなブロック4201が接続される。ブロック4201は、通知元組織IDと、通知元製品IDと、n個の通知先組織IDと、n個の通知先製品IDと、垂直チェーンIDとを含む。通知元組織IDは、前データIDのブロックに対応する組織を識別する識別情報である。通知元製品IDと、前データIDのブロックに対応する製品を識別する識別情報である。
【0330】
通知先組織IDは、次データIDのブロックに対応する組織を識別する識別情報である。通知先製品IDと、次データIDのブロックに対応する製品を識別する識別情報である。垂直チェーンIDは、垂直チェーン4100を識別する識別情報である。次に、図43を用いて、垂直チェーン4100のブロック4300の具体例について説明する。
【0331】
図43は、垂直チェーン4100のブロック4300の具体例を示す説明図である。図43に示すように、ブロック4300は、グローバルなブロックである。ブロック4300は、データID、前データID、次データID、垂直チェーンID、組織ID、および、製品IDなどを含む。データIDは、ブロック4300を識別する識別情報である。
【0332】
前データIDは、ブロック4300の1つ前に連結する他ブロックを識別する識別情報である。次データIDは、ブロック4300の1つ後ろに連結する他ブロックを識別する識別情報である。次データIDは、垂直チェーン4100にブロック4300を追加した際には空であってもよい。垂直チェーンIDは、垂直チェーン4100を識別する識別情報である。
【0333】
組織IDは、ブロック4300に対応する組織を識別する識別情報である。製品IDは、ブロック4300に対応する製品を識別する識別情報である。ブロック4300は、ローカルなブロック4301が接続される。ブロック4301は、ユーザ定義データを含む。ユーザ定義データは、例えば、ブロック4300に対応する製品に用いる部品の数などである。
【0334】
次に、図44を用いて、第2の具体例において、情報処理装置100のCDL基盤制御部910が、リネージュに新規データを登録する一例について説明する。
【0335】
図44は、第2の具体例における新規データを登録する一例を示す説明図である。図44において、(44-1)A社の利用者は、例えば、B社の製品を用いたA社の製品のデータを、リネージュに登録することを望んだとする。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Aに送信する。
【0336】
ここで、自社IDは、A社を識別する識別情報である。自社製品IDは、データを登録するA社の製品を識別する識別情報である。発注先IDは、A社の製品に用いる他社製品を発注するB社を識別する識別情報である。発注先製品IDは、B社の製品を識別する識別情報である。製品情報は、A社の製品のデータである。製品情報は、例えば、A社の製品に用いるB社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0337】
(44-2)CDL基盤制御部910Aは、データ登録要求を受け付ける。CDL基盤制御部910Aは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Aは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図50を用いて後述する。
【0338】
ここでは、CDL基盤制御部910Aは、新規データであると判定したとする。ここで、CDL基盤制御部910Aは、自社が最下流であるため、前データID=空と設定する。CDL基盤制御部910Aは、自社製品IDに対応する垂直チェーンIDを取得する。CDL基盤制御部910Aは、新規データであると判定したため、前データID=空と垂直チェーンIDとを含めた水平チェーンの登録用JSONフォーマットと、登録データ=製品情報を含めた垂直チェーンの登録用JSONフォーマットを生成する。
【0339】
水平チェーンの登録用JSONフォーマットは、例えば、前データID=空を含むグローバルなブロックと、垂直チェーンIDを含むローカルなブロックとの組み合わせである。垂直チェーンの登録用JSONフォーマットは、例えば、グローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Aは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。CDL基盤制御部910Aは、生成した垂直チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。
【0340】
(44-3)CDL基盤920Aは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Aは、新たなデータIDを生成し、受け付けた水平チェーンの登録用JSONフォーマットに設定する。CDL基盤920Aは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Aは、水平チェーンの登録用JSONフォーマットを、新たなブロックとして水平チェーンに追加する。CDL基盤920Aは、水平チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Aに送信する。
【0341】
同様に、CDL基盤920Aは、登録APIを介して、垂直チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Aは、新たなデータIDを生成し、受け付けた垂直チェーンの登録用JSONフォーマットに設定する。CDL基盤920Aは、垂直チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Aは、垂直チェーンの登録用JSONフォーマットを、新たなブロックとして垂直チェーンに追加する。CDL基盤920Aは、垂直チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Aに送信する。
【0342】
(44-4)CDL基盤制御部910Aは、水平チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Aは、垂直チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Aは、水平チェーンに追加したブロックに関するデータIDを含む応答と、垂直チェーンに追加したブロックに関するデータIDを含む応答と、を受け付けると、登録データが垂直チェーンに登録されたと判定する。
【0343】
CDL基盤制御部910Aは、登録データが垂直チェーンに登録されたため、水平チェーンに追加したブロックに関するデータIDを含む応答から、水平チェーンに追加したブロックに関するデータIDを取得する。CDL基盤制御部910Aは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む登録通知を、後段のCDL基盤制御部910Bに送信する。
【0344】
(44-5)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、登録通知を受け付けると、B社の利用者宛てにアラームを出力する。B社の利用者は、アラームを参照して、A社の製品にB社の製品を用いることを把握する。
【0345】
(44-6)B社の利用者は、例えば、C社の製品を用いたB社の製品のデータを、リネージュに登録することを望む。上位アプリケーション900Bは、B社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Bに送信する。
【0346】
ここで、自社IDは、B社を識別する識別情報である。自社製品IDは、データを登録するB社の製品を識別する識別情報である。発注先IDは、B社の製品に用いる他社製品を発注するC社を識別する識別情報である。発注先製品IDは、C社の製品を識別する識別情報である。製品情報は、B社の製品のデータである。製品情報は、例えば、B社の製品に用いるC社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0347】
(44-7)CDL基盤制御部910Bは、データ登録要求を受け付ける。CDL基盤制御部910Bは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Bは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図50を用いて後述する。
【0348】
ここでは、CDL基盤制御部910Bは、新規データであると判定したとする。ここで、CDL基盤制御部910Bは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Bは、自社製品IDに対応する垂直チェーンIDを取得する。CDL基盤制御部910Bは、新規データであると判定したため、前データIDと垂直チェーンIDとを含めた水平チェーンの登録用JSONフォーマットと、登録データ=製品情報を含めた垂直チェーンの登録用JSONフォーマットを生成する。
【0349】
水平チェーンの登録用JSONフォーマットは、例えば、前データIDを含むグローバルなブロックと、垂直チェーンIDを含むローカルなブロックとの組み合わせである。垂直チェーンの登録用JSONフォーマットは、例えば、グローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Aは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。CDL基盤制御部910Aは、生成した垂直チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。
【0350】
(44-8)CDL基盤920Bは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた水平チェーンの登録用JSONフォーマットに設定する。CDL基盤920Bは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Bは、水平チェーンの登録用JSONフォーマットを、新たなブロックとして水平チェーンに追加する。CDL基盤920Bは、水平チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0351】
同様に、CDL基盤920Bは、登録APIを介して、垂直チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた垂直チェーンの登録用JSONフォーマットに設定する。CDL基盤920Bは、垂直チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Bは、垂直チェーンの登録用JSONフォーマットを、新たなブロックとして垂直チェーンに追加する。CDL基盤920Bは、垂直チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0352】
(44-9)CDL基盤制御部910Bは、水平チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Bは、垂直チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Bは、水平チェーンに追加したブロックに関するデータIDを含む応答と、垂直チェーンに追加したブロックに関するデータIDを含む応答と、を受け付けると、登録データが垂直チェーンに登録されたと判定する。
【0353】
CDL基盤制御部910Bは、登録データが垂直チェーンに登録されたため、水平チェーンに追加したブロックに関するデータIDを含む応答から、水平チェーンに追加したブロックに関するデータIDを取得する。CDL基盤制御部910Bは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む登録通知を、後段のCDL基盤制御部910Cに送信する。
【0354】
(44-10)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、登録通知を受け付けると、C社の利用者宛てにアラームを出力する。C社の利用者は、アラームを参照して、B社の製品にC社の製品を用いることを把握する。
【0355】
(44-11)C社の利用者は、例えば、D社の製品を用いたC社の製品のデータを、リネージュに登録することを望む。上位アプリケーション900Cは、C社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Cに送信する。
【0356】
ここで、自社IDは、C社を識別する識別情報である。自社製品IDは、データを登録するC社の製品を識別する識別情報である。発注先IDは、C社の製品に用いる他社製品を発注するD社を識別する識別情報である。発注先製品IDは、D社の製品を識別する識別情報である。製品情報は、C社の製品のデータである。製品情報は、例えば、C社の製品に用いるD社の製品の属性などを含む。属性は、例えば、数または価格などである。
【0357】
(44-12)CDL基盤制御部910Cは、データ登録要求を受け付ける。CDL基盤制御部910Cは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Cは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図50を用いて後述する。
【0358】
ここでは、CDL基盤制御部910Cは、新規データであると判定したとする。ここで、CDL基盤制御部910Cは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Cは、自社製品IDに対応する垂直チェーンIDを取得する。CDL基盤制御部910Cは、新規データであると判定したため、前データIDと垂直チェーンIDとを含めた水平チェーンの登録用JSONフォーマットと、登録データ=製品情報を含めた垂直チェーンの登録用JSONフォーマットを生成する。
【0359】
水平チェーンの登録用JSONフォーマットは、例えば、前データIDを含むグローバルなブロックと、垂直チェーンIDを含むローカルなブロックとの組み合わせである。垂直チェーンの登録用JSONフォーマットは、例えば、グローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Bは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。CDL基盤制御部910Bは、生成した垂直チェーンの登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。
【0360】
(44-13)CDL基盤920Cは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた水平チェーンの登録用JSONフォーマットに設定する。CDL基盤920Cは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Cは、水平チェーンの登録用JSONフォーマットを、新たなブロックとして水平チェーンに追加する。CDL基盤920Cは、水平チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0361】
同様に、CDL基盤920Cは、登録APIを介して、垂直チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた垂直チェーンの登録用JSONフォーマットに設定する。CDL基盤920Cは、垂直チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Cは、垂直チェーンの登録用JSONフォーマットを、新たなブロックとして垂直チェーンに追加する。CDL基盤920Cは、垂直チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0362】
(44-14)CDL基盤制御部910Cは、水平チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Cは、垂直チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Cは、水平チェーンに追加したブロックに関するデータIDを含む応答と、垂直チェーンに追加したブロックに関するデータIDを含む応答と、を受け付けると、登録データが垂直チェーンに登録されたと判定する。
【0363】
CDL基盤制御部910Cは、登録データが垂直チェーンに登録されたため、水平チェーンに追加したブロックに関するデータIDを含む応答から、水平チェーンに追加したブロックに関するデータIDを取得する。CDL基盤制御部910Cは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む登録通知を、後段のCDL基盤制御部910Dに送信する。
【0364】
このように、情報処理システム200は、リネージュに新規データを登録していくことができる。情報処理システム200は、例えば、リネージュの垂直チェーンに、新規データを追加していくことができる。CDL基盤制御部910が、リネージュに新規データを登録する処理の流れについては、図46を用いて後述する。
【0365】
ここでは、CDL基盤制御部910が、リネージュに新規データを登録する場合について説明したが、これに限らない。例えば、CDL基盤制御部910が、リネージュにおいて、登録済みデータを修正データで更新する場合があってもよい。CDL基盤制御部910が、リネージュにおいて、登録済みデータを修正データで更新する処理の流れについては、図47を用いて後述する。
【0366】
(自社登録処理手順)
次に、図45を用いて、CDL基盤制御部910が実行する、自社登録処理手順の一例について説明する。自社登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0367】
図45は、第2の具体例における自社登録処理手順の一例を示すフローチャートである。図45において、CDL基盤制御部910は、APIを介して、自社上位アプリケーション900から、データ登録要求を受け付ける(ステップS4501)。データ登録要求は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、登録データなどを含む。登録データは、例えば、製品情報などを含む。
【0368】
CDL基盤制御部910は、データ登録要求によって指定された登録データが、新規データであるか否かを判定する(ステップS4502)。ここで、新規データである場合(ステップS4502:Yes)、CDL基盤制御部910は、ステップS4503の処理に移行する。一方で、新規データではなく修正データである場合(ステップS4502:No)、CDL基盤制御部910は、ステップS4504の処理に移行する。
【0369】
ステップS4503では、CDL基盤制御部910は、図14に後述する新規登録処理を実行する(ステップS4503)。そして、CDL基盤制御部910は、自社登録処理を終了する。
【0370】
ステップS4504では、CDL基盤制御部910は、図15に後述する修正登録処理を実行する(ステップS4504)。そして、CDL基盤制御部910は、自社登録処理を終了する。
【0371】
(新規登録処理手順)
次に、図46を用いて、CDL基盤制御部910が実行する、新規登録処理手順の一例について説明する。新規登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0372】
図46は、第2の具体例における新規登録処理手順の一例を示すフローチャートである。図46において、CDL基盤制御部910は、自装置が、最下流の担当であるか否かを判定する(ステップS4601)。ここで、最下流の担当である場合(ステップS4601:Yes)、CDL基盤制御部910は、ステップS4603の処理に移行する。一方で、最下流の担当ではない場合(ステップS4601:No)、CDL基盤制御部910は、ステップS4602の処理に移行する。
【0373】
ステップS4602では、CDL基盤制御部910は、APIを介して指定された製品IDに対する、前段のCDL基盤制御部910からの登録通知があれば、当該登録通知から、前データIDを取得する(ステップS4602)。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む。そして、CDL基盤制御部910は、ステップS4603の処理に移行する。
【0374】
ステップS4603では、CDL基盤制御部910は、データ登録要求の登録データと、取得した前データIDとを用いて、垂直チェーン用JSONフォーマットを生成する(ステップS4603)。そして、CDL基盤制御部910は、垂直チェーン用JSONフォーマットを用いて、垂直チェーンに対する登録APIを実行する(ステップS4604)。
【0375】
次に、CDL基盤制御部910は、登録APIの応答を取得し、応答の登録データID=垂直チェーンIDを取得する(ステップS4605)。次に、CDL基盤制御部910は、取得した登録データIDと、取得した前データIDとを用いて、水平チェーン用JSONフォーマットを生成する(ステップS4606)。そして、CDL基盤制御部910は、水平チェーン用JSONフォーマットを用いて、水平チェーンに対する登録APIを実行する(ステップS4607)。
【0376】
次に、CDL基盤制御部910は、登録APIの応答を取得し、未登録リストをクリアし、応答の登録データIDを、登録済みリストに追加する(ステップS4608)。そして、CDL基盤制御部910は、自社ID、自社製品ID、発注先ID、発注先製品ID、応答のデータIDを含む登録通知を生成し、後段のCDL基盤制御部910に登録通知を送信する(ステップS4609)。その後、CDL基盤制御部910は、新規登録処理を終了する。
【0377】
(修正登録処理手順)
次に、図47を用いて、CDL基盤制御部910が実行する、修正登録処理手順の一例について説明する。修正登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0378】
図47は、第2の具体例における修正登録処理手順の一例を示すフローチャートである。図47において、CDL基盤制御部910は、登録済みリストを参照して、データ登録要求の自社製品IDをキーに、登録済みデータを検索し、検索した登録済みデータから、垂直チェーンIDを取得する(ステップS4701)。
【0379】
次に、CDL基盤制御部910は、取得した垂直チェーンIDと、データ登録要求の登録データとを用いて、登録用JSONフォーマットを生成する(ステップS4702)。そして、CDL基盤制御部910は、垂直チェーンに対する登録APIを実行する(ステップS4703)。その後、CDL基盤制御部910は、修正登録処理を終了する。
【0380】
次に、図48図50を用いて、第2の具体例におけるフォーマットの一例を示す説明図である。第2の具体例における各種データ構造の一例について説明する。まず、図48を用いて、データ登録通知、および、キャンセル通知などの各種通知のデータ構造の一例について説明する。
【0381】
図48は、各種通知のデータ構造の一例を示す説明図である。図48に示すように、データ登録通知、または、キャンセル通知として用いられる通知4800は、通知種別と、通知先組織IDと、通知先製品IDと、通知元組織IDと、通知元製品IDと、前データIDとのフィールドを有する。
【0382】
通知種別のフィールドには、通知4800が、データ登録通知であるか、または、キャンセル通知であるかを示すフラグ情報が設定される。フラグ情報は、例えば、値が0であれば、データ登録通知であることを示す。フラグ情報は、例えば、値が1であれば、キャンセル通知であることを示す。
【0383】
通知先組織IDのフィールドには、通知4800の通知先を識別する通知先組織IDが設定される。通知先製品IDのフィールドには、通知4800の通知先における製品を識別する通知先製品IDが設定される。通知先製品IDは、例えば、通知4800の通知元でリネージュに追加したブロックに対応する製品に用いられる、通知4800の通知先における製品を識別する。通知先製品IDは、例えば、無効化する対象となる、通知4800の通知先における製品を識別する。
【0384】
通知元組織IDのフィールドには、通知4800の通知元を識別する通知元組織IDが設定される。通知元組織IDのフィールドは、通知4800がキャンセル通知である場合、空であってもよい。通知元製品IDのフィールドには、通知4800の通知元における製品を識別する通知元製品IDが設定される。通知元製品IDは、例えば、通知4800の通知元でリネージュに追加したブロックに対応する製品を識別する。通知元製品IDのフィールドは、通知4800がキャンセル通知である場合、空であってもよい。
【0385】
前データIDのフィールドには、通知4800の通知元におけるブロックのデータIDが設定される。前データIDは、例えば、通知4800の通知元でリネージュに追加したブロックのデータIDである。前データIDのフィールドは、通知4800がキャンセル通知である場合、空であってもよい。次に、図49を用いて、未登録リスト4900のデータ構造の一例について説明する。
【0386】
図49は、未登録リスト4900のデータ構造の一例を示す説明図である。図49に示すように、未登録リスト4900は、通知先製品IDと、通知元組織IDと、通知元製品IDと、前データIDとのフィールドを有する。未登録リスト4900は、登録データごとに各フィールドに情報を設定することにより、未登録データ管理情報がレコードとして記憶される。
【0387】
通知先製品IDのフィールドには、登録通知の発注先製品IDが、通知先製品IDとして設定される。通知元組織IDのフィールドには、登録通知の発注先製品IDが、通知先組織IDとして設定される。通知元製品IDのフィールドには、登録通知の自社製品IDが、通知元製品IDとして設定される。前データIDのフィールドには、登録通知のデータIDが、前データIDとして設定される。次に、図50を用いて、登録済みリスト5000のデータ構造の一例について説明する。
【0388】
図50は、登録済みリスト5000のデータ構造の一例を示す説明図である。図50に示すように、登録済みリスト5000は、製品IDと、データIDと、通知元組織IDと、通知元製品IDと、前データIDと、通知先組織IDと、通知先製品IDと、垂直チェーンIDとのフィールドを有する。登録済みリスト5000は、登録済みデータごとに各フィールドに情報を設定することにより、登録済みデータ管理情報がレコードとして記憶される。
【0389】
製品IDのフィールドには、登録済みデータに対応する製品IDが設定される。データIDのフィールドには、水平チェーンにおける、登録済みデータに対応するブロックに設定されたデータIDが設定される。データIDのフィールドには、具体的には、水平チェーンにおける、登録済みデータを含む垂直チェーンに対応するブロックに設定されたデータIDが設定される。通知元組織IDのフィールドには、登録済みデータの登録に際して参照した登録通知の自社IDが設定される。通知元製品IDのフィールドには、登録済みデータの登録に際して参照した登録通知の自社製品IDが設定される。
【0390】
前データIDのフィールドには、上記データIDのブロックの1つ前に連結する、上記通知元である前段のCDL基盤制御部910が管理するブロックのデータIDが設定される。通知先組織IDのフィールドには、登録通知の発注先IDが、通知先組織IDとして設定される。通知先製品IDのフィールドには、登録通知の発注先製品IDが、通知先製品IDとして設定される。
【0391】
垂直チェーンIDのフィールドには、登録済みデータを含む垂直チェーンを識別する識別情報が設定される。同一の垂直チェーンIDを含む異なる複数のレコードがあれば、当該複数のレコードのうち、最古のレコード以外のレコードに対応する登録データが、複製データに相当する。
【0392】
次に、図51を用いて、情報処理システム200が、合流を表すリネージュを形成する一例について説明する。具体的には、CDL基盤制御部910が、合流を表現するよう、リネージュに、ブロックの複製を追加するよう、リネージュを制御することになる。
【0393】
図51は、合流を表すリネージュを形成する一例を示す説明図である。図51において、(51-1)A社の利用者は、例えば、B社の製品B1を用いたA社の製品A2のデータを、リネージュに登録することを望んだとする。B社の製品B1は、A社の製品A1にも用いられるとする。このため、合流を表すリネージュを形成することが望まれる。上位アプリケーション900Aは、A社の利用者の操作入力に基づき、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を含むデータ登録要求を、CDL基盤制御部910Aに送信する。
【0394】
(51-2)CDL基盤制御部910Aは、データ登録要求を受け付ける。CDL基盤制御部910Aは、データ登録要求から、自社ID、自社製品ID、発注先ID、発注先製品ID、および、製品情報を取得する。CDL基盤制御部910Aは、登録済みデータを特定可能にする登録済みリストを参照して、データ登録要求の対象となる登録データ=製品情報が、初めて登録する新規データであるか、または、登録済みデータを修正する修正データであるかを判定する。登録済みリストの一例については、具体的には、図38を用いて後述する。
【0395】
ここでは、CDL基盤制御部910Aは、新規データであると判定したとする。ここで、CDL基盤制御部910Aは、自社が最下流であるため、前データID=空と設定する。CDL基盤制御部910Aは、自社製品IDに対応する垂直チェーンIDを取得する。CDL基盤制御部910Aは、新規データであると判定したため、前データID=空と垂直チェーンIDとを含めた水平チェーンの登録用JSONフォーマットと、登録データ=製品情報を含めた垂直チェーンの登録用JSONフォーマットを生成する。
【0396】
水平チェーンの登録用JSONフォーマットは、例えば、前データID=空を含むグローバルなブロックと、垂直チェーンIDを含むローカルなブロックとの組み合わせである。垂直チェーンの登録用JSONフォーマットは、例えば、グローバルなブロックと、登録データ=製品情報を含むローカルなブロックとの組み合わせである。CDL基盤制御部910Aは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。CDL基盤制御部910Aは、生成した垂直チェーンの登録用JSONフォーマットを用いて、CDL基盤920Aに対して登録APIを実行する。
【0397】
(51-3)CDL基盤920Aは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Aは、新たなデータIDを生成し、受け付けた水平チェーンの登録用JSONフォーマットに設定する。CDL基盤920Aは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。その後、CDL基盤920Aは、水平チェーンの登録用JSONフォーマットを、新たなブロックとして水平チェーンに追加する。CDL基盤920Aは、水平チェーンに追加したブロックに関する生成したデータIDを含む応答を、CDL基盤制御部910Aに送信する。
【0398】
(51-4)CDL基盤制御部910Aは、水平チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Aは、垂直チェーンに追加したブロックに関するデータIDを含む応答を受け付ける。CDL基盤制御部910Aは、水平チェーンに追加したブロックに関するデータIDを含む応答と、垂直チェーンに追加したブロックに関するデータIDを含む応答と、を受け付けると、登録データが垂直チェーンに登録されたと判定する。
【0399】
CDL基盤制御部910Aは、登録データが垂直チェーンに登録されたため、水平チェーンに追加したブロックに関するデータIDを含む応答から、水平チェーンに追加したブロックに関するデータIDを取得する。CDL基盤制御部910Aは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む登録通知を、後段のCDL基盤制御部910Bに送信する。
【0400】
(51-5)CDL基盤制御部910Bは、前段のCDL基盤制御部910Aから、登録通知を受け付ける。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む。CDL基盤制御部910Bは、登録通知の発注先製品IDをキーに、登録済みリストから、登録通知の発注先製品IDと一致する製品IDを検索する。
【0401】
ここで、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見しなければ、B社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見すると、合流を表すよう既存ブロックの複製を生成すると判定し、B社の利用者宛てにアラームを出力せずに処理を続行する。ここでは、CDL基盤制御部910Bは、登録通知の発注先製品IDと一致する製品IDを発見したとする。
【0402】
(51-6)CDL基盤制御部910Bは、発見した製品IDをキーに、登録済みリストから、複製元データID、自社製品ID、発注先ID、および、発注先製品IDを読み出して取得する。複製元データIDは、発見した製品IDに対応するデータIDである。自社製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Bは、自社IDを取得しておく。
【0403】
(51-7)CDL基盤制御部910Bは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Bは、設定した前データID=登録通知のデータIDを含むグローバルなブロックと、複製元データIDのブロックに付随するローカルなブロックの複製とを含めた、水平チェーンの登録用JSONフォーマットを生成する。ローカルなブロックの複製は、垂直チェーンIDを含む。CDL基盤制御部910Bは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Bに対して登録APIを実行する。
【0404】
(51-8)CDL基盤920Bは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Bは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Bは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。
【0405】
その後、CDL基盤920Bは、水平チェーンの登録用JSONフォーマットを、リネージュに追加する。このように、CDL基盤920Bは、水平チェーンの異なるブロックが、垂直チェーンを共用可能にすることができる。CDL基盤920Bは、生成したデータIDを含む応答を、CDL基盤制御部910Bに送信する。
【0406】
(51-9)CDL基盤制御部910Bは、データIDを含む応答を受け付けると、リネージュにおいて、合流を表現したと判定する。CDL基盤制御部910Bは、応答に含まれるデータIDを取得する。CDL基盤制御部910Bは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910Cに送信する。
【0407】
(51-10)CDL基盤制御部910Cは、前段のCDL基盤制御部910Bから、登録通知を受け付ける。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、水平チェーンに追加したブロックに関するデータIDを含む。CDL基盤制御部910Cは、登録通知の発注先製品IDをキーに、登録済みリストから、登録通知の発注先製品IDと一致する製品IDを検索する。
【0408】
ここで、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見しなければ、C社の利用者宛てにアラームを出力する。一方で、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見すると、合流を表すよう既存ブロックの複製を生成すると判定し、C社の利用者宛てにアラームを出力せずに処理を続行する。ここでは、CDL基盤制御部910Cは、登録通知の発注先製品IDと一致する製品IDを発見したとする。
【0409】
(51-11)CDL基盤制御部910Cは、発見した製品IDをキーに、登録済みリストから、複製元データID、自社製品ID、発注先ID、および、発注先製品IDを読み出して取得する。複製元データIDは、発見した製品IDに対応するデータIDである。自社製品IDは、発見した製品IDである。発注先IDは、発見した製品IDに対応する通知先組織IDである。発注先製品IDは、発見した製品IDに対応する通知先製品IDである。CDL基盤制御部910Cは、自社IDを取得しておく。
【0410】
(51-12)CDL基盤制御部910Cは、自社が最下流ではないため、登録通知のデータIDを抽出し、前データIDとして取得する。CDL基盤制御部910Cは、設定した前データID=登録通知のデータIDを含むグローバルなブロックと、複製元データIDのブロックに付随するローカルなブロックの複製とを含めた、水平チェーンの登録用JSONフォーマットを生成する。ローカルなブロックの複製は、垂直チェーンIDを含む。CDL基盤制御部910Cは、生成した水平チェーンの登録用JSONフォーマットを用いて、CDL基盤920Cに対して登録APIを実行する。
【0411】
(51-13)CDL基盤920Cは、登録APIを介して、水平チェーンの登録用JSONフォーマットを受け付ける。CDL基盤920Cは、新たなデータIDを生成し、受け付けた登録用JSONフォーマットに設定する。CDL基盤920Cは、水平チェーンの登録用JSONフォーマットのうち、グローバルなブロックに関するハッシュ値と、ローカルなブロックに関するハッシュ値とを算出し、グローバルなブロックに設定する。
【0412】
その後、CDL基盤920Cは、水平チェーンの登録用JSONフォーマットを、リネージュに追加する。このように、CDL基盤920Cは、水平チェーンの異なるブロックが、垂直チェーンを共用可能にすることができる。CDL基盤920Cは、生成したデータIDを含む応答を、CDL基盤制御部910Cに送信する。
【0413】
(51-14)CDL基盤制御部910Cは、データIDを含む応答を受け付けると、リネージュにおいて、合流を表現したと判定する。CDL基盤制御部910Cは、応答に含まれるデータIDを取得する。CDL基盤制御部910Cは、取得した自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む登録通知を、後段のCDL基盤制御部910D(不図示)に送信する。
【0414】
このように、情報処理システム200は、リネージュにおいて、直接的に、ブランチの合流を表現することが難しい場合であっても、疑似的に、ブランチの合流を表現することができる。このため、情報処理システム200は、CDLを柔軟に更新可能にすることができる。情報処理システム200は、B社の利用者、および、C社の利用者宛てにアラームを出力せずに、ブランチの合流を表現することができる。このため、情報処理システム200は、利用者にかかる作業負担の低減化を図ることができる。
【0415】
(複製登録処理手順)
次に、図52を用いて、CDL基盤制御部910が実行する、複製登録処理手順の一例について説明する。複製登録処理は、例えば、図7に示したCPU701と、メモリ702や記録媒体705などの記憶領域と、ネットワークI/F703とによって実現される。
【0416】
図52は、第1の具体例における複製登録処理手順の一例を示すフローチャートである。図52において、CDL基盤制御部910は、前段のCDL基盤制御部910から、登録通知を受け付ける(ステップS5201)。登録通知は、自社ID、自社製品ID、発注先ID、発注先製品ID、および、データIDを含む。
【0417】
次に、CDL基盤制御部910は、登録済みリストを参照して、登録通知のデータIDが、登録済みであるか否かを判定する(ステップS5202)。ここで、登録済みではない場合(ステップS5202:No)、CDL基盤制御部910は、ステップS5203の処理に移行する。一方で、登録済みである場合(ステップS5202:Yes)、CDL基盤制御部910は、ステップS5204の処理に移行する。
【0418】
ステップS5203では、CDL基盤制御部910は、登録通知のデータIDを、未登録リストに記録する(ステップS5203)。CDL基盤制御部910は、例えば、登録通知の自社ID、自社製品ID、データIDなどを、未登録リストに記録して管理する。そして、CDL基盤制御部910は、複製登録処理を終了する。
【0419】
ステップS5204では、CDL基盤制御部910は、登録済みリストから、登録済み製品IDの通知先組織ID、通知先製品ID、および、垂直チェーンIDを取得する(ステップS5204)。
【0420】
次に、CDL基盤制御部910は、水平チェーンのローカル部を複製し、水平チェーンの登録用JSONフォーマットを生成する(ステップS5205)。そして、CDL基盤制御部910は、水平チェーンの登録用JSONフォーマットを用いて、水平チェーンに対する登録APIを実行する(ステップS5206)。
【0421】
次に、CDL基盤制御部910は、登録APIの応答を取得し、未登録リストをクリアし、応答のデータIDを、登録済みリストに追加する(ステップS5207)。そして、CDL基盤制御部910は、自社ID、自社製品ID、発注先ID、発注先製品ID、応答のデータIDを含む登録通知を生成し、後段のCDL基盤制御部910に登録通知を送信する(ステップS5208)。その後、CDL基盤制御部910は、複製処理を終了する。
【0422】
以上説明したように、情報処理装置100によれば、複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付けることができる。情報処理装置100によれば、第1依頼を受け付けた場合、第1ブロックの複製を、複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、複数のブロックを柔軟に更新可能にすることができる。情報処理装置100は、直接的にブロックの1つ前に他ブロックを連結することが難しい場合であっても、疑似的にブロックの1つ前に他ブロックを連結することができる。
【0423】
情報処理装置100によれば、第1依頼を受け付けた場合、第1ブロックの複製を、第1ブロックの複製であることを示す複製フラグを含めて、複数のブロックに追加して第2ブロックの後ろに連結するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、第1ブロックと、第1ブロックの複製とを区別することができる。情報処理装置100は、第1ブロックと、第1ブロックの複製とを、利用者が区別可能に表示可能にすることができる。
【0424】
情報処理装置100によれば、複数のブロックの全部または一部に対する表示依頼を受け付けることができる。情報処理装置100によれば、表示依頼を受け付けた場合、複数のブロックの全部または一部を表示するにあたって、複製フラグに基づいて、第1ブロックの複製を特定することができる。情報処理装置100によれば、第1ブロックの複製を、元である第1ブロックとして表示するか、または、元である第1ブロックとの対応を判別可能に表示することができる。これにより、情報処理装置100は、第1ブロックと、第1ブロックの複製とを、利用者が直感的に区別可能に表示することができる。
【0425】
情報処理装置100によれば、第1ブロックの前に、複数のブロックに含まれる第2ブロックを連結する第1依頼を受け付けることができる。これにより、情報処理装置100は、既存の第1ブロックの前に、既存の第2ブロックを連結することができる。
【0426】
情報処理装置100によれば、第2ブロックを生成し、生成した第2ブロックを、複数のブロックに追加するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、既存の第1ブロックの前に、新規の第2ブロックを連結することができる。
【0427】
情報処理装置100によれば、複数のブロックのうち、自装置が管理する第3ブロックを無効化する第2依頼を受け付けることができる。情報処理装置100によれば、第2依頼を受け付けた場合、第3ブロックを無効化することを示す第4ブロックを、複数のブロックに追加して第3ブロックの後ろに連結するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、直接的にブロックを削除することが難しい場合であっても、ブロックを無効化したことを表現することができる。
【0428】
情報処理装置100によれば、複数のブロックの全部または一部に対する表示依頼を受け付けることができる。情報処理装置100によれば、表示依頼を受け付けた場合、複数のブロックの全部または一部を表示するにあたって、第4ブロックに基づいて、第3ブロックを特定することができる。情報処理装置100によれば、第3ブロックを、表示対象から除外するか、または、無効化に対応する表示態様で表示することができる。これにより、情報処理装置100は、ブロックを無効化した状態を、利用者が直感的に把握可能にすることができる。
【0429】
情報処理装置100によれば、複数のブロックを、ハッシュチェーンで実現することができる。これにより、情報処理装置100は、複数のブロックの耐改竄性を確保することができる。
【0430】
情報処理装置100によれば、第1ブロックに接続された、第1ブロックのデータに関連する関連データを含む付随ブロックの複製を、第1ブロックの複製に接続するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、関連データを適切に複製することができる。
【0431】
情報処理装置100によれば、第1ブロックに接続された、第1ブロックのデータに関連する関連データの識別子を含む付随ブロックの複製を、第1ブロックの複製に接続するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、関連データを記憶するためのメモリ使用量の増大化を抑制することができる。
【0432】
情報処理装置100によれば、それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付けることができる。情報処理装置100によれば、依頼を受け付けた場合、第1ブロックを無効化することを示す第2ブロックを、複数のブロックに追加して第1ブロックの後ろに連結するよう、複数のブロックを制御することができる。これにより、情報処理装置100は、複数のブロックを柔軟に更新可能にすることができる。情報処理装置100は、ブロックを直接削除することが難しい場合であっても、ブロックを無効化したことを表現可能にすることができる。
【0433】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0434】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0435】
(付記1)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0436】
(付記2)前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記第1ブロックの複製であることを示す複製フラグを含めて、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、ことを特徴とする付記1に記載の情報処理プログラム。
【0437】
(付記3)前記複数のブロックの全部または一部に対する表示依頼を受け付け、
前記表示依頼を受け付けた場合、前記複数のブロックの全部または一部を表示するにあたって、前記複製フラグに基づいて、前記第1ブロックの複製を特定し、元である前記第1ブロックとして表示するか、または、元である前記第1ブロックとの対応を判別可能に表示する、
処理を前記コンピュータに実行させることを特徴とする付記2に記載の情報処理プログラム。
【0438】
(付記4)前記第2ブロックは、前記複数のブロックに含まれるブロックである、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0439】
(付記5)前記第2ブロックを生成し、生成した前記第2ブロックを、前記複数のブロックに追加するよう、前記複数のブロックを制御する、
処理を前記コンピュータに実行させることを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0440】
(付記6)前記複数のブロックのうち、自装置が管理する第3ブロックを無効化する第2依頼を受け付け、
前記第2依頼を受け付けた場合、前記第3ブロックを無効化することを示す第4ブロックを、前記複数のブロックに追加して前記第3ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理を前記コンピュータに実行させることを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0441】
(付記7)前記複数のブロックの全部または一部に対する表示依頼を受け付け、
前記表示依頼を受け付けた場合、前記複数のブロックの全部または一部を表示するにあたって、前記第4ブロックに基づいて、前記第3ブロックを特定し、表示対象から除外するか、または、無効化に対応する表示態様で表示する、
処理を前記コンピュータに実行させることを特徴とする付記6に記載の情報処理プログラム。
【0442】
(付記8)前記複数のブロックは、ハッシュチェーンである、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0443】
(付記9)前記それぞれのブロックは、当該ブロックのデータに関連する関連データを含む付随ブロックが接続されており、
前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結すると共に、前記第1ブロックに接続された付随ブロックの複製を、前記第1ブロックの複製に接続するよう、前記複数のブロックを制御する、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0444】
(付記10)前記それぞれのブロックは、当該ブロックのデータに関連する関連データの識別子を含む付随ブロックが接続されており、
前記制御する処理は、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結すると共に、前記第1ブロックに接続された付随ブロックの複製を、前記第1ブロックの複製に接続するよう、前記複数のブロックを制御する、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0445】
(付記11)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0446】
(付記12)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックの前に、第2ブロックを新たに連結する第1依頼を受け付け、
前記第1依頼を受け付けた場合、前記第1ブロックの複製を、前記複数のブロックに追加して前記第2ブロックの後ろに連結するよう、前記複数のブロックを制御する、
制御部を有することを特徴とする情報処理装置。
【0447】
(付記13)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0448】
(付記14)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0449】
(付記15)それぞれのブロックに当該ブロックの前後に連結する他ブロックの識別子を含むよう形成される複数のブロックのうち、自装置が管理する第1ブロックを無効化する依頼を受け付け、
前記依頼を受け付けた場合、前記第1ブロックを無効化することを示す第2ブロックを、前記複数のブロックに追加して前記第1ブロックの後ろに連結するよう、前記複数のブロックを制御する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0450】
100 情報処理装置
101~103,1000,1010,1100,1111 符号
200 情報処理システム
201 リネージュ管理装置
202 クライアント装置
210 ネットワーク
300 CDL
301,302,2101,2102,2701,4200,4201,4300,4301 ブロック
303 データID
304,305 ID
306,307 ハッシュ値
501 ヘッダ
502 イベント
503 タグ
504 検証
505 デジタル署名
700 バス
701 CPU
702 メモリ
703 ネットワークI/F
704 記録媒体I/F
705 記録媒体
800 記憶部
801 取得部
802 更新部
803 出力部
900 上位アプリケーション
901 GUI
910 CDL基盤制御部
911 通知検知部
912 リネージュ制御部
913 リネージュ可視化部
914 登録通知生成部
920 CDL基盤
921 履歴登録部
922 履歴検索部
923 リネージュ取得部
924 ポリシー設定部
1600,1800,2300,2400,3100,3200 リネージュ
1700,1900,2500 リネージュ管理テーブル
2100,2700 登録用JSONフォーマット
3101,3201~3204,3300B,3300C 無効化管理テーブル
3600,4800 通知
3700,4900 未登録リスト
3800,5000 リスト
4000 水平チェーン
4100 垂直チェーン
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52