JP2023071664A - Format-specific data processing operation - Google Patents

Format-specific data processing operation Download PDF

Info

Publication number
JP2023071664A
JP2023071664A JP2023015892A JP2023015892A JP2023071664A JP 2023071664 A JP2023071664 A JP 2023071664A JP 2023015892 A JP2023015892 A JP 2023015892A JP 2023015892 A JP2023015892 A JP 2023015892A JP 2023071664 A JP2023071664 A JP 2023071664A
Authority
JP
Japan
Prior art keywords
data
graph
format
version
computer program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023015892A
Other languages
Japanese (ja)
Inventor
エー. イスマン,マーシャル
A Isman Marshall
ジョイス,ジョン
Joyce John
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of JP2023071664A publication Critical patent/JP2023071664A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Abstract

PROBLEM TO BE SOLVED: To improve format-specific data processing operations.
SOLUTION: A method includes analyzing, by a processor, a first version of a computer program, the analyzing including identifying a first process included in the first version of the computer program, the first process configured to perform an operation on data having a first format, and generating, by the processor, a second version of at least part of the computer program, including omitting the first process, and including in the second version of the at least part of the computer program one or more second processes configured to perform a second operation on data of a second format different from the first format, in which the second operation is based on the first operation.
SELECTED DRAWING: Figure 1
COPYRIGHT: (C)2023,JPO&INPIT

Description

優先権の主張
本出願は、2016年6月3日出願の米国特許仮出願第62/345,217号、及び2017年2月15日出願の米国特許出願第15/433,467号の優先権を主張し、その両方の内容全体を参考としてここに組み込む。
PRIORITY CLAIM This application claims priority from U.S. Provisional Application No. 62/345,217, filed June 3, 2016, and U.S. Patent Application No. 15/433,467, filed February 15, 2017. and the entire contents of both are incorporated herein by reference.

背景
複雑な計算は、有向グラフ(「データフロー・グラフ」と呼ばれる)を用いたデータ・フローとして表すことのできる場合が多く、この計算の構成要素は、このグラフの頂点に関連付けられ、データは、グラフのリンク(弧、縁部)に対応する各構成要素間を流れる。各構成要素は、1つ又は複数の入力ポートでデータを受信し、このデータを処理し、1つ又は複数の出力ポートからデータを提供するデータ処理構成要素、及びデータ・フローの送信側又は受信側の役割を果たすデータセット構成要素を含むことができる。
Background Complex computations can often be represented as data flows using a directed graph (called a "dataflow graph"), the components of this computation being associated with the vertices of this graph, and the data being Flow between each component corresponding to a link (arc, edge) of the graph. Each component is a data processing component that receives data at one or more input ports, processes this data, provides data from one or more output ports, and a sender or receiver of data flows. It can contain data set components that play a supporting role.

概要
一態様では、方法は、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析することであって、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットのデータに第1の動作を実行するように構成されることと、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成することであって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むことを含み、この第2の動作が第1の動作に基づく。
Overview In one aspect, a method includes analyzing, by a processor, a first version of a computer program to identify a first process included in the first version of the computer program; A process configured to perform a first operation on data in a first format; and generating, by a processor, a second version of at least a portion of a computer program, comprising: one or more second processes configured to perform a second operation on data in a second format different from the first format, including omitting the process of Including in a second version of at least a portion, the second action being based on the first action.

各実施形態は、以下の特徴のうちの1つ又は複数を含むことができる。 Implementations can include one or more of the following features.

第1のプロセスを識別することは、第1の動作がデータのフォーマットに依存している第1のプロセスを識別することを含む。 Identifying the first process includes identifying the first process whose first operation depends on the format of the data.

第1のプロセスを識別することは、第2のフォーマットのデータに第1の動作を実行することができない第1のプロセスを識別することを含む。 Identifying the first process includes identifying the first process incapable of performing the first operation on data in the second format.

この方法は、第1のプロセスによって処理されるデータのフォーマットを決定することを含む。第1のプロセスを識別することは、この第1のプロセスによって処理されるデータのフォーマットを有するデータに、第1の動作を実行することができない第1のプロセスを識別することを含む。 The method includes determining the format of data to be processed by the first process. Identifying the first process includes identifying the first process incapable of performing the first operation on data having a format of data processed by the first process.

第1のプロセスを識別することは、コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、この第1のデータ処理要素は、第1のプロセスを実行するように構成される。コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のプロセスを含むことは、コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のデータ処理要素を含むことを含み、この第2のデータ処理要素は、1つ又は複数の第2のプロセスを実行するように構成される。 Identifying the first process includes identifying a first data processing element of the computer program, the first data processing element configured to execute the first process. Including one or more second processes in a second version of at least a portion of the computer program includes one or more second data processing in the second version of at least a portion of the computer program. The second data processing element is configured to execute one or more second processes.

第1のフォーマットは、データ・タイプを含む。 A first format includes a data type.

第1のフォーマットは、データ要素のサイズを含む。 The first format contains the size of the data elements.

第1のプロセスは、第1のレコード・フォーマットのデータ・レコードに第1の動作を実行するように構成され、1つ又は複数の第2のプロセスは、第2のレコード・フォーマットのデータ・レコードに第2の動作を実行するように構成される。第1のレコード・フォーマットは、各レコードでのフィールドの名前を含む。 A first process is configured to perform a first operation on data records in a first record format, and one or more second processes are configured to perform data records in a second record format. is configured to perform the second operation on the A first record format contains the names of the fields in each record.

この方法は、ユーザ・インターフェースにおいて、1つ又は複数の動作の第1のセットの識別子を提示することを含む。 The method includes presenting an identifier of a first set of one or more actions in a user interface.

コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成することは、このコンピュータ・プログラムのこの部分のコピーを生成することを含む。 Generating a second version of at least a portion of a computer program includes generating a copy of this portion of the computer program.

この方法は、コンピュータ・プログラムのこの部分のコピーを修正して、第1のプロセスを省き、1つ又は複数の第2のプロセスを含むことを含む。 The method includes modifying the copy of this portion of the computer program to omit the first process and include one or more second processes.

この方法は、コンピュータ・プログラムの第2のバージョンを実行することを含む。 The method includes executing a second version of the computer program.

1つ又は複数の第2のプロセスは、オーバレイ指定によって定義される。コンピュータ・プログラムの第2のバージョンを生成することは、コンピュータ・プログラムの第1のバージョン及びオーバレイ指定に基づいて第2のバージョンを生成することを含む。このオーバレイ指定は、第1のプロセスの上流のプロセス及び第1のプロセスの下流のプロセスのうちの1つ又は複数を識別する。この方法は、第1のプロセスを定義する実行可能コードの解析に基づいて、第1のプロセスを識別することを含む。 One or more secondary processes are defined by overlay specifications. Generating the second version of the computer program includes generating a second version based on the first version of the computer program and the overlay specification. The overlay designation identifies one or more of a process upstream of the first process and a process downstream of the first process. The method includes identifying a first process based on analysis of executable code defining the first process.

コンピュータ・プログラムはグラフを含む。第1のプロセスは、このグラフの第1の構成要素によって表される実行可能なプロセスであり、1つ又は複数の第2のプロセスは、グラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである。1つ又は複数の第2の構成要素は、グラフの上流構成要素からデータ・レコードを受信するように構成される。1つ又は複数の第2の構成要素は、グラフの下流構成要素にデータ・レコードを提供するように構成される。 A computer program includes a graph. A first process is an executable process represented by a first component of the graph and one or more second processes are represented by one or more second components of the graph. It is an executable process that One or more second components are configured to receive data records from upstream components of the graph. One or more second components are configured to provide data records to downstream components of the graph.

一態様では、システムは、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析するための手段であって、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成される手段と、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成するための手段であって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含む手段とを備え、この第2の動作が第1の動作に基づく。 In one aspect, a system is means for analyzing a first version of a computer program by a processor, the analyzing identifying a first process included in the first version of the computer program. means configured to perform a first operation on data having a first format; and generating a second version of at least a portion of a computer program by a processor. comprising omitting the first process and configured to perform a second operation on data having a second format different from the first format; in a second version of at least a portion of the computer program, the second operation being based on the first operation.

一態様では、システムは、メモリに結合されたプロセッサを備え、このプロセッサ及びメモリは、コンピュータ・プログラムの第1のバージョンを解析するように構成され、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するように構成され、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含み、この第2の動作が第1の動作に基づく。 In one aspect, a system comprises a processor coupled to a memory, the processor and memory configured to analyze a first version of a computer program, the analyzing comprising the first version of the computer program. wherein the first process is configured to perform a first operation on data having a first format, the version of at least a portion of the computer program configured to generate a second version, including omitting the first process, and configured to perform a second operation on data having a second format different from the first format One or more second processes are included in a second version of at least a portion of the computer program, the second operations being based on the first operations.

一態様では、持続的なコンピュータ読取り可能な媒体は、コンピューティング・システムが、コンピュータ・プログラムの第1のバージョンを解析するようにし、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するようにし、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むようにするための命令を記憶し、この第2の動作が第1の動作に基づく。 In one aspect, a persistent computer-readable medium causes a computing system to analyze a first version of a computer program, the analyzing included in the first version of the computer program. a second version of at least a portion of a computer program, the first process configured to perform a first operation on data having a first format; and omitting the first process, and configured to perform a second operation on data having a second format different from the first format. storing instructions for including the process of No. 2 in a second version of at least a portion of the computer program, the second action being based on the first action;

他の特徴及び利点は、以下の説明及び特許請求の範囲から明白になろう。 Other features and advantages will be apparent from the following description and claims.

図面の説明
グラフの例である。 グラフの例である。 グラフの例である。 オーバレイ指定の一例である。 ブロック図である。 流れ図である。 ブロック図である。 ブロック図である。 ブロック図である。 流れ図である。
Description of the drawing
It is an example of a graph. It is an example of a graph. It is an example of a graph. This is an example of overlay designation. It is a block diagram. It is a flow chart. It is a block diagram. It is a block diagram. It is a block diagram. It is a flow chart.

説明
グラフなどの実行可能なアプリケーションは、この実行可能なアプリケーションによって処理されるデータ・レコードの1つ又は複数の特定のフォーマットに特有の、1つ又は複数のプロセスを含むことができる。このようなプロセスは、1つ又は複数の特定のフォーマットのみのデータに動作を実行することができ、互いに異なるフォーマットのデータにこれらのプロセスを実行しようとすると、エラー又は不正確な処理につながる場合がある。ここで、データの1つ又は複数の特定のフォーマットに特有の、実行可能なアプリケーションのプロセスを識別するための手法について述べる。実行可能なアプリケーションが、互いに異なるフォーマットのデータに動作を実行できるようにするために、これらのフォーマット特有のプロセスが省略され、1つ又は複数の他のプロセスが含まれる実行可能なアプリケーションの第2のバージョンを生成することができる。置換プロセスと呼ばれることもある、これら他のプロセスは、省略されたフォーマット特有のプロセスによって実行される動作に基づいているが、互いに異なる1つ又は複数のフォーマットのデータに特有であり、又は任意のフォーマットのデータに動作を実行できる動作を実行することができる。実行可能なアプリケーションの第2のバージョンに置換プロセスを含めることにより、実行可能なアプリケーションは、この実行可能なアプリケーションの元のバージョンが構成されたフォーマットとは異なるフォーマットのデータを処理できるようになる。
Description An executable application, such as a graph, may include one or more processes that are specific to one or more particular formats of data records processed by the executable application. Such processes may perform operations on data of only one or more specific formats, and attempting to perform these processes on data of different formats may lead to errors or incorrect processing. There is Techniques for identifying executable application processes specific to one or more particular formats of data are now described. In order to allow executable applications to perform operations on data of different formats, a second form of executable application in which these format-specific processes are omitted and one or more other processes are included. version can be generated. These other processes, sometimes referred to as replacement processes, are based on operations performed by the omitted format-specific processes, but are specific to one or more formats of data that differ from each other, or any An operation can be performed that can perform an operation on the data in the format. Including the replacement process in the second version of the executable application enables the executable application to process data in a format different from the format in which the original version of the executable application was constructed.

置換プロセスは、オーバレイ指定で定義することができ、このオーバレイ指定は、元の実行可能なアプリケーション(第1のアプリケーションとも呼ばれることがある)とは別のファイルである。オーバレイ指定で定義された置換プロセスは、元のアプリケーションの一部分になることなく、アプリケーションの第2のバージョン(第2のアプリケーションとも呼ばれることもある)に追加することができる。たとえば、アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、1つ又は複数のプロセスが省略され、1つ又は複数の対応する置換プロセスが含まれる第2のアプリケーションを生成する。省略されると、第1のアプリケーションに含まれるプロセスが、第2のアプリケーションには含まれないことを意味する。対応する置換構成要素は、第2のアプリケーション、たとえば省略されたプロセスが第1のアプリケーションに配置されていた位置に挿入される。 A replacement process can be defined in an overlay specification, which is a separate file from the original executable application (sometimes referred to as the first application). A replacement process defined in an overlay specification can be added to a second version of an application (sometimes called a second application) without becoming part of the original application. For example, when an application is compiled, the compiler takes into account the overlay file and produces a second application in which one or more processes are omitted and one or more corresponding replacement processes are included. If omitted, it means that the processes contained in the first application are not contained in the second application. A corresponding replacement component is inserted at the location where the second application, eg, the omitted process, was located in the first application.

置換プロセスは、挿入の例である。挿入の他の例には、テスト・ソース及びプローブが含まれ、これらは又オーバレイ指定によって定義することができる。テスト・ソースは、実行可能なアプリケーションによる処理向けの、テスト・データなどのデータを提供できる置換データ・ソースである。プローブは、実行可能なアプリケーションがデータを書き込む際の、代替の書込み先である。挿入は、たとえば、グラフなどの実行可能なアプリケーションをテスト又はデバッグするのに有用になる場合がある。たとえば、試験者又は開発者は、アプリケーションに加える変更の効果を観察するために、入力データの特定のセットを使用してテストを実行したいと思うことがある。この変更の前後ともに、入力データの一貫したセットを使用してアプリケーションを実行することにより、アプリケーションが出力するデータに加えるこの変更の効果を監視することができる。例によっては、アプリケーションの機能の全てを少なくとも一度は実行することになる、テスト・データのセットなど、試験者は、アプリケーションをテストするときに使用されることになるテスト・データの特定のセットを有する場合がある。同様にして、試験者は、アプリケーションが出力データを書き込む際の標準の書込み先とは異なる特定の書込み先に、アプリケーションが出力するこのデータを書き込みたいと考えることがある。 The replacement process is an example of insertion. Other examples of inserts include test sources and probes, which can also be defined by overlay specifications. A test source is a replacement data source that can provide data, such as test data, for processing by an executable application. Probes are alternative destinations for executable applications to write data. Insertion may be useful, for example, for testing or debugging executable applications such as graphs. For example, a tester or developer may wish to run tests using a particular set of input data to observe the effects of changes to an application. By running the application with a consistent set of input data both before and after this change, the effect of this change on the data output by the application can be monitored. In some instances, the tester has a particular set of test data that will be used when testing the application, such as a set of test data that will exercise all of the application's functionality at least once. may have. Similarly, the tester may wish to write this data output by the application to a specific destination that is different from the standard destination to which the application writes output data.

例によっては、挿入は、アプリケーションの自動解析に基づいて自動的に定義することができる。たとえば、アプリケーションでのフォーマット特有のプロセスの自動識別に基づいて、置換構成要素を自動的に定義することができる。テスト・ソース及びプローブは、アプリケーションのデータ・ソース及び出力データ受信側の自動識別に基づいて自動的に定義することができる。 In some examples, the insertion can be automatically defined based on automatic analysis of the application. For example, replacement components can be automatically defined based on automatic identification of format-specific processes in the application. Test sources and probes can be automatically defined based on the automatic identification of the application's data sources and output data receivers.

例によっては、実行可能なアプリケーションはグラフベースのプロセスである。グラフベースのプロセスは、ある1つの構成要素から別の構成要素へのデータの流れを示すフローによって接続された、それぞれ実行可能なプロセスを表す1つ又は複数の構成要素を含む。置換プロセスは、グラフベースのプロセスでの構成要素に関連付けられたオブジェクトである。置換プロセス(置換え構成要素とも呼ばれることがある)は、既存の構成要素によって処理されたはずのデータが置換構成要素によって代わりに処理されるように、グラフ内の既存の構成要素を置換することができる。テスト・ソース及びプローブの挿入は、グラフベースのプロセスでのフローに関連付けられたオブジェクトである。テスト・ソースは、フローを通過するデータ(たとえば、アップストリーム・データ)を新規データで置換することができ、その結果、グラフのそれぞれの実行において上流側の計算を再実行する必要はない。たとえば、テスト・ソースは、データ・ソースからではなくテスト・ソースからグラフにテスト・データが提供されるよう、このデータ・ソースを置換することができる。プローブは、グラフが実行されるとき、フローを通過するデータを監視することができ、後に検査又は再使用するために、このデータを保存することができる。たとえば、プローブは、データベースなどの出力データ受信側に他の方法で保存されていたはずのデータを受信することができる。 In some examples, the executable application is a graph-based process. A graph-based process includes one or more components, each representing an executable process, connected by flows that show the flow of data from one component to another. A replacement process is an object associated with a component in a graph-based process. A replacement process (sometimes called a replacement component) can replace an existing component in a graph such that data that would have been processed by the existing component is instead processed by the replacement component. can. Insertion of test sources and probes are objects associated with flows in graph-based processes. A test source can replace data passing through the flow (eg, upstream data) with new data so that upstream computations do not have to be re-run on each execution of the graph. For example, a test source can replace this data source such that the graph is provided with test data from the test source rather than from the data source. The probe can monitor the data passing through the flow as the graph is executed, and can save this data for later inspection or reuse. For example, the probe may receive data that would otherwise have been stored in an output data receiver such as a database.

オーバレイ指定で定義される挿入は、元のアプリケーションの一部分になることなく、実行中にアプリケーションに追加することができる。アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、挿入を含む実行可能なアプリケーションを生成する。アプリケーションの第1のバージョンとしての元のアプリケーション、及びアプリケーションの第2のバージョンとしての挿入を含むアプリケーションを参照する場合がある。たとえば、グラフベースのプロセスの例では、オーバレイ指定において定義された挿入オブジェクトと結合された、グラフの第1のバージョンの構成要素を含むグラフの第2のバージョンとして、実行可能なグラフを視覚的に表すことができる。例によっては、実行可能なグラフはシェル・スクリプトであり、ファイル内には記憶されない。例によっては、実行可能なグラフ及びこのグラフは、別々のファイルに記憶される。 Inserts defined by overlay specifications can be added to an application while it is running without becoming part of the original application. When the application is compiled, the compiler takes into account the overlay files and produces an executable application containing the inserts. We may refer to the original application as the first version of the application and the application containing the insert as the second version of the application. For example, in the graph-based process example, the executable graph can be visualized as a second version of the graph containing the elements of the first version of the graph combined with the insert objects defined in the overlay specification. can be represented. In some examples, the executable graph is a shell script and not stored in a file. In some examples, the executable graph and this graph are stored in separate files.

グラフの第2のバージョンへの挿入の取込みは、グラフの第1のバージョンを修正しない。その代わりに、挿入定義は、別々のファイル(たとえば、別々のオーバレイ指定)にとどまり、コード生成の開始時点において、修正済みグラフに含めるために通常のグラフ構成要素へと変換することができる。したがって、元のグラフを意図せずに破壊するリスクがない。 Incorporating inserts into the second version of the graph does not modify the first version of the graph. Instead, the insert definitions can remain in separate files (e.g., separate overlay specifications) and converted to regular graph constructs for inclusion in the modified graph at the start of code generation. Therefore, there is no risk of unintentionally destroying the original graph.

図1には、グラフ100の一例が示してある。グラフ100は、フローによって接続されたデータ処理構成要素を含む、コンピュータ・プログラムの視覚表現である。2つの構成要素を接続するフローは、第1の構成要素から出力されたレコードが、第2の構成要素に渡されることを示す。フローによって第1の構成要素が第2の構成要素に接続されているとき、第1の構成要素は第2の構成要素を参照する。 An example of a graph 100 is shown in FIG. Graph 100 is a visual representation of a computer program containing data processing components connected by flows. A flow connecting two components indicates that records output by the first component are passed to the second component. A first component references a second component when a flow connects the first component to the second component.

(図に示すような)データベースなどのデータ・ソース102、ファイル、キュー、実行可能文(たとえば、SQL文)、又はグラフ100の外部にある別のタイプのデータ・ソースは、グラフ100によって処理される1つ又は複数のデータ・レコードを含む。外部という言葉によって、データ・ソース102のデータが、グラフ100内に記憶されないことを意味する。データ・ソース102は、フローによってフィルタ構成要素103に接続されている。一般に、フィルタ構成要素は、所定の判定基準を満たさないレコードを選別又は削除する。この例では、フィルタ構成要素103は、オハイオ州在住の顧客のデータ・レコードを通過させ、その他のレコードを拒否する。フィルタ構成要素103は、選別済みのデータ・レコードを郵便番号でソートする、ソート構成要素104に接続されている。ソート構成要素104は、2つの異なる方式でデータ・レコードを処理できるように、このデータ・レコードのコピーを作成する、複製構成要素106に接続されている。複製構成要素は、フォーマット変更構成要素108、及び表現式による選別の構成要素110に接続されている。たとえば、オハイオ州在住の顧客のデータ・レコードの1つの実現値は、郵便番号でソートされ、フォーマット変更構成要素108に送られ、又データ・レコードの別の実現値が、表現式による選別の構成要素110に送られる。フォーマット変更構成要素108は、データ・レコードのフォーマットをそれとは異なるデータ・フォーマットに変更し、表現式による選別の構成要素110は、データ・レコードに関連付けられた表現式に基づいて、このデータ・レコードを削除する。フォーマット変更構成要素108、及び表現式による選別の構成要素110は、受信済みのデータ・レコードを結合する集約構成要素112に接続されており、この集約構成要素は、(図に示すような)データベース、ファイル、キュー、又は下流処理構成要素など、グラフの外部に存在する出力データ受信側構成要素114に接続されている。外部という言葉によって、出力データ受信側114のデータが、グラフ100内に記憶されないことを意味する。グラフ100は、各構成要素間に多くのフローを含むが、データ・ソース102とフィルタ構成要素103との間のフロー116(ソース/フィルタ・フロー116と呼ぶことがある)、及び集約構成要素112と出力データ受信側114との間のフロー118(集約/出力フロー118と呼ぶことがある)が、この例では特に対象となる。 Data sources 102 such as databases (as shown), files, queues, executable statements (eg, SQL statements), or other types of data sources external to graph 100 are processed by graph 100. contains one or more data records that By external is meant that the data of data source 102 is not stored within graph 100 . Data source 102 is connected to filter component 103 by a flow. In general, a filter component screens or removes records that do not meet predetermined criteria. In this example, filter component 103 passes data records for customers in Ohio and rejects other records. Filter component 103 is connected to sort component 104, which sorts the filtered data records by zip code. Sorting component 104 is connected to replication component 106, which makes copies of data records so that they can be processed in two different ways. The replication component is connected to a format modification component 108 and a filter by expression component 110 . For example, one occurrence of data records for customers in Ohio may be sorted by zip code and sent to format modification component 108, and another occurrence of data records may be configured for sorting by expression. sent to element 110. A format change component 108 changes the format of a data record to a different data format, and a filter by expression component 110 converts the data record to a different data format based on the expression associated with the data record. delete. The format modification component 108 and the filter by expression component 110 are connected to an aggregation component 112 that combines the received data records, which is a database (as shown). , files, queues, or downstream processing components that exist outside the graph. By external is meant that the output data receiver 114 data is not stored within the graph 100 . Graph 100 includes many flows between each component, including flows 116 (sometimes referred to as source/filter flows 116) between data sources 102 and filter components 103, and aggregate component 112. and output data receiver 114 (sometimes referred to as aggregation/output flow 118) are of particular interest in this example.

グラフの各構成要素のうちの1つ又は複数は、フォーマット特有の構成要素とすることができる。フォーマット特有の構成要素は、1つ又は複数の特定のフォーマットのデータのみを処理できる構成要素である。データ・フォーマットは、個々のデータ項目の特性(たとえば、レコードのフィールド内の値の特性)、又はレコードの特性(レコード・フォーマットと呼ばれることもある)である。個々のデータ項目の特性の例は、データ項目のサイズ(たとえば、1バイトASCIIデータ項目、若しくはマルチバイト・データ項目)、データ項目のタイプ(たとえば、ストリング・タイプ、整数タイプ、ブール・タイプ、若しくは他のデータ・タイプ)、又は個々のデータ項目の別の特性など、データ項目について数多くのバイトを含む。レコード・フォーマットの例には、レコード内のフィールドの名前、レコード内のフィールドの位置、レコード内のフィールドの数、階層型レコード、フィールドの配列又は繰返しグループ、入れ子状の配列、サブレコード、又はレコードの別の特性が含まれる。 One or more of each component of the graph may be format-specific components. Format-specific components are components that can only process data in one or more specific formats. A data format is a characteristic of an individual data item (eg, a characteristic of a value within a field of a record) or a characteristic of a record (sometimes called a record format). Examples of characteristics of individual data items are the size of the data item (e.g., single-byte ASCII data item, or multibyte data item), the type of data item (e.g., string type, integer type, Boolean type, or other data types), or other characteristics of individual data items. Examples of record formats include the name of a field within a record, the position of a field within a record, the number of fields within a record, a hierarchical record, an array or repeating group of fields, a nested array, a subrecord, or a record includes another characteristic of

グラフは、特定のデータ・フォーマットに特有の構成要素を含むとき、特定のフォーマットのデータのみを処理できてもよい。グラフが、互いに異なるフォーマットを有するデータを処理するのに使用される場合、エラーが発生する場合があり、又はデータが不正確に処理される場合がある。フォーマットが異なるデータをグラフが処理できるようにするには、フォーマット特有の構成要素のうちの1つ又は複数を、異なるフォーマットのデータを処理することのできる構成要素で置換することができる。置換構成要素は、様々な構成要素に特有であるフォーマット特有の構成要素とすることができ、又は任意のフォーマットのデータを処理できる構成要素(これを、フォーマットに依存しない構成要素と呼ぶことがある)とすることができる。 A graph may only be able to process data of a particular format when it contains components specific to that particular data format. When graphs are used to process data having formats that differ from each other, errors may occur or data may be processed incorrectly. To enable a graph to process data in different formats, one or more of the format-specific components can be replaced with components that can process data in different formats. A replacement component can be a format-specific component that is specific to the various components, or a component that can process data in any format (sometimes called a format-independent component). ).

たとえば、図1の例では、ソート構成要素104は、郵便番号フィールド内の値によってレコードをソートする。この例でのソート構成要素104は、整数だけを処理できるフォーマット特有の構成要素である。グラフ100のオペレータは、グラフ100を使用して、郵便番号フィールドが文字数字の列を含んでもよいデータの新規セットを処理したいと思うことがある。 For example, in the example of FIG. 1, sorting component 104 sorts the records by the values in the zip code field. Sort component 104 in this example is a format-specific component that can only handle integers. An operator of graph 100 may wish to use graph 100 to process new sets of data in which the postal code field may contain alphanumeric strings.

図2を参照すると、ソート構成要素104が省略され、置換ソート構成要素204が含まれる、グラフ100の第2のバージョン200が生成される。置換ソート構成要素204は、グラフの第2のバージョン200内での、ソート構成要素104と同じ位置に配置され、文字数字の列をソートすることができる。グラフの他の構成要素は変化しない。グラフの第2のバージョン200は、データの新規セットをこのように処理することができる。 Referring to FIG. 2, a second version 200 of graph 100 is generated in which sorting component 104 is omitted and permuted sorting component 204 is included. A permutation sort component 204 is placed in the second version 200 of the graph at the same position as the sort component 104 and is capable of sorting alphanumeric columns. Other components of the graph remain unchanged. A second version 200 of the graph can thus process the new set of data.

構成要素によっては、任意のフォーマットのデータを受信し、このデータに動作を実行することができてもよいが、特定のフォーマットのデータを出力してもよい。互いに異なるフォーマットのデータが出力として望まれる場合(たとえば、特定のフォーマットを指定する別のアプリケーションへの入力として提供されるように)、グラフは、このデータを提供することができない場合がある。グラフが所望のフォーマットのデータを出力できるようにするために、フォーマット特有の構成要素のうちの1つ又は複数を、所望のフォーマットのデータを出力できる構成要素で置換することができる。 Some components may be able to receive and perform operations on data in any format, but may output data in a particular format. If data in different formats are desired as output (eg, to be provided as input to another application that specifies a particular format), the graph may not be able to provide this data. To enable the graph to output data in the desired format, one or more of the format-specific components can be replaced with components capable of outputting data in the desired format.

やはり図1を参照すると、フォーマット変更構成要素108は、特定のフォーマットのデータを出力するフォーマット特有の構成要素である。たとえば、フォーマット変更構成要素108は、4つのフィールド、Name、Account_num、Balance、及びTrans_dateを有するデータ・レコードを出力してもよい。グラフ100のオペレータは、たとえば、入力データのレコード・フォーマットについて特定の要求条件を有する別のアプリケーションによって出力データを処理できるように、互いに異なるフォーマットの出力データをグラフ100が生成するようにしたいと思うことがある。この例では、出力データの所望のフォーマットは、4つのフィールド、Cust_name、Balance、Account_num、及びTrans_dateを含む。すなわち、出力データの第1のフィールドの名前を変更し、第2のフィールド及び第3のフィールドを切り替える必要がある。 Still referring to FIG. 1, format modification component 108 is a format-specific component that outputs data in a particular format. For example, format modification component 108 may output a data record with four fields, Name, Account_num, Balance, and Trans_date. Operators of graph 100 may want graph 100 to produce output data in different formats, for example, so that the output data can be processed by another application that has specific requirements for the record format of the input data. Sometimes. In this example, the desired format of the output data includes four fields Cust_name, Balance, Account_num, and Trans_date. That is, it is necessary to rename the first field of the output data and switch the second and third fields.

図3を参照すると、フォーマット変更構成要素108が省略され、置換フォーマット変更構成要素308が含まれる、グラフ100の第2のバージョン300が生成される。置換フォーマット変更構成要素308は、グラフの第2のバージョン300内での、フォーマット変更構成要素108と同じ位置に配置され、所望のフォーマットの出力データを生成することができる。グラフの他の構成要素は変化しない。 Referring to FIG. 3, a second version 300 of graph 100 is generated in which format change component 108 is omitted and a replacement format change component 308 is included. The replacement format change component 308 can be placed in the second version 300 of the graph at the same position as the format change component 108 to produce the desired format of the output data. Other components of the graph remain unchanged.

例によっては、フォーマット特有の構成要素の上流又は下流の1つ又は複数の構成要素など、グラフの他の構成要素を省略することもできる。場合によっては、省略されたその他の構成要素のうちの1つ又は複数の代わりに、置換構成要素を含めることができる。 In some examples, other components of the graph may be omitted, such as one or more components upstream or downstream of the format-specific component. In some cases, replacement components may be included in place of one or more of the omitted other components.

例によっては、グラフ100の試験者は、グラフ100をデバッグして、その機能を検証したいと考えることがある。場合によっては、試験者は、データが、ある構成要素から別の構成要素に流れるとき、このデータを検証したいと思うことがある。場合によっては、試験者は、グラフ100での上流構成要素を迂回し、その代わりに、迂回された構成要素の位置にデータを挿入したいと思うことがある。場合によっては、試験者は、グラフを変更することの、グラフが出力するデータへの影響を監視するために、入力データの一貫したセットを使用してグラフ100の動作をテストしたいと思うことがある。場合によっては、試験者は、グラフの機能の全てを少なくとも1回だけは実行できるようにすることを知っている入力データのセットを使用して、グラフ100の動作をテストし、したがってグラフの完全なテストを可能にしたいと思うことがある。 In some examples, a tester of graph 100 may wish to debug graph 100 to verify its functionality. In some cases, testers may wish to verify data as it flows from one component to another. In some cases, a tester may wish to bypass an upstream component in graph 100 and instead insert data at the location of the bypassed component. In some cases, a tester may wish to test the behavior of graph 100 using a consistent set of input data to monitor the effect of changing the graph on the data the graph outputs. be. In some cases, the tester tests the behavior of graph 100 using a set of input data that he knows will allow all of the graph's functions to be executed at least once, thus perfecting the graph. Sometimes we want to be able to test

グラフ100をデバッグする際、グラフの修正をやめることが望ましい場合がある。たとえば、試験者は、グラフの機能を損なうリスクを負いたくない思うことがある。例によっては、試験者は、グラフへのアクセスを制限されているか、又はアクセスできない場合がある(たとえば、試験者には、グラフを編集するのに必要な許可がない場合がある)。グラフ100を修正することなく、このグラフ100をデバッグするために、オーバレイを使用してグラフをデバッグすることができる。例によっては、たとえばグラフの自動解析に基づいて、このオーバレイを自動的に指定することができる。元のグラフ100(グラフの第1のバージョンと呼ばれることがある)、及びオーバレイ指定に基づいて、グラフ100の少なくとも一部分の第2のバージョンを生成することができる。 When debugging graph 100, it may be desirable to refrain from modifying the graph. For example, testers may not want to risk compromising the functionality of the graph. In some instances, the tester may have limited or no access to the graph (eg, the tester may not have the necessary permissions to edit the graph). To debug this graph 100 without modifying it, overlays can be used to debug the graph. In some examples, this overlay can be specified automatically, for example based on automatic analysis of the graph. A second version of at least a portion of the graph 100 can be generated based on the original graph 100 (sometimes referred to as the first version of the graph) and the overlay specifications.

グラフ100の各構成要素間のフローをデータが通過するとき、たとえば、第1の構成要素から第2の構成要素までのフローに沿って、又は出力データ受信側までのフローに沿って、プローブが、このデータを収集又は監視する。たとえば、グラフ100が実行される際にデータがフローを通過するとき、このデータを監視し、後で検査するために保存し、又は再使用するために保存することができる。オーバレイ指定は、収集又は監視すべきデータを運ぶフローを参照するプローブを定義することができる。プローブは、データを収集又は監視すべきフローを指定する。プローブは、特定の値を報告し、又は特定の値が、所定範囲内又は所定範囲外にあるときに、そのことを報告するように構成することができる。プローブを通過するデータは、後で解析又は使用するために保存してもよく、たとえば、このデータは、単層ファイル又はリレーショナル・データベースに記憶することができる。 As data traverses the flow between each component of graph 100, e.g., along the flow from the first component to the second component, or along the flow to the output data receiver, the probe , collect or monitor this data. For example, as data passes through the flow as graph 100 is executed, this data can be monitored, saved for later inspection, or saved for reuse. Overlay specifications can define probes that refer to flows that carry data to be collected or monitored. Probes specify the flows for which data should be collected or monitored. A probe can be configured to report a particular value, or to report when a particular value is within or outside a predetermined range. Data passing through the probe may be saved for later analysis or use, for example, the data may be stored in a flat file or relational database.

例によっては、プローブは、グラフ100のある構成要素から、ファイル又はデータベースなど出力データ受信側までのフローを参照することができる。グラフ100のデバッギング中に、データ受信側までのフローに沿ってプローブを配置することによって、このプローブは、グラフ100から出力されるデータを受信する。たとえば、グラフ100がデバッギング・モードで実行されるたびに、出力データをプローブによって受信し、ファイルに書き込むことができ、その結果、様々なグラフ実行からの出力データを比較することができ、又は他の方法で評価することができる。例によっては、出力データ受信側が自動的に識別され、オーバレイが自動的に指定されて、識別された出力データ受信側の前に挿入するためのプローブを定義する。 In some examples, a probe can refer to a flow from some component of graph 100 to an output data receiver such as a file or database. By placing a probe along the flow to the data receiver during debugging of graph 100 , this probe receives data output from graph 100 . For example, each time graph 100 is run in debugging mode, output data may be received by a probe and written to a file so that output data from various graph runs may be compared, or otherwise can be evaluated by the method of In some examples, output data receivers are automatically identified and overlays are automatically specified to define probes for insertion in front of the identified output data receivers.

例によっては、プローブは、グラフ100の上流構成要素から下流構成要素までのフローを参照することができる。グラフ100のデバッギング中に、下流構成要素までのフローに沿ってプローブを配置することによって、このプローブは、下流構成要素によって他の方法で受信されていたはずのデータを受信し、したがって下流構成要素が実行しないようにする。たとえば、試験者は、下流構成要素の前にグラフが処理する結果を監視したいと考えることがある。たとえば、この下流構成要素は、グラフの外部に影響を及ぼす機能を有してもよく、たとえば、下流構成要素は、この下流構成要素によって自身のクレジット・カードのレコードが処理されるそれぞれの人に向けて、テキスト・メッセージを送信してもよい。グラフのデバッギング中、試験者は、グラフの外部に影響を及ぼすような構成要素を使用不可にしたいと考えることがある。 In some examples, a probe may refer to a flow from an upstream component to a downstream component of graph 100 . By placing a probe along the flow to a downstream component during debugging of graph 100, this probe receives data that would otherwise have been received by the downstream component, thus prevent it from running. For example, a tester may wish to monitor the results of graph processing before downstream components. For example, this downstream component may have functionality that affects outside of the graph, e.g. You can send a text message to During graph debugging, the tester may wish to disable components that affect the outside of the graph.

グラフ100の2つの構成要素間の特定のフローにおいて、テスト・ソースがグラフ100にデータを挿入する。オーバレイ指定は、テスト・ソースからのデータで置換すべきデータを運ぶフローを参照する、テスト・ソースを定義することができる。例によっては、テスト・ソースは、通常、フローを通過するはずのデータを、新規のデータで置換する。状況によっては、テスト・ソースは、これまでに保存されたデータを読み取り、このデータを下流構成要素に渡すように構成することができる。例によっては、テスト・ソースは、データベース又はファイルなど、データ・ソースからのフローにおいて、データをグラフ100に挿入する。テスト・ソースは、データ・ソースによって他の方法で提供されたはずのデータと同じフォーマットを有するデータを挿入することができる。例によっては、データ・ソースが自動的に識別され、オーバレイが自動的に指定されて、識別されたデータ・ソースを置換するためのテスト・ソースを定義する。 A test source inserts data into graph 100 in a particular flow between two components of graph 100 . An overlay specification can define a test source that references flows that carry data to be replaced with data from the test source. In some examples, the test source replaces data that would normally flow through with new data. In some situations, a test source can be configured to read previously saved data and pass this data to downstream components. In some examples, a test source inserts data into graph 100 in the flow from a data source, such as a database or file. A test source can insert data that has the same format as data that would otherwise have been provided by the data source. In some examples, data sources are automatically identified and overlays are automatically specified to define test sources to replace the identified data sources.

例によっては、あるポイントまで(たとえば、ある構成要素まで)グラフ100を実行した結果が、これまでに検証されていた場合がある。すなわち、上流プロセス機能が、あるポイントまで検証されていた場合がある。こうした場合、グラフ100が実行されるたびに上流構成要素が各機能を再処理することは、非効率になる場合がある。テスト・ソースは、そのあるポイントにおいて、データ(たとえば、これまでに検証されたデータ)をグラフに挿入することができる。このようにして、これまでに実行されたグラフ100のセクション全体を迂回してもよい。 In some examples, the results of running graph 100 to a point (eg, to a component) may have been previously verified. That is, upstream process functionality may have been verified up to a point. In such cases, it may be inefficient for upstream components to reprocess each function each time graph 100 is executed. A test source can insert data (eg, data that has been verified so far) into the graph at some point thereof. In this way, the entire section of graph 100 that has been executed so far may be bypassed.

図4には、1つ又は複数の挿入を定義するオーバレイ指定200の一例が示してある。挿入は、グラフ(たとえば、グラフ100)のフローに関連付けられたオブジェクトとすることができ、プローブ、テスト・ソース、又は置換構成要素の形をとることができる。図4の例では、オーバレイ指定200は、1つのテスト・ソース定義201、及び1つのプローブ定義213を含む。オーバレイ指定200は、グラフ100についての仕様を含むファイルとは別のファイルなど、ファイルに記憶することができる。 An example of an overlay specification 200 defining one or more inserts is shown in FIG. Insertions can be objects associated with the flow of a graph (eg, graph 100) and can take the form of probes, test sources, or replacement components. In the example of FIG. 4, overlay specification 200 includes one test source definition 201 and one probe definition 213 . Overlay specifications 200 may be stored in a file, such as a file separate from the file containing specifications for graph 100 .

オーバレイ指定200は、挿入定義が対応できる先のグラフを指定する、3行のヘッダで開始する。ヘッダの後には、テスト・ソース定義201、プローブ定義213、及び置換構成要素定義(図示せず)が続く。 The overlay specification 200 begins with a three-line header that specifies the graph to which the insert definition can correspond. Following the header are test source definitions 201, probe definitions 213, and replacement component definitions (not shown).

テスト・ソース定義201は、名前202、上流ポート204、下流ポート206、挿入タイプ208、プロトタイプ・パス210、及びレイアウト・パラメータ212を含む。 Test source definition 201 includes name 202 , upstream port 204 , downstream port 206 , insertion type 208 , prototype path 210 and layout parameters 212 .

テスト・ソース定義201の上流ポート204は、テスト・ソースをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。フローの上流にある構成要素は、その出力ポートからフロー上にデータが出力される元の構成要素である。図4の例では、テスト・ソース定義201の上流ポート204が、データベース102の出力を指す。テスト・ソース定義201の下流ポート206は、テスト・ソースをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。フローの下流にある構成要素は、その入力ポートにおいてフローからデータが受信される構成要素である。図4の例では、テスト・ソース定義の下流ポート206が、フィルタ構成要素103の入力を指す。したがって、この例でのテスト・ソース定義201は、データベース102の出力と、フィルタ構成要素103の入力との間のフローにテスト・ソースが配置されることになり、その結果、このテスト・ソースが提供するデータが、データベース102からの入力データを置換できることを示す。 The upstream port 204 of the test source definition 201 references the output port of the component immediately upstream in the flow where the test source is to be inserted into the graph 100 . A component upstream in a flow is the component from which data is output on the flow from its output port. In the example of FIG. 4, upstream port 204 of test source definition 201 points to the output of database 102 . Downstream port 206 of test source definition 201 references the input port of the component immediately downstream in the flow where the test source is to be inserted into graph 100 . A component downstream of a flow is a component whose input port receives data from the flow. In the example of FIG. 4, downstream port 206 of the test source definition points to the input of filter component 103 . Thus, test source definition 201 in this example results in a test source being placed in the flow between the output of database 102 and the input of filter component 103, so that this test source is Indicates that the data provided can replace input data from database 102 .

挿入タイプ208は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。図4の例では、値「0」がテスト・ソースを定義し、値「1」がプローブを定義し、値「2」が置換構成要素を定義する。他の値を使用して、挿入のタイプを定義することもできる。この挿入はテスト・ソースなので、挿入タイプ208の値は「0」である。 Insert type 208 defines whether the insert is a test source, probe, or replacement component. In the example of FIG. 4, a value of '0' defines a test source, a value of '1' defines a probe, and a value of '2' defines a replacement component. Other values can be used to define the type of insert. Since this insert is a test source, the value of insert type 208 is "0".

プロトタイプ・パス210は、挿入のタイプを示す。この例では、この挿入はテスト・ソースなので、プロトタイプ・パス210は、入力ファイル構成要素を指定する。プロトタイプ・パス210は、特定のタイプの挿入を定義するコードを含むファイルを指す。レイアウト・パラメータ212は、テスト・ソースが含むことになるデータを含むソース・ファイルの位置を定義する。例によっては、この位置はファイル・パスである。ソース・ファイル内のデータは、通常、上流ポート204及び下流ポート206によって定義されるフローを通過するはずのデータを置換することになる。すなわち、テスト・ソースがグラフ100に適用されると、フィルタ構成要素103が、データベース102からのデータを受信するのではなく、ソース・ファイル内のデータを受信する。 A prototype path 210 indicates the type of insertion. In this example, this insert is test source, so the prototype path 210 specifies the input file component. A prototype path 210 points to a file containing code that defines a particular type of insertion. Layout parameters 212 define the location of the source files that contain the data that the test source will contain. In some examples, this location is a file path. Data in the source file will normally replace data that would pass through the flow defined by upstream port 204 and downstream port 206 . That is, when the test source is applied to graph 100 , filter component 103 receives data in the source file rather than receiving data from database 102 .

このソース・ファイルは、テスト・ソースの下流の構成要素によって他の方法で受信されるはずのデータと同じフォーマットを有するデータを含む。例によっては、ソース・ファイル内のデータは、テスト・ソースの上流にあるデータ・ソース(たとえば、データベース)内のデータと同じでもよい。たとえば、データベース102からのデータ・レコードを、ソース・ファイルにコピーすることができる。例によっては、データ・ソースは、SQLクエリなどの実行可能文を示す。これらの例では、SQLクエリを実行することができ、このクエリ実行の結果をソース・ファイルに記憶することができる。例によっては、ソース・ファイル内のデータは、データ・ソース以外のどこかから取得することができる。たとえば、ソース・ファイル内のデータを生成して、グラフ100を完全にデバッグするために、あるデータ(たとえば、ある範囲の値)を確実に処理することができる。例によっては、データ・ソース内のデータが変更されても、ソース・ファイル内のデータは同じままであり、したがって、入力データの一貫したセットでデバッギングを継続できるようになる。 This source file contains data that has the same format as data that would otherwise be received by components downstream of the test source. In some examples, the data in the source files may be the same as the data in the data source (eg, database) upstream of the test source. For example, data records from database 102 can be copied to the source file. In some examples, the data source represents executable statements such as SQL queries. In these examples, a SQL query can be executed and the results of this query execution can be stored in a source file. In some examples, the data in the source files can come from somewhere other than the data source. For example, the data in the source file can be generated to reliably process certain data (eg, a range of values) in order to fully debug graph 100 . In some examples, the data in the source file remains the same even though the data in the data source changes, thus allowing debugging to continue with a consistent set of input data.

例によっては、ソース・ファイル内のデータは、グラフ100の通常の実行中にフローを通過するはずのデータと同じでもよいが、テスト・ソースを使用してこのデータを挿入することによって、上流構成要素は処理を控えることができる。たとえば、複製構成要素106などの上流構成要素は、データを処理するのに大量のシステム・リソースを必要とすることがあり、又は、データ・フロー・グラフ100内の他の構成要素と比較して、データを処理するのに要する時間が相対的に長くなることがある。したがって、既知のデータ(たとえば、通常の実行中にフローを通過するはずの同じデータ)をフローに挿入して、時間を節約し、又はシステム・リソースを保護することができる。 In some examples, the data in the source file may be the same data that would have passed through the flow during normal execution of the graph 100, but by inserting this data using a test source, the upstream configuration Elements can refrain from processing. For example, an upstream component such as replication component 106 may require a large amount of system resources to process data, or may require a large amount of system resources compared to other components in data flow graph 100 . , the time required to process the data can be relatively long. Thus, known data (eg, the same data that would have passed through the flow during normal execution) can be inserted into the flow to save time or conserve system resources.

プローブ定義213は、名前214、上流ポート216、下流ポート218、挿入タイプ220、及びプロトタイプ・パス222を含む。 Probe definition 213 includes name 214 , upstream port 216 , downstream port 218 , insertion type 220 and prototype path 222 .

プローブ定義213の上流ポート216は、プローブをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。図4の例では、プローブ定義213の上流ポート216が、集約構成要素112の出力を指す。プローブ定義213の下流ポート218は、プローブをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。図4の例では、プローブ定義213の下流ポート218が、出力データ受信側構成要素114を指す。したがって、この例でのプローブ定義213は、集約構成要素112の出力と、出力データ受信側構成要素114との間のフローにプローブが配置されることになり、その結果、出力データ受信側構成要素に他の方法で書き込まれたはずのデータをプローブが受信することを示す。 The upstream port 216 of the probe definition 213 references the output port of the component immediately upstream of the flow that should insert the probe into the graph 100 . In the example of FIG. 4, upstream port 216 of probe definition 213 points to the output of aggregation component 112 . The downstream port 218 of the probe definition 213 references the input port of the component immediately downstream in the flow that should insert the probe into the graph 100 . In the example of FIG. 4, downstream port 218 of probe definition 213 points to output data receiver component 114 . Thus, the probe definition 213 in this example would result in the probe being placed in the flow between the output of the aggregation component 112 and the output data receiver component 114, resulting in the output data receiver component indicates that the probe receives data that would otherwise have been written to .

プローブ定義213の挿入タイプ220は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。この挿入はプローブなので、挿入タイプ220の値は「1」である。 Insertion type 220 of probe definition 213 defines whether the insertion is a test source, a probe, or a replacement component. Since this insert is a probe, the value of insert type 220 is "1".

プロトタイプ・パス222は、挿入のタイプを示す。この例では、この挿入はプローブなので、プロトタイプ・パス222は出力ファイル構成要素を指定する。プロトタイプ・パス222は、特定のタイプの挿入を定義するコードを含むファイルを指す。 Prototype path 222 indicates the type of insertion. In this example, this insertion is a probe, so prototype path 222 specifies an output file component. A prototype path 222 points to a file containing code that defines a particular type of insertion.

例によっては、プローブによって監視すべきデータは、システムによって自動的に作成されるファイルに記憶される。このファイルは、システムによって決定される位置に記憶することができる。プローブは、上流ポート216及び下流ポート218によって定義されたフローを通過するデータを監視する。すなわち、プローブがグラフ100に適用されると、集約構成要素112の出力から、出力データ受信側構成要素114の入力まで通過するデータが監視され、システムによって自動的に作成されるファイルに記憶される。例によっては、このデータを、記憶する前に監視することができる。ファイルは、プローブ定義によって参照される構成要素(この例では、外部のデータ受信側構成要素114)によって受信されたはずの同じフォーマットのデータを受信することができる。 In some examples, data to be monitored by probes is stored in files that are automatically created by the system. This file can be stored at a location determined by the system. The probe monitors data passing through the flow defined by upstream port 216 and downstream port 218 . That is, when a probe is applied to graph 100, the data passing from the output of aggregation component 112 to the input of output data receiver component 114 is monitored and stored in a file automatically created by the system. . In some examples, this data can be monitored prior to storage. The file can receive data in the same format that would have been received by the component referenced by the probe definition (external data receiver component 114 in this example).

例によっては、グラフ100の自動解析の結果として、オーバレイ指定によって、1つ又は複数のプローブ又はテスト・ソースの挿入を定義することができる。たとえば、グラフ100の自動解析を実行して、データベース、ファイル、又は他のタイプのデータ・ソースなど、任意のデータ・ソースを識別することができる。識別されたデータ・ソースのうちの1つ又は複数を、テスト・ソースで自動的に置換することができる。置換されたデータ・ソースにより、データ・ソースのすぐ下流のフローにテスト・ソースが挿入され、その結果、データ・ソースからのデータではなく、このテスト・ソースからのデータが下流構成要素に提供されることを意味する。同様に、グラフ100の自動解析は、データベース、ファイル、又は他のタイプの出力データ受信側など、任意の出力データ受信側を識別することができる。識別された出力データ受信側のうちの1つ又は複数を、プローブで自動的に置換することができる。置換された出力データ受信側により、出力データ受信側のすぐ上流のフローにプローブが挿入され、その結果、上流構成要素からのデータが、出力データ受信側ではなくプローブによって受信されることを意味する。グラフ100の自動解析を使用して、特定のタイプの構成要素(たとえば、実行するとグラフ100の外部に影響を及ぼす特定のタイプの構成要素)など、他の構成要素を識別することもできる。 In some examples, the overlay specification may define the insertion of one or more probes or test sources as a result of the automatic analysis of graph 100 . For example, an automated analysis of graph 100 can be performed to identify any data source, such as a database, file, or other type of data source. One or more of the identified data sources can be automatically replaced with test sources. The replaced data source inserts the test source into the flow immediately downstream of the data source, so that downstream components are provided with data from this test source instead of data from the data source. means that Similarly, automatic analysis of graph 100 can identify any output data receiver, such as a database, file, or other type of output data receiver. One or more of the identified output data receivers can be automatically replaced with probes. Permuted output data receiver inserts a probe into the flow immediately upstream of the output data receiver, meaning that data from the upstream component is received by the probe instead of the output data receiver. . Automatic analysis of graph 100 can also be used to identify other components, such as specific types of components (eg, specific types of components whose execution affects the outside of graph 100).

テスト・ソース及びプローブの挿入のさらなる説明が、米国特許出願第14/715,807号に提示されており、その内容全体を参考としてここに組み込む。 Further discussion of test source and probe insertion is presented in US patent application Ser. No. 14/715,807, the entire contents of which are incorporated herein by reference.

置換構成要素定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ・パス、及びレイアウト・パラメータを含む。置換構成要素定義の上流ポートは、この置換構成要素がグラフ100内に挿入される位置のすぐ上流にある構成要素の出力ポートを参照する。置換構成要素定義の下流ポートは、この置換構成要素がグラフ内に挿入される位置のすぐ下流にある構成要素の入力ポートを参照する。上流ポート及び下流ポートに基づいて、置換構成要素によって置換すべきグラフ100内の既存の構成要素を識別することができる。挿入タイプは、この挿入が置換構成要素であると定義する。 A replacement component definition includes a name, upstream port, downstream port, insertion type, prototype path, and layout parameters. The upstream port of a replacement component definition refers to the output port of the component immediately upstream from where this replacement component is inserted into graph 100 . The downstream port of a replacement component definition refers to the input port of the component immediately downstream from where this replacement component is inserted into the graph. An existing component in graph 100 to be replaced by a replacement component can be identified based on the upstream port and downstream port. The insert type defines this insert to be a replacement component.

プロトタイプ・パスは、挿入のタイプを示す。この例では、この挿入が置換構成要素なので、プロトタイプ・パスは、置換構成要素を定義するコードを含むファイルを指す。置換構成要素を定義するコードは、置換すべき既存の構成要素を定義するコードに基づいているが、所望のフォーマットのデータを処理することができる。 The prototype path indicates the type of insert. In this example, this insertion is a replacement component, so the prototype path points to the file containing the code defining the replacement component. The code defining the replacement component is based on the code defining the existing component to be replaced, but can handle data in any desired format.

例によっては、グラフの自動解析の結果として、オーバレイ指定によって、グラフ用の1つ又は複数の置換構成要素を定義することができる。たとえば、グラフ内の各構成要素の仕様を解析することができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードを解析すると、構成要素によって表されるデータ処理動作がデータのフォーマットに依存しているかどうかを明らかにすることができる。 In some examples, overlay specifications may define one or more replacement components for a graph as a result of automatic analysis of the graph. For example, the specifications of each component in the graph can be analyzed. A component specification includes or refers to code that defines this component, eg, code that defines the data processing operations represented by this component. Analysis of the code can reveal whether the data processing operations represented by the components depend on the format of the data.

置換構成要素は、識別されたフォーマット特有の構成要素のうちの1つ又は複数について定義される。例によっては、置換すべきフォーマット特有の構成要素は、ユーザ入力に基づいて識別される。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを置換するか判定してもよい。例によっては、グラフによってこれまでに処理されたデータのフォーマットに対して入力データのフォーマットの自動解析を実行して、フォーマット特有の構成要素のいずれかを置換するかを識別することができる。 Replacement components are defined for one or more of the identified format-specific components. In some examples, the format-specific component to replace is identified based on user input. For example, a user may use their knowledge of the format of the input data, the process represented by each format-specific component, or both, to determine whether to replace any of the components. . In some examples, an automatic analysis of the format of the input data can be performed against the format of the data previously processed by the graph to identify replacements for any of the format-specific components.

例によっては、グラフベースではないコンピュータ・プログラムでは、コンピュータ・プログラム内の1つ又は複数のフォーマット特有のプロセスを識別し、1つ又は複数の他のプロセス、たとえば、特定のフォーマットのデータに対して作用できるプロセス、又は任意のフォーマットのデータ対して作用できるプロセスでこれを置換することができる。 In some examples, a non-graph-based computer program identifies one or more format-specific processes within the computer program and performs one or more other processes, e.g., on data in a particular format. It can be replaced by a process that can operate on or can operate on data in any format.

図5を参照すると、テスト・ソース、プローブ、又はその両方を挿入するため、解析エンジン300が、グラフ100を自動的に解析して、データ・ソース302及び出力データ受信側304を識別する。たとえば、解析エンジン300は、グラフ100のそれぞれのノードについて、パラメータ及び接続にアクセスすることができる(用語「ノード」及び「構成要素」は、これを区別なく使用することがある)。所与のノードが入力接続をもたない場合、解析エンジン300は、このノードをデータ・ソースと識別する。同様に、所与のノードが出力接続をもたない場合、解析エンジン300は、このノードを出力データ受信側と識別する。グラフのそれぞれのノードにアクセスし、これを解析するため、解析エンジンは、グラフの各接続(用語「接続」及び「フロー」は、これを区別なく使用することがある)の全てを「探索」して回る。例によっては、実行時(たとえば、デバッギング目的で処理が開始するとき)まで、グラフ100はインスタンス化又はパラメータ化されない。解析エンジン300は、実行時に自動解析を実行して、グラフ100内のデータ・ソース及び出力データ受信側を識別することができる。 Referring to FIG. 5, analysis engine 300 automatically parses graph 100 to identify data sources 302 and output data receivers 304 in order to insert test sources, probes, or both. For example, the analysis engine 300 can access the parameters and connections for each node of the graph 100 (the terms "node" and "component" are sometimes used interchangeably). If a given node has no input connections, parsing engine 300 identifies this node as a data source. Similarly, if a given node has no output connections, parsing engine 300 identifies this node as an output data receiver. In order to access and parse each node of the graph, the parsing engine "explores" all of the graph's connections (the terms "connection" and "flow" are sometimes used interchangeably). go around. In some examples, graph 100 is not instantiated or parameterized until run time (eg, when processing begins for debugging purposes). Analysis engine 300 can perform automatic analysis at runtime to identify data sources and output data receivers in graph 100 .

解析エンジン300は、データ・ソース302及び出力データ受信側304の識別子を挿入エンジン306に送信し、この挿入エンジンは、データ・ソースと出力データ受信側のいずれが、それぞれテスト・ソース及びプローブで置換されることになるのか判定する。例によっては、試験者308は、テスト・ソース及びプローブで置換すべき、データ・ソース及び出力データ受信側のリスト310を提供する。このリスト310は、ファイル、データベースとして、又は別のフォーマットで提供することができる。たとえば、試験者308は、頻繁に変更されると予想される任意のデータ・ソースを、リスト310上にもっていてもよい。このようなデータ・ソースをテスト・ソースで置換することにより、試験者308は、一貫した入力データを使用してグラフを確実にテストできるようにすることができる。 Analysis engine 300 sends the identifiers of data source 302 and output data receiver 304 to insertion engine 306, which replaces either data source or output data receiver with a test source and probe, respectively. determine whether or not it will be done. In some examples, the tester 308 provides a list 310 of data sources and output data receivers that should be replaced with test sources and probes. This list 310 may be provided as a file, database, or in another format. For example, tester 308 may have any data source on list 310 that is expected to change frequently. By replacing such data sources with test sources, tester 308 can ensure that consistent input data can be used to test graphs.

挿入エンジン306は、識別されたそれぞれのデータ・ソース302及び出力データ受信側304と、リスト310上のデータ・ソース及び出力データ受信側とを比較する。挿入エンジンは、リスト310上に表示される任意のデータ・ソース302又は出力データ受信側304について、オーバレイ指定312を作成する。例によっては、上流ポートや下流ポートなど、オーバレイ指定312についてのパラメータが、解析エンジン300によって挿入エンジン306に提供される。例によっては、挿入エンジン306は、グラフ100にアクセスして、関連するパラメータを取得する。 Insertion engine 306 compares each identified data source 302 and output data receiver 304 with the data sources and output data receivers on list 310 . The insert engine creates an overlay specification 312 for any data source 302 or output data receiver 304 that appears on list 310 . In some examples, parameters for overlay specifications 312, such as upstream ports and downstream ports, are provided by parsing engine 300 to insertion engine 306. FIG. In some examples, the insertion engine 306 accesses the graph 100 to obtain relevant parameters.

テスト・ソースについてオーバレイ指定312を作成するため、挿入エンジン306は、ソース・ファイルにデータを読み込む。例によっては、挿入エンジン306は、特定のデータ・ソース302に取って代わることになるテスト・ソース用のソース・ファイルに、データ・ソース302からコピーされたデータを読み込む。例によっては、データ・ソース302は、SQL文などの実行可能な表現式を含み、挿入エンジン306は、この実行可能な表現式を実行し、ソース・ファイルに実行した結果を読み込む。例によっては、挿入エンジン306は、ユーザ・インターフェース314を介して、ソース・ファイル用のデータを試験者308に要求することができる。たとえば、挿入エンジン306は、識別されたデータ・ソース302のリストを試験者308に提供することができ、その結果、試験者308は、識別されたデータ・ソース302のうちのいずれがテスト・ソースで置換されることになるのか選択することができる。試験者308は、テスト・ソース用のソース・ファイルに含むべきデータを指定することもできる。場合によっては、試験者308は、テスト・ソース用のデータを含むファイルの位置(たとえば、パス)を識別することができる。場合によっては、試験者308は、元のデータ・ソース302内のデータのコピーであるソース・ファイルを生成するよう、挿入エンジン308に指示することができる。場合によっては、試験者308は、元のデータ・ソース302に含まれるか、又はそれに関連付けられた、SQL文などの実行可能な表現式を実行するよう、挿入エンジン308に指示することができる。場合によっては、試験者308は、テスト・ソースのソース・ファイル用に、データを生成できるようにすることができる。たとえば、試験者308は、グラフ内のあらゆる機能が少なくとも1回実行されるようにする、実データ又は生成済みデータなどのデータのセットを提供してもよい。 To create overlay specifications 312 for the test source, insertion engine 306 reads data into the source file. In some examples, insertion engine 306 reads data copied from data source 302 into source files for test sources that will supersede a particular data source 302 . In some examples, the data source 302 contains executable expressions, such as SQL statements, and the insert engine 306 executes the executable expressions and reads the execution results into the source files. In some examples, insertion engine 306 can request data for source files from tester 308 via user interface 314 . For example, the insertion engine 306 can provide a list of identified data sources 302 to the tester 308 so that the tester 308 can determine which of the identified data sources 302 is the test source. You can choose whether it will be replaced with The tester 308 can also specify data to be included in the source files for the test source. In some cases, the tester 308 can identify the location (eg, path) of the file containing the data for the test source. In some cases, tester 308 can direct insertion engine 308 to generate a source file that is a copy of the data in original data source 302 . In some cases, tester 308 can direct insertion engine 308 to execute executable expressions, such as SQL statements, contained in or associated with original data source 302 . In some cases, the tester 308 may allow data to be generated for the source files of the test sources. For example, tester 308 may provide a set of data, such as real data or generated data, that causes every function in the graph to be executed at least once.

プローブ用のオーバレイ指定312を作成するため、挿入エンジン308は、出力データを記憶すべきファイルの位置を決定する。例によっては、この位置は、たとえばシステム技術者によって、デフォルトに設定される。例によっては、挿入エンジン306は、ユーザ・インターフェース314を介して、出力データ・ファイルについての位置を指定するよう試験者308に要求することができる。 To create the overlay specification 312 for the probe, the insertion engine 308 determines the location of the file in which the output data should be stored. In some examples, this location is set by default, eg, by a system engineer. In some examples, insertion engine 306 can request tester 308 to specify a location for the output data file via user interface 314 .

置換構成要素を挿入するため、解析エンジン300は、グラフ100を解析して、グラフ内の1つ又は複数のフォーマット特有の構成要素305を識別する。グラフの各構成要素を解析するため、解析エンジン300は、グラフの接続の全てを「探索」して回る。例によっては、解析エンジン300は、グラフの最も遠い上流構成要素から開始し、この上流構成要素からの各出力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。逆に言えば、解析エンジン300は、グラフの最も遠い下流構成要素から開始し、この下流構成要素への各入力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。 To insert replacement components, parsing engine 300 parses graph 100 to identify one or more format-specific components 305 within the graph. To analyze each component of the graph, the analysis engine 300 "walks" through all of the graph's connections. In some examples, the parsing engine 300 starts with the furthest upstream component of the graph and "treats" through each outgoing flow from this upstream component, thus eventually traversing all of the graph's components. may be analyzed. Conversely, the parsing engine 300 starts with the furthest downstream component of the graph and "searches" through each input flow to this downstream component, thus eventually reaching all the components of the graph. may be analyzed.

解析エンジン300は、グラフ100内の各構成要素の仕様にアクセスすることができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードの解析に基づいて、解析エンジン300は、データ処理動作がデータのフォーマットに依存しているかどうかを判定することができる。解析エンジン300は、フォーマット特有の構成要素の識別子を挿入エンジン306に送信し、この挿入エンジン306は、置換構成要素のためにフォーマット特有の構成要素のうちのいずれかを省略するか決定する。 Analysis engine 300 has access to the specifications of each component in graph 100 . A component specification includes or refers to code that defines this component, eg, code that defines the data processing operations represented by this component. Based on analysis of the code, analysis engine 300 can determine whether data processing operations depend on the format of the data. The parsing engine 300 sends identifiers of the format-specific components to the insertion engine 306, which determines whether to omit any of the format-specific components for the replacement component.

例によっては、解析エンジン300は、ユーザの要求に応じてグラフ100を解析する。たとえば、ユーザは、グラフ100を使用して、通常このグラフによって処理されるデータとは異なるフォーマットのデータを処理したいと思うことがある。ユーザは、グラフ100の解析を要求して、異なるフォーマットのデータをグラフ100が確実に処理できるようにすることができる。 In some examples, analysis engine 300 analyzes graph 100 in response to user requests. For example, a user may wish to use graph 100 to process data in a different format than the data normally processed by this graph. A user can request analysis of the graph 100 to ensure that the graph 100 can handle data in different formats.

例によっては、たとえば、グラフが最初に定義されるとき、又はグラフが最初にインスタンス化若しくはパラメータ化されるとき(たとえば、グラフの第1の実行時に)、解析エンジン300がグラフ100を一度解析して、グラフ内のフォーマット特有の構成要素全てのリストを生成する。グラフ内のフォーマット特有の構成要素のリストは、先々参照するために記憶して、たとえば、互いに異なるフォーマットのデータを処理するためにグラフ100を使用するというユーザの要求に応答して使用することができる。 In some examples, analysis engine 300 analyzes graph 100 once, for example, when the graph is first defined, or when the graph is first instantiated or parameterized (eg, during the first execution of the graph). to generate a list of all format-specific components in the graph. The list of format-specific components within the graph can be stored for future reference and used, for example, in response to user requests to use graph 100 to process data in different formats. can.

例によっては、解析エンジン300は、グラフをいつ解析するかを自動的に決定する。たとえば、グラフの仕様は、このグラフによってこれまでに処理されたデータのフォーマットの記述を含んでもよい。入力データのフォーマットが、これまでに処理されたデータのフォーマットと異なる場合、解析エンジンは、グラフを解析して、異なるフォーマットの入力データを処理するために何らかの構成要素を置換する必要があるかどうかを判定してもよい。 In some examples, analysis engine 300 automatically determines when to analyze the graph. For example, a graph's specification may include a description of the format of data so far processed by this graph. If the format of the input data is different from the format of the data processed so far, the parsing engine parses the graph to see if any components need to be replaced in order to process the differently formatted input data. may be determined.

挿入エンジン306は、解析エンジン300によって識別されるフォーマット特有の構成要素のいずれかを省略するか判定する。挿入エンジン306は、省略される構成要素のそれぞれについて置換構成要素を定義するオーバレイ指定を作成する。 The insertion engine 306 determines whether to omit any of the format-specific components identified by the parsing engine 300 . The insertion engine 306 creates an overlay specification that defines a replacement component for each omitted component.

例によっては、省略すべきフォーマット特有の構成要素は、ユーザによって識別される。たとえば、挿入エンジン306は、識別済みのフォーマット特有の構成要素のリストをユーザ・インターフェース314に表示することができ、ユーザは、置換すべき構成要素を選択する。ユーザは、置換すべき構成要素のそれぞれについて置換構成要素として使用される構成要素を指示することができる。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか判定してもよい。省略すべき構成要素、置換構成要素、又はその両方を識別するユーザ入力に基づいて、挿入エンジン306はオーバレイ指定を作成する。 In some examples, the format-specific components to omit are identified by the user. For example, the insertion engine 306 can display a list of identified format-specific components on the user interface 314, and the user selects the component to replace. The user can indicate the component to be used as the replacement component for each component to be replaced. For example, users may use their knowledge of the format of the input data, the process represented by each format-specific component, or both, to determine whether any of the components should be omitted and which components should be included as a replacement component. Based on user input identifying components to be omitted, replacement components, or both, the insertion engine 306 creates an overlay specification.

例によっては、挿入エンジン306は、フォーマット特有の構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか自動的に決定することができる。たとえば、挿入エンジンは、フォーマット特有の構成要素のそれぞれの仕様を解析して、どの構成要素が入力データを処理できるか、又は処理できないか判定することができる。挿入エンジン306は、置換構成要素、たとえば、置換すべき対応する構成要素によって表されるのと同じデータ処理動作を表すが、入力データのフォーマットのデータを処理できる置換構成要素を自動的に識別することができる。挿入エンジン306は、自動的に識別された置換構成要素についてのオーバレイ指定を作成する。例によっては、ユーザ入力は、自動化判定に組み込まれる。たとえば、挿入エンジン306によって識別される置換構成要素を承認するよう、ユーザに求めてもよい。 In some examples, the insertion engine 306 can automatically determine whether any format-specific components should be omitted and which components should be included as replacement components. For example, the insertion engine can parse the specifications of each of the format-specific components to determine which components can or cannot process the input data. The insertion engine 306 automatically identifies replacement components, e.g., replacement components that represent the same data processing operations represented by the corresponding components to be replaced, but that can process data in the format of the input data. be able to. The insertion engine 306 creates overlay specifications for automatically identified replacement components. In some examples, user input is incorporated into automated decisions. For example, the user may be asked to approve the replacement component identified by the insertion engine 306 .

図6には、グラフ用の置換構成要素を定義するための一般的な手法が示してある。グラフによる処理のために、特定のフォーマットを有するデータのセットが受信される(400)。受信データの特定のフォーマットを処理する能力について、グラフを解析すべきかどうかに関して判定がなされる(402)。例によっては、ユーザは、たとえばユーザ・インターフェースを介して、グラフを解析すべきであると示すことができる。たとえば、ユーザは、このデータのセットが、グラフによって処理されたこれまでのデータとは異なるフォーマットを有することを知っている場合がある。例によっては、この判定を自動的におこなうことができる。たとえば、受信データのフォーマットを決定し、たとえば、グラフが構成されるデータのフォーマットを示すグラフの仕様に記憶された情報と比較することができる。グラフが構成されるデータのフォーマットと受信データのフォーマットが一致しない場合、グラフが解析される。 FIG. 6 shows a general approach for defining replacement components for graphs. A set of data having a particular format is received (400) for processing by the graph. A determination is made as to whether the graph should be analyzed for its ability to process a particular format of received data (402). In some examples, a user can indicate, for example via a user interface, that the graph should be analyzed. For example, the user may know that this set of data has a different format than previous data processed by the graph. In some examples, this determination can be made automatically. For example, the format of the received data can be determined and compared, for example, with information stored in the specification of the graph indicating the format of the data from which the graph is constructed. If the format of the data from which the graph is constructed and the format of the received data do not match, the graph is parsed.

グラフは、たとえばプロセッサによって解析されて、構成要素によって処理されるデータのフォーマットに依存する、グラフの1つ又は複数の構成要素を識別する(404)。具体的には、グラフの構成要素のうちの1つ又は複数のそれぞれについての仕様が解析されて、グラフ内のフォーマット特有の構成要素を識別する。例によっては、グラフは、このグラフの各構成要素を介する段階的進行によって解析される。たとえば、各構成要素を解析して、この構成要素がフォーマット特有の構成要素かどうかを判定するとともに、この入力フローと出力フローを識別する。各フローは隣接する構成要素へと続き、これら構成要素のそれぞれが解析されて、この構成要素がフォーマット特有であるかどうかを判定し、入力フロー及び出力フローを識別する。このようにして、グラフの構成要素の全てを解析することができる。例によっては、この解析は、実行時に、たとえばグラフがパラメータ化された後に、自動的に実行することができる。例によっては、この解析は、自動的かつ動的に、たとえばグラフが実行されている間に実行することができる。たとえば、グラフの実行中に、あるパラメータが解決されると、動的な解析を実行することができる。例によっては、グラフは短期記憶内に受信され、そこからプロセッサによってグラフが解析されて、フォーマット特有の構成要素を識別する。 The graph is parsed 404, for example by a processor, to identify one or more components of the graph that depend on the format of the data processed by the component. Specifically, specifications for each of one or more of the graph's components are parsed to identify format-specific components within the graph. In some examples, the graph is analyzed by stepwise progression through each component of the graph. For example, each component is parsed to determine if it is format-specific and to identify its input and output flows. Each flow continues to adjacent components, each of which is parsed to determine whether this component is format-specific and to identify input and output flows. In this way, all of the components of the graph can be analyzed. In some examples, this analysis can be performed automatically at runtime, eg, after the graph has been parameterized. In some examples, this analysis can be performed automatically and dynamically, eg, while the graph is running. For example, dynamic analysis can be performed as certain parameters are resolved during graph execution. In some examples, the graph is received in short-term memory, from which the graph is parsed by a processor to identify format-specific components.

フォーマット特有と識別された構成要素のうちの1つ又は複数を評価して、構成要素を省略すべきかどうか、及び置換構成要素が含まれているかどうかを判定する(406)。たとえば、構成要素が、受信済みのデータのセットのフォーマットを有するデータを処理することができない場合、フォーマット特有の構成要素を省略してもよい。例によっては、フォーマット特有の構成要素のリストがユーザ・インターフェースに表示され、ユーザが、構成要素のいずれかを省略すべきか指定する。例によっては、フォーマット特有の構成要素のそれぞれの仕様を評価して、受信済みのデータのセットのフォーマットを有するデータを、この構成要素が処理できるかどうかを自動的に判定する。例によっては、フォーマット特有と識別された構成要素の全てが省略される。 One or more of the components identified as format-specific are evaluated to determine if the component should be omitted and if a replacement component is included (406). For example, a format-specific component may be omitted if the component cannot process data having the format of the received data set. In some examples, a list of format-specific components is displayed in the user interface and the user specifies whether any of the components should be omitted. In some examples, the specification of each of the format-specific components is evaluated to automatically determine whether the component can process data having the format of the received data set. In some examples, all components identified as format-specific are omitted.

省略すべきフォーマット特有の構成要素のうちの1つ又は複数のそれぞれでの置換構成要素について、オーバレイ指定が定義される(408)。所与の置換構成要素の仕様は、対応する省略済みのフォーマット特有の構成要素の仕様に基づいているが、受信済みのデータのセットのフォーマットを有するデータに実行できる、1つ又は複数のデータ処理動作を定義する。例によっては、置換構成要素は、受信済みのデータのセットのフォーマットに対して、フォーマット特有のものとすることができる。例によっては、置換構成要素は、一般的なもの、たとえば任意のフォーマットのデータを処理できるものとすることができる。 Overlay specifications are defined 408 for replacement components with each one or more of the format-specific components to be omitted. The specification of a given replacement component is based on the specification of the corresponding abbreviated format-specific component, but one or more data operations that can be performed on data having the format of the set of data received. Define behavior. In some examples, the replacement component may be format-specific to the format of the received data set. In some examples, the replacement component may be generic, eg, capable of processing data in any format.

グラフの実行に先立って、コンパイラが、グラフを実行可能なグラフにコンパイルしてもよい(410)。コンパイルの一環として、コンパイラは、置換構成要素を定義するオーバレイ指定200を考慮に入れる。たとえば、コンパイラは、入力としてオーバレイ指定200を受け付けてもよい。グラフの第2のバージョンが生成され、置換用に識別されたフォーマット特有の構成要素が除去され、除去済みの構成要素の代わりのオブジェクトとして、1つ又は複数の置換構成要素がグラフの第2のバージョンに挿入される。置換構成要素は、(除去済みの構成要素以外の)グラフ100の第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンで表してもよい。オーバレイ指定200、又はこのオーバレイ指定を記憶するファイルは、グラフを含むファイルから分離されたままである。すなわち、置換構成要素は、グラフの第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフの第1のバージョンを含むファイルは、置換構成要素の定義を含まない。 Prior to executing the graph, a compiler may compile 410 the graph into an executable graph. As part of compilation, the compiler takes into account overlay specifications 200 that define replacement components. For example, a compiler may accept overlay specification 200 as input. A second version of the graph is generated, the format-specific components identified for replacement are removed, and one or more replacement components are added to the second version of the graph as objects in place of the removed components. inserted into the version. The replacement components may be represented in the second version of the graph along with the data processing components included in the first version of graph 100 (other than the removed components). The overlay specification 200, or the file storing this overlay specification, remains separate from the file containing the graph. That is, the replacement component may be displayed in the second version of the graph along with the data processing components included in the first version of the graph, but the file containing the first version of the graph is the replacement component does not contain a definition of

オーバレイ指定において定義されるテスト・ソース、プローブ、又は置換構成要素などの挿入は、少なくとも2つのモード、すなわち単一実行モード(Single-Execution Mode)及び保存状態モード(Saved-State Mode)のうちの1つを使用して実行できる。 Insertion of test sources, probes, or replacement components defined in an overlay specification can be performed in at least two modes: Single-Execution Mode and Saved-State Mode. can be done using one.

図7には、単一実行モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント602が、グラフ604の第1のバージョン、及び挿入を定義するオーバレイ・ファイル606(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル606は、図4のオーバレイ指定200でもよい。次いで、グラフ604が、コンパイラ608によってコンパイルされる。コンパイラ608は、オーバレイ・ファイル606を考慮に入れ、グラフの第2のバージョンを作成する。グラフの第2のバージョンは実行可能であり、オーバレイ・ファイル606によって定義される挿入を含む。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。グラフの第2のバージョンが再び実行されることになる場合、グラフ604の再指定、再コンパイル、及びグラフの第2のバージョンの再実行を含む、このプロセスが繰り返される。実行可能なグラフの、ある実行から次の実行までの情報は保存されない。 FIG. 7 shows an exemplary system for executing an insert definition in single execution mode. In this example, client 602 generates or references a first version of graph 604 and an overlay file 606 (eg, overlay specification) that defines an insert. For example, overlay file 606 may be overlay specification 200 in FIG. Graph 604 is then compiled by compiler 608 . Compiler 608 takes overlay file 606 into account and creates a second version of the graph. A second version of the graph is executable and includes inserts defined by overlay file 606 . A second version of the graph can then be run. In some cases compilation and execution occur simultaneously. If the second version of the graph is to be run again, the process is repeated, including redesigning graph 604, recompiling, and rerunning the second version of the graph. No information is saved from one run of the executable graph to the next.

図8には、保存状態マネージャ708を用いて、保存状態モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント702が、グラフ704、及び挿入を定義するオーバレイ・ファイル706(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル706は、図4のオーバレイ指定200でもよい。保存状態リポジトリ710が、保存状態マネージャ708及びコンパイラ712によって管理される。保存状態マネージャ708は、この保存状態データが保存状態リポジトリ710内のどこに配置されているか識別することもできる。グラフ704が、コンパイラ712によってコンパイルされる。コンパイラ712は、オーバレイ・ファイル706を考慮に入れ、オーバレイ・ファイル706によって定義される挿入を含むグラフの第2のバージョンを作成する。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。保存状態モードによって、実行可能なグラフが、各実行間で情報を保存している間に何回も実行できるようになるという点で、保存状態モードは単一実行モードと異なる。 FIG. 8 shows an exemplary system for executing an insert definition in save state mode using save state manager 708 . In this example, a client 702 generates or references a graph 704 and an overlay file 706 (eg, overlay specification) that defines an insert. For example, overlay file 706 may be overlay specification 200 in FIG. A save state repository 710 is managed by save state manager 708 and compiler 712 . The save state manager 708 can also identify where this save state data is located within the save state repository 710 . Graph 704 is compiled by compiler 712 . Compiler 712 takes overlay file 706 into account and creates a second version of the graph that includes the insertions defined by overlay file 706 . A second version of the graph can then be run. In some cases compilation and execution occur simultaneously. The saved state mode differs from the single run mode in that the saved state mode allows the executable graph to be run multiple times while preserving information between each run.

保存状態マネージャ708は、保存状態マネージャ・ディレクトリに存在することができ、保存状態を管理する。保存状態リポジトリ710に保存できる情報の例には、情報のうちでもとりわけ、プローブ挿入に関連する情報、テスト・ソース挿入に関連する情報、置換構成要素挿入に関連する情報、オーバレイ・ファイル706に関連する情報、及びグラフ構成要素に関連付けられたパラメータ(たとえば属性)が含まれる。 A save state manager 708 can reside in a save state manager directory and manages save states. Examples of information that may be stored in the saved state repository 710 include information related to probe insertion, information related to test source insertion, information related to replacement component insertion, information related to overlay file 706, among other information. and parameters (eg, attributes) associated with the graph components.

例によっては、実行可能なグラフが実行されるとき、グラフの特定の部分のみが実行される。すなわち、グラフの特定の構成要素のみが実行される。例によっては、グラフの構成要素の全てよりも少ない構成要素が実行される。実行可能なグラフは、挿入に影響を及ぼすことになる構成要素を実行するだけでよい。例によっては、グラフの第2のバージョンは、元のグラフ全体の第2のバージョンである。例によっては、グラフの第2のバージョンは、元のグラフ全体のほんの一部分の第2のバージョン、たとえば、定義された挿入に関連したグラフの部分のみの第2のバージョンである。たとえば、最も上流の置換構成要素の上流にある構成要素は、グラフの第1のバージョンによって実行してもよく、最も上流の置換構成要素で開始する構成要素は、グラフの第2のバージョンによって実行してもよい。 In some examples, when an executable graph is executed, only certain portions of the graph are executed. That is, only certain components of the graph are executed. In some examples, less than all of the graph's components are executed. Executable graphs only need to execute the components that will affect the insertion. In some examples, the second version of the graph is a second version of the entire original graph. In some examples, the second version of the graph is a second version of only a fraction of the entire original graph, eg, only the portion of the graph associated with the defined insertion. For example, components upstream of the most upstream replacement component may be executed by the first version of the graph, and components starting with the most upstream replacement component may be executed by the second version of the graph. You may

図9には、ここで説明する置換構成要素技法を使用できる、例示的なデータ処理システム800が示してある。このシステム800は、記憶装置又はオンライン・データ・ストリームへの接続など、1つ又は複数のデータのソースを含んでもよいデータ・ソース802を含み、そのそれぞれが、様々なフォーマット(たとえば、データベース・テーブル、スプレッドシート・ファイル、フラット・テキスト・ファイル、又はメインフレームが使用するネイティブ・フォーマット)のうちの任意のフォーマットで、データを記憶又は提供してもよい。実行環境804及び開発環境818は、たとえば、あるバージョンのUNIXオペレーティング・システムなど、適切なオペレーティング・システムの制御下で、1つ又は複数の汎用コンピュータ上にホスティングしてもよい。たとえば、実行環境804は、複数ノードの並列コンピューティング環境を含むことができ、これは、複数の中央処理装置(CPU)若しくはプロセッサ・コア、ローカル・システム(たとえば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサ・システム)若しくはローカル分散システム(たとえば、クラスタ若しくは超並列処理(MPP)として結合された複数のプロセッサ)、又は、遠隔プロセッサ若しくは遠隔分散プロセッサ(たとえば、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合されたマルチプロセッサ)、又はその任意の組合せを使用するコンピュータ・システムの構成を含む。 FIG. 9 illustrates an exemplary data processing system 800 in which the replacement component techniques described herein can be used. The system 800 includes a data source 802, which may include one or more sources of data, such as connections to storage devices or online data streams, each of which may be in various formats (e.g., database tables). , spreadsheet files, flat text files, or native formats used by mainframes). Execution environment 804 and development environment 818 may be hosted on one or more general purpose computers under the control of a suitable operating system, eg, some version of the UNIX operating system. For example, execution environment 804 can include a multi-node parallel computing environment, which includes multiple central processing units (CPUs) or processor cores, local system (e.g., symmetric multiprocessing (SMP) computer ) or a local distributed system (e.g., multiple processors coupled as a cluster or massively parallel processing (MPP)), or a remote processor or remote distributed processor (e.g., a local area network (LAN) and/or multiprocessors coupled via a wide area network (WAN)), or any combination thereof.

実行環境804は、データ・ソース802からデータを読み取り、出力データを生成する。データ・ソース802を設ける記憶装置は、実行環境804に対してローカルでもよく、たとえばこれは、実行環境804をホスティングするコンピュータに接続された記憶媒体(たとえばハード・ドライブ808)に記憶され、又は実行環境804に対して遠隔でもよく、たとえばこれは、(たとえばクラウド・コンピューティング・インフラストラクチャによって提供される)遠隔接続を介して、実行環境804をホスティングするコンピュータと通信する遠隔システム(たとえばメインフレーム810)上にホスティングされる。データ・ソース802は、テスト・ソース定義(たとえば、図4のテスト・ソース定義201)で定義されるデータを含んでもよい。すなわち、テスト・ソース定義201のレイアウト・パラメータ212が、データ・ソース802内のソース・ファイルの位置を指してもよい。 Execution environment 804 reads data from data source 802 and generates output data. The storage device providing data source 802 may be local to execution environment 804, for example, it may be stored on a storage medium (eg, hard drive 808) coupled to the computer hosting execution environment 804, or may be executed. It may be remote to environment 804, for example, it may be a remote system (eg, mainframe 810) that communicates with the computer hosting execution environment 804 via a remote connection (eg, provided by a cloud computing infrastructure). ). Data sources 802 may include data defined in a test source definition (eg, test source definition 201 of FIG. 4). That is, layout parameter 212 of test source definition 201 may point to the location of the source file within data source 802 .

出力データは、実行環境804からアクセス可能なデータ・ソース802又はデータ記憶システム816に記憶して戻してもよく、又は他の方法で使用してもよい。データ記憶システム816は、開発者820がグラフを、開発、デバッグ、及びテストすることのできる開発環境818からもアクセス可能である。実装形態によっては、開発環境818は、各接点間の(作業要素すなわちデータのフローを表す)有向フローによって接続される(データ処理構成要素又はデータセットを表す)節点を含むグラフとして、アプリケーションを開発するためのシステムである。たとえば、「グラフベースのアプリケーション用のパラメータの管理(Managing Parameters for Graph-Based Applications)」と題する、米国特許第2007/0011668号に、このような環境がより詳細に記載してあり、これを参考として本明細書に援用する。「グラフとして表現された計算の実行(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)」と題する、米国特許第5,966,072号に、このようなグラフベースの計算を実行するためのシステムが記載してあり、これを参考として本明細書に援用する。このシステムに従って作成されるグラフは、グラフ構成要素によって表される個々のプロセスとの間で情報を取得し、各プロセス間で情報を転送し、各プロセスについて実行順序を定義するための方法を提供する。このシステムは、利用可能な任意の方法からプロセス間通信の方法を選択するアルゴリズムを含む(たとえば、グラフのフローによる通信経路は、TCP/IP若しくはUNIXのドメイン・ソケットを使用することができ、又は共有メモリを使用して、各プロセス間でデータを渡すことができる)。 The output data may be stored back into data sources 802 or data storage system 816 accessible from execution environment 804, or may be used in other ways. Data storage system 816 is also accessible to development environment 818, which allows developers 820 to develop, debug, and test graphs. In some implementations, the development environment 818 presents the application as a graph containing nodes (representing data processing components or datasets) connected by directed flows (representing work elements or flows of data) between each contact. It is a system for development. For example, US Patent No. 2007/0011668, entitled "Managing Parameters for Graph-Based Applications," describes such an environment in more detail and is incorporated herein by reference. incorporated herein by reference. U.S. Pat. No. 5,966,072, entitled "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS," describes a system for performing such graph-based computations, This is incorporated herein by reference. Graphs created according to this system provide a way to get information to and from the individual processes represented by the graph components, to transfer information between each process, and to define the order of execution for each process. do. The system includes an algorithm that selects the method of inter-process communication from any available method (e.g., the communication path through the graph flow could use TCP/IP or UNIX domain sockets, or Data can be passed between each process using shared memory).

開発環境818は、ソース・コードを記憶するためのコード・リポジトリ822を含む。例によっては、ソース・コード及びオーバレイ指定(たとえば、図4のオーバレイ指定220)は、たとえばユーザ・インターフェースを介して開発環境にアクセスする開発者820によって開発してもよい。例によっては、ソース・コード及びオーバレイ指定は、たとえば、前述の解析エンジン300及び挿入エンジン306によって自動的に決定される。例によっては、グラフ及びオーバレイ指定は、コード・リポジトリ822に記憶することができる。例によっては、コード・リポジトリ822にグラフが記憶され、別のオーバレイ・リポジトリ824にオーバレイ指定が記憶される。 Development environment 818 includes code repository 822 for storing source code. In some examples, the source code and overlay specification (eg, overlay specification 220 of FIG. 4) may be developed by developer 820 accessing the development environment, eg, via a user interface. In some examples, the source code and overlay designations are automatically determined, for example, by the analysis engine 300 and insertion engine 306 described above. In some examples, graphs and overlay specifications can be stored in code repository 822 . In some examples, graphs are stored in a code repository 822 and overlay specifications are stored in another overlay repository 824 .

コード・リポジトリ822及びオーバレイ・リポジトリ824のうちの1つ又は両方が、コンパイラ826と通信してもよい。コンパイラ826は、グラフの第1のバージョン及びオーバレイ指定(たとえば、図4のオーバレイ指定200)を、グラフの実行可能な第2のバージョン828にコンパイルすることができる。たとえば、コンパイラは、入力としてオーバレイ指定を受け付けてもよい。1つ又は複数の挿入が処理され、オーバレイ指定に含まれる挿入定義にそれぞれが対応するオブジェクトの形で、グラフに挿入される。グラフの第2のバージョン828は、修正されたグラフによって視覚的に表すことができる。挿入オブジェクトは、グラフ500の第2のバージョンに示してもよい。 One or both of code repository 822 and overlay repository 824 may communicate with compiler 826 . Compiler 826 can compile the first version of the graph and the overlay specification (eg, overlay specification 200 of FIG. 4) into an executable second version 828 of the graph. For example, a compiler may accept an overlay specification as input. One or more inserts are processed and inserted into the graph in the form of objects each corresponding to an insert definition contained in the overlay specification. A second version 828 of the graph can be visually represented by a modified graph. Insert objects may be shown in a second version of graph 500 .

開発環境818は、グラフの第2のバージョン828を実行するための実行環境830を含むことができる。たとえば、グラフがコンパイラ826によってコンパイルされると、グラフの第2のバージョン828を実行することができる。グラフの第2のバージョン828を実行することは、データ(たとえば、作業要素又はデータ・レコード)が各構成要素間を流れるときに、各構成要素、挿入(たとえば、テスト・ソース、プローブ、置換構成要素、又はこれらのうちの任意の2つ以上の組合せ)、及びグラフの第2のバージョン828の有向フローに関連する計算を実行することを含むことができる。例によっては、実行環境830は、コード・リポジトリ822に記憶された第1のバージョンのグラフのソース・コード、又はオーバレイ・リポジトリ824に記憶されたソース・コードを修正することなく、グラフの第2のバージョン828を実行する。実行環境830は、開発環境818のインターフェースを介してアクセス可能でもよく、又はそれ自体のインターフェースをもっていてもよい。このインターフェースは、実行に関連する情報を表示するように構成することができる。このインターフェースは、挿入に関連する情報(たとえば、プローブによって監視及び保存されているデータ、テスト・ソースによって挿入されているデータ、置換構成要素についての情報、又は他の情報)を表示するように構成することもできる。実行環境830により、開発者820は、各実行間で、グラフの第2のバージョン828を複数回実行できるようになり、グラフの第2のバージョン828の各態様を修正できるようになってもよい。 Development environment 818 may include execution environment 830 for executing second version 828 of graph. For example, once the graph is compiled by compiler 826, a second version 828 of the graph can be executed. Executing the second version 828 of the graph includes each component, insertion (e.g., test source, probe, replacement configuration) as data (e.g., work elements or data records) flows between each component. elements, or a combination of any two or more thereof), and performing computations associated with the directed flow of the second version 828 of the graph. In some examples, execution environment 830 executes the second version of the graph without modifying the first version of the graph source code stored in code repository 822 or the source code stored in overlay repository 824 . version 828 of Execution environment 830 may be accessible through an interface of development environment 818 or may have its own interface. This interface can be configured to display information related to the execution. The interface is configured to display information related to the insertion (e.g., data being monitored and stored by probes, data being inserted by test sources, information about replacement components, or other information). You can also The execution environment 830 may allow the developer 820 to execute the second version 828 of the graph multiple times between each run and modify aspects of the second version 828 of the graph. .

例によっては、開発者は、グラフの挿入及びコンパイルを管理する。たとえば、開発者820は、コード・リポジトリ822から、図1のグラフ100の第1のバージョンを選択する。開発者820は又、オーバレイ・リポジトリ824から、図4のオーバレイ指定200を選択する。例によっては、オーバレイ指定200を選択する代わりに、開発者820は、オーバレイ・リポジトリ824内の様々なオーバレイ指定から挿入定義を選択してもよい。開発者820は、グラフ100の第1のバージョン及びオーバレイ指定200に基づいて、グラフの第2のバージョン828をコンパイルするようコンパイラ826に命令する。 In some examples, the developer controls the insertion and compilation of graphs. For example, developer 820 selects the first version of graph 100 of FIG. 1 from code repository 822 . Developer 820 also selects overlay specification 200 of FIG. 4 from overlay repository 824 . In some examples, instead of selecting overlay specification 200 , developer 820 may select insert definitions from various overlay specifications in overlay repository 824 . Developer 820 instructs compiler 826 to compile a second version 828 of the graph based on first version of graph 100 and overlay specification 200 .

例によっては、挿入は自動的に挿入される。たとえば、前述の通り、グラフ100内の1つ又は複数のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素は、たとえば、入力接続又は出力接続がない構成要素を識別することによって、又はグラフ100内の構成要素の仕様を解析することによって自動的に識別される。識別されたデータ・ソース及び出力データ受信側は、グラフ100のデバッギング中に挿入によって置換されることになる、データ・ソース及び出力データ受信側のリストと自動的に比較することができる。たとえば、このリストは、開発者820が提供することができる。フォーマット特有の構成要素を解析して、入力されるデータのセットのフォーマットなど、特定のフォーマットのデータをこの構成要素が処理できるかどうかを判定することができる。データを処理できないフォーマット特有の構成要素のリストが生成される。例によっては、このリストは、開発者820が提供することができる。このリストに従って、グラフ100のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素用のオーバレイ指定が自動的に作成される。次いで、グラフの第2のバージョンが自動的にコンパイルされる。 In some cases, inserts are inserted automatically. For example, as noted above, one or more data sources, output data receivers, or format-specific components in graph 100 may be identified, for example, by identifying components that have no input or output connections, or It is automatically identified by analyzing the specifications of the components in graph 100 . The identified data sources and output data receivers can be automatically compared to a list of data sources and output data receivers that will be replaced by insertions during debugging of graph 100 . For example, this list can be provided by developer 820 . A format-specific component can be parsed to determine whether this component can process data in a particular format, such as the format of an incoming set of data. A list of format-specific components that cannot process the data is generated. In some examples, this list may be provided by developer 820 . According to this list, overlay specifications for data sources, output data receivers, or format-specific components of graph 100 are automatically created. A second version of the graph is then automatically compiled.

例によっては、オーバレイ指定は、コード・リポジトリ822又はオーバレイ・リポジトリ824内のファイルとして永続的に記憶されることはない。むしろ、通常オーバレイ・ファイルに含まれるはずの情報(たとえば、挿入定義)は、(たとえば、ユーザ・インターフェースを介して)開発者820によって作成され、又は解析エンジン300及び挿入エンジン306によって自動的に判定され、メモリに一時的に記憶される。次いで、オーバレイ情報は、コンパイラ(たとえば、図8の608)又は保存状態マネージャ(たとえば、図9の708)に渡される。 In some examples, overlay specifications are not persistently stored as files in code repository 822 or overlay repository 824 . Rather, the information (e.g., insert definitions) that would normally be included in an overlay file is created by developer 820 (e.g., via a user interface) or automatically determined by parsing engine 300 and inserting engine 306. and temporarily stored in memory. The overlay information is then passed to a compiler (eg, 608 in FIG. 8) or a save state manager (eg, 708 in FIG. 9).

図10を参照すると、例示的なプロセスでは、グラフの第1のバージョン(たとえば、図1のグラフ100)が受信される(902)。たとえば、グラフの第1のバージョンは、プロセッサがアクセス可能な短期記憶に受信することができる。グラフ100の第1のバージョンは、構成要素及びフローを含む。この構成要素は、データ・レコードに実行される動作を表し、このフローは、各構成要素間のデータ・レコードのフローを表す。 Referring to FIG. 10, in an exemplary process, a first version of a graph (eg, graph 100 of FIG. 1) is received (902). For example, a first version of the graph may be received in short-term memory accessible to the processor. A first version of graph 100 includes components and flows. The components represent the operations performed on the data records, and the flow represents the flow of data records between each component.

1つ又は複数の挿入を定義するオーバレイ指定が受信される(904)。例によっては、オーバレイ指定は、開発者又は試験者から受信される。例によっては、たとえば前述の通り、オーバレイ指定は自動的に定義される。オーバレイ指定は、図4に示すオーバレイ指定200でもよい。オーバレイ指定は、1つ又は複数の挿入定義(たとえば、1つ若しくは複数のテスト・ソース定義、1つ若しくは複数のプローブ定義、又は1つ若しくは複数の置換構成要素定義)を含むことができる。挿入定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ経路、及び(テスト・ソース定義用の)レイアウト・パラメータを含むことができる。定義されたテスト・ソース及びプローブのそれぞれは、グラフ100のフローに関連付けることができる。定義された置換構成要素のそれぞれは、グラフ100の構成要素に関連付けることができる。 An overlay specification is received that defines one or more inserts (904). In some examples, overlay specifications are received from developers or testers. In some instances, overlay specifications are automatically defined, eg, as described above. The overlay specification may be the overlay specification 200 shown in FIG. An overlay specification may include one or more insertion definitions (eg, one or more test source definitions, one or more probe definitions, or one or more replacement component definitions). An insert definition can include a name, upstream port, downstream port, insert type, prototype path, and layout parameters (for test source definitions). Each of the defined test sources and probes can be associated with a flow of graph 100 . Each of the defined replacement components can be associated with a component of graph 100 .

定義された挿入のうちの1つにそれぞれが対応する、1つ又は複数のオブジェクトが生成される(906)。オブジェクトは、テスト・ソース、プローブ、又は置換構成要素など、グラフの構成要素でもよい。 One or more objects, each corresponding to one of the defined inserts, are created (906). An object may be a graph component, such as a test source, probe, or replacement component.

グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含む、グラフの少なくとも一部分の第2のバージョンが生成される(908)。例によっては、グラフの第2のバージョンは、グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含むように修正された、元のグラフ100のコピーである。グラフの第2のバージョンは、修正されたグラフ(たとえば、図2のグラフ200の第2のバージョン、又は図3のグラフ300の第3のバージョン)によって視覚的に表すことができる。各オブジェクトは、(テスト・ソース若しくはプローブ用の)オブジェクトに対応する定義済みの挿入に関連付けられたフローにおいて、又はこのオブジェクトに対応する定義済みの置換構成要素に関連付けられた構成要素の代わりに挿入される。生成された挿入オブジェクトは、グラフ100のデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフ100の第1のバージョン(又は、グラフ100の第1のバージョンを含むファイル)は修正されない。 A second version of at least a portion of the graph is generated (908), including at least some of the components and flows of the portion of the graph 100 and the generated one or more objects. In some examples, the second version of the graph is a copy of the original graph 100 modified to include at least some of the components and flows of a portion of the graph 100 and one or more generated objects. is. The second version of the graph can be visually represented by a modified graph (eg, the second version of graph 200 of FIG. 2 or the third version of graph 300 of FIG. 3). Each object is inserted in the flow associated with the defined insertion corresponding to the object (for test sources or probes) or in place of the component associated with the defined replacement component corresponding to this object. be done. The generated insert object, along with the data processing components of graph 100, may be displayed in a second version of the graph, but the first version of graph 100 (or the file containing the first version of graph 100) ) are not modified.

グラフ及びオーバレイ指定をコンパイルして、オーバレイ・ファイルによって定義された挿入を含むグラフの第2のバージョンを作成できるコンパイラ(たとえば、図7のコンパイラ608、及び図8のコンパイラ712)を説明したが、実施形態によっては、グラフ及びオーバレイ指定はコンパイルされない。たとえば、グラフ及びオーバレイ指定は、コンパイルされることなく直接実行することができる。インタープリタは、それぞれのステートメントを、既に機械コードにコンパイルされている一連の1つ又は複数のサブルーチンに変換することによって、グラフ及びオーバレイ指定を直接実行することができる。 Having described compilers (e.g., compiler 608 in FIG. 7 and compiler 712 in FIG. 8) that can compile graphs and overlay specifications to create a second version of the graph that includes the inserts defined by the overlay files; In some embodiments, graphs and overlay specifications are not compiled. For example, graph and overlay specifications can be executed directly without being compiled. The interpreter can directly execute graph and overlay specifications by converting each statement into a series of one or more subroutines already compiled into machine code.

プローブ、テスト・ソース、及び置換構成要素の形で挿入を説明してきたが、実施形態によっては、挿入は他の形をとることができる。挿入を広く使用して、グラフの所与のポイントでデータを入力し、グラフの所与のポイントからデータを取り出すことができる。たとえば、グラフのフローを通過するデータの品質を監視するように、挿入を設計することができる。データ品質が閾値を下回る場合、ユーザは、自動警告を受信することができる。挿入のさらなる説明は、米国特許出願第14/715,904号に見いだすことができ、この内容全体を参考として本明細書に援用する。 Although insertions have been described in the form of probes, test sources, and replacement components, in some embodiments the insertions can take other forms. Insertion can be used extensively to enter data at a given point on the graph and retrieve data from a given point on the graph. For example, inserts can be designed to monitor the quality of data passing through the flow of the graph. Users can receive automatic alerts when the data quality is below a threshold. Further description of insertion can be found in US patent application Ser. No. 14/715,904, the entire contents of which are incorporated herein by reference.

さらに、グラフとの関連で挿入を説明してきたが、実施形態によっては、挿入は他の実行可能なアプリケーションとともに使用することができる。たとえば、包括的で実行可能なアプリケーション用のデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスは、このアプリケーションの自動解析を用いて識別することができる。識別されたデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスのうちの1つ又は複数は、それぞれ適切なテスト・ソース、プローブ、又は置換プロセスによって置換することができる。このようにして、実行可能なアプリケーションは、テスト・ソースからのデータを処理し、データをプローブに出力することができ、又は互いに異なるフォーマットのデータを処理できるようにすることができる。この構成は、実行可能なアプリケーションをテスト又はデバッグするのに役立つことがある。 Additionally, although insertion has been described in the context of graphs, in some embodiments, insertion can be used with other executable applications. For example, data sources, output data receivers, or format-specific processes for a generic executable application can be identified using automatic analysis of the application. One or more of the identified data sources, output data receivers, or format-specific processes can be replaced by appropriate test sources, probes, or replacement processes, respectively. In this way, executable applications can process data from test sources, output data to probes, or be able to process data in different formats from each other. This configuration may be useful for testing or debugging executable applications.

前述の手法は、適切なソフトウェアを実行するコンピューティング・システムを使用して実施することができる。たとえば、ソフトウェアは、(分散アーキテクチャ、クライアント/サーバ、又はグリッドなど様々なアーキテクチャでよい)1つ又は複数のプログラムされた、又はプログラム可能なコンピューティング・システム上で実行される、1つ又は複数のコンピュータ・プログラムでの手順を含んでもよく、このコンピューティング・システムのそれぞれが、少なくとも1つのプロセッサ、(揮発性メモリ及び/又は不揮発性メモリ、及び/又は記憶素子を含む)少なくとも1つのデータ記憶装置システム、(少なくとも1つの入力装置若しくは入力ポートを使用して入力を受信し、少なくとも1つの出力装置若しくは出力ポートを使用して出力を供給するための)少なくとも1つのユーザ・インターフェースを備える。ソフトウェアは、たとえば、グラフの設計、構成、及び実行に関連するサービスを提供する、比較的大きいプログラムの1つ又は複数のモジュールを含んでもよい。プログラムの各モジュール(たとえばグラフの要素)は、データ構造として、又はデータ・リポジトリに記憶されたデータ・モデルに合致する他の編成データとして実装することができる。 The techniques described above may be implemented using a computing system executing suitable software. For example, the software may be one or more computers running on one or more programmed or programmable computing systems (which may be of various architectures such as distributed architecture, client/server, or grid). may include steps in a computer program, each of the computing systems having at least one processor, at least one data storage device (including volatile and/or non-volatile memory, and/or storage elements) A system comprises at least one user interface (for receiving input using at least one input device or input port and for providing output using at least one output device or output port). Software may include, for example, one or more modules of relatively large programs that provide services related to graph design, construction, and execution. Each module of the program (eg, elements of a graph) can be implemented as a data structure or other organized data conforming to a data model stored in a data repository.

ソフトウェアは、(たとえば、汎用若しくは専用の、コンピューティング・システム若しくはコンピューティング装置によって読取り可能な)CD-ROM又は他のコンピュータ読取り可能な媒体など、有形で持続的な媒体上に実装してもよく、又はネットワークの通信媒体を介して、ソフトウェアが実行されるコンピューティング・システムの有形で持続的な媒体に送達してもよい(たとえば、伝搬信号において符号化してもよい)。処理の一部又は全ては、専用コンピュータ上で実行してもよく、又は、コプロセッサ若しくはフィールド・プログラマブル・ゲート・アレイ(FPGA)、若しくは専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して実行してもよい。ソフトウェアによって指定された計算の様々な部分を様々なコンピューティング要素によって実行する分散方式で、処理を実施してもよい。本明細書に記載の処理を実行するよう、記憶装置媒体がコンピュータに読み取られるときにコンピュータを構成し動作させるために、このようなコンピュータ・プログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータでアクセス可能な記憶装置のコンピュータ読取り可能な記憶媒体(たとえば、固体記憶装置若しくは固体記憶媒体、又は磁気媒体若しくは光媒体)に、記憶又はダウンロードされることが好ましい。この発明性のあるシステムは又、コンピュータ・プログラムで構成された有形の持続的な媒体として実施されるものとみなしてもよく、ここで、そのように構成された媒体により、コンピュータは、特定の事前定義された方式で動作して、本明細書に記載の処理ステップのうちの1つ又は複数を実行できるようになる。 The software may be implemented on a tangible, persistent medium such as a CD-ROM or other computer-readable medium (eg, readable by a general-purpose or special-purpose computing system or device). , or over the communications medium of a network, in a tangible and persistent medium of the computing system on which the software executes (eg, encoded in a propagated signal). Some or all of the processing may be performed on a dedicated computer, or dedicated hardware such as a coprocessor or field programmable gate array (FPGA), or dedicated application specific integrated circuit (ASIC). can be run using Processing may also be implemented in a distributed fashion, with different computing elements performing different portions of the calculations specified by the software. Each such computer program is accessed by a general purpose or special purpose programmable computer to configure and operate the computer when the storage medium is read by the computer to perform the processes described herein. It is preferably stored or downloaded to a computer readable storage medium capable of storage (eg, a solid state memory device or medium, or a magnetic or optical medium). The inventive system may also be viewed as embodied in a tangible, persistent medium configured with a computer program, wherein the medium so configured enables the computer to perform a specific It operates in a predefined manner to enable one or more of the processing steps described herein.

いくつもの実施形態を説明してきた。それにもかかわらず、前述の説明は、本発明の範囲を例示するものであり、それを限定するものではなく、本発明の範囲は、添付の特許請求の範囲に記載の範囲によって定義されることを理解されたい。したがって、他の実施形態も、添付の特許請求の範囲に記載の範囲内にある。たとえば、本発明の範囲から逸脱することなく、様々な修正を加えてもよい。さらに、前述のステップのいくつかは、順序に依存しなくてもよく、したがって、記載された順序とは異なる順序で実行することができる。 A number of embodiments have been described. Nevertheless, the foregoing description is intended to illustrate rather than limit the scope of the invention, which is defined by the scope of the appended claims. Please understand. Accordingly, other embodiments are within the scope of the following claims. For example, various modifications may be made without departing from the scope of the invention. Additionally, some of the steps described above may be order independent and, therefore, may be performed in a different order than the order described.

Claims (26)

コンピュータ・プログラムの第1のバージョンをプロセッサによって解析することであって、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットのデータに第1の動作を実行するように構成されることと、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成することであって、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含むこととを含み、前記第2の動作が前記第1の動作に基づく、方法。
analyzing a first version of a computer program by a processor, including identifying a first process included in the first version of the computer program, the first process comprising: configured to perform a first operation on data in one format;
generating, by a processor, a second version of at least a portion of said computer program, comprising omitting said first process, wherein data in a second format different from said first format; including in said second version of said at least one portion of a computer program one or more second processes configured to perform the second act, wherein said second act is performed by said second A method based on the operation of 1.
第1のプロセスを識別することは、前記第1の動作が前記データの前記フォーマットに依存している第1のプロセスを識別することを含む、請求項1に記載の方法。 2. The method of claim 1, wherein identifying a first process comprises identifying a first process for which said first operation depends on said format of said data. 第1のプロセスを識別することが、前記第2のフォーマットのデータに前記第1の動作を実行することができない第1のプロセスを識別することを含む、請求項1又は2に記載の方法。 3. The method of claim 1 or 2, wherein identifying a first process comprises identifying a first process incapable of performing said first operation on data in said second format. 処理すべきデータのフォーマットを、前記第1のプロセスによって決定することを含む、請求項1~3のいずれか一項に記載の方法。 A method according to any one of claims 1 to 3, comprising determining, by said first process, the format of data to be processed. 第1のプロセスを識別することが、前記第1のプロセスによって処理される前記データの前記フォーマットを有するデータに、前記第1の動作を実行することができない第1のプロセスを識別することを含む、請求項4に記載の方法。 Identifying a first process includes identifying a first process incapable of performing said first operation on data having said format of said data processed by said first process. A method according to claim 4. 第1のプロセスを識別することが、前記コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、前記第1のデータ処理要素が、前記第1のプロセスを実行するように構成される、請求項1~5のいずれか一項に記載の方法。 identifying a first process comprises identifying a first data processing element of said computer program, said first data processing element configured to execute said first process; , the method according to any one of claims 1 to 5. 前記コンピュータ・プログラムでの前記1つ又は複数の第2のプロセスを含むことが、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンでの1つ又は複数の第2のデータ処理要素を含み、前記第2のデータ処理要素が、前記1つ又は複数の第2のプロセスを実行するように構成される、請求項6に記載の方法。 including said one or more second processes in said computer program includes one or more second data processing elements in said second version of said at least part of said computer program 7. The method of claim 6, wherein said second data processing element is configured to execute said one or more second processes. 前記第1のフォーマットが、データ・タイプを含む、請求項1~7のいずれか一項に記載の方法。 A method according to any preceding claim, wherein said first format comprises a data type. 前記第1のフォーマットが、データ要素のサイズを含む、請求項1~8のいずれか一項に記載の方法。 A method according to any one of claims 1 to 8, wherein said first format comprises the size of data elements. 前記第1のプロセスが、第1のレコード・フォーマットのデータ・レコードに前記第1の動作を実行するように構成され、前記1つ又は複数の第2のプロセスが、第2のレコード・フォーマットのデータ・レコードに前記第2の動作を実行するように構成される、請求項1~9のいずれか一項に記載の方法。 The first process is configured to perform the first operation on data records of a first record format, and the one or more second processes are configured to perform the first operation on data records of a second record format. A method according to any preceding claim, arranged to perform said second operation on data records. 前記第1のレコード・フォーマットが、前記レコードでのフィールドの名前を含む、請求項10に記載の方法。 11. The method of claim 10, wherein said first record format includes names of fields in said record. ユーザ・インターフェースにおいて、1つ又は複数の動作のうちの第1のセットの識別子を提示することを含む、請求項1~11のいずれか一項に記載の方法。 A method according to any one of claims 1 to 11, comprising presenting an identifier of the first set of one or more actions in a user interface. 前記コンピュータ・プログラムの少なくとも一部分の前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記一部分のコピーを生成することを含む、請求項1~12のいずれか一項に記載の方法。 A method according to any one of claims 1 to 12, wherein generating said second version of at least part of said computer program comprises generating a copy of said part of said computer program. 前記コンピュータ・プログラムの前記一部分の前記コピーを修正して、前記第1のプロセスを省略し、前記1つ又は複数の第2のプロセスを含むことを含む、請求項13に記載の方法。 14. The method of claim 13, comprising modifying the copy of the portion of the computer program to omit the first process and include the one or more second processes. 前記コンピュータ・プログラムの前記第2のバージョンを実行することを含む、請求項1~14のいずれか一項に記載の方法。 A method according to any one of claims 1 to 14, comprising executing said second version of said computer program. 前記1つ又は複数の第2のプロセスがオーバレイ指定によって定義される、請求項1~15のいずれか一項に記載の方法。 A method according to any preceding claim, wherein said one or more second processes are defined by overlay specifications. 前記コンピュータ・プログラムの前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記第1のバージョン及び前記オーバレイ指定に基づいて前記第2のバージョンを生成することを含む、請求項16に記載の方法。 17. The method of claim 16, wherein generating the second version of the computer program comprises generating the second version based on the first version of the computer program and the overlay specification. the method of. 前記オーバレイ指定が、前記第1のプロセスの上流のプロセス及び前記第1のプロセスの下流のプロセスのうち1つ又は複数を識別する、請求項16又は17に記載の方法。 18. The method of claim 16 or 17, wherein the overlay designation identifies one or more of a process upstream of the first process and a process downstream of the first process. 前記第1のプロセスを定義する実行可能コードの解析に基づいて、前記第1のプロセスを識別することを含む、請求項16~18のいずれか一項に記載の方法。 A method as claimed in any one of claims 16 to 18, comprising identifying the first process based on analysis of executable code defining the first process. 前記コンピュータ・プログラムがグラフを含む、請求項1に記載の方法。 2. The method of claim 1, wherein said computer program comprises a graph. 前記第1のプロセスが、前記グラフの第1の構成要素によって表される実行可能なプロセスであり、前記1つ又は複数の第2のプロセスが、前記グラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである、請求項1~20のいずれか一項に記載の方法。 wherein the first process is an executable process represented by a first component of the graph and the one or more second processes are one or more second configurations of the graph; A method according to any one of claims 1 to 20, which is an executable process represented by elements. 前記1つ又は複数の第2の構成要素が、前記グラフの上流構成要素からデータ・レコードを受信するように構成される、請求項21に記載の方法。 22. The method of claim 21, wherein the one or more second components are configured to receive data records from upstream components of the graph. 前記1つ又は複数の第2の構成要素が、前記グラフの下流構成要素にデータ・レコードを提供するように構成される、請求項21又は22に記載の方法。 23. A method according to claim 21 or 22, wherein said one or more second components are arranged to provide data records to downstream components of said graph. コンピュータ・プログラムの第1のバージョンをプロセッサによって解析するための手段であって、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成される手段と、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成するための手段であって、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含む手段とを備え、前記第2の動作が前記第1の動作に基づく、システム。
means for analyzing a first version of a computer program by a processor, said analyzing comprising identifying a first process included in said first version of said computer program; means wherein the first process is configured to perform a first operation on data having a first format;
Means for generating by a processor a second version of at least a portion of said computer program comprising omitting said first process and having a second format different from said first format. including in said second version of said at least part of said computer program one or more second processes configured to perform a second operation on data; A system, wherein an action is based on said first action.
メモリに結合されたプロセッサを備え、前記プロセッサ及びメモリが、
コンピュータ・プログラムの第1のバージョンを解析するように構成され、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するように構成され、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含み、前記第2の動作が前記第1の動作に基づく、システム。
a processor coupled to a memory, the processor and memory comprising:
configured to analyze a first version of a computer program, said analyzing comprising identifying a first process included in said first version of said computer program; a process configured to perform a first operation on data having a first format;
configured to generate a second version of at least a portion of said computer program, comprising omitting said first process; in said second version of said at least a portion of said computer program, said second action being configured to perform the action of based on the system.
コンピューティング・システムが、
コンピュータ・プログラムの第1のバージョンを解析するようにし、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するようにし、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含むようにするための命令を記憶し、前記第2の動作が前記第1の動作に基づく、持続的なコンピュータ読取り可能な媒体。
the computing system
A first version of a computer program is analyzed, said analyzing comprising identifying a first process included in said first version of said computer program, said first process comprising: , configured to perform a first operation on data having a first format;
a second operation on data having a second format different from the first format, comprising generating a second version of at least a portion of said computer program and omitting said first process; storing instructions for including in said second version of said at least a portion of said computer program one or more second processes configured to perform said second act is based on said first act.
JP2023015892A 2016-06-03 2023-02-06 Format-specific data processing operation Pending JP2023071664A (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662345217P 2016-06-03 2016-06-03
US62/345,217 2016-06-03
US15/433,467 2017-02-15
US15/433,467 US10936289B2 (en) 2016-06-03 2017-02-15 Format-specific data processing operations
JP2018563483A JP2019521430A (en) 2016-06-03 2017-05-18 Format-specific data processing operations
PCT/US2017/033285 WO2017209969A1 (en) 2016-06-03 2017-05-18 Format-specific data processing operations

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018563483A Division JP2019521430A (en) 2016-06-03 2017-05-18 Format-specific data processing operations

Publications (1)

Publication Number Publication Date
JP2023071664A true JP2023071664A (en) 2023-05-23

Family

ID=59009783

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018563483A Pending JP2019521430A (en) 2016-06-03 2017-05-18 Format-specific data processing operations
JP2023015892A Pending JP2023071664A (en) 2016-06-03 2023-02-06 Format-specific data processing operation

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018563483A Pending JP2019521430A (en) 2016-06-03 2017-05-18 Format-specific data processing operations

Country Status (9)

Country Link
US (2) US10936289B2 (en)
EP (1) EP3465422B1 (en)
JP (2) JP2019521430A (en)
CN (1) CN109564507B (en)
AU (2) AU2017274407B2 (en)
CA (1) CA3026334C (en)
DE (1) DE112017002779T5 (en)
SG (1) SG11201810383SA (en)
WO (1) WO2017209969A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US11184271B2 (en) * 2017-04-06 2021-11-23 At&T Intellectual Property I, L.P. Network service assurance system
US11182238B2 (en) * 2019-07-16 2021-11-23 International Buusiness Machines Corporation Problematic characters

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS626344A (en) 1985-07-02 1987-01-13 Nec Corp Program debug system
JPS63125088A (en) * 1986-11-14 1988-05-28 Nec Corp Data access system in multi-switching system
JPH02294824A (en) * 1989-05-10 1990-12-05 Hokuriku Nippon Denki Software Kk Table design document creation device
JP2555920B2 (en) * 1993-01-25 1996-11-20 日本電気株式会社 Online real-time processor
JPH0926897A (en) * 1995-05-08 1997-01-28 Toshiba Corp Program analyzer and program analyzing method
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH1083328A (en) 1996-09-05 1998-03-31 Nec Corp Pseudo input/output realizing system for single body test
US6102968A (en) 1998-05-21 2000-08-15 Lucent Technologies Inc. Method for automatically closing open reactive systems
US6389429B1 (en) 1999-07-30 2002-05-14 Aprimo, Inc. System and method for generating a target database from one or more source databases
US6983317B1 (en) 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6631386B1 (en) 2000-04-22 2003-10-07 Oracle Corp. Database version control subsystem and method for use with database management system
WO2002084879A2 (en) 2001-04-13 2002-10-24 The Code Coproration System and method for encoding and decoding data and references to data in machine-readable graphical codes
GB2379293B (en) * 2001-08-31 2005-07-06 Discreet Logic Inc Processing Data in an Application comprising a plurality of Application Modules
US7529822B2 (en) 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US8020148B2 (en) 2002-09-23 2011-09-13 Telefonaktiebolaget L M Ericsson (Publ) Bi-directional probing and testing of software
US8676720B1 (en) 2002-09-26 2014-03-18 Requisite Software, Inc. Collaborative method for managing electronic catalogs
US7039645B1 (en) 2002-09-26 2006-05-02 Requisite Technology, Inc. Managing content of an electronic catalog by collaboration with another electronic catalog
US7100172B2 (en) * 2002-11-27 2006-08-29 Microsoft Corporation System and method for changing operation of an application without recompiling
US7421621B1 (en) 2003-09-19 2008-09-02 Matador Technologies Corp. Application integration testing
JP2005228183A (en) * 2004-02-16 2005-08-25 Hitachi Ltd Program execution method and computer system for executing the program
JP2005301359A (en) * 2004-04-06 2005-10-27 Denso Corp Software component management device
US7506304B2 (en) 2004-05-14 2009-03-17 National Instruments Corporation Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation
US7380171B2 (en) 2004-12-06 2008-05-27 Microsoft Corporation Controlling software failure data reporting and responses
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7587636B2 (en) 2005-08-04 2009-09-08 Microsoft Corporation Unit test generalization
CN100405323C (en) 2005-09-20 2008-07-23 中国科学院计算技术研究所 Method for realizing supporting of EJTAG detection in instruction grade random detection
US20070074175A1 (en) 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US7660666B2 (en) 2005-11-18 2010-02-09 Navteq North America, Llc Geographic database with detailed local data
US7617231B2 (en) 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US8079019B2 (en) 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US7644334B2 (en) 2006-11-27 2010-01-05 Honeywell International, Inc. Requirements-based test generation
US7860905B2 (en) 2007-04-24 2010-12-28 Microsoft Corporation Systems and methods for modularizing data flows
US8583613B2 (en) * 2007-08-21 2013-11-12 Oracle International Corporation On demand data conversion
US8400530B2 (en) 2007-12-28 2013-03-19 Panasonic Corporation Communication device, communication system, image presentation method, and program
US7502972B1 (en) 2008-03-16 2009-03-10 International Business Machines Corporation Reducing log entries using hash keys
US8949140B2 (en) 2008-04-21 2015-02-03 International Business Machines Corporation Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
US20100153928A1 (en) * 2008-12-16 2010-06-17 Microsoft Corporation Developing and Maintaining High Performance Network Services
AU2010337218B2 (en) 2009-12-14 2015-09-24 Ab Initio Technology Llc Specifying user interface elements
US9052908B2 (en) * 2010-01-22 2015-06-09 The Regents Of The University Of California Web application development framework
US8397195B2 (en) 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
US8370809B2 (en) 2010-03-18 2013-02-05 Salesforce.Com, Inc. System, method and computer program product for automated test case generation and scheduling
US8875145B2 (en) * 2010-06-15 2014-10-28 Ab Initio Technology Llc Dynamically loading graph-based computations
US8627296B1 (en) 2010-09-15 2014-01-07 Google Inc. Unified unit and integration test with automatic mock creation
US20120078731A1 (en) * 2010-09-24 2012-03-29 Richard Linevsky System and Method of Browsing Electronic Catalogs from Multiple Merchants
US20120131559A1 (en) 2010-11-22 2012-05-24 Microsoft Corporation Automatic Program Partition For Targeted Replay
US9563411B2 (en) * 2011-01-07 2017-02-07 Ab Initio Technology Llc Flow analysis instrumentation
US20120185767A1 (en) * 2011-01-14 2012-07-19 Apple Inc. Modifying application behavior
US8874622B2 (en) 2011-03-28 2014-10-28 Microsoft Corporation Flexible order of authoring for data integration solutions
US8386419B2 (en) 2011-05-12 2013-02-26 Narendar Yalamanchilli Data extraction and testing method and system
JP5906789B2 (en) 2012-02-17 2016-04-20 株式会社ソシオネクスト Message output control device and message output control method
US9146750B2 (en) * 2012-08-10 2015-09-29 The Mathworks, Inc. Mechanism for replacing an array creation routine within code
US9002348B2 (en) 2012-11-20 2015-04-07 Aeris Communications, Inc. Utilizing devices nearby
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
EP2881857B8 (en) * 2013-12-09 2018-09-12 dSPACE digital signal processing and control engineering GmbH Method for modifying the software in the memory of an electronic control device
US9430228B2 (en) * 2013-12-16 2016-08-30 International Business Machines Corporation Verification of backward compatibility of software components
JP6882892B2 (en) * 2013-12-18 2021-06-02 アビニシオ テクノロジー エルエルシー Data generation
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US9804946B2 (en) * 2015-05-27 2017-10-31 Oracle International Corporation System and method for providing automated computer language translation and verification
US10671669B2 (en) * 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10929122B1 (en) * 2019-10-23 2021-02-23 Microsoft Technology Licensing, Llc Modifying program modules in running applications

Also Published As

Publication number Publication date
CA3026334C (en) 2023-07-25
EP3465422A1 (en) 2019-04-10
CN109564507B (en) 2022-06-24
AU2021201363A1 (en) 2021-03-18
US20210182038A1 (en) 2021-06-17
DE112017002779T5 (en) 2019-02-28
JP2019521430A (en) 2019-07-25
EP3465422B1 (en) 2022-09-14
AU2017274407A1 (en) 2018-12-13
US10936289B2 (en) 2021-03-02
US11347484B2 (en) 2022-05-31
AU2021201363B2 (en) 2022-11-24
US20170351494A1 (en) 2017-12-07
CN109564507A (en) 2019-04-02
WO2017209969A1 (en) 2017-12-07
CA3026334A1 (en) 2017-12-07
SG11201810383SA (en) 2018-12-28
AU2017274407B2 (en) 2020-12-10

Similar Documents

Publication Publication Date Title
JP2023071664A (en) Format-specific data processing operation
CN107111545B (en) Method and system for generating computer executable graph
US10705807B2 (en) Application testing
US20230112179A1 (en) Automated modification of computer programs
CN115292160B (en) Application testing
CA3233392A1 (en) Automated modification of computer programs
US9098624B1 (en) Deep type parsing
CN118202331A (en) Automatic modification of computer programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240531