(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-06
(45)【発行日】2024-08-15
(54)【発明の名称】実行可能データフローグラフの差分
(51)【国際特許分類】
G06F 8/34 20180101AFI20240807BHJP
G06F 8/38 20180101ALI20240807BHJP
【FI】
G06F8/34
G06F8/38
【外国語出願】
(21)【出願番号】P 2021113911
(22)【出願日】2021-07-09
(62)【分割の表示】P 2019528545の分割
【原出願日】2017-12-04
【審査請求日】2021-08-06
(32)【優先日】2016-12-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-05-05
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ローゼンベルグ,イリア
(72)【発明者】
【氏名】ウェイス,アダム
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2014-197279(JP,A)
【文献】特表2016-511894(JP,A)
【文献】特開2014-197297(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70
G06F 8/34
G06F 8/38
(57)【特許請求の範囲】
【請求項1】
第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示する方法であって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータレコードの流れを表す1つ又は複数のリンクとを含み、前記方法は、
前記第1のデータフローグラフの少なくとも一部分と前記第2のデータフローグラフの少なくとも一部分との間の1つ又は複数の差異を特定するために前記第1の実行可能データフローグラフの仕様の少なくとも一部分と前記第2の実行可能データフローグラフの仕様の少なくとも一部分とをコンピュータにより比較することであって、
所与の実行可能データフローグラフの前記仕様は、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す1つ又は複数のノードを規定し、前記データフローグラフは、実行されると、(1)データソースからのデータレコードを受信及び処理し、かつ、(2)処理されたデータレコードをデータシンクへ提供するように構成され、
前記第1のデータフローグラフの仕様の少なくとも一部分と前記第2のデータフローグラフの仕様の少なくとも一部分との前記比較することは、
(1)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるノードにも対応しない前記第1のデータフローグラフの特定のノードを特定することであって、前記特定された特定のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、
(2)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるリンクにも対応しない前記第1のデータフローグラフの特定のリンクを特定することであって、前記特定された特定のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、
(3)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のノードに対応する前記第1のデータフローグラフの第1のノードを特定することであって、前記特定された第1のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、及び前記第1のノードと前記第2のノードとの間の差異を特定すること、
(4)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のリンクに対応する前記第1のデータフローグラフの第1のリンクを特定することであって、前記特定された第1のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、及び前記第1のリンクと前記第2のリンクとの間の差異を特定すること、
のうちの少なくとも1つを含
み、
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、(a)前記第1のノード又はリンクの解決されたパラメータと前記第2のノード又はリンクの解決されたパラメータとを解析することであって、各グラフがインスタンス化されるときに、パラメータは、パラメータの表現を評価することにより解決される、ことと、(b)前記第1のノード又はリンクのパラメータの表現と前記第2のノード又はリンクのパラメータの表現とを解析することのうちの一つ以上を含む、前記比較することと、
さらに前記コンピュータにより、
前記第1のデータフローグラフ又は前記第2のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現をグラフ編集インターフェース内に表示することであって、前記グラフィック表現は、(1)前記特定された特定ノード又はリンク、及び(2)前記第1のノード又はリンクと前記第2のノード又はリンクとの間の前記特定された差異のうちの少なくとも1つのグラフィック指標を含む、表示することと、
を含む方法。
【請求項2】
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、前記第1のノード又はリンクの解決されたパラメータと前記第2のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む、請求項1に記載の方法。
【請求項3】
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、前記第1のノード又はリンクのパラメータの表現と前記第2のノード又はリンクのパラメータの表現との間の差異を特定することを含む、請求項1に記載の方法。
【請求項4】
前記グラフィック指標は前記グラフィック表現内の前記第1、第2、又は特定ノード又はリンクのシェーディング、フィル又は色である、請求項1に記載の方法。
【請求項5】
前記グラフィック指標は前記第1、第2、又は特定ノード又はリンク近傍に位置するシンボルを含む、請求項1に記載の方法。
【請求項6】
前記グラフィック指標とのユーザ相互作用に応答する前記特定された差異を示す情報へのアクセスを可能にすることを含む、請求項1に記載の方法。
【請求項7】
前記第1のデータフローグラフは第1のデータフローサブグラフを含み、前記第2のデータフローグラフは第2のデータフローサブグラフを含み、
前記第1のデータフローサブグラフと前記第2のデータフローサブグラフとの間の1つ又は複数の差異を特定するために、前記第1のデータフローサブグラフの仕様と前記第2のデータフローサブグラフの仕様とを比較することを含む、請求項1に記載の方法。
【請求項8】
前記グラフィック表現は、前記第1のデータフローグラフと前記第2のデータフローグラフとの前記特定された差異のうちの少なくとも1つの差異と前記第1のデータフローサブグラフと前記第2のデータフローサブグラフとの前記特定された差異のうちの少なくとも1つの差異との階層的表示を含む、請求項7に記載の方法。
【請求項9】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、(1)前記第1のノード又はリンク及び前記第2のノード又はリンクの名前と、(2)前記第1のノード又はリンク及び前記第2のノード又はリンクの識別子とのうちの1つ又は複数に基づき前記第1のノードを特定することを含む、請求項1に記載の方法。
【請求項10】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、前記第1のノード及び前記第2のノード内への又はそこからのデータレコードの流れと関連する情報に基づき前記第1のノードを特定することを含む、請求項1に記載の方法。
【請求項11】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、前記第1のノード又はリンク及び前記第2のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき前記第1のノード又はリンクを特定することを含む、請求項1に記載の方法。
【請求項12】
実行のための前記第1のデータフローグラフ及び前記第2のデータフローグラフを準備することと、
前記準備された第1及び第2のデータフローグラフの前記仕様を比較することと、を含む請求項1に記載の方法。
【請求項13】
コンピュータに第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示させるための命令を格納する非一時的コンピュータ可読媒体であって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータレコードの流れを表す1つ又は複数のリンクとを含む、非一時的コンピュータ可読媒体において、
前記命令は、前記コンピュータに、前記第1のデータフローグラフの少なくとも一部分と前記第2のデータフローグラフの少なくとも一部分との間の1つ又は複数の差異を特定するために前記第1の実行可能データフローグラフの仕様の少なくとも一部分と前記第2の実行可能データフローグラフの仕様の少なくとも一部分とを比較させ、
所与の実行可能データフローグラフの前記仕様は、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す1つ又は複数のノードを規定し、前記データフローグラフは、実行されると、(1)データソースからのデータレコードを受信及び処理し、かつ、(2)処理されたデータレコードをデータシンクへ提供するように構成され、
前記第1のデータフローグラフの仕様の少なくとも一部分と前記第2のデータフローグラフの仕様の少なくとも一部分との前記比較することは、
(1)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるノードにも対応しない前記第1のデータフローグラフの特定のノードを特定することであって、前記特定された特定のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、
(2)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるリンクにも対応しない前記第1のデータフローグラフの特定のリンクを特定することであって、前記特定された特定のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、
(3)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のノードに対応する前記第1のデータフローグラフの第1のノードを特定することであって、前記特定された第1のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、及び前記第1のノードと前記第2のノードとの間の差異を特定すること、
(4)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のリンクに対応する前記第1のデータフローグラフの第1のリンクを特定することであって、前記特定された第1のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、及び前記第1のリンクと前記第2のリンクとの間の差異を特定すること、
のうちの少なくとも1つを含み、
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、(a)前記第1のノード又はリンクの解決されたパラメータと前記第2のノード又はリンクの解決されたパラメータとを解析することであって、各グラフがインスタンス化されるときに、パラメータは、パラメータの表現を評価することにより解決される、ことと、(b)前記第1のノード又はリンクのパラメータの表現と前記第2のノード又はリンクのパラメータの表現とを解析することのうちの一つ以上を含み、
前記命令は、さらに前記コンピュータに、
前記第1のデータフローグラフ又は前記第2のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現をグラフ編集インターフェース内に表示させ、前記グラフィック表現は、(1)前記特定された特定ノード又はリンク、及び(2)前記第1のノード又はリンクと前記第2のノード又はリンクとの間の前記特定された差異のうちの少なくとも1つのグラフィック指標を含む、非一時的コンピュータ可読媒体。
【請求項14】
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、前記第1のノード又はリンクの解決されたパラメータと前記第2のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、前記第1のノード又はリンクのパラメータの表現と前記第2のノード又はリンクのパラメータの表現との間の差異を特定することを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記グラフィック指標は前記グラフィック表現内の前記第1、第2、又は特定ノード又はリンクのシェーディング、フィル又は色である、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記グラフィック指標は前記第1、第2、又は特定ノード又はリンク近傍に位置するシンボルを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記命令は、前記コンピュータに、前記グラフィック指標とのユーザ相互作用に応答する前記特定された差異を示す情報へのアクセスを可能にさせる、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記第1のデータフローグラフは第1のデータフローサブグラフを含み、前記第2のデータフローグラフは第2のデータフローサブグラフを含み、
前記命令は、前記コンピュータに、前記第1のデータフローサブグラフと前記第2のデータフローサブグラフとの間の1つ又は複数の差異を特定するために、前記第1のデータフローサブグラフの仕様と前記第2のデータフローサブグラフの仕様とを比較させる、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記グラフィック表現は、前記第1のデータフローグラフと前記第2のデータフローグラフとの前記特定された差異のうちの少なくとも1つの差異と前記第1のデータフローサブグラフと前記第2のデータフローサブグラフとの前記特定された差異のうちの少なくとも1つの差異との階層的表示を含む、請求項19に記載の非一時的コンピュータ可読媒体。
【請求項21】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、(1)前記第1のノード又はリンク及び前記第2のノード又はリンクの名前と、(2)前記第1のノード又はリンク及び前記第2のノード又はリンクの識別子とのうちの1つ又は複数に基づき前記第1のノードを特定することを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項22】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、前記第1のノード及び前記第2のノード内への又はそこからのデータレコードの流れと関連する情報に基づき前記第1のノードを特定することを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項23】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、前記第1のノード又はリンク及び前記第2のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき前記第1のノード又はリンクを特定することを含む、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項24】
前記命令は、前記コンピュータに、
実行のための前記第1のデータフローグラフ及び前記第2のデータフローグラフを準備させ;
前記準備された第1及び第2のデータフローグラフの前記仕様を比較させる、請求項13に記載の非一時的コンピュータ可読媒体。
【請求項25】
第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示するためのシステムであって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータレコードの流れを表す1つ又は複数のリンクとを含む、システムにおいて、前記システムは、
前記第1のデータフローグラフの少なくとも一部分と前記第2のデータフローグラフの少なくとも一部分との間の1つ又は複数の差異を特定するために前記第1の実行可能データフローグラフの仕様の少なくとも一部分と前記第2の実行可能データフローグラフの仕様の少なくとも一部分とを比較するように構成された1つまたは複数のプロセッサ及びメモリを含み:
所与の実行可能データフローグラフの前記仕様は、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す1つ又は複数のノードを規定し、前記データフローグラフは、実行されると、(1)データソースからのデータレコードを受信及び処理し、かつ、(2)処理されたデータレコードをデータシンクへ提供するように構成され、
前記第1のデータフローグラフの仕様の少なくとも一部分と前記第2のデータフローグラフの仕様の少なくとも一部分との前記比較することは、
(1)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるノードにも対応しない前記第1のデータフローグラフの特定のノードを特定することであって、前記特定された特定のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、
(2)前記第2のデータフローグラフの前記仕様の少なくとも一部分によって規定されるいかなるリンクにも対応しない前記第1のデータフローグラフの特定のリンクを特定することであって、前記特定された特定のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、
(3)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のノードに対応する前記第1のデータフローグラフの第1のノードを特定することであって、前記特定された第1のノードは、データレコードを処理するために実行されるべき動作を定義するように構成可能なデータ処理部品を表す、こと、及び前記第1のノードと前記第2のノードとの間の差異を特定すること、
(4)前記第2のデータフローグラフの前記仕様の前記少なくとも一部分によって規定される第2のリンクに対応する前記第1のデータフローグラフの第1のリンクを特定することであって、前記特定された第1のリンクは、前記第1のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、こと、及び前記第1のリンクと前記第2のリンクとの間の差異を特定すること、
のうちの少なくとも1つを含み、
前記第1のノード又はリンクと前記第2のノード又はリンクとの間の差異を特定することは、(a)前記第1のノード又はリンクの解決されたパラメータと前記第2のノード又はリンクの解決されたパラメータとを解析することであって、各グラフがインスタンス化されるときに、パラメータは、パラメータの表現を評価することにより解決される、ことと、(b)前記第1のノード又はリンクのパラメータの表現と前記第2のノード又はリンクのパラメータの表現とを解析することのうちの一つ以上を含み、
前記1つまたは複数のプロセッサ及びメモリはさらに、
前記第1のデータフローグラフ又は前記第2のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現をグラフ編集インターフェース内に表示するように構成され、前記グラフィック表現は、(1)前記特定された特定ノード又はリンク、及び(2)前記第1のノード又はリンクと前記第2のノード又はリンクとの間の前記特定された差異のうちの少なくとも1つのグラフィック指標を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本出願は、参照のためその内容を本明細書に援用する2016年12月7日出願の米国特許出願第62/431,195号と2017年5月5日出願の米国特許出願第15/587,987号からの優先権を主張する。
【背景技術】
【0002】
背景
コンピュータプログラムの開発又は実行中、変更がコンピュータプログラムに対して行われ得る。変更に関する情報は、例えば開発者が変更の影響を理解するのを支援するために、何故、更新されたコンピュータプログラムが最早正しく機能しないのかを判断するために、又は複数の人々からの編集を追跡し続けるために開発者にとって有用であり得る。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
一態様では、方法は第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフは、データフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフは、データ処理部品を表す1つ又は複数のノードと部品間のデータの流れを表す1つ又は複数のリンクとを含む。本方法は、第1のデータフローグラフと第2のデータフローグラフとの間の1つ又は複数の差異を特定するために第1の実行可能データフローグラフの仕様と第2の実行可能データフローグラフの仕様とをコンピュータにより比較することを含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す1つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す1つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す1つ又は複数のノードとを規定する。第1のデータフローグラフと第2のデータフローグラフとを比較することは、(1)第2のデータフローグラフのいかなるノード又はリンクにも対応しない第1のデータフローグラフの特定ノード又はリンクを特定することと、(2)第2のデータフローグラフの第2のノード又はリンクに対応する第1のデータフローグラフの第1のノード又はリンクを特定し、第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することとのうちの少なくとも1つを含む。本方法は、第1のデータフローグラフ又は第2のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化することであって、グラフィック表現は(1)特定された特定ノード又はリンク、又は(1)第1のノード又はリンクと第2のノード又はリンクとの間の特定された差異のうちの少なくとも1つのグラフィック指標を含む、定式化することと、グラフィック表現をグラフ編集インターフェース内に表示することと、を含む。
【0004】
いくつかの実施形態は以下の特徴の1つ又は複数を含み得る。
【0005】
第1のデータフローグラフは特定データフローグラフの第1のバージョンであり、第2のデータフローグラフは特定データフローグラフの第2のバージョンである。
【0006】
第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することは、第1のノード又はリンクの解決されたパラメータと第2のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む。
【0007】
第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することは、第1のノード又はリンクのパラメータの表現と第2のノード又はリンクのパラメータの表現との間の差異を特定することを含む。
【0008】
グラフィック指標はグラフィック表現内の第1、第2、又は特定ノード又はリンクの色である。
【0009】
グラフィック指標の色は第1のノード又はリンクと第2のノード又はリンクとの間の特定された差異のタイプを示す。
【0010】
グラフィック指標はグラフィック表現内の第1、第2、又は特定ノード又はリンクの陰影付け(以下、シェーディング)又は塗りつぶし(以下、フィル)である。
【0011】
グラフィック指標は第1、第2、又は特定ノード又はリンク近傍に位置するシンボルを含む。
【0012】
グラフィック指標はユーザ相互作用に応答する。本方法は、グラフィック指標とのユーザ相互作用に応答する特定された差異を示す情報へのアクセスを可能にすることを含む。
【0013】
第1のデータフローグラフは第1のデータフローサブグラフを含み、第2のデータフローグラフは第2のデータフローサブグラフを含む。本方法は、第1のデータフローサブグラフの仕様と第2のデータフローサブグラフの仕様とを比較することと;この比較に基づき、第1のデータフローサブグラフと第2のデータフローサブグラフとの間の1つ又は複数の差異を特定することとを含む。
【0014】
グラフィック表現は第1のデータフローサブグラフの少なくとも一部分又は第2のデータフローサブグラフの少なくとも一部分のグラフィック表現を含み、グラフィック表現は第1のデータフローサブグラフと第2のデータフローサブグラフとの間の特定された差異のうちの少なくとも1つのグラフィック指標を含む。
【0015】
グラフィック表現は、第1のデータフローグラフと第2のデータフローグラフとの間の特定された差異のうちの少なくとも1つの差異と、第1のデータフローサブグラフと第2のデータフローサブグラフとの間の特定された差異のうちの少なくとも1つ差異との階層的表示を含む。
【0016】
第1のデータフローグラフの仕様と第2のデータフローグラフの仕様とを比較することは、第1のデータフローグラフにより参照される第1のファイルと第2のデータフローグラフにより参照される第2のファイルとを比較することを含む。グラフィック表現は、第1のファイルと第2のファイルとの間の1つ又は複数の差異のグラフィック表現を含む。
【0017】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、(1)第1のノード又はリンク及び第2のノード又はリンクの名前と、(2)第1のノード又はリンク及び第2のノード又はリンクの識別子とのうちの1つ又は複数に基づき第1のノードを特定することを含む。
【0018】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、第1のノード及び第2のノード内への又はそこからのデータフローと関連する情報に基づき第1のノードを特定することを含む。
【0019】
第2のノード又はリンクに対応する第1のノード又はリンクを特定することは、第1のノード又はリンク及び第2のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき第1のノード又はリンクを特定することを含む。
【0020】
本方法は、実行のための第1のデータフローグラフ及び第2のデータフローグラフを準備することと;準備された第1及び第2のデータフローグラフの仕様を比較することとを含む。
【0021】
一態様では、非一時的コンピュータ可読媒体は、コンピュータに第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示させるための命令を格納し、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータの流れを表す1つ又は複数のリンクとを含む。命令は、コンピュータに、第1のデータフローグラフと第2のデータフローグラフとの間の1つ又は複数の差異を特定するために第1の実行可能データフローグラフの仕様と第2の実行可能データフローグラフの仕様とを比較させる。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す1つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す1つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す1つ又は複数のノードとを規定する。第1のデータフローグラフと第2のデータフローグラフとを比較することは、(1)第2のデータフローグラフのいかなるノード又はリンクにも対応しない第1のデータフローグラフの特定ノード又はリンクを特定することと、(2)第2のデータフローグラフの第2のノード又はリンクに対応する第1のデータフローグラフの第1のノード又はリンクを特定し、第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することとのうちの少なくとも1つを含む。命令は、コンピュータに、第1のデータフローグラフ又は第2のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化させ、グラフィック表現は、(1)特定された特定ノード又はリンク、又は(1)第1のノード又はリンクと第2のノード又はリンクとの間の特定された差異のうちの少なくとも1つのグラフィック指標を含み、そしてコンピュータにグラフィック表現をグラフ編集インターフェース内に表示させる。
【0022】
一態様では、システムは、第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータの流れを表す1つ又は複数のリンクとを含む。システムは、第1のデータフローグラフと第2のデータフローグラフとの間の1つ又は複数の差異を特定するために第1の実行可能データフローグラフの仕様と第2の実行可能データフローグラフの仕様とを比較するように構成されたプロセッサ及びメモリを含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す1つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す1つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す1つ又は複数のノードとを規定する。第1のデータフローグラフと第2のデータフローグラフとを比較することは、(1)第2のデータフローグラフのいかなるノード又はリンクにも対応しない第1のデータフローグラフの特定ノード又はリンクを特定することと、(2)第2のデータフローグラフの第2のノード又はリンクに対応する第1のデータフローグラフの第1のノード又はリンクを特定し、第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することとのうちの少なくとも1つを含む。プロセッサ及びメモリは、第1のデータフローグラフ又は第2のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化するように構成され、グラフィック表現は(1)特定された特定ノード又はリンク、又は(1)第1のノード又はリンクと第2のノード又はリンクとの間の特定された差異のうちの少なくとも1つのグラフィック指標を含み、プロセッサ及びメモリはさらに、グラフィック表現をグラフ編集インターフェース内に表示するように構成される。
【0023】
一態様では、システムは、第1の実行可能データフローグラフと第2の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す1つ又は複数のノードと部品間のデータの流れを表す1つ又は複数のリンクとを含む。本システムは、第1のデータフローグラフと第2のデータフローグラフとの間の1つ又は複数の差異を特定するために第1の実行可能データフローグラフの仕様と第2の実行可能データフローグラフの仕様とを比較する手段を含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す1つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す1つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す1つ又は複数のノードとを規定する。第1のデータフローグラフと第2のデータフローグラフとを比較することは、(1)第2のデータフローグラフのいかなるノード又はリンクにも対応しない第1のデータフローグラフの特定ノード又はリンクを特定することと、(2)第2のデータフローグラフの第2のノード又はリンクに対応する第1のデータフローグラフの第1のノード又はリンクを特定し、第1のノード又はリンクと第2のノード又はリンクとの間の差異を特定することとのうちの少なくとも1つを含む。本システムは、第1のデータフローグラフ又は第2のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化する手段であって、グラフィック表現は(1)特定された特定ノード又はリンク又は(1)第1のノード又はリンクと第2のノード又はリンクとの間の特定された差異のうちの少なくとも1つのグラフィック指標を含む、手段と、グラフィック表現をグラフ編集インターフェース内に表示する手段とを含む。
【0024】
一態様では、方法は、実行可能データフローグラフの第1のバージョンと実行可能データフローグラフの第2のバージョンとの間の差異を表示するためのものであり、データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、データフローグラフの各バージョンはデータ処理部品を表す1つ又は複数のノードと部品間のデータの流れを表す1つ又は複数のリンクとを含む。本方法は、データを処理するために実行され得る1つ又は複数の操作を含むジョブの状態を統合コントロールシステムにより監視することであって、ジョブは実行可能データフローグラフの第1のバージョンに関連付けられる、監視することを含む。本方法は、ジョブの状態を示す情報の出力を可能にすることと;統合コントロールシステム又は出力された情報とのユーザ相互作用に応答して、実行可能データフローグラフの第2のバージョンを特定することと;データフローグラフの第1のバージョンとデータフローグラフの第2のバージョンとの間の1つ又は複数の差異を特定するためにデータフローグラフの第1のバージョンの仕様とデータフローグラフの第2のバージョンの仕様とを比較することと、を含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す1つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す1つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す1つ又は複数のノードとを規定する。データフローグラフの第1のバージョンとデータフローグラフの第2のバージョンとを比較することは、(1)データフローグラフの第2のバージョンのいかなるノード又はリンクにも対応しないデータフローグラフの第1のバージョンの第1のノード又はリンクを特定することと、(2)データフローグラフの第1のバージョンのいかなるノード又はリンクにも対応しないデータフローグラフの第2のバージョンの第2のノード又はリンクを特定することと、(1)データフローグラフの第2のバージョンの第4のノード又はリンクに対応するデータフローグラフの第1のバージョンの第3のノード又はリンクを特定し、第3のノード又はリンクと第4のノード又はリンクとの間の差異を特定することとうちの少なくとも1つを含む。本方法は、データフローグラフの第1のバージョン又はデータフローグラフの第2のバージョンのノード又はリンクの少なくとも一部のグラフィック表現を定式化することであって、グラフィック表現は、(1)特定された第1のノード又はリンク、(2)特定された第2のノード又はリンク、及び(3)第3のノード又はリンクと第4のノード又はリンクとの間の特定された差異のうちの少なくとも1つのノード又はリンクのグラフィック指標を含む、定式化することを含む。
【0025】
いくつかの実施形態は以下の特徴の1つ又は複数を含み得る。
【0026】
既に実行されたジョブがデータフローグラフの第2のバージョンと関連付けられる。
【0027】
グラフィック表現は特定された差異のうちの1つ又は複数の差異の階層的表示を含む。
【0028】
本方法は、統合コントロールシステムのユーザインターフェース内の表示のためにグラフィック表現を定式化することを含む。
【0029】
データフローグラフの第1のバージョンとデータフローグラフの第2のバージョンとの間の差異を特定することは、データフローグラフの第1のバージョンの解決されたパラメータとデータフローグラフの第2のバージョンの解決されたパラメータとの間の差異を特定することを含む。
【0030】
データフローグラフの第1のバージョンとデータフローグラフの第2のバージョンとの間の差異を特定することは、データフローグラフの第1のバージョンのパラメータの表現とデータフローグラフの第2のバージョンのパラメータの表現との間の差異を特定することを含む。
【0031】
データフローグラフの第1のバージョンとデータフローグラフの第2のバージョンとの間の差異を特定することは、データフローグラフの第1のバージョンにより参照される第1のファイルとデータフローグラフの第2のバージョンにより参照される第2のファイルとの間の差異を特定することを含む。
【0032】
ジョブの状態を監視することは、ジョブの活動、ジョブの実際の開始時間、ジョブの推定開始時間、ジョブに関連する処理期間、及びジョブのサイズのうちの1つ又は複数を監視することを含む。
【0033】
ジョブの状態を監視することはジョブが成功裡に完了したかどうかを判断することを含む。
【0034】
本方法はアプリケーションの状態を監視することを含み、ジョブはアプリケーションに関連付けられる。
【0035】
本方法はコンピュータ装置の状態を監視することを含み、アプリケーションはコンピュータ装置によりホストされる。
【0036】
本明細書で説明する手法は、コンピュータプログラム(例えばデータフローグラフ)などの実行可能アプリケーション間の差異のグラフィック表現の提示を可能にし、したがってアプリケーション間の差異の高位視覚的概要を提供する。例えば、第1のデータフローグラフ(例えばデータフローグラフの初期バージョン)と第2のデータフローグラフ(例えばデータフローグラフの後編集されたバージョン)との間の差異のグラフィック表現は、編集処理中に追加、除去、又は修正された部品の高位ビューを描写し得る。実行可能アプリケーション間の差異のグラフィック表現は双方向的であり得る。例えば、ユーザは、部品に対してなされた修正に関する情報などの当該部品に関する詳細情報を見るためにグラフィック表現内の部品を掘り下げ得る。
【0037】
データフローグラフ間の差異に関する提示された情報は、グラフ生成又は編集中に開発者へ貴重な技術支援を提供し得る。例えば、開発者は、ソースコード管理システム内の様々なブランチ上に発生した展開を仲裁するために可視化を使用し得る。開発者は、ソースコード管理下のバージョンに対してなした最新変更に関し自身のメモリをリフレッシュするために可視化を使用し得る。開発者は、他の人のグラフへの最新変更を評価するために(例えば、別の開発者が、期待されていた変更を行ったがいかなる他の変更も行っていないということを確認するために、又はいくつかの品質規格が満たされたということを保証するために)、可視化を使用し得る。開発者又は品質管理チームは、何故グラフの振る舞いが連続バージョン間で変わったか(例えば、何故グラフの新バージョンが、クラッシュする、より遅い、誤った答を出す、より多くのCPU時間を消費する、又はそうでなければ異なるやり方で振る舞うか)を理解したいかもしれない。開発者は、例えば複数バージョンを単一バージョンにマージする又はグラフへの変更を取り消すために差異可視化を通してグラフを編集したいかもしれない。
【0038】
グラフ間の差異の可視化は、グラフが生成された後に技術的に貴重であり得る。例えば、開発チームにより生成される新特徴は製造部門からのマイナーバグ修正と一体化され得る。品質管理チームは、コードの特定バグの出る行がグラフに対して行われた一連の変更内のどこかに導入されたということを気付くようになり得、可視化は、影響を受けた顧客が通知され得るようにどのバージョンが当該コードを有する第1のバージョンかを発見するために使用され得る。
【図面の簡単な説明】
【0039】
図面の簡単な説明
【
図2A-B】グラフ間の差異のグラフィック表現のダイアグラムである。
【
図3】ナビゲーションツリーのダイアグラムである。
【
図4-7】ノードレベルビューのダイアグラムである。
【
図8A-B】グラフ間の差異のグラフィック表現のダイアグラムである。
【
図9】ナビゲーションツリーのダイアグラムである。
【
図10】異なるビューアインターフェースのダイアグラムである。
【
図11】グラフ解析システムのダイアグラムである。
【
図13】コントロールセンタインターフェースのダイアグラムである。
【
図15】データ処理システムのダイアグラムである。
【発明を実施するための形態】
【0040】
詳細な説明
我々は、ここでは、コンピュータプログラム(例えばデータフローグラフ)などの実行可能アプリケーション間の差異をグラフィック的に表し、したがってアプリケーション間の差異の高位視覚的概要を提供する手法を説明する。例えば、第1のデータフローグラフ(例えばデータフローグラフの初期バージョン)と第2のデータフローグラフ(例えばデータフローグラフの後編集されたバージョン)との間の差異のグラフィック表現は、編集処理中に追加、除去、又は修正された部品を描写し得る。実行可能アプリケーション間の差異のグラフィック表現は双方向的であり得る。例えば、ユーザは、部品に対してなされた修正に関する情報などの当該部品に関する詳細情報を見るためにグラフィック表現内の部品を掘り下げ得る。いくつかのケースでは、実行可能アプリケーション間の差異のうちの1つ又は複数の差異は、実行可能アプリケーション間の差異のグラフィック表現とのユーザ相互作用を介し1つの実行可能アプリケーションから他のアプリケーションへ手動で又は自動的に移行され得る。
【0041】
データフローグラフ(時にグラフとも呼ぶ)は、データソース及びデータシンクなどのデータ処理部品及びデータセットを表すノードを含み得るコンピュータプログラムの視覚的表示である。データセットは、例えばファイル、データベース表、又はグラフにより処理するためのデータ(例えばデータレコード)を提供し得る又はグラフにより処理されるデータを受信し得る他のタイプのデータソース又はシンクであり得る。データ処理部品及びデータセットは時にグラフのノードと総称される。グラフの2つのノードを接続するリンクは第1のノードと第2のノードとの間のデータの流れを表す。
図1は、フロー14によりフィルタ部品16へ接続されたデータソース12を含む単純なデータフローグラフ10を示す。フィルタ部品16はフロー18によりデータシンク20へ接続される。
【0042】
グラフのノードは、フローが接続され得る入力ポート及び/又は出力ポートを有し得る。
図1の例では、フロー14、18の上流端はデータソース12の出力ポートとフィルタ部品14の出力ポートとへそれぞれ接続される。フロー14、18の下流端はフィルタ部品14の入力ポートとデータシンク20の入力ポートとへそれぞれ接続される。
【0043】
データ処理部品はデータを処理するための操作を実行する。データ処理部品は、実行されるとデータ処理部品の操作を実施するコードにより規定されたオブジェクトのグラフィック表現である。データ処理部品の操作は1つ又は複数のパラメータに関して規定され得る。パラメータは、データ処理部品のコードにより参照されるファイル(例えば.dmlファイル)内に規定され得る。例えば、ファイルは、データ処理部品に関連するパラメータの値又は表現を含み得る。グラフがインスタンス化される(例えば実行時に)と、パラメータの表現がパラメータの値を得るために評価される(時にパラメータを解決すると呼ばれる)。パラメータ値又は表現は、例えばユーザインターフェース上で(例えばプロンプトに応じて)ユーザにより規定され得る、ファイルから規定され得る、又は同じ文脈における又は異なる文脈における別のパラメータの観点で規定され得る。例えば、パラメータ(例えば異なる部品の文脈で評価されるパラメータ)は、別のパラメータに対する関係と「同じ」関係を有するようにパラメータを指定することにより異なる文脈からエクスポートされ得る。
【0044】
いくつかの例では、グラフ内の部品は、自身がフローと相互接続される一組の他の部品を使用することにより実装され得る。これによりグラフ内の部品が実装されるこの一組の部品は、サブグラフと呼ばれ、グラフのノードである。
【0045】
第1のグラフと第2のグラフ(例えばグラフの第1のバージョンとグラフの第2の編集されたバージョン)との間の差異を特定する解析(時に差分解析と呼ばれる)が、第1のグラフ内に存在するが第2のグラフ内には存在しないノード(削除ノード又は除去ノードと呼ばれる)、第2のグラフ内に存在するが第1のグラフ内には存在しないノード(追加ノードと呼ばれる)、又は修正されたノードを特定し得る。修正されたノードは、以下にさらに論述されるように第1のグラフと第2のグラフ間でほぼ同様であり得るが、ノードに関連するパラメータ、属性、又は他の特徴への変更を伴う。差分解析はまた、第1のグラフのフローと第2のグラフのフローとの間の差異を特定し得る。
【0046】
プランは複数のグラフの実行に関与する過程の視覚的表示である。プランでは、個々のグラフは、ノードであり、プランのグラフの間のデータのフローを示すフローにより相互接続される。本明細書で説明する手法はプラン間の差異をグラフィック的に表すために使用され得る。例えば、第1のプラン及び第2のプランに対し行われる差分解析は、第1のプラン内には存在するが第2のプラン内には存在しないノード(例えばグラフ)、第2のプラン内には存在するが第1のプラン内には存在しないノード、又は修正されたノードを特定し得る。
【0047】
いくつかの例では、プラン間の差異、プラン内の対応するグラフ間の差異、グラフ内の対応するサブグラフ間の差異、及び/又はグラフ内のノードにより参照される対応パラメータファイル間の差異を特定する入れ子式差分解析(nested differencing analysis)が行われ得る。入れ子式差分解析の結果のグラフィック表現は、プラン、グラフ、及びサブグラフの階層的性質とそれに伴う関連差異とを示し得る。
【0048】
我々はグラフ間の差異の解析及びグラフィック表現について以下の論述では概して言及するが、本手法はまた、プラン、サブグラフ、パラメータファイル、及び/又はグラフにより参照される他のファイルの解析及びグラフィック表現へ一般的に適用され得る。
【0049】
グラフ間の差異の可視化はグラフ生成又は編集中に開発者にとって貴重であり得る。例えば、開発者は、ソースコード管理システム内の様々なブランチ上に発生した展開を仲裁するために可視化を使用し得る。開発者は、ソースコード管理下のバージョンに対してなした最新変更に関する自身のメモリをリフレッシュするために可視化を使用し得る。開発者は、誰か他の人のグラフへの最新変更を評価するために(例えば、別の開発者が、期待されていた変更を行ったがいかなる他の変更も行っていないということを確認するために、又はいくつかの品質規格が満たされたということを保証するために)、可視化を使用し得る。開発者又は品質管理チームは、何故グラフの振る舞いが連続バージョン間で変わったか(例えば、何故グラフの新バージョンが、クラッシュする、又はより遅い、又は誤った答を出す、又はより多くのCPU時間を消費するか)を理解したいかもしれない。開発者は、例えば複数バージョンを単一バージョンにマージする又はグラフへの変更を取消すために異なる可視化を通してグラフを編集したいかもしれない。
【0050】
グラフ間の差異の可視化は、グラフに対する更新を見たいが自分でグラフを編集する意図が必ずしも無いプロジェクト管理者などの監督役割の人にとって貴重であり得る。
【0051】
グラフ間の差異の可視化はグラフが生成された後に貴重であり得る。例えば、開発チームにより生成される新特徴は製造部門からのマイナーバグ修正と一体化され得る。品質管理チームは、コードの特定バグの出る行がグラフに対して行われた一連の変更内のどこかに導入されたということを気付くようになり得、可視化は、影響を受けた顧客が通知され得るようにどのバージョンが当該コードを有する第1のバージョンかを発見するために使用され得る。
【0052】
図2A、2Bを参照すると、一例では、グラフの2つのバージョン(第1のバージョン200(時に、単に第1バージョン200と呼ばれる)の表現及び第2のバージョン202(時に、単に第2バージョン202と呼ばれる)の表現)のグラフィック表現がキャンバス上に示される。例えば、グラフはその発展過程にあり得、第1のバージョン200はグラフの初期バージョンであり得、第2のバージョン202はグラフのより最近のバージョンであり得る。グラフの第1及び第2のバージョン200、202間の差異は、例えばグラフの第1及び第2のバージョン200、202間の差異を表す指標によりグラフィック的に表示される。指標は、例えば色、シェーディング、フィル、アイコン、シンボル、テキスト注釈、又は他のタイプの指標であり得る。一例では、削除されたノード(グラフの第1のバージョン200内に存在するがグラフの第2のバージョン202内に存在しないノード)は赤で示される。追加されたノード(グラフの第2のバージョン202内に存在するがグラフの第1のバージョン200内に存在しないノード)は緑で示される。修正されたノード(グラフの両方のバージョン200、202内に存在するが同一でないノード)は青で示される。
【0053】
図2A、2Bの例では、出力ファイル204は、グラフの第1のバージョン200内に存在するが第2のバージョン202内に存在しない削除されたノードである。出力ファイル204は赤でキャンバス上に示される。フィルタ部品206及びトラッシュ部品208は、グラフの第2のバージョン202内に存在するが第1のバージョン200内に存在しない追加されたノードである。フィルタ部品206及びトラッシュ部品208は緑でキャンバス20上に示される。再フォーマット部品210はグラフの両方のバージョン200、202内に存在するが修正されている。例えば、再フォーマット部品210のパラメータ又は属性の表現又値はグラフの2つのバージョン200、202間で異なり得る。再フォーマット部品210は青でキャンバス上に示される。
【0054】
いくつかの例では、グラフの第1及び/又は第2のバージョン200、202のノードは、クリック、タップ、ホバーなどのユーザ相互作用又は他の相互作用に対し応答し得る。例えば、ユーザは、グラフの第1及び第2のバージョン200、202間で異なる再フォーマット部品210のパラメータ又は属性のリストなど修正に関する追加情報を見るためにポインタを再フォーマット部品210の上にホバーし得る。いくつかの例では、追加情報がキャンバス上に(例えばノード近傍に又はキャンバスのブランクスペース内に)表示され得る。いくつかの例では、情報を表示するために新しいウィンドウ又は情報バブルが開かれる(例えばキャンバスの前に)。
【0055】
図3を参照すると、いくつかの例では、グラフの第1及び第2のバージョン200、202間の差異のグラフィック表現はナビゲーションツリー220内の階層的リストの形式を取り得る。ナビゲーションツリー220は、論理構造に似たツリー構造のノードをグラフ200、202へ列挙し得る。いくつかの例では、ナビゲーションツリー220はグラフ200、202のノードのすべてを列挙し得る。いくつかの例では、ナビゲーションツリー220はグラフのバージョン200、202間で異なるノードだけ(例えば追加されたノード、削除されたノード、及び修正されたノードだけ)を列挙し得る。
【0056】
ナビゲーションツリーはプラン間の差異の階層的リストを描写するために使用され得る。プランのナビゲーションツリーは、タスクのリスト、方法のリスト、又は他の態様などのプランの他の態様に加えてノード(例えばグラフ)のリストを含み得る。
【0057】
追加されたノード、削除されたノード、及び修正されたノードのそれぞれは、ナビゲーションツリー220の階層的リスト内のエントリにより表される。ノードが、追加されたノード、削除されたノード、又は修正されたノードかどうかを示すリスト上の各ノードに付随するアイコンは、例えばアイコンの色、シェーディング、フィル、形状、又は別の特徴によるものである。
図3の例では、削除されたノードのアイコンは緑色正方形であり、追加されたノードのアイコンは緑色正方形であり、修正されたノードのアイコンは青色正方形である。
【0058】
ナビゲーションツリー220内のエントリのうちの1つ又は複数は、ノードに関する追加情報を提供するために例えばサブエントリを含み得る。例えば、ノードが、修正されたノードであれば、グラフの第1及び第2のバージョン200、202間で異なるノードの各特徴は、修正されたノードのエントリ下の対応するサブエントリ内に列挙され得る。例えば、再フォーマット部品210(修正された部品)に関し、サブエントリは、第1及び第2のバージョン200、202間で異なる各特徴(例えばパラメータ、又は属性、又は他の特徴)のナビゲーションツリー220内に含まれ得る。サブエントリは、例えば特徴(例えばパラメータ、属性、又は別のタイプの特徴)のタイプ、特徴の名前、グラフの第1のバージョン200内の特徴の値、グラフの第2のバージョン202内の特徴の値、又は他の情報などの特徴に関する情報を含み得る。
【0059】
図4を参照すると、いくつかの例では、グラフの第1及び第2のバージョン200、202の修正されたノード(例えば再フォーマット部品210)間の差異は、ノードレベルビュー250内の表フォーマットで表示され得る。ノードレベルビュー250は、ノードの記述、パラメータ、属性、レイアウト、ポート、又は他の特徴などのノードの特徴を列挙する1つ又は複数の表を含む。
【0060】
図4の例では、パラメータ及び属性表は、ノードのパラメータ及び属性を列挙する。パラメータ及び属性表は、グラフの第1のバージョンと第2のバージョンとの間で異なる値又は表現を有するそれらのパラメータ及び属性だけを含んでもよいし、ノードのすべてのパラメータ及び属性を含んでもよい。各行は、パラメータ又は属性を表し、グラフの第1のバージョン200内のパラメータ又は属性の値又は表現(「古い値」と呼ばれる)及び/又はグラフの第2のバージョン202内のパラメータ又は属性の値(「新しい値」と呼ばれる)を含む。グラフの第1及び第2のバージョン200、202間で異なる値は、ハイライト、アイコン、又は別のタイプの指標などの指標によりマーキングされ得る。例えば、
図4の例では、変換部品の古い及び新しい値がハイライトされ、これらの値がグラフの第1及び第2のバージョン200、202間で異なるということを示す。
【0061】
ノードレベルビュー250内の表の名前列はパラメータ又は属性の名前を表示する。いくつかの例では、名前列は、名前がパラメータ又は属性の名前であるかどうかの指標(例えばアイコン、文字、又は別の指標)を含み得る。例えば、パラメータ名は菱形によりマーキングされ得、属性名は等号によりマーキングされ得る。いくつかの例では、名前列は、パラメータが入力パラメータであるか又はローカルパラメータであるかの指標を含み得る。
【0062】
図5を参照すると、いくつかの例では、ノードレベルビューのパラメータ及び属性表260は、タイプ列、必要列、エクスポート列、又は別の列などの追加の列を含み得る。タイプ列は妥当な場合dmlタイプのパラメータを表示し得る。タイプ列は部品属性へ適用しない。プランに関し、タイプ列は、グラフ、ストリング、選択、又は別のタスクタイプなどのタスクタイプを表示し得る。必要列は、パラメータが必要とされるかどうかと、パラメータの必要とされる状態がバージョン間で変化したかどうかとを示す指標を含み得る。エクスポート列は、パラメータがエクスポートされるかどうかと、パラメータのエクスポート状態がバージョン間で変化したかどうかとの指標を含み得る。
【0063】
図6を参照すると、ノードレベルビューは、ノードのポートのリストを含むポート表270を含み得る。ポートのリストは、グラフの第1及び第2のバージョン間で変化したポートだけを含んでもよいし、すべてのポートを含んでもよい。各行はポートを表し、ポートの名前及び差異のタイプ(例えば追加、削除、又は修正)を含む。差異のタイプは指標により描写され得る。いくつかの例では、ユーザは、ポートのパラメータのリスト又は表へアクセスするためにポートの名前と相互作用し得る(例えば名前をクリック又はタップすることにより)。
【0064】
図7を参照すると、プラン間の差異を特徴付ける際に、ノードレベルビューはプランの方法のリストを含む方法表280を含み得る。方法のリストは、プランの第1及び第2のバージョン間で変化した方法だけを含んでもよいし、すべての方法を含んでもよい。各行は、方法を表し、方法の名前及び差異のタイプ(例えば削除、追加、又は修正)を含む。差異のタイプは指標により描写され得る。いくつかの例では、ユーザは、方法のパラメータのリスト又は表へアクセスするために方法の名前と相互作用し得る(例えば名前をクリック又はタップすることにより)。
【0065】
いくつかの例では、テキスト差分ビュー(図示せず)が、グラフの第1及び第2のバージョンのそれぞれのバージョン内のノードのコード間の差異の指標によりノード(例えば修正されたノード)のコードを表示し得る。差異は、例えばフォーマット化(例えば下線、取り消し線、太字、イタリック体、又は他のフォーマット化)、ハイライト、又は他の手法により示され得る。いくつかの例では、グラフのバージョンのうちのただ1つのバージョン内のノードのコードが、提示されたコードとグラフの他のバージョン内のノードのコードとの間の差異の指標により提示される。いくつかの例では、グラフの両方のバージョンのノードのコードが提示され、コードの各バージョンは、コードの他のバージョンに対する差異の指標を有し得る。
【0066】
グラフの第1及び第2のバージョン200、202間の差異のこれらの様々なビューのそれぞれは利点をユーザへ提示し得る。グラフの第1のバージョン200と第2のバージョン202間の差異のキャンバス20上のグラフィック表示は、大量の詳細無しにユーザが高レベルで差異を迅速に把握することを可能にする。例えば、キャンバス上の第1及び第2のバージョン200、202の表示は、どのノードが追加又は削除されそしてどのノードが修正されたかをユーザが迅速に可視化することを可能にする。ナビゲーションツリー220の階層的リストは、ユーザがグラフの残りの文脈の外で個々のノードに焦点を合わせることを可能にする。ノードレベルビュー250は、例えばユーザがグラフの各バージョン200、202のノードの特徴の詳細な理解を掘り下げ得るようにノードに対する変更に関する固有情報へのアクセスをユーザに提供する。
【0067】
いくつかの例では、グラフはサブグラフを含み得、2つのグラフ間の差異のグラフィック表現はグラフにより参照されるサブグラフ間の差異に関する情報を提供し得る。
図8A、8Bを参照すると、サブグラフ904を含むグラフの第1のバージョン900及び第2のバージョン902の表現がキャンバス上に示される。第1及び第2のバージョン900、902間の差異は指標により示される。差異がサブグラフ内に存在すれば、サブグラフ上の指標が差異の高位指標を提供し得る。いくつかの例では、サブグラフ904内の差異のリスト又は記述などの追加情報が、サブグラフ904とのユーザ相互作用に応答して提供され得る。いくつかの例では、サブグラフ904を形成する部品がサブグラフ904とのユーザ相互作用に応答して表示され得る(必要に応じ差異の指標により)。
【0068】
図8A、8Bの例では、出力ファイル906が削除され、フィルタ部品908及びトラッシュ部品910が追加された。加えて、サブグラフ904内のノードが修正されており、これはサブグラフ904上の指標により描写される。
【0069】
図9を参照すると、ナビゲーションツリー920が、グラフの第1及び第2のバージョン900、902の追加されたノード、削除されたノード、及び修正されたノードを列挙し得る。サブグラフ904のノードが追加又は削除又は修正されれば、サブグラフ904はリスト内に含まれ、ノード(例えば再フォーマット部品)がサブグラフ904のエントリ下のサブエントリ内に列挙される。サブグラフ904の列挙されたノードが修正されたノードであれば、当該ノード(例えば再フォーマット部品)のサブエントリ自身は、グラフの第1及び第2のバージョン900、902間で異なる各特徴(例えばパラメータ、又は属性、又は他の特徴)のサブエントリを有し得る。
【0070】
図10を参照すると、いくつかの例では、複数のビューが差異ビューアインターフェース(時に、差異ビューアとも呼ばれる)60に一体化され得る。
図10の例示的差異ビューア60は、グラフの第1のバージョン600及びグラフの第2のバージョン602のグラフィック表現を示すキャンバス62を含む。
図10の差異ビューア60では、キャンバス62はグラフの第1及び第2のバージョン600、602を並列配向で示し;いくつかの例では、キャンバスは第1及び第2のバージョン600、602を上下配向で示し得る。キャンバス62は、グラフの第1又は第2のバージョン600、602の関心領域内にユーザが焦点を合わせることを可能にするためにスケーラブルかつスライド可能であり得る。差異ビューア60はまた、ナビゲーションツリー620及びノードレベルビュー650を含む。差異ビューア60では、様々なビューにより提示される様々なレベルの情報はすべて、単一かつコンパクトなユーザインターフェース内でユーザへアクセス可能である。
【0071】
図10の例では、指標はノード近傍に位置するアイコンであり、アイコンの形状及び色は併せて差異のタイプを示す。例えば、赤色「X」は削除されたノードを示し、緑色プラス記号は追加されたノードを示し、黄色アスタリスクは修正されたノードを示す。ナビゲーションツリー620内のエントリは、追加、削除、又は修正などの変更のタイプによりグループ化され得る。
【0072】
差異ビューア60は双方向性であり得る。例えば、ユーザは、差異に関する情報を取得するために当該差異を選択し得る。差異に関する情報は、ユーザが差異を選択したビュー内にだけ、又は1つ又は複数の追加ビュー内(例えばすべてのビュー内)に表示され得る。例えば、ユーザがキャンバス上のノードと相互作用する(例えば、「Preprocess Old」部品604をクリックすることにより)と、当該ノードのサブエントリがナビゲーションツリー上に表示され得、当該ノードの特徴の表がノードレベルビュー内に表示され得る。キャンバス、ナビゲーションツリー、及びノードレベルビューはすべて差異ビューア600内で同時に可視であり得、これにより、ユーザが選択ノードの差異に関する高位差異と詳細との両方の完全な理解を得ることを可能にする。
【0073】
いくつかの例では、ユーザがノードと行う相互作用のタイプが、当該ノードに関して表示される情報を制御する。例えば、ノードの単一クリックが、当該ノードの特徴(例えばパラメータ又は属性)をノードレベルビュー650内に表示させ得る。サブグラフの2度クリックは、キャンバス内のサブグラフを拡張し得、サブグラフの属性及びパラメータをノードレベルビュー650内に表示させ、ナビゲーションツリー620内のサブグラフのエントリを拡張させ得る。様々なタイプのユーザ相互作用に応答して表示される情報の他の例も提供され得る。
【0074】
いくつかの例では、ユーザは、第1及び第2のバージョン600、602間のあらゆる差異に関する情報を見るために、各差異を連続的に辿り得る。いくつかの例では、ユーザは、パラメータ値に対する変更又はノードの追加又は削除などのグラフの実行に影響を与え得る差異だけを表示することを選択し得る。いくつかの例では、ユーザは、グラフ実行に影響を与え得る差異とグラフ実行に影響を与えない差異との両方を含むすべての差異(例えばコメントと凡例に対する差異、著者及びバージョン属性などの属性の属性値に対する変更、ノードの配置のxy座標に対する変更、フォント変更、又は他の差異)を表示することを選択し得る。
【0075】
図11を参照すると、第1のグラフ800と第2のグラフ802間の差異を解析するグラフ解析システム80は、各グラフ800、802の仕様を解析するグラフ解析器エンジン804を含む。グラフ解析器エンジン804は、第1のグラフ800内のどのノード(例えば部品又はデータセット)が第2のグラフ802内のノードに対応するかを判断する。対応ノード同士は、必ずしも同一ではなく、グラフ間で修正され得るが、通常、両方のグラフ内の同じノードと見なされるには十分に似ている。
【0076】
いくつかの例では、グラフ解析器エンジン804は、ノードのタイプ(例えばデータ処理部品対データセット、又はデータ処理部品又はデータセットの特定タイプ)、ノードの名前、ノードの一意的識別子、又はノードに関連する他のメタデータのうちの1つ又は複数などノードに関連するメタデータに基づき対応ノードを特定する。いくつかの例では、グラフ解析器エンジン804は、ノード内への又はそこからのデータフローに関連する情報(例えば、ポートの名前又は数、ノード内へのデータフローの名前又はソース、ノードからのデータフローの名前又は送信先、又はノード内への又はそこからのデータフローに関連する他の情報など)に基づき対応ノードを特定する。いくつかの例では、グラフ解析器エンジン804は、特定ノードが他のノードに対しグラフ内のどこに位置するか(例えば、どのノードが特定ノードの上流又は下流側に存在するか)などのトポロジー情報に基づき対応ノードを特定する。いくつかの例では、グラフ解析器804は、キャンバス上のグラフのグラフィック表現内のノードの位置(例えばxy座標)に基づき対応ノードを特定する。しかし、いくつかの例では、グラフ解析器804は対応ノードを特定する際に位置情報を使用しない(例えば、キャンバス上のノードの位置はノードの機能又はノードを含むグラフに影響しないので)。
【0077】
第2のグラフ802内に対応ノードが存在しない第1のグラフ800内のいかなるノードも、削除されたノードとしてグラフ解析器エンジン804により特定される。第1のグラフ800内に対応ノードが存在しない第2のグラフ802内のいかなるノードも、追加されたノードとしてグラフ解析器エンジン804により特定される。第1及び第2のグラフ800、802間で対応するノードは、ノードが修正されたかどうかを判断するためにグラフ解析器エンジン804により解析される。可視化エンジン810は、第1及び第2のグラフ800、802間の差異のグラフィック表現のレンダリングを可能にするデータを生成する。
【0078】
いくつかの例では、グラフ解析器エンジン804は、グラフの実行に影響を与え得る特徴とグラフの実行に影響を与えない特徴との両方を解析し得る。グラフの実行に影響を与える特徴は、例えばパラメータ表現又はパラメータ値などのパラメータを含み得る。グラフの実行に影響を与えない特徴は、例えば属性値(例えば著者属性、名前属性、バージョン属性、又は他の属性)、コメント、凡例、フォーマット(例えばフォント)、キャンバス上の部品の位置、又は他の特徴を含み得る。いくつかの例では、グラフ解析器エンジン804は、グラフの実行に影響を与え得る特徴だけを解析し得、グラフの実行に影響を与えない特徴を無視し得る。
【0079】
2つの対応ノードのそれぞれに関連するパラメータの解析は、パラメータ(例えば第2のグラフのノード内に存在するが第1のグラフの対応ノード内に存在しないパラメータ)が追加されたか、又はパラメータ(例えば第1のグラフのノード内に存在するが第2のグラフの対応ノード内に存在しないパラメータ)が除去されたかを特定し得る。パラメータの解析は、パラメータを規定する表現の解析、パラメータの値の解析、又はその両方を含み得る。
【0080】
いくつかの例では、2つの対応ノードのそれぞれに関連するパラメータの解析は、対応パラメータの表現が修正されたかどうかを判断し得る。パラメータの表現を解析するために、パラメータ解析は各ノードに対応するソースコードに対し行われ得る。いくつかの例では、パラメータ解析は、グラフ800、802がインスタンス化されそしてすべてのパラメータが解決された後(例えば、各グラフがノードの仕様を参照してパラメータファイルを呼び出した後)に行われ得る。パラメータ解析がグラフインスタンス化後に行われると、グラフ解析器エンジン804はパラメータ値同士を比較する。
【0081】
いくつかの例では、2つの対応ノードのそれぞれに関連するパラメータの順序がグラフ解析器エンジン804により解析され得;いくつかの例では、パラメータの順序はグラフ解析器エンジンにより無視される。いくつかの例では、依存性解析のためにだけ使用されるパラメータの表現又は値がグラフ解析器エンジン804により解析され得;いくつかの例では、これらのパラメータの表現又は値はグラフ解析器エンジンにより無視される。
【0082】
いくつかの例では、グラフ解析器エンジン804は、グラフにより参照される外部ファイルを解析し得る、又はグラフ800、802により参照されるファイル間のいかなる差異も特定することを計画する。いくつかの例では、レコードフォーマットファイル(例えば、.dmlファイル)、変換ファイル(例えば、.xfrファイル)、又はそのコンテンツがグラフの実行に影響を与え得る他のタイプのファイルなどのいくつかのタイプのファイルだけがグラフ解析器エンジン804により解析される。グラフ又はプランによる処理のためのデータを提供するファイルなどの他のファイルは考慮されない。
【0083】
いくつかの例では、解析されるグラフ又はプランは解析に先立って共通ファイルフォーマットへアップグレードされ得る。例えば、グラフ又はプランは、グラフ又はプランの現ファイルフォーマットへ又は最新のファイルフォーマットへアップグレードされ得る。いくつかの例では、グラフ又はプランはそれ自身のオリジナルファイルフォーマットで解析され得る。比較のために(例えばファイルフォーマット変更により生じた又はそうでなければそれに関係する差異を特定するために)オリジナルファイルフォーマットを保持することが有用であり得る。
【0084】
いくつかの例では、グラフ解析器エンジン804による行われる解析の範囲はデフォルトで設定され得る、例えば、グラフ解析器エンジン804はグラフ実行に影響を与える差異だけを考慮するためにデフォルトで設定され得る。いくつかの例では、ユーザが、グラフ実行エンジンによる行われる解析の範囲を規定し得る。
【0085】
いくつかの例では、グラフ間の差異のグラフィック表現はソフトウェア開発プラットフォームに一体化され得る。ソフトウェア開発プラットフォームは、例えばグラフなどのソフトウェアを開発又は維持するソフトウェア開発者により使用され得る。開発者は、例えば自身に最新変更について気付かせ、別の開発者の最新変更を精査するために、又は何故グラフに対する修正が成功しなかったのかの潜在的理由を特定するために、又は他の目的のために、グラフの旧バージョンとグラフの更新バージョンとの間の差異のグラフィック表現を活用し得る。
【0086】
いくつかの例では、グラフ間の差異のグラフィック表現はソフトウェア管理プラットフォームに一体化され得る。ソフトウェア管理プラットフォームは、例えばグラフなどのソフトウェアの開発又は維持を監督する管理者により使用され得る。管理者は、例えばソフトウェア開発進捗を観察する、追加開発を必要とするグラフの部分を特定する、トラブルシュートを支援する、又は他の目的のために、グラフの旧バージョンとグラフの更新バージョンとの間の差異のグラフィック表現を活用し得る。
【0087】
いくつかの例では、グラフ間の差異のグラフィック表現は、処理環境の様々な部品の統合管理を容易にする運用コントロールセンタに統合され得る。コントロールセンタは、コンピュータ装置、アプリケーション、又はジョブなどの処理環境の部品の状態を監視及び表示し得、オペレータが処理環境の部品を能動的に管理することを可能にし得る。例示的コントロールセンタの説明は参照によりその全体を本明細書に援用する米国特許出願第14/690,114号に見出され得る。
【0088】
図12を参照すると、処理環境900は、データを処理するためにユーザ902により又はその代わりに操作され得るハードウェア及びソフトウェア部品を含む。ハードウェア部品は、時に「ホスト」と呼ぶサーバなどのハードウェアコンピュータ装置904を含み得る。サーバのそれぞれは、1つ又は複数のデータ処理装置と、1つ又は複数のデータ処理装置により実行される命令を格納するための1つ又は複数の格納装置とを含み得る。処理環境900のソフトウェア部品はアプリケーション906、ジョブ908、又はサービス910を含み得る。ソフトウェア部品はそれぞれ、1つ又は複数のホスト904上で実行する、又はそれらに影響を与える。
【0089】
アプリケーション906は、例えばデータ処理のためにフレームワークを設定すること、データ処理フレームワークを実行すること、又は処理されたデータを解析することを含む様々なデータ処理機能を行うために使用され得るソフトウェア製品などのコンピュータプログラムである。アプリケーションは、文書処理などの特定ドメイン内のタスクを実行すること又はユーザが実行するのを助けることを標的とするプログラムであり得る。1つ又は複数のジョブ908は、処理環境900の1つ又は複数のホスト904、1つ又は複数のアプリケーション906、又はその両方を使用して行われ得る。ジョブ908はデータを処理するために実行される一組の1つ又は複数の操作である。ジョブの例はグラフベース処理環境内のグラフ又はプランである。
【0090】
いくつかの例では、アプリケーション906又はジョブ908は1つ又は複数のサービス910を利用し得る。サービス910は、アプリケーション又はユーザの代わりに行われる特定組のタスク(サービス)を標的とする長期アプリケーション(例えばホスト又はサーバが実行している限り実行されることが期待されるアプリケーション)などのアプリケーションの特別なケースである。サービス910により行われ得る例示的タスクは、例えば事象をログ記録すること又はユーザインターフェースを介し事象を可視化することを含む。例示的サービス910は、例えばデータベース912、キュー914、ファイル916、アプリケーションサーバ918、又は別のタイプのサービスを含む。
【0091】
統合コントロールセンタ950は、処理環境900のハードウェア及びソフトウェア部品のリアルタイム状態を監視する。いくつかの例では、コントロールセンタ950はホスト904のうちの1つの上で実行し得;いくつかの例では、コントロールセンタ950は別個のコンピュータ装置952上で実行する。例えば、コントロールセンタ950は、ユーザ902がアクセスしジョブ908がユーザ902の代わりに実行されるホスト904及びアプリケーション906の状態を監視し得る。処理環境900の部品に関するリアルタイム状態情報954がユーザインターフェース956上に表示され得る。状態情報954は、ホスト904、アプリケーション906、ジョブ908、サービス910、又は他の部品などの処理環境900の個々の部品間の関係をハイライトするように統合されたやり方で表示され得る。状態情報954は、1つ又は複数の部品の状態又は処理環境の個々の部品の状態間の関係を表示するように表示され得る。リアルタイム状態情報及び歴史的状態メトリック及びデータ処理メトリック(例えば、処理されたレコードの数、処理時間、処理期間に関係するメトリック、又は他のメトリック)がコントロールセンタを介し利用可能かもしれない。ユーザインターフェース956を介し、ユーザ902は、処理環境の1つ又は複数の部品に関係する行動を取ってもよいし、処理環境の1つ又は複数の部品に関係する所定発生に応答して自動的に実行される行為を規定してもよい。
【0092】
ホスト904のために監視及び表示され得るリアルタイム状態メトリックの例は、例えば以下のものを含む:
●ホストの運転状態:例えば、ホストは、オンラインか、エラー又は警告状態によりオンラインか、オフラインか。いくつかのケースでは、コントロールセンタ950は、ホストの運転状態に関係する詳細(ホストが計画保守のためにオフラインか、又は障害(例えばディスク故障))によりオフラインかなど)を監視し得る。
●ホストの全中央処理ユニット(CPU)使用率。
●ホストの全利用可能メモリ又は使用されたメモリ。
●ホストに関連するファイルシステムの数。
●ファイルシステムの全利用可能ディスクスペース又は使用されたディスクスペース。
●ホスト上で実行しているジョブの数。
●ホスト上で実行しているジョブのそれぞれの識別子。
●ホスト上で実行しているジョブのそれぞれによるCPU使用率、メモリ使用率、又はその両方。
●ホスト上で実行しているアプリケーションの数。
●ホスト上で実行しているアプリケーションのそれぞれの識別子。
●ホスト上で実行しているアプリケーションのそれぞれによるCPU使用率、メモリ使用率、又はその両方。
●ユーザによりライセンスされたCPU又はメモリの最大量に対する特定ユーザ902のCPU使用率、メモリ使用率、又はその両方。
●ホスト上に格納されたライセンスキーの状態(例えば有効期限)及び当該ライセンスキーに関連するアプリケーションの識別子。
●オペレーティングシステムのパラメータ
●CPUの数
●CPUクラス
●CPU速度
【0093】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ902は、コントロールセンタ950により監視されるカスタム状態メトリックを規定し得る。
【0094】
コントロールセンタ950はまた、ホスト904の歴史的状態メトリックの追跡を可能にする情報を維持し得る。例えば、コントロールセンタ950は、ホスト904が所定期間にわたってオフラインだった時間の割合、ホスト904が所定期間にわたって経験したエラー又は警告状態の数、又は歴史的運転状態の他の指標などのホストの歴史的運転状態の追跡を可能にする情報を維持し得る。コントロールセンタ950は、ホスト904上で行われるジョブ908の平均又は総数、ホスト904上で動作するアプリケーション906の平均又は総数、ホスト904の平均又は最大CPU負荷、ホスト904の平均又は最小利用可能メモリ、又はホスト904の歴史的状態の他の指標の追跡を可能にする情報を維持し得る。このタイプの情報の一部はホスト904の1つ又は複数のログファイル内に見出され得るが、コントロールセンタ950により提供される統合表示は情報をより容易にアクセス可能にし、そしてより容易に理解されるようにし、したがって、特定技術知識の少ない人がホスト904の歴史的状態メトリックへアクセスして解析することを可能にする。
【0095】
製品又はサービスのための監視及び表示され得るリアルタイム状態メトリックの例は、例えば以下のものを含む:
●製品又はサービスのライセンスキーの状態:例えば有効である、有効であるが期限切れに近づいている、又は期限切れである。
●製品又はサービスのライセンスキーが発行されるキーサーバの識別子。
●製品又はサービスが動作しているホストの識別子。
●製品又はサービスを利用するジョブの数。
●製品又はサービスを利用するジョブの識別子。
●製品又はサービスの構成ファイルの位置。
●製品又はサービスのログファイルの位置。
●製品又はサービスにより利用される任意のサービスの識別子。
●製品又はサービスにより利用されるサービスのそれぞれの状態(例えば、オンラインか、エラー又は警告状態によりオンラインか、オフラインか)。
●製品又はサービスに関係する任意の部品の識別子及び状態。
【0096】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ902は、コントロールセンタ950により監視されるカスタム状態メトリックを規定し得る。
【0097】
ジョブ908のための監視及び表示され得るリアルタイム状態メトリックの例は例えば以下のものを含む:
●ジョブのリアルタイム運転状態:例えば、ジョブが実行されているか、停止又は休止されたか、実行を待っているか、完了したか。
●ジョブの開始時間、経過時間(進行中であれば)、又は終了時間(完成していれば)。
●ジョブの合計経過時間がジョブの標的処理時間(例えばサービスレベルアグリーメント(SLA:service level agreement))を満たすかどうか。
●ジョブが実行されているホストの識別子。
●ジョブによるCPU使用率。
●ジョブにより利用される任意の製品又はサービスの識別子。
●ジョブによるデータ出力のタイプ。
●ジョブによるデータ出力の位置。
●ジョブの実行中に処理されるレコードの数。
●ジョブの実行中に拒絶されるレコードの数。
●ジョブにより利用されるサービスのそれぞれの状態。
【0098】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ902は、コントロールセンタ950により監視されるカスタム状態メトリックを規定し得る。
【0099】
コントロールセンタ950はまた、ジョブ908の歴史的状態メトリックの追跡を可能にする情報を維持し得る。例えば、コントロールセンタ950は、平均実行時間、平均CPU使用率、拒絶されたレコードの平均数、又は所与のタイプのジョブの他の歴史的メトリックの追跡を可能にする情報を維持し得る。
【0100】
ジョブに関係し採用され得る行動の例は例えば以下のものである:
●ジョブを開始又は停止する。
●ジョブをスケジューリングする。
●ジョブを再実行する。
●実行されないようにジョブを使用不能にする。
●実行されるようにジョブを使用可能にする。
●ジョブを保留にする。
●ジョブを保留から解放する。
●ジョブに関する問題を調査し解決する。
●失敗したジョブを、それに依存するジョブがとにかく実行されるように無視する。
●任意の先行又は後行ジョブを見てそれへナビゲートする。
●ジョブの任意のこれまでの実行を見てそれへナビゲートする。
●親ジョブ又は任意の子ジョブを見てそれへナビゲートする。
●ジョブにより使用されているキューを見る。
●ジョブにより使用されているファイルを見る。
●ジョブにより使用されている資源を見る。
●ジョブにより使用されている製品及びサービスを見る。
【0101】
コントロールセンタはまた、上に挙げたもの以外の行為を可能し得る。
【0102】
コントロールセンタはジョブにより使用されるキュー914を監視し得る。いくつかの実施形態では、ジョブは、データ処理部品間で渡されるデータに依存するので、キュー状態を知ることでユーザにジョブの全体性能への洞察を与える。
【0103】
コントロールセンタはジョブにより使用される資源を監視し得る。資源はプランにより使用される処理環境のいくつかの態様を表す。例えば、ハードウェア部品、手段、又はプログラムオブジェクは資源として規定され得る。CPU時間、プロセッサユニット、FTP(ファイル転送プロトコル:file transfer protocol)ポート、ディスク容量、ファイルカウント、入力ストリーム、及び事象トリガ、及びJVM(Java仮想マシン:Java virtual machine)プールは資源の例である。資源を規定する目的は処理環境内の要求と容量とをバランスすることである。具体的には、資源は、システムにかかる負荷に最大限度及び順序を課すために使用され得る。
【0104】
ユーザインターフェース956は、コントロールセンタ950により監視される状態情報の一部又はすべてを表示し、ユーザに処理環境900の1つ又は複数の部品に関係する行動を取らせる。一般的に、状態情報は、処理環境900の様々な部品間の関係をハイライトするコヒーレントでかつ統合されたやり方でユーザインターフェース956上に表示されリンクされる。処理環境の各個々の部品に関する情報を孤立して表示するのではなく、この表示パラダイムは、処理環境の部品間のオーバラップの可視でかつアクセス可能な洞察を行う。この表示パラダイムにより、特定部品に関する性能問題の潜在的要因と他の部品に関する性能問題の潜在的影響との両方が理解され対処され得る。
【0105】
例えば、コントロールセンタ950のユーザインターフェース956上に提供される情報の統合表示により、ユーザ902は、特定ホスト904が維持のためにオフラインで採用されれば影響を受けるジョブ908を特定し得る。逆に、ユーザ902は、いくつかのジョブ908が期待より遅いことに気付き得る。ユーザインターフェース956を介し、ユーザ902は、これらのジョブ908がすべて同じホスト904上で実行しているということと、当該ホスト904はCPU制約又はI/O(入出力)制約であるということとを判断することができるかもしれない。いずれの場合も、ユーザ902は、いかなる潜在的性能問題も軽減するための又は実際の性能問題を解決するための行動を取り得る。例えば、ユーザインターフェース956を介し、そしてホスト904が計画保守のためにオフラインにされるという通知に応答して、ユーザ902は、影響を受けたジョブ908、又はこれらジョブ908により利用されるアプリケーション906、又はその両方ともを異なるホスト908上に一時的に移行し得る。CPU制約又はI/O制約ホスト904の例では、ユーザは当該ホスト904に関する潜在容量問題についてシステム管理者に警告し得る。
【0106】
いくつかの例では、グラフに関連するジョブが行われると、運用コントロールセンタはグラフのソースコードのバージョンを記録する。ジョブが成功裡に終了しなければ、当該ジョブに関連するグラフが実行され、グラフ(例えば、前に正常に完了したジョブに関連するグラフ)の別のバージョンと比較され得る。グラフの2つのバージョン間の差異のグラフィック表現は、ジョブを失敗させたかもしれない変化したものをオペレータが容易に理解するのを支援し得る。
【0107】
いくつかの例では、グラフの2つのバージョン間の比較は、ユーザ入力(失敗したジョブに関するより多くの情報を取得するためのユーザによる要求などの)に応答して行われ得る。例えば、ユーザはユーザインターフェース956を介し又はジョブの失敗した状態を示す警報又は通信を介し比較機能へアクセスし得る。
【0108】
図13を参照すると、運用コントロールセンタインターフェース350の例では、ジョブウィンドウ352が、完了ジョブ、現在実行中のジョブ、又は将来実行するようにスケジュールされたジョブなどのジョブに関する詳細へのアクセスを提供する。ジョブウィンドウ352から、比較行為354は、それを元にジョブが実行されたグラフのバージョンと現バージョン又は旧バージョンなどのグラフの別のバージョンとが比較されることを可能にする。
図12の例では、ジョブウィンドウ352は、特定グラフに基づき成功裡に実行された最新ジョブに関する詳細を提供し、比較行為354はグラフの当該バージョンとグラフの現バージョンとを比較する。このような比較は、例えば何故グラフの現バージョンに基づき実行されているジョブが最早正常に完了することができないのかを理解するために有用であり得る。このような比較はまた、例えばグラフが初期バージョンに対して修正されたかどうかを判断するために有用であり得る。
【0109】
図14を参照すると、差異をグラフィック的に表す例示的手法では、第1のコンピュータプログラム(例えば第1のグラフ)の仕様と第2のコンピュータプログラム(例えば第2のグラフ)の仕様とが比較される(300)。比較に基づき、第1のコンピュータプログラムと第2のコンピュータプログラムとの間の1つ又は複数の差異が特定される(302)。1つ又は複数の差異は、第1のグラフ内に存在するが第2のグラフ内に存在しないノードを含み得る。1つ又は複数の差異は、第2のグラフ内の第2のノードに対応する第1のグラフ内の第1のノードであって第2のノードの対応する特徴とは異なる特徴(パラメータ値又はパラメータの表現など)を有する第1のノードを含み得る。特定された差異のグラフィック表現はレンダリングされる(304)。グラフィック表現はユーザ相互作用に応答する。
【0110】
図15は、差異のグラフィック表現の技術が使用され得るデータ処理システム1000の例を示す。システム1000は、格納装置又はオンラインデータストリームへの接続などのデータの1つ又は複数のソース(複数のソースのそれぞれは、データを様々なフォーマット(例えばデータベース表、スプレッドシートファイル、フラットテキストファイル、又はメインフレームコンピュータにより使用される固有フォーマット)のうちの任意のフォーマットで格納又は提供し得る)を含み得るデータソース1002を含む。データは記号論理学データ、解析データ、又は機械データであり得る。実行環境1004は前処理モジュール1006及び実行モジュール1012を含む。実行環境1004は、例えばUNIXオペレーティングシステムの一バージョンなどの好適なオペレーティングシステムの制御下で1つ又は複数の汎用コンピュータ上でホストされ得る。例えば、実行環境1004は、複数の中央処理ユニット(CPU)又はプロセッサコアを使用するコンピュータシステムの構成を含むマルチプルノードパラレルコンピュータ環境を含み得、これは、ローカル(例えば、対称型マルチ処理(SMP:symmetric multi-processing)コンピュータ等のマルチプロセッサシステム)、又はローカル分散型(例えば、クラスタ又は超並列処理(MPP:massively parallel processing)として結合される複数プロセッサ)システム、又はリモート又はリモート分散型(例えば、ローカルエリアネットワーク(LAN:local area network)及び/又は広域ネットワーク(WAN:wide-area network)を介し結合される複数プロセッサ)、又はその任意の組み合せのいずれかである。
【0111】
データソース1002を提供する格納装置は、例えば、実行環境1004をホストするコンピュータへ接続された格納媒体(例えば、ハードドライブ1008)上に格納された実行環境1004に対してローカルであってもよいし、例えばリモート接続(例えばクラウドコンピュータインフラストラクチャにより提供される)上で実行環境1004をホストするコンピュータと通信するリモートシステム(例えば、メインフレームコンピュータ1010)上でホストされる実行環境1004に対してリモートであってもよい。
【0112】
前処理モジュール1006は、データソース1002からデータを読み出し、実行のためのデータ処理アプリケーションを準備する。例えば、前処理モジュール1006は、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションを、実行環境1004へアクセス可能なデータ格納システム1016から及び/又はそれへ格納及び/又はロードし、実行のためのデータ処理アプリケーションを準備するために他のタスクを実行し得る。
【0113】
実行モジュール1012は、一組のデータを処理しこの処理から生じた出力データ1014を生成するために前処理モジュール1006により準備されるデータ処理アプリケーションを実行する。出力データ1014は、データソース1002内又は実行環境1004へアクセス可能なデータ格納システム1016内に戻され格納されてもよいし、そうでなければ使用されてもよい。データ格納システム1016もまた、開発環境1018へアクセス可能であり、ここで、開発者1020は、実行モジュール1012により実行されるデータ処理アプリケーションを設計及び編集することができる。開発環境1018は、いくつかの実施形態では、頂点間で方向付けられたリンク(作業要素(すなわちデータ)の流れを表す)により接続された頂点(データ処理部品又はデータセットを表す)を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、このような環境は参照により本明細書に援用する米国特許出願第2007/0011668号:題名「Managing Parameters for Graph-Based Applications」に詳細に説明されている。このようなグラフベース計算を実行するためのシステムは参照により本明細書に援用する米国特許第5,966,072号:題名「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に説明されている。このシステムに従って作製されるデータフローグラフは、グラフ成分により表される個別処理内に情報を入れる及びそこから情報を得、処理間で情報を移動し、そして処理の実行順序を規定するための方法を提供する。本システムは、任意の利用可能方法からプロセス間通信方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従う通信経路は、TCP/IP又はUNIXドメインソケットを使用してもよいし、処理間でデータ渡すために共有メモリを使用してもよい)。
【0114】
前処理モジュール1006は、データソース1002を具現化し得る多様なタイプのシステム(様々な形式のデータベースシステムを含む)からデータを受信し得る。データは、恐らく空値を含むそれぞれのフィールド(「属性」又は「列」とも呼ばれる)の値を有するレコードとして編成され得る。データソースからデータを最初に読み出す際、前処理モジュール1006は通常、当該データソース内のレコードに関するいくつかの初期フォーマット情報により開始する。いくつかの状況では、データソースのレコード構造は当初知られていないかもしれなく、その代わりにデータソース又はデータの解析後に判断され得る。レコードに関する初期情報は、例えば別個の値を表すビットの数、レコード内のフィールドの順序、及びビットにより表される値のタイプ(例えばストリング、符号付き/符号無し整数)を含み得る。
【0115】
上述の差異のグラフィック表現の手法は好適なソフトウェアを実行するコンピュータシステムを使用して実施され得る。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、少なくとも1つのデータ格納システム(揮発性及び/又は不揮発性メモリ及び/又は格納要素を含む)、少なくとも1つのユーザインターフェース(少なくとも1つの入力装置又はポートを使用することにより入力を受信するための、そして少なくとも1つの出力装置又はポートを使用することにより出力を提供するための)を含む1つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム(分散クライアント/サーバ又はグリッドなどの様々なアーキテクチャのものであり得る)上で実行する1つ又は複数のコンピュータプログラム内に手順を含み得る。ソフトウェアは、例えばグラフの設計、構成、及び実行に関係するサービスを提供するより大きなプログラムの1つ又は複数のモジュールを含み得る。プログラムのモジュール(例えばグラフの要素)は、データレポジトリ内に格納されたデータモデルに準拠するデータ構造又は他の編成されたデータとして実装され得る。
【0116】
ソフトウェアは、CD-ROM又は他のコンピュータ可読媒体(例えば、汎用又は特殊用途コンピュータシステム又は装置により可読な)などの有形な非一時的な媒体上で提供されてもよいし、ネットワークの通信媒体上で、それが実行されるコンピュータシステムの有形な非一時的媒体へ配送されてもよい(例えば、伝播信号内に符号化されてもよい)。処理の一部又はすべては、特殊用途コンピュータ上で、又はコプロセサ又はフィールドプログラマブルゲートアレイ(FPGA:field-programmable gate array)又は特定用途向け集積回路(ASIC:application-specific integrated circuit)などの専用ハードウェアを使用することにより行われ得る。処理は、分散されたやり方で実施され得、ここでは、ソフトウェアにより規定された計算の様々な部分が様々なコンピュータ要素により行われる。このような各コンピュータプログラムは好適には、本明細書で説明された処理を行うために格納装置媒体がコンピュータにより読み出されると、コンピュータを構成及び操作するための汎用又は特殊用途プログラム可能コンピュータによりアクセス可能な格納装置のコンピュータ可読格納媒体(例えば固体メモリ又は媒体、又は磁気又は光学媒体)上に格納される又はそれへダウンロードされる。本発明システムはまた、コンピュータプログラムにより構成される有形な非一時的媒体として実現されると考えられ得、ここでは、そのように構成された媒体は、コンピュータシステムを、本明細書に記載の処理のうちの1つ又は複数を実行するように特定及び所定やり方で動作させる。
【0117】
本発明の多くの実施形態が説明された。それにもかかわらず、これまでの説明は、例示することを意図しているが、添付の請求の範囲により規定される本発明の範囲を制限しないように意図されているということを理解すべきである。したがって、他の実施形態もまた以下の特許請求の範囲に含まれる。例えば、様々な修正が本発明の範囲から逸脱することなく行われ得る。加えて、上に記載されたことのいくつかは、順序に無関係であってもよく、したがって記載されたものと異なる順序で実行され得る。