(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-01
(45)【発行日】2024-10-09
(54)【発明の名称】データ処理プログラム、情報処理システム及びデータ処理方法
(51)【国際特許分類】
G06F 9/48 20060101AFI20241002BHJP
【FI】
G06F9/48 300H
G06F9/48 370
(21)【出願番号】P 2021055737
(22)【出願日】2021-03-29
【審査請求日】2023-12-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】板倉 宏太
(72)【発明者】
【氏名】山岡 久俊
(72)【発明者】
【氏名】岡林 美和
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2018-133105(JP,A)
【文献】特開2014-182764(JP,A)
【文献】特開2017-21488(JP,A)
【文献】特開2017-97660(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
B60R 16/02
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項2】
請求項1において、
前記第1データに対する前記第1タスクを再実行する処理では、前記第1データに対する前記第1タスクの再実行を、前記実行を中止する処理において前記第1データに対する前記第1タスクの実行が中止される前に完了した処理を含めて行う、
ことを特徴とするデータ処理プログラム。
【請求項3】
請求項1において、
前記第1データに対する前記第1タスクを再実行する処理では、前記第1データに対する前記第1処理が実行される場合、前記他の情報処理システムに対するアクセスを行うことなく、前記他の情報処理システムから受信済の前記アクセス結果を用いることによって前記第1タスクに含まれる他の処理の実行を行う、
ことを特徴とするデータ処理プログラム。
【請求項4】
請求項1において、さらに、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記第2データが特定種類のデータである場合、前記第1タスクの実行対象となるデータを送信する他のタスクの全てから前記特定種類のデータを受信しているか否かを判定する、処理をコンピュータに実行させ、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記他のタスクの全てから前記特定種類のデータを受信していると判定した場合、前記第2データに対する前記第1タスクの実行を開始する、
ことを特徴とするデータ処理プログラム。
【請求項5】
請求項4において、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記他のタスクの全てから前記特定種類のデータを受信していないと判定した場合、前記他のタスクの全てから前記特定種類のデータを受信するまで、前記第2データに対する前記第1タスクの実行の開始を待機する、
ことを特徴とするデータ処理プログラム。
【請求項6】
互いにアクセス可能な複数の情報処理装置を有する情報処理システムであって、
前記複数の情報処理装置のそれぞれは、
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
ことを特徴とする情報処理システム。
【請求項7】
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
処理をコンピュータが実行することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理プログラム、情報処理システム及びデータ処理方法に関する。
【背景技術】
【0002】
近年、複数のセンサ等から受信したIoT(Internet of Thing)データに対して、複数のタスク(タスクプログラム)を連鎖的に実行して出力するストリーム処理システムが用いられている。
【0003】
このようなストリーム処理システムでは、必要に応じて、他の情報処理システム(以下、外部システムとも呼ぶ)に対するアクセス(以下、外部アクセスとも呼ぶ)を行い、他の情報処理システムにおける処理結果の取得を行う。そして、ストリーム処理システムでは、例えば、取得した処理結果を用いることによって、データに対するタスクの実行を行う(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、例えば、あるデータに対するタスクの実行に応じて他の情報処理システムへのアクセスが行われる場合、ストリーム処理システムでは、他の情報処理システムでの処理結果を用いた処理の実行が完了するまで、以降のデータに対するタスクの実行が行われない。
【0006】
そのため、ストリーム処理システムでは、他の情報処理システムへのアクセスを要するデータに対するタスクの実行だけでなく、他の情報処理システムへのアクセスを要しないデータに対するタスクの実行についても処理速度が低下する場合がある。
【0007】
そこで、一つの側面では、本発明は、他の情報処理システムへのアクセスを行わないデータに対するタスクの処理速度の低下を抑制することを可能とするデータ処理プログラム、情報処理システム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
実施の形態の一態様では、イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、処理をコンピュータに実行させる。
【発明の効果】
【0009】
一つの側面によれば、他の情報処理システムへのアクセスを行わないデータに対するタスクの処理速度の低下を抑制することを可能とする。
【図面の簡単な説明】
【0010】
【
図1】
図1は、情報処理システム10の構成について説明する図である。
【
図2】
図2は、分散チェックポイント方式について説明する図である。
【
図3】
図3は、分散チェックポイント方式について説明する図である。
【
図4】
図4は、分散チェックポイント方式について説明する図である。
【
図5】
図5は、分散チェックポイント方式について説明する図である。
【
図6】
図6は、分散チェックポイント方式について説明する図である。
【
図7】
図7は、分散チェックポイント方式について説明する図である。
【
図8】
図8は、情報処理装置1のハードウエア構成を説明する図である。
【
図9】
図9は、情報処理装置1の機能のブロック図である。
【
図10】
図10は、第1の実施の形態におけるストリームデータ処理の概略を説明するフローチャート図である。
【
図11】
図11は、第1の実施の形態におけるストリームデータ処理の概略を説明する図である。
【
図12】
図12は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図13】
図13は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図14】
図14は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図15】
図15は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図16】
図16は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図17】
図17は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図18】
図18は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。
【
図19】
図19は、先行データ管理情報134の具体例について説明する図である。
【
図20】
図20は、タスク管理情報131の具体例について説明する図である。
【
図21】
図21は、タスク間データDT11の具体例について説明する図である。
【
図22】
図22は、待機データ管理情報133の具体例について説明する図である。
【
図23】
図23は、レスポンスデータDT14の具体例について説明する図である。
【
図24】
図24は、リクエスト管理情報132の具体例について説明する図である。
【
図25】
図25は、リクエスト管理情報132の具体例について説明する図である。
【
図26】
図26は、タスク完了データDT12の具体例について説明する図である。
【
図27】
図27は、リクエストデータDT13の具体例について説明する図である。
【発明を実施するための形態】
【0011】
[第1の実施の形態における情報処理システムの構成]
初めに、情報処理システム10の構成について説明を行う。
図1は、情報処理システム10の構成について説明する図である。
【0012】
情報処理システム10は、例えば、複数のセンサ(図示せず)から送信されたセンサデータDTを蓄積する記憶装置2a及び記憶装置2bと、記憶装置2a及び記憶装置2bに蓄積された各センサデータDTに対するタスクを実行する1以上の物理マシンである情報処理装置1とを有する。センサデータDTは、例えば、工場内の温度変化や道路の渋滞状況等のイベントに関するデータである。以下、記憶装置2a及び記憶装置2bを総称して単に記憶装置2とも呼ぶ。
【0013】
具体的に、情報処理装置1は、例えば、
図1に示すように、各センサデータDTに対してタスクT1とタスクT2とタスクT3とを連鎖的に実行する処理(以下、ストリーム処理とも呼ぶ)を行う。
【0014】
さらに具体的に、情報処理装置1は、例えば、
図1に示すように、記憶装置2aに蓄積されたセンサデータDTに対してタスクT1の実行を行うとともに、記憶装置2bに蓄積されたセンサデータDTに対してタスクT2の実行を行う。そして、情報処理装置1は、例えば、タスクT1が実行されたセンサデータDT(タスクT1の実行結果)と、タスクT2が実行されたセンサデータDT(タスクT2の実行結果)とに対してタスクT3の実行を行う。その後、情報処理装置1は、例えば、タスクT3が実行されたセンサデータDT(タスクT3の実行結果)を予め指定された操作端末(図示せず)等に出力する。
【0015】
なお、タスクT1、タスクT2及びタスクT3を含むストリーム処理は、例えば、複数の情報処理装置1において並行して行われるものであってよい。すなわち、複数の情報処理装置1では、例えば、各センサデータDTに対してタスクT1とタスクT2とタスクT3とを並列に実行する分散ストリーム処理が行われるものであってよい。また、タスクT1、タスクT2及びタスクT3のそれぞれは、例えば、複数の情報処理装置1が分担して実行するものであってもよい。
【0016】
また、情報処理装置1は、例えば、
図1に示すように、タスクT1の実行結果等の内部状態(以下、タスクT1の内部状態とも呼ぶ)を記憶する記憶装置T1aと、タスクT2の実行結果等の内部状態(以下、タスクT2の内部状態とも呼ぶ)を記憶する記憶装置T2aと、タスクT3の実行結果等の内部状態(以下、タスクT3の内部状態とも呼ぶ)を記憶する記憶装置T3aとを有する。
【0017】
ここで、情報処理システム10は、耐障害性を確保することを目的として、例えば、各タスクの内部状態についての定期的な保存を行う。具体的に、情報処理システム10は、例えば、各タスクの内部状態をタスクごとに保存する分散チェックポイント方式に従うことによって、各タスクの内部状態についての保存を行う。そして、情報処理システム10は、例えば、ネットワークの切断等の障害が発生した場合、保存済の内部状態を用いることによって障害発生前の状態の復元を行い、復元された状態から各タスクの実行を再度行う。以下、分散チェックポイント方式について説明を行う。
【0018】
[分散チェックポイント]
図2から
図7は、分散チェックポイント方式について説明する図である。
【0019】
情報処理装置1では、各タスクに対して内部状態の保存を行うタイミングを通知するために、タスク間においてバリアマーカ(以下、特定種類のデータとも呼ぶ)の送受信が行われる。具体的に、各タスクは、バリアマーカを受信したことに応じて各タスクにおける内部状態の保存を行う。
【0020】
さらに具体的に、情報処理装置1は、例えば、
図2に示すように、センサデータDTとともにバリアマーカBM1及びバリアマーカBM2の送受信を定期的に行う。バリアマーカBM1は、タスクT1を経由してタスクT3に送信されるバリアマーカであり、バリアマーカBM2は、タスクT2を経由したタスクT3に送信されるバリアマーカである。
【0021】
そして、例えば、
図3に示すように、バリアマーカBM2がタスクT2に到達した場合、タスクT2は、バリアマーカBM2の受信時点において記憶装置T2aに記憶されていた内部状態を記憶装置T0に保存する。
【0022】
続いて、例えば、
図4に示すように、バリアマーカBM2がタスクT3に到達した場合、タスクT3は、バリアマーカBM1が到達するまで待機する。
【0023】
すなわち、タスクT3は、タスクT1が実行されたセンサデータDT(タスクT1の実行結果)及びタスクT2が実行されたセンサデータDT(タスクT2の実行結果)に対して実行するタスクである。そのため、タスクT3は、タスクT3に対するセンサデータDTの送信元の全て(タスクT1及びタスクT2)からバリアマーカが到達するまで待機する。
【0024】
その後、例えば、バリアマーカBM1がタスクT1に到達した場合、タスクT1は、バリアマーカBM1の受信時点において記憶装置T1aに記憶されていた内部状態を記憶装置T0に保存する。
【0025】
そして、例えば、
図5に示すように、バリアマーカBM1がタスクT3に到達した場合、タスクT3は、タスクT3に対するセンサデータDTの送信元の全てからバリアマーカが到達したものと判定し、
図6に示すように、バリアマーカBM1の受信時点において記憶装置T3aに記憶されていた内部状態を記憶装置T0に保存する。
【0026】
これにより、各タスクでは、内部状態の保存を行うまでに処理を行うセンサデータDTをタスク間において揃えることが可能になる。そのため、情報処理装置1では、各タスクの内部状態を用いて過去の状態(障害発生前の状態)の復元を行った場合であっても、復元前後において同じセンサデータDTを再度実行するタスクの発生を防止することが可能になり、復元前後における不整合の発生を防止することが可能になる。
【0027】
ここで、例えば、
図7に示すように、バリアマーカBM1の前のセンサデータDTaに対するタスクT1の実行に伴って、外部システム(図示せず)に対するアクセスが発生する場合、タスクT1は、外部システムにおけるアクセス結果(処理結果)を受信するまで待機する必要がある。そのため、タスクT1は、外部システムからアクセス結果を受信し、さらに、受信したアクセス結果を用いた処理が完了するまでの間、センサデータDTa以降のデータについての処理を行うことができない。
【0028】
したがって、例えば、外部システムに対するアクセスに時間を要する場合、タスクT3では、バリアマーカBM1の待ち時間が長くなる。そのため、タスクT3では、この場合、外部システムへのアクセスを要するセンサデータDT(例えば、センサデータDTa)に対する処理速度だけでなく、外部システムへのアクセスを要しないセンサデータDT(例えば、バリアマーカBM2の後のセンサデータDTb)に対する処理速度についても低下する。
【0029】
そこで、本実施の形態における情報処理装置1は、例えば、イベントに関する情報を含むセンサデータDT(以下、第1センサデータDTまたは第1データDTとも呼ぶ)を受信したことに応じて、受信した第1センサデータDTに対するタスク(以下、第1タスクとも呼ぶ)の実行を開始する。そして、情報処理装置1は、例えば、第1センサデータDTに対する第1タスクの実行に伴って外部システムに対するアクセスを要する処理(以下、第1処理とも呼ぶ)が実行される場合、第1センサデータDTに対する第1タスクの実行を中止するとともに、第1処理に伴う外部システムに対するアクセスを行う。
【0030】
続いて、情報処理装置1は、例えば、イベントに関する情報を含むセンサデータDT(以下、第2センサデータDTまたは第2データDTとも呼ぶ)を受信したことに応じて、受信した第2センサデータDTに対する第1タスクの実行を開始する。そして、情報処理装置1は、例えば、第2センサデータDTに対する第1タスクの実行に伴って第1処理が実行されない場合、第2センサデータDTに対する第1タスクの実行を継続する。
【0031】
その後、情報処理装置1は、例えば、外部システムからアクセス結果を受信した場合、第2センサデータDTに対する第1タスクの実行完了後において、第1センサデータDTに対する第1タスクを再実行する。
【0032】
すなわち、情報処理装置1は、例えば、第1センサデータDTに対する第1タスクの実行に伴って外部システムへのアクセスが発生した場合、第1センサデータDTに対する第1タスクの実行を中止するとともに、発生した外部システムへのアクセスを第1センサデータDTに対する第1タスクの実行と非同期に行う。そして、情報処理装置1は、外部システムへのアクセス結果を待つことなく、第1センサデータDTの後に発生した各センサデータDT(第2センサデータDTを含む)に対する第1タスクの実行を順次行う。その後、情報処理装置1は、外部システムからアクセス結果を受信した場合、受信したアクセス結果を用いることによってセンサデータDTに対する第1タスクを最初から再実行する。
【0033】
これにより、情報処理装置1は、例えば、外部システムへのアクセスに伴って発生するバリアマーカの待ち合わせ時間を抑制することが可能になる。そのため、情報処理装置1は、外部システムへのアクセスを行わないセンサデータDTに対するタスクの処理速度の低下を抑制することが可能になる。
【0034】
具体的に、情報処理装置1は、例えば、外部システムへのアクセスを伴うセンサデータDT(例えば、
図7に示すセンサデータDTa)の後のセンサデータDTについての処理速度の低下を抑制することが可能になる。また、情報処理装置1は、外部システムへのアクセスを伴うセンサデータDTの後のバリアマーカ(例えば、
図7に示すバリアマーカBM1)の処理速度の低下を抑制することで、そのバリアマーカを待ち合わせる他のバリアマーカ(例えば、
図7に示すバリアマーカBM2)の後のセンサデータDT(例えば、
図7に示すセンサデータDTb)についての処理速度の低下を抑制することが可能になる。
【0035】
なお、以下、各タスクでの処理は、ランダム性を含まないものとして説明を行う。すなわち、各タスクでは、同一の状態において同一のセンサデータDTを受信した場合、同一の処理が行われて同一の実行結果が出力されるものとして説明を行う。
【0036】
[情報処理システムのハードウエア構成]
次に、情報処理システム10のハードウエア構成について説明する。
図8は、情報処理装置1のハードウエア構成を説明する図である。
【0037】
情報処理装置1は、
図8に示すように、プロセッサであるCPU101と、メモリ102と、I/Oインタフェース103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
【0038】
記憶媒体104は、例えば、センサデータDTに対して複数のタスクを順次実行する処理(以下、ストリームデータ処理またはデータ処理とも呼ぶ)を行うためのプログラム110を記憶するプログラム格納領域(図示せず)を有する。また、記憶媒体104は、例えば、ストリームデータ処理を行う際に用いられる情報を記憶する情報格納領域130を有する。なお、記憶媒体104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
【0039】
CPU101は、記憶媒体104からメモリ102にロードされたプログラム110を実行してストリームデータ処理を行う。
【0040】
I/Oインタフェース103は、例えば、ネットワークインターフェースカード等のインタフェース機器であり、インターネット等のネットワークNWを介して外部システム20とアクセスが可能である。外部システム20は、例えば、情報処理装置1が各タスクの内部状態として記憶していない各種データを管理するデータベースシステムであってよい。
【0041】
[情報処理システムの機能]
次に、情報処理システム10の機能について説明を行う。
図9は、情報処理装置1の機能のブロック図である。
【0042】
情報処理装置1は、
図9に示すように、例えば、CPU101やメモリ102等のハードウエアとプログラム110とが有機的に協働することにより、データ受信部111と、順序制御部112と、タスク実行部113と、アクセス検知部114と、外部指示部115と、外部受信部116と、データ送信部117とを含む各種機能を実現する。
【0043】
また、情報処理装置1は、例えば、タスク管理情報131と、リクエスト管理情報132と、待機データ管理情報133と、先行データ管理情報134とを情報格納領域130に記憶する。
【0044】
以下、データ受信部111、順序制御部112、タスク実行部113、アクセス検知部114、外部指示部115、外部受信部116及びデータ送信部117の全てがタスクごとに存在するものとして説明を行う。なお、情報処理装置1では、タスク実行部113及びアクセス検知部114がタスクごとに存在し、データ受信部111、順序制御部112、外部指示部115、外部受信部116及びデータ送信部117が1つのみ存在するものであってもよい。
【0045】
データ受信部111は、例えば、記憶装置2に蓄積されたセンサデータDTを順次取得する。また、データ受信部111は、例えば、前段タスク(同一の情報処理装置1または他の情報処理装置1において動作する前段タスク)から送信されたセンサデータDTを受信する。
【0046】
順序制御部112は、例えば、データ受信部111が受信したセンサデータDTの処理順序を制御する。
【0047】
タスク実行部113は、例えば、データ受信部111が受信したセンサデータDTに対するタスクを実行する。
【0048】
アクセス検知部114は、例えば、タスク実行部113によるタスクの実行に伴って行われる外部システム20に対するアクセスを検知する。
【0049】
外部指示部115は、例えば、アクセス検知部114が外部システム20に対するアクセスの発生を検知した場合、タスク実行部113に代わって外部システム20に対するアクセスを行う。そして、タスク実行部113は、この場合、データ受信部111が受信したセンサデータDTに対するタスク(実行中のタスク)の実行を中止する。
【0050】
外部受信部116は、例えば、外部システム20が送信したアクセス結果(外部指示部115による外部システム20へのアクセスに対するアクセス結果)を受信する。そして、タスク実行部113は、この場合、外部受信部116が受信したアクセス結果を用いることによって、データ受信部111が受信したセンサデータDTに対するタスクを最初から実行する。すなわち、タスク実行部113は、データ受信部111が受信したセンサデータDTに対するタスクを、中止される前に実行が完了した処理を含めて再度実行する。
【0051】
データ送信部117は、例えば、タスク実行部113による処理が行われたセンサデータDT(タスク実行部113による実行結果)を後段タスク(同一の情報処理装置1または他の情報処理装置1において動作する後段タスク)に送信する。また、データ送信部117は、例えば、タスク実行部113による処理が行われたセンサデータDTを最終結果として予め指定された操作端末(図示せず)に出力する。
【0052】
なお、タスク管理情報131、リクエスト管理情報132、待機データ管理情報133及び先行データ管理情報134の説明については後述する。
【0053】
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明する。
図10は、第1の実施の形態におけるストリームデータ処理の概略を説明するフローチャート図である。また、
図11は、第1の実施の形態におけるストリームデータ処理の概略を説明する図である。以下、情報処理装置1において動作する1のタスクにおいて行われる処理について説明を行う。
【0054】
情報処理装置1は、
図10に示すように、例えば、第1センサデータDTを受信するまで待機する(S11のNO)。
【0055】
そして、第1センサデータDTを受信した場合(S11のYES)、情報処理装置1は、第1センサデータDTに対する第1タスクの実行を開始する(S12)。
【0056】
続いて、情報処理装置1は、第1センサデータDTに対する第1タスクの実行に伴って外部システム20に対するアクセスを要する第1処理が実行される場合、第1センサデータDTに対する第1タスクの実行を中止するとともに、第1処理に伴う外部システム20に対するアクセスを行う(S13)。
【0057】
その後、情報処理装置1は、例えば、第2センサデータDTを受信するまで待機する(S14のNO)。
【0058】
そして、第2センサデータDTを受信した場合(S14のYES)、情報処理装置1は、第2センサデータDTに対する第1タスクの実行を開始する(S15)。
【0059】
続いて、情報処理装置1は、第2センサデータDTに対する第1タスクの実行に伴って外部システム20に対するアクセスを要する第1処理が実行されない場合、第2センサデータDTに対する第1タスクの実行を継続する(S16)。すなわち、情報処理装置1は、この場合、S13の処理と異なり、第2センサデータDTに対する第1タスクの実行を中止しない。
【0060】
さらに、情報処理装置1は、S13の処理で行った外部システム20へのアクセスに対するアクセス結果を受信するまで待機する(S17のNO)。
【0061】
そして、S13の処理で行った外部システム20へのアクセスに対するアクセス結果を受信した場合(S17のYES)、情報処理装置1は、第2センサデータDTに対する第1タスクの実行完了後において、第1センサデータDTに対する第1タスクを再実行する(S18)。
【0062】
これにより、情報処理装置1は、例えば、外部システム20へのアクセスに伴って発生するバリアマーカの待ち合わせ時間を抑制することが可能になる。そのため、情報処理装置1は、外部システム20へのアクセスを行わないセンサデータDTに対するタスクの処理速度の低下を抑制することが可能になる。
【0063】
具体的に、例えば、第1センサデータDT(以下、第1センサデータDT1とも呼ぶ)を受信した場合、タスク実行部113は、
図11の左から1番目の状態のように、第1センサデータDT1に対する第1タスクを実行する。
【0064】
そして、第1タスクの実行に伴って外部システム20へのアクセスが行われることを検知した場合、タスク実行部113は、
図11の左から2番目の状態のように、第1センサデータDT1に対する第1タスクの実行を中止する。また、外部指示部115は、この場合、タスク実行部113に代わって外部システム20に対するアクセスを行う。
【0065】
すなわち、外部システム20へのアクセスが発生した場合、情報処理装置1では、各センサデータDTについてのストリーム処理を継続的に行うタスク実行部113に代わって、外部システム20へのアクセスを外部指示部115に実行させる。
【0066】
続いて、例えば、第2センサデータDT(以下、第2センサデータDT2とも呼ぶ)を受信した場合、タスク実行部113は、
図11の左から3番目の状態のように、第2センサデータDT2に対する第1タスクを実行する。
【0067】
すなわち、情報処理装置1は、この場合、第1センサデータDT1についての第1タスクの実行の完了を待つことなく、第2センサデータDT2(第1センサデータDT1の後に発生した第2センサデータDT2)に対する第1タスクの実行を開始する。
【0068】
その後、例えば、第2センサデータDT2についての第1タスクの実行が終了した際に、外部システム20から第1センサデータDT1についてのアクセス結果を受信している場合、タスク実行部113は、
図11の左から4番目の状態のように、外部システム20から受信したアクセス結果を用いることによって、第1センサデータDT1に対する第1タスクを再実行する。
【0069】
これにより、情報処理装置1は、外部システム20に対するアクセスの発生による処理遅延がタスク実行部113における処理(ストリーム処理)に与える影響を抑えることが可能になる。そのため、情報処理装置1は、外部システム20へのアクセスを行わないセンサデータDT(例えば、第2センサデータDT2)についての処理速度の低下を抑制することが可能になる。
【0070】
なお、上記の例では、第1センサデータDT1の次のセンサデータDT(例えば、第2センサデータDT2)が第1センサデータDT1についてのアクセス結果よりも前に到着した場合について説明を行ったが、これに限られない。すなわち、例えば、第1センサデータDT1についてのアクセス結果を、第1センサデータDT1の次のセンサデータDTの到着よりも前に受信した場合、情報処理装置1は、第1センサデータDT1の次のセンサデータDTの到着を待つことなく、第1センサデータDT1に対する第1タスクの再実行を開始するものであってよい。
【0071】
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明を行う。
図12から
図18は、第1の実施の形態におけるストリームデータ処理の詳細を説明するフローチャート図である。また、
図19から
図27は、第1の実施の形態におけるストリームデータ処理の詳細を説明する図である。以下、複数の情報処理装置1において動作するタスクの1つにおいて行われる処理について説明を行う。
【0072】
データ受信部111は、
図12に示すように、データを受信するまで待機する(S21のNO)。
【0073】
具体的に、データ受信部111は、例えば、前段タスクから送信されたセンサデータDT(以下、タスク間データDT11とも呼ぶ)を受信するまで待機する。また、データ受信部111は、例えば、前段タスクからセンサデータDTの送信が行われないことを示すデータ(以下、タスク完了データDT12とも呼ぶ)を受信するまで待機する。さらに、データ受信部111は、例えば、外部システム20から送信されるアクセス結果(以下、レスポンスデータDT14とも呼ぶ)を受信するまで待機する。
【0074】
そして、データ受信部111がデータを受信した場合(S21のYES)、順序制御部112は、S21の処理で受信したデータがタスク間データDT11であるか否かを判定する(S22)。
【0075】
その結果、S21の処理で受信したデータがタスク間データDT11であると判定した場合(S22のYES)、順序制御部112は、S21の処理で受信したタスク間データDT11が先行データであるか否かを判定する(S23)。先行データは、外部システム20に対するアクセスが発生したことによってタスクの実行が中止されたタスク間データDT11である。すなわち、先行データは、外部システム20に対するアクセスが発生したために、後に発生した他のタスク間データDT11よりも後にタスクの実行が完了したタスク間データDT11であり、後段タスクが実行結果の到着を待っているタスク間データDT11である。
【0076】
具体的に、順序制御部112は、例えば、情報格納領域130に記憶した先行データ管理情報134を参照し、S21の処理で受信したタスク間データDT11に対応する情報が存在しているか否かについての判定を行う。先行データ管理情報134は、各タスクにおいて前段タスクからの到着を待っている先行データを管理する情報である。その結果、S21の処理で受信したタスク間データDT11に対応する情報が存在していると判定した場合、順序制御部112は、S21の処理で受信したタスク間データDT11が先行データであると判定する。
【0077】
そして、S21の処理で受信したタスク間データDT11が先行データであると判定した場合(S24のYES)、順序制御部112は、情報格納領域130に記憶した先行データ管理情報134を参照し、S21の処理で受信したタスク間データDT11に対応する情報を削除する(S25)。以下、先行データ管理情報134の具体例について説明を行う。
【0078】
[先行データ管理情報の具体例]
図19は、先行データ管理情報134の具体例について説明する図である。
【0079】
図19に示す先行データ管理情報134は、各タスクを識別する「タスクID」と、先行データである各センサデータDTを識別する「データID」と、各センサデータDTのセンサにおける発生時刻を示す「タイムスタンプ」とを有する。なお、以下、「タスクID」が「#1」、「#2」、「#3」、「#4」及び「#5」である各タスクの名称をタスク#1、タスク#2、タスク#3、タスク#4及びタスク#5と呼ぶ。
【0080】
具体的に、
図19に示す先行データ管理情報134において、1行目の情報には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456780」が設定されている。
【0081】
また、
図19に示す先行データ管理情報134において、2行目の情報には、「タスクID」として「#3」が設定され、「データID」として「345678」が設定され、「タイムスタンプ」として「123456830」が設定されている。
【0082】
すなわち、
図19に示す先行データ管理情報134は、タスク#2において「データID」が「234567」である先行データの受信を待っており、タスク#3において「データID」が「345678」である先行データの受信を待っていることを示している。
【0083】
図12に戻り、S21の処理で受信したタスク間データDT11が先行データでないと判定した場合(S24のNO)、順序制御部112は、S25の処理を行わない。
【0084】
そして、順序制御部112は、例えば、情報格納領域130に記憶したタスク管理情報131を参照し、S21の処理で受信したタスク間データDT11の実行を行うタスク(すなわち、自タスク)が順序制御を行うタスクであるかを判定する(S26)。以下、タスク管理情報131の具体例について説明を行う。
【0085】
[タスク管理情報の具体例]
図20は、タスク管理情報131の具体例について説明する図である。
【0086】
図20に示すタスク管理情報131は、各タスクの名称が設定される「タスク名」と、各タスクを識別する「タスクID」と、各タスクにセンサデータDTを送信する送信元タスク(前段タスク)が設定される「送信元タスク」と、各タスクがセンサデータDTを送信する送信先タスク(後段タスク)が設定される「送信先タスク」とを有する。また、
図20に示すタスク管理情報131は、センサデータDTの処理順序についての制御(以下、順序制御とも呼ぶ)が各タスクにおいて行われるか否かを示す「順序制御」と、各タスクにおける処理内容が設定される「処理内容」とを有する。「順序制御」には、センサデータDTの順序制御が行われることを示す「あり」、または、センサデータDTの順序制御が行われないことを示す「なし」が設定される。
【0087】
具体的に、
図20に示すタスク管理情報131において、1行目には、「タスク名」として「タスクT11」が設定され、「タスクID」として「#1」が設定され、「送信元タスクID」として情報が設定されていないことを示す「-」が設定され、「送信先タスクID」として「#3」が設定され、「順序制御」として「あり」が設定されている。
【0088】
また、
図20に示すタスク管理情報131において、2行目には、「タスク名」として「タスクT12」が設定され、「タスクID」として「#2」が設定され、「送信元タスクID」として「-」が設定され、「送信先タスクID」として「#3」及び「#4」が設定され、「順序制御」として「なし」が設定されている。
【0089】
また、
図20に示すタスク管理情報131において、3行目には、「タスク名」として「タスクT13」が設定され、「タスクID」として「#3」が設定され、「送信元タスクID」として「#1」及び「#2」が設定され、「送信先タスクID」として「#5」が設定され、「順序制御」として「なし」が設定されている。
【0090】
また、
図20に示すタスク管理情報131において、4行目には、「タスク名」として「タスクT14」が設定され、「タスクID」として「#4」が設定され、「送信元タスクID」として「#2」が設定され、「送信先タスクID」として「-」が設定され、「順序制御」として「あり」が設定されている。
【0091】
さらに、
図20に示すタスク管理情報131において、5行目には、「タスク名」として「タスクT15」が設定され、「タスクID」として「#5」が設定され、「送信元タスクID」として「#3」が設定され、「送信先タスクID」として「-」が設定され、「順序制御」として「なし」が設定されている。
【0092】
すなわち、
図20に示すタスク管理情報131は、タスク#1が実行されたセンサデータDT及びタスク#2が実行されたセンサデータDTがタスク#3に送信され、タスク#3が実行されたセンサデータDTがタスク#5に送信されることを示している。また、
図20に示すタスク管理情報131は、タスク#2が実行されたセンサデータDTがタスク#4に送信されることを示している。
【0093】
図12に戻り、S21で受信したタスク間データDT11の処理を行うタスク(すなわち、自タスク)が順序制御を行うタスクであると判定した場合(S27のYES)、順序制御部112は、
図13に示すように、S21の処理で受信したデータ(タスク間データDT11)に先行データを示す情報が付加されているかを判定する(S31)。以下、タスク間データDT11の具体例について説明を行う。
【0094】
[タスク間データの具体例]
図21は、タスク間データDT11(センサデータDT)の具体例について説明する図である。具体的に、
図21は、先行データを示す情報が付加されたタスク間データDT11の具体例について説明する図である。
【0095】
図21に示すタスク間データDT11は、例えば、各センサデータDTを識別する「データID」と、各センサデータDTのセンサ(図示せず)における発生時刻を示す「タイムスタンプ」と、各センサデータDTの送信先タスクを識別する「送信先タスクID」とを有する。また、
図21に示すタスク間データDT11は、例えば、各センサデータDTの先行データを識別する「先行データID」と、各センサデータDTに含まれる各データが設定される「データ(1)」及び「データ(2)」とを有する。
【0096】
具体的に、
図21に示すタスク間データDT11は、「データID」として「123456」が設定され、「タイムスタンプ」として「123456789」が設定され、「送信先タスクID」として「#3」が設定され、「先行データID」として「234567」が設定され、「データ(1)」として「60」が設定され、「データ(2)」として「120」が設定されている。
【0097】
すなわち、
図21に示すタスク間データDT11は、タスク#2からタスク#3に送信されるセンサデータDTであり、「データID」が「234567」である先行データよりも先に送信されるセンサデータDTであることを示している。
【0098】
そのため、例えば、S21の処理において
図21に示すタスク間データDT11を受信した場合、順序制御部112は、S21の処理で受信したタスク間データDT11に先行データを示す情報(「先行データID」に対応する情報)が付加されていると判定する。
【0099】
図13に戻り、S21の処理で受信したタスク間データDT11に先行データを示す情報が付加されていると判定した場合(S32のYES)、順序制御部112は、S21の処理で受信したデータに付加されている先行データに対する情報を先行データ管理情報134に追加する(S33)。
【0100】
一方、S21の処理で受信したタスク間データDT11に先行データを示す情報が付加されていないと判定した場合(S32のNO)、順序制御部112は、情報格納領域130に記憶した先行データ管理情報134を参照し、S21の処理で受信したデータに対応する先行データが存在しているか判定する(S35)。
【0101】
その結果、S21の処理で受信したデータに対応する先行データが存在していると判定した場合(S36のYES)、または、S33の処理の後、順序制御部112は、S21の処理で受信したタスク間データDT11に対する情報を待機データ管理情報133に追加する(S34)。待機データ管理情報133は、各タスクにおける待機データを管理する情報である。待機データは、先行データよりも先に各タスクの到達したセンサデータDT、すなわち、前段タスクにおいて先行データよりも先に実行が完了したセンサデータDTである。以下、待機データ管理情報133の具体例について説明を行う。
【0102】
[待機データ管理情報の具体例]
図22は、待機データ管理情報133の具体例について説明する図である。
【0103】
図22に示す待機データ管理情報133は、各タスクを識別する「タスクID」と、待機データである各センサデータDTを識別する「データID」と、各待機データに対応する先行データを識別する「先行データID」と、各待機データのセンサにおける発生時刻を示す「タイムスタンプ」と、各待機データに含まれる各データが設定される「データ(1)」及び「データ(2)」とを有する。
【0104】
具体的に、
図22に示す待機データ管理情報133において、1行目の情報には、「タスクID」として「#2」が設定され、「データID」として「123456」が設定され、「先行データID」として「234567」が設定され、「タイムスタンプ」として「123456789」が設定され、「データ(1)」として「60」が設定され、「データ(2)」として「120」が設定されている。
【0105】
また、
図22に示す待機データ管理情報133において、2行目の情報には、「タスクID」として「#3」が設定され、「データID」として「456789」が設定され、「先行データID」として「345678」が設定され、「タイムスタンプ」として「123456835」が設定され、「データ(1)」として「70」が設定され、「データ(2)」として「120」が設定されている。
【0106】
図12に戻り、S21の処理で受信したデータがタスク間データDT11でないと判定した場合(S22のNO)、順序制御部112は、
図14に示すように、S21の処理で受信したデータがタスク完了データDT12であるか否かを判定する(S41)。
【0107】
その結果、S21の処理で受信したデータがタスク完了データDT12でないと判定した場合、すなわち、S21の処理で受信したデータがレスポンスデータDT14であると判定した場合(S41のNO)、タスク実行部113は、タスク実行処理を行う(S45)。
【0108】
なお、タスク実行部113は、S21で受信したセンサデータDTの処理を行うタスク(すなわち、自タスク)が順序制御を行うタスクでないと判定した場合(S27のNO)においても同様に、S45の処理を行う。また、タスク実行部113は、S21の処理で受信したデータに対応する先行データが存在していないと判定した場合(S36のNO)においても同様に、S45の処理を行う。以下、レスポンスデータDT14の具体例について説明を行う。
【0109】
[レスポンスデータの具体例]
図23は、レスポンスデータDT14の具体例について説明する図である。
【0110】
図23に示すレスポンスデータDT14は、例えば、各タスクを識別する「タスクID」と、各レスポンスデータDT14を用いた処理が行われるセンサデータDTを識別する「データID」と、各レスポンスデータDT14に対応する外部システム20への処理要求(以下、リクエストとも呼ぶ)が行われた時刻を識別する「タイムスタンプ」とを有する。また、
図23に示すレスポンスデータDT14は、例えば、各レスポンスデータDT14に対応するリクエストを識別する「インデックス」と、各レスポンスデータDT14に含まれるデータの内容を示す「レスポンス」とを有する。
【0111】
具体的に、
図23に示すレスポンスデータDT14には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456783」が設定され、「インデックス」として「1」が設定され、「レスポンス」として「aaa・・・」が設定されている。
【0112】
[タスク実行処理]
次に、S35の処理において行われるタスク実行処理について説明を行う。
図16から
図18は、タスク実行処理を説明するフローチャート図である。
【0113】
タスク実行部113は、
図16に示すように、S21の処理で受信したデータがレスポンスデータDT14であるか否かを判定する(S61)。
【0114】
そして、S21の処理で受信したデータがレスポンスデータDT14である場合(S61のYES)、タスク実行部113は、S21の処理で受信したデータについての情報をリクエスト管理情報132として情報格納領域130に記憶する(S62)。リクエスト管理情報132は、外部システム20に対して行われたリクエストを管理する情報である。以下、リクエスト管理情報132の具体例について説明を行う。
【0115】
[リクエスト管理情報の具体例]
図24及び
図25は、リクエスト管理情報132の具体例について説明する図である。
【0116】
図24等に示すリクエスト管理情報132は、各タスクを識別する「タスクID」と、各センサデータDTを識別する「データID」と、各センサデータDTの実行に伴う外部システム20へのリクエストが行われた時刻を識別する「タイムスタンプ」と、各センサデータDTを先行データとする他のセンサデータDTが後段タスクに送信されたか否かを示す「後続データ送信有無」とを有する。「後続データ送信有無」には、各センサデータDTを先行データとする他のセンサデータDTが後段タスクに送信されたことを示す「あり」、または、各センサデータDTを先行データとする他のセンサデータDTが後段タスクに送信されていないことを示す「なし」が設定される。
【0117】
また、
図23等に示すリクエスト管理情報132は、各センサデータDTについて行われた外部システム20に対するリクエストを識別する「インデックス」と、各リクエストの状態を示す「状態」と、各リクエストが行われた外部システム20のアドレスが設定される「リクエスト先」と、各リクエストに対するレスポンスの内容が設定される「レスポンス」とを有する。「状態」には、各リクエストに対するレスポンスが受信済でないことを示す「リクエスト中」、または、各リクエストに対するレスポンスが受信済であることを示す「受信済」が設定される。
【0118】
具体的に、
図23に示すリクエスト管理情報132において、1行目の情報には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456781」が設定され、「後続データ送信有無」として「なし」が設定されている。また、
図23に示すリクエスト管理情報132において、1行目の情報には、「インデックス」として「1」が設定され、「状態」として「受信済」が設定され、「リクエスト先」として「http://・・・」が設定され、「レスポンス」として「aaa・・・」が設定されている。
【0119】
また、
図23に示すリクエスト管理情報132において、2行目の情報には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456783」が設定され、「後続データ送信有無」として「なし」が設定されている。また、
図23に示すリクエスト管理情報132において、2行目の情報には、「インデックス」として「2」が設定され、「状態」として「リクエスト中」が設定され、「リクエスト先」として「http://・・・」が設定され、「レスポンス」として「-」が設定されている。
【0120】
すなわち、
図23に示すリクエスト管理情報132は、例えば、「データID」が「234567」であるセンサデータDTの実行に伴って、2つの異なる外部システム20に対してそれぞれリクエストの送信が行われたことを示している。また、
図23に示すリクエスト管理情報132は、1つ目の外部システム20からのレスポンスが受信済であるのに対し、2つ目の外部システム20からのレスポンスが未受信であることを示している。
【0121】
さらに、
図23に示すリクエスト管理情報132において、3行目の情報には、「タスクID」として「#3」が設定され、「データID」として「345678」が設定され、「タイムスタンプ」として「123456832」が設定され、「後続データ送信有無」として「なし」が設定されている。また、
図23に示すリクエスト管理情報132において、3行目の情報には、「インデックス」として「1」が設定され、「状態」として「リクエスト中」が設定され、「リクエスト先」として「http://・・・」が設定され、「レスポンス」として「bbb・・・」が設定されている。
【0122】
図16に戻り、S21の処理で受信したデータがレスポンスデータDT14でない場合(S61のNO)、タスク実行部113は、S62の処理を行わない。
【0123】
そして、タスク実行部113は、外部システム20へのアクセスが発生に応じて行われる割り込み処理を設定する(S63)。
【0124】
具体的に、タスク実行部113は、例えば、外部システム20へのアクセスが発生に応じて行われる割り込み処理を、情報処理装置1において動作するOS(Operating System)に設定する。
【0125】
その後、タスク実行部113は、S21の処理で受信したデータについてのタスクを実行する(S64)。
【0126】
具体的に、タスク実行部113は、S21の処理で受信したデータがタスク間データDT11である場合、S21の処理で受信したタスク間データDT11に対するタスクを実行する。また、タスク実行部113は、S21の処理で受信したデータがレスポンスデータDT14である場合、S21の処理で受信したレスポンスデータDT14を用いた処理が行われるセンサデータDTに対するタスクを実行する。
【0127】
そして、アクセス検知部114は、S64の処理におけるタスクの実行中において、S63の処理で設定した割り込み処理が行われたか否かについて判定を行う(S65)。
【0128】
その結果、S63の処理で設定した割り込み処理が行われなかったと判定した場合、すなわち、S64の処理におけるタスクの実行中において外部システム20へのリクエストが発生しなかったと判定した場合(S65のNO)、タスク実行部113は、S64の処理でタスクを実行したセンサデータDTをデータ送信キュー(図示せず)に格納する(S66)。
【0129】
続いて、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S64の処理でタスクの実行を開始したセンサデータDTよりも前に実行を開始したセンサデータDTに、外部システム20へのリクエスト中であるセンサデータDTが存在するか否かを判定する(S67)。
【0130】
具体的に、
図24で説明したリクエスト管理情報132において、2行目の情報には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456783」が設定され、「状態」として「リクエスト中」が設定されている。
【0131】
そのため、例えば、自タスクがタスク#2である場合において、「タイムスタンプ」に設定された時刻が「123456783」よりも後であるセンサデータDT(タスク間データDT11)の実行がS64の処理において開始されている場合、タスク実行部113は、S64の処理でタスクの実行を開始したセンサデータDTよりも前に実行を開始したセンサデータDTであって外部システム20へのアクセスが実行中であるセンサデータDTとして、「データID」が「234567」であるセンサデータDTが存在すると判定する。
【0132】
そして、タスク実行部113は、S64の処理でタスクの実行を開始したセンサデータDTよりも前に実行を開始したセンサデータDTに、外部システム20へのリクエスト中であるセンサデータDTが存在すると判定した場合(S69のYES)、タスク実行部113は、
図17に示すように、情報格納領域130に記憶したリクエスト管理情報132を参照し、S68の処理で存在したセンサデータDTに対応する情報を後続データ有に更新する(S71)。
【0133】
具体的に、S68の処理において「データID」が「234567」であるセンサデータDTが存在すると判定した場合、タスク実行部113は、
図25の下線部分に示すように、「データID」が「234567」であるセンサデータDTに対応する情報(1行目及び2行目の情報)の「後続データ送信有無」を「あり」に更新する。
【0134】
続いて、タスク実行部113は、S64の処理でタスクを実行したセンサデータDTに対して、S68の処理で存在したセンサデータDTに対応する情報を付加する(S72)。
【0135】
具体的に、例えば、S66の処理においてデータ送信キューに格納されたセンサデータDTのうち、S64の処理でタスクを実行したセンサデータDTにおける先行データIDとして、S68の処理で存在したセンサデータDTのデータIDを設定する。
【0136】
その後、データ送信部117は、S66の処理でデータ送信キューに格納したセンサデータDTを送信(出力)する(S73)。
【0137】
具体的に、データ送信部117は、S66の処理でデータ送信キューに格納したセンサデータDTを後段タスクに送信する。また、データ送信部117は、S66の処理でデータ送信キューに格納したセンサデータDTを最終結果として操作端末(図示せず)に出力する。
【0138】
そして、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S73の処理で送信したセンサデータDTに後続データが存在するか否かを判定する(S74)。
【0139】
具体的に、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S73の処理で送信したセンサデータDTに対応する情報の「後続データ送信有無」に「あり」が設定されているか否かを判定する。
【0140】
その結果、S73の処理で送信したセンサデータDTに後続データが存在すると判定した場合(S74のYES)、タスク実行部113は、S66の処理でデータ送信キューに格納したセンサデータDTを送信しない後続タスクが存在するかを判定する(S75)。
【0141】
具体的に、
図20に示すタスク管理情報131において、2行目には、「タスク名」として「タスクT12」が設定され、「タスクID」として「#2」が設定され、「送信先タスクID」として「#3」及び「#4」が設定されている。そのため、例えば、S73の処理で送信したセンサデータDTの送信先タスクがタスク#3である場合、タスク実行部113は、S66の処理でデータ送信キューに格納したセンサデータDTを送信しない後続タスクとしてタスク#4を特定する。
【0142】
そして、S66の処理でデータ送信キューに格納したセンサデータDTを送信しない後続タスクが存在すると判定した場合(S76のYES)、タスク実行部113は、S76の処理で存在した後続タスクにタスク完了データDT12を送信する(S77)。
【0143】
すなわち、タスク実行部113は、S66の処理でデータ送信キューに格納したセンサデータDTを送信しない後続タスクが、S64の処理でのタスクの実行結果を待ち続けることがないように、S66の処理でデータ送信キューに格納したセンサデータDTを送信しない後続タスクに対してタスク完了データDT12を送信する。以下、タスク完了データDT12の具体例について説明を行う。
【0144】
[タスク完了データの具体例]
図26は、タスク完了データDT12の具体例について説明する図である。
【0145】
図26に示すタスク完了データDT12は、例えば、各タスク完了データDT12の送信先タスクを識別する「送信先タスクID」と、各タスク完了データDT12に対応するセンサデータIDを識別する「データID」と、各タスク完了データDT12に対応するセンサデータIDのセンサ(図示せず)における発生時刻を示す「タイムスタンプ」とを有する。
【0146】
具体的に、
図26に示すタスク完了データDT12は、「送信先タスクID」として「#4」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456780」が設定されている。
【0147】
図17に戻り、タスク実行部113は、S64の処理でタスクを実行したセンサデータDTに対応するリクエスト管理情報132を削除する(S78)。
【0148】
なお、S73の処理で送信したセンサデータDTに後続データが存在しないと判定した場合(S74のNO)、及び、S64の処理でタスクを実行したデータを送信しない後続タスクが存在しないと判定した場合(S76のNO)についても同様に、タスク実行部113は、S78の処理を実行する。
【0149】
一方、S64の処理におけるタスクの実行中において、S63の処理で設定した割り込み処理が行われた場合(S65のYES)、タスク実行部113は、
図18に示すように、情報格納領域130に記憶したリクエスト管理情報132を参照し、S64の処理におけるタスクの実行中のセンサデータDTに対応するレスポンスが受信済であるか判定する(S81)。
【0150】
具体的に、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S64の処理においてタスクを実行中のセンサデータDTと「データID」に設定された情報が同一である情報の「状態」に設定された情報が全て「受信済」であるか否かを判定する。
【0151】
そして、S64の処理におけるタスクの実行中のセンサデータDTに対応するレスポンスが受信済であると判定した場合(S82のYES)、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S64の処理におけるタスクの実行中のセンサデータDTに対応するレスポンスを取得する(S83)。
【0152】
具体的に、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132を参照し、S64の処理においてタスクを実行中のセンサデータDTと「データID」に設定された情報が同一である情報の「レスポンス」に設定された情報の全てを取得する。
【0153】
その後、タスク実行部113は、S65以降の処理を再度行う。すなわち、タスク実行部113は、S83の処理で取得したレスポンスを用いることによって、S64の処理において実行を開始したタスクの実行を継続する。
【0154】
一方、S64の処理におけるタスクの実行中のデータに対応するレスポンスが受信済でないと判定した場合(S82のNO)、タスク実行部113は、S64の処理で実行を開始したタスクの実行を中止する(S84)。
【0155】
そして、タスク実行部113は、情報格納領域130に記憶したリクエスト管理情報132に対し、S65の処理で発生した割り込みに対応するリクエストについての情報を追加する(S85)。
【0156】
その後、外部指示部115は、S65の処理で発生した割り込みに対応するリクエストを行うためのリクエストデータDT13を外部システム20に送信する(S86)。
【0157】
すなわち、タスク実行部113は、外部システム20へのアクセスが発生した場合、センサデータDTに対するタスクの実行を中止するとともに、外部システム20へのアクセスを外部指示部115に実行させる。そして、タスク実行部113は、外部システム20からアクセス結果を受信した場合、外部システム20へのアクセスを行うことなく、一旦中止したセンサデータDTに対するタスクの再実行を行う。
【0158】
これにより、情報処理装置1は、外部システム20に対するアクセスの発生による処理遅延がタスク実行部113における処理(ストリーム処理)に与える影響を抑えることが可能になる。そのため、情報処理装置1は、外部システム20へのアクセスを行わないセンサデータDTについての処理速度の低下を抑制することが可能になる。以下、リクエストデータDT13の具体例について説明を行う。
【0159】
[リクエストデータの具体例]
図27は、リクエストデータDT13の具体例について説明する図である。
【0160】
図27に示すリクエストデータDT13は、例えば、各タスクを識別する「タスクID」と、各リクエストデータDT13に対応するリクエストを行うセンサデータDTを識別する「データID」と、各リクエストが行われた時刻を識別する「タイムスタンプ」とを有する。また、
図27に示すリクエストデータDT13は、例えば、各リクエストを識別する「インデックス」と、各リクエストデータDT13に含まれるデータの内容を示す「リクエスト」とを有する。
【0161】
具体的に、
図27に示すリクエストデータDT13には、「タスクID」として「#2」が設定され、「データID」として「234567」が設定され、「タイムスタンプ」として「123456781」が設定され、「インデックス」として「1」が設定され、「リクエスト」として「HTTP GET http://・・・」が設定されている。
【0162】
図14に戻り、S21の処理で受信したデータがタスク完了データDT12であると判定した場合(S41のYES)、順序制御部112は、S21の処理で受信したタスク完了データDT12が先行データに対応するタスク完了データDT12であるか否かを判定する(S42)。
【0163】
具体的に、順序制御部112は、例えば、情報格納領域130に記憶した先行データ管理情報134を参照し、S21の処理で受信したタスク完了データDT12に対応する情報が存在しているか否かについての判定を行う。その結果、S21の処理で受信したタスク完了データDT12に対応する情報が存在していると判定した場合、順序制御部112は、S21の処理で受信したタスク完了データDT12が先行データに対応するタスク完了データDT12であると判定する。
【0164】
そして、S21の処理で受信したタスク完了データDT12が先行データに対応するタスク完了データDT12である場合(S43のYES)、順序制御部112は、情報格納領域130に記憶した先行データ管理情報134を参照し、S21の処理で受信したタスク完了データDT12に対応する情報を削除する(S44)。
【0165】
一方、S21の処理で受信したデータが先行データに対応するタスク完了データDT12でない場合(S43のNO)、順序制御部112は、S44の処理を行わない。
【0166】
その後、順序制御部112は、情報格納領域130に記憶した待機データ管理情報133を参照し、S21の処理で受信したデータに対するタスクに待機データが存在するかを判定する(S46)。なお、順序制御部112は、S45の処理が行われた場合についても同様に、S46の処理を行う。
【0167】
そして、S21の処理で受信したデータに対するタスクに待機データが存在すると判定した場合(S47のYES)、順序制御部112は、
図15に示すように、S46の処理で存在した待機データの先行データが存在するかを判定する(S51)。
【0168】
その結果、S46の処理で存在した待機データの先行データが存在すると判定した場合(S52のYES)、順序制御部112は、情報格納領域130に記憶した待機データ管理情報133を参照し、S46の処理で存在した待機データに対応する情報を削除する(S53)。
【0169】
その後、順序制御部112は、S46の処理で存在した待機データをS21の処理で受信したデータとする(S54)。そして、順序制御部112は、S45以降の処理を再度行う。
【0170】
このように、本実施の形態における情報処理装置1は、例えば、イベントに関する情報を含む第1センサデータDTを受信したことに応じて、受信した第1センサデータDTに対する第1タスクの実行を開始する。そして、情報処理装置1は、第1センサデータDTに対する第1タスクの実行に伴って外部システムに対するアクセスを要する第1処理が実行される場合、第1センサデータDTに対する第1タスクの実行を中止するとともに、第1処理に伴う外部システムに対するアクセスを行う。
【0171】
続いて、情報処理装置1は、イベントに関する情報を含む第2センサデータDTを受信したことに応じて、受信した第2センサデータDTに対する第1タスクの実行を開始する。そして、情報処理装置1は、第2センサデータDTに対する第1タスクの実行に伴って第1処理が実行されない場合、第2センサデータDTに対する第1タスクの実行を継続する。
【0172】
その後、情報処理装置1は、外部システムからアクセス結果を受信した場合、第2センサデータDTに対する第1タスクの実行完了後において、第1センサデータDTに対する第1タスクを再実行する。
【0173】
すなわち、情報処理装置1は、例えば、第1センサデータDTに対する第1タスクの実行に伴って外部システム20へのアクセスが発生した場合、第1センサデータDTに対する第1タスクの実行を中止するとともに、発生した外部システム20へのアクセスを第1センサデータDTに対する第1タスクの実行と非同期に行う。そして、情報処理装置1は、外部システムへのアクセス結果を待つことなく、第1センサデータDTの後に発生した各センサデータDT(第2センサデータDTを含む)に対する第1タスクの実行を順次行う。その後、情報処理装置1は、外部システム20からアクセス結果を受信した場合、受信したアクセス結果を用いることによってセンサデータDTに対する第1タスクを最初から再実行する。
【0174】
これにより、情報処理装置1は、例えば、外部システム20へのアクセスに伴って発生するバリアマーカの待ち合わせ時間を抑制することが可能になる。そのため、情報処理装置1は、外部システム20へのアクセスを行わないセンサデータDTに対するタスクの処理速度の低下を抑制することが可能になる。
【0175】
以上の実施の形態をまとめると、以下の付記のとおりである。
【0176】
(付記1)
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
処理をコンピュータに実行させることを特徴とするデータ処理プログラム。
【0177】
(付記2)
付記1において、
前記第1データに対する前記第1タスクを再実行する処理では、前記第1データに対する前記第1タスクの再実行を、前記実行を中止する処理において前記第1データに対する前記第1タスクの実行が中止される前に完了した処理を含めて行う、
ことを特徴とするデータ処理プログラム。
【0178】
(付記3)
付記1において、
前記第1データに対する前記第1タスクを再実行する処理では、前記第1データに対する前記第1処理が実行される場合、前記他の情報処理システムに対するアクセスを行うことなく、前記他の情報処理システムから受信済の前記アクセス結果を用いることによって前記第1タスクに含まれる他の処理の実行を行う、
ことを特徴とするデータ処理プログラム。
【0179】
(付記4)
付記1において、さらに、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記第2データが特定種類のデータである場合、前記第1タスクの実行対象となるデータを送信する他のタスクの全てから前記特定種類のデータを受信しているか否かを判定する、処理をコンピュータに実行させ、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記他のタスクの全てから前記特定種類のデータを受信していると判定した場合、前記第2データに対する前記第1タスクの実行を開始する、
ことを特徴とするデータ処理プログラム。
【0180】
(付記5)
付記4において、
前記第2データに対する前記第1タスクの実行を開始する処理では、前記他のタスクの全てから前記特定種類のデータを受信していないと判定した場合、前記他のタスクの全てから前記特定種類のデータを受信するまで、前記第2データに対する前記第1タスクの実行の開始を待機する、
ことを特徴とするデータ処理プログラム。
【0181】
(付記6)
互いにアクセス可能な複数の情報処理装置を有する情報処理システムであって、
前記複数の情報処理装置のそれぞれは、
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
ことを特徴とする情報処理システム。
【0182】
(付記7)
付記6において、
前記複数の情報処理装置のそれぞれは、前記第1データに対する前記第1処理が実行される場合、前記他の情報処理システムに対するアクセスを行うことなく、前記他の情報処理システムから受信済の前記アクセス結果を用いることによって前記第1タスクに含まれる他の処理の実行を行う、
ことを特徴とする情報処理システム。
【0183】
(付記8)
イベントに関する情報を含む第1データを受信したことに応じて、受信した前記第1データに対する第1タスクの実行を開始し、
前記第1データに対する第1タスクの実行に伴って他の情報処理システムに対するアクセスを要する第1処理が実行される場合、前記第1データに対する前記第1タスクの実行を中止するとともに、前記第1処理に伴う前記他の情報処理システムに対するアクセスを行い、
イベントに関する情報を含む第2データを受信したことに応じて、受信した前記第2データに対する前記第1タスクの実行を開始し、
前記第2データに対する前記第1タスクの実行に伴って前記第1処理が実行されない場合、前記第2データに対する前記第1タスクの実行を継続し、
前記他の情報処理システムから前記アクセスに対応するアクセス結果を受信した場合、前記第2データに対する前記第1タスクの実行完了後において、前記第1データに対する前記第1タスクを再実行する、
処理をコンピュータが実行することを特徴とするデータ処理方法。
【0184】
(付記9)
付記8において、
前記第1データに対する前記第1タスクを再実行する処理では、前記第1データに対する前記第1処理が実行される場合、前記他の情報処理システムに対するアクセスを行うことなく、前記他の情報処理システムから受信済の前記アクセス結果を用いることによって前記第1タスクに含まれる他の処理の実行を行う、
ことを特徴とするデータ処理方法。
【符号の説明】
【0185】
1:情報処理装置 2a:記憶装置
2b:記憶装置 10:情報処理システム
DT:センサデータ T1:タスク
T1a:記憶装置 T2:タスク
T2a:記憶装置 T3:タスク
T3a:記憶装置 10:情報処理システム