JP7842722B2 - 永続的コンピュータプログラムへの仕様書の変換 - Google Patents

永続的コンピュータプログラムへの仕様書の変換

Info

Publication number
JP7842722B2
JP7842722B2 JP2023177212A JP2023177212A JP7842722B2 JP 7842722 B2 JP7842722 B2 JP 7842722B2 JP 2023177212 A JP2023177212 A JP 2023177212A JP 2023177212 A JP2023177212 A JP 2023177212A JP 7842722 B2 JP7842722 B2 JP 7842722B2
Authority
JP
Japan
Prior art keywords
module
modules
fields
data
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.)
Active
Application number
JP2023177212A
Other languages
English (en)
Other versions
JP2024009960A (ja
Inventor
ヨナ・エゲノルフ
マーシャル・エー・イスマン
フレデリック・ワイルド
Original Assignee
アビニシオ テクノロジー エルエルシー
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 アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2024009960A publication Critical patent/JP2024009960A/ja
Application granted granted Critical
Publication of JP7842722B2 publication Critical patent/JP7842722B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1794Details of file format conversion
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/26Visual data mining; Browsing structured data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本願は、仕様書を、構造化データ項目内の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するための、コンピュータシステムにより実行される方法、コンピュータシステム、及びコンピュータ可読媒体に関する。
複雑なデータ処理システムは典型的に、データを複数の段階で処理し、1つの段階で生成された結果が次の段階に供給される。このようなシステムを通じた全体的な情報の流れは、有向データフローグラフで説明され得、グラフ内のノード又は頂点はコンポーネント(データファイル又はプロセス)を表し、グラフ内のリンク又は「エッジ」はコンポーネント間のデータフローを示す。このようなグラフを用いた計算を実行するシステムは、“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”と題する先行技術の(特許文献1)に記載されており、これは参照によって本願に援用される。
グラフはまた、計算を直接呼び出すためにも使用できる。このシステムにより作成されたグラフは、情報をグラフのコンポーネントにより表される個別のプロセスの中に投入し、及びそこから引き出すため、情報をプロセス間で移動させるため、及びそのプロセスのための実行順序を規定するための方法を提供する。これらのグラフを呼び出すシステムは、プロセス間通信方法を選択するアルゴリズム及びプロセス実行のスケジュールを立てるアルゴリズムを含み、また、グラフの実行のモニタも提供する。
米国特許第5,966,072号明細書
一般的態様1において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法が説明され、これは、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスするステップと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換するステップであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々、(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づく1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値だけを出力するように設定することと、を含むステップと、永続的メモリの中にコンピュータプログラムを保存するステップであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々のための設定された出力データフォーマットを指定するステップと、を含む。1つ又は複数のコンピュータのシステムは、動作時にシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステム上にインストールされることにより、特定の動作又はアクションを行うように構成できる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されると、装置にアクションを実行させる命令を含むことにより、特定の動作又はアクションを実行するように構成できる。
態様1による態様2において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
態様1~2の何れか1つによる態様3において、コンピュータプログラムは永続的且つ編集可能である。
態様1~3の何れか1つによる態様4において、コンピュータプログラムはデータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
態様1~4の何れか1つによる態様5において、方法は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスするステップと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定するステップと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定するステップと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加するステップと、をさらに含む。
態様1~5の何れか1つによる態様6において、方法は、データフローグラフコンポーネント間の依存性を特定するステップと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定するステップと、をさらに含む。
態様1~6の何れか1つによる態様7において、方法は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定するステップと、をさらに含む。
態様1~7の何れか1つによる態様8において、方法は、ユーザインタフェースの表示のためにデータを提供するステップと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信するステップと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信するステップと、をさらに含む。
態様1~8の何れか1つによる態様9において、方法は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定するステップと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力するステップと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
態様1~9の何れか1つによる態様10において、方法は、選択されたモジュールをパラメータの値で構成するステップと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶するステップと、をさらに含む。
態様1~10の何れか1つによる態様11において、方法は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存するステップをさらに含み、実行するステップは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
態様1~11の何れか1つによる態様12において、方法は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信するステップと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去するステップと、をさらに含む。
態様1~12の何れか1つによる態様13において、方法は、仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存するステップと、をさらに含む。
態様1~13の何れか1つによる態様14において、方法は、仕様書の中で、1つ又は複数の新規モジュールを定義するステップと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存するステップと、をさらに含む。
態様1~14の何れか1つによる態様15において、方法は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスするステップと、定義済みモジュールの1つ又は複数の属性を変更するステップと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行するステップと、をさらに含む。
態様1~15の何れか1つによる態様16において、方法は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義するステップと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義するステップと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成するステップと、をさらに含む。
態様1~16の何れか1つによる態様17において、モジュールは1つ又は複数の他のモジュールを含む。
態様1~17の何れか1つによる態様18において、方法は、選択されたモジュールをパラメータの値で構成するステップと、構成されたモジュールを、後で他のプログラムに含めるために記憶するステップと、をさらに含む。
態様1~18の何れか1つによる態様19において、方法は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定するステップと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定するステップと、をさらに含む。
態様1~19の何れか1つによる態様20において、構造化データ項目はデータレコードを含む。
一般的態様21において、方法は、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換する中でコンピュータシステムが実行する方法は、複数のモジュールを指定する仕様書を、構造化データ項目の前記1つ又は複数のフィールドの1つ又は複数の値を処理するためにモジュールを実装するためのコンピュータプログラムに変換するステップであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受信する1つ又は複数の第二のモジュールを特定することと、フィールドの、そのための1つ又は複数の値が1つ又は複数の第二のモジュールによって処理される1つ又は複数を、1つ又は複数の第二のモジュールの各々について、第二のモジュールが1つ又は複数のフィールドの1つ又は複数の値を処理するように構成されているときに、フィールドの、そのための1つ又は複数の値がその第二のモジュールによって処理される1つ又は複数を特定することによって特定することと、そのための1つ又は複数の値が1つ又は複数の第二のモジュールにより処理される1つ又は複数のフィールドの中から、フィールドの、そのための1つ又は複数の値が第一のモジュールにとってアクセス可能な1つ又は複数を特定することと、そのための1つ又は複数の値が第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの各々について、フィールドの値が、少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されるか否かを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することによって特定することと、を含む、変換するステップと、永続的メモリの中に、コンピュータプログラムを保存するステップであって、コンピュータプログラムは、1つ又は複数の第一のモジュールの各々についての出力データフォーマットを指定するステップと、を含む。この態様のその他の実施形態は、それに対応するコンピュータシステム、装置、及び、1つ又は複数のコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、各々が方法の動作を実行するように構成される。1つ又は複数のコンピュータのシステムは、動作中に、システムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せがシステムに組み込まれていることよって、特定の動作又はアクションを実行するように構成できる。1つ又は複数のコンピュータプログラムは、データ処理装置により実行されたときに、装置にアクションを実行させる命令を含むことによって、特定の動作又はアクションを実行するように構成できる。
一般的態様22において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するためのコンピュータシステムであって、コンピュータシステムは、1つ又は複数の処理装置と、1つ又は複数の処理装置により実行可能であり、構造化データ項目の中の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装するコンピュータプログラムに変換することであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する1つ又は複数の機械可読ハードウェア記憶装置と、を含む。
態様22による態様23において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
態様22~23の何れか1つによる態様24において、コンピュータプログラムは永続的且つ編集可能である。
態様22~24の何れか1つによる態様25において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
態様22~25の何れか1つによる態様26において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
態様22~26の何れか1つによる態様27において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
態様22~27の何れか1つによる態様28において、動作は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
態様22~28の何れか1つによる態様29において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
態様22~29の何れか1つによる態様30において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
態様22~30の何れか1つによる態様31において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
態様22~31の何れか1つによる態様32において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
態様22~32の何れか1つによる態様33において、動作は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信することと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去することと、をさらに含む。
態様22~33の何れか1つによる態様34において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
態様22~34の何れか1つによる態様35において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
態様22~35の何れか1つによる態様36において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの1つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
態様22~36の何れか1つによる態様37において、動作は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義することと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成することと、をさらに含む。
態様22~37の何れか1つによる態様38において、モジュールは1つ又は複数の他のモジュールを含む。
態様22~38の何れか1つによる態様39において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
態様22~39の何れか1つによる態様40において、動作は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
態様22~40の何れか1つによる態様41において、構造化データ項目はデータレコードを含む。
一般的態様42において、仕様書を、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値を処理するコンピュータプログラムに変換するための1つ又は複数の機械可読ハードウェア記憶装置において、1つ又は複数の機械可読ハードウェア記憶装置は、1つ又は複数の処理装置により実行可能であり、構造化データ項目の中の1つ又は複数のフィールドの1つ又は複数の値を処理するためにコンピュータプログラムにより実装されることになる複数のモジュールを指定する仕様書にアクセスすることと、仕様書を、複数のモジュールを実装する前記コンピュータプログラムに変換することであって、複数のモジュールの1つ又は複数の第一のモジュールの各々について、複数のモジュールの、各々が少なくとも部分的に第一のモジュールの出力に基づく入力を受け取る1つ又は複数の第二のモジュールを特定することと、第一のモジュールの出力データフォーマットを、第一のモジュールが、構造化データ項目の、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づいて1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定される1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することと、を含む、変換することと、永続的メモリに、コンピュータプログラムを保存することであって、保存されたコンピュータプログラムは、1つ又は複数の第一のモジュールの各々について設定された出力データフォーマットを指定する、保存することと、を含む動作を実行する命令を記憶する。
態様42による態様43において、コンピュータプログラムの1つ又は複数の部分の内容は、仕様書とは異なり、ユーザの入力を必要とせずに自動的に生成される。
態様42~43の何れか1つによる態様44において、コンピュータプログラムは永続的且つ編集可能である。
態様42~44の何れか1つによる態様45において、コンピュータプログラムはテータフローグラフであり、モジュールの各々は、データフローグラフのノードにより表されるデータフローグラフのコンポーネントであり、データフローグラフコンポーネントは、ノード間のリンクにより表されるデータフローにより結合される。
態様42~45の何れか1つによる態様46において、動作は、データ記憶システムの中で、仕様書の一部を表すデータをデータフローグラフコンポーネントにマッピングするデータ構造にアクセスすることと、データ構造の中で、仕様書の特定の部分を表すデータの項目を特定することと、データ構造の中で、どのデータフローグラフコンポーネントが仕様書のその特定の部分にマッピングされるかを特定することと、特定されたデータフローグラフコンポーネントを、仕様書により指定される動作の実行順序にしたがってデータフローグラフに追加することと、をさらに含む。
態様42~46の何れか1つによる態様47において、動作は、データフローグラフコンポーネント間の依存性を特定することと、少なくとも部分的にこれらの特定された依存性に基づいて、データフローグラフコンポーネントの出力データフォーマットを指定することと、をさらに含む。
態様42~47の何れか1つによる態様48において、動作は、特定の第一のモジュールについて、1つ又は複数の第二のモジュールのうちの1つのみが特定の第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、複数のモジュールの、特定の第一のモジュール及び1つ又は複数の第二のモジュールの各々とは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
態様42~48の何れか1つによる態様49において、動作は、ユーザインタフェースの表示のためにデータを提供することと、ユーザインタフェースを介して、複数のモジュールの中からの、コンピュータプログラムに含めるための1つ又は複数のモジュールの選択を表すデータを受信することと、ユーザインタフェースを介して、選択された各モジュールについて、その選択された1つ又は複数のモジュールによって実装される動作のパラメータの値を受信することと、をさらに含む。
態様42~49の何れか1つによる態様50において、動作は、ユーザインタフェースを介して受信した値が、動作に関連付けられる所定の基準に適合するか否かを特定することと、受信した値が所定の基準に適合するか否かを示す通知をユーザインタフェースを介して出力することと、をさらに含み、受信した値が所定の基準に適合しないと特定された場合、通知は受信した値を所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む。
態様42~50の何れか1つによる態様51において、動作は、選択されたモジュールをパラメータの値で構成することと、その後、他のコンピュータプログラムに含められ、それによって実装される構成済みモジュールを記憶することと、をさらに含む。
態様42~51の何れか1つによる態様52において、動作は、コンピュータプログラムを実行する前に、複数のモジュールの各特定のモジュールについて、第一、第二、及び第三のパスを実行して、その特定のモジュールのための、その特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する設定された出力データフォーマットを特定して、保存し、その特定のモジュールのための、その特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを特定して、保存することをさらに含み、実行することは、第一のパス中に、その特定のモジュールは、その特定のモジュールの上流のモジュールに対し、それ自体により、及びその特定のモジュールの下流の何れかのモジュールにより必要とされる1つ又は複数のフィールドを表すデータを含む1つ又は複数のメッセージをブロードキャストすることを含み、ブロードキャストを行う特定のモジュールはブロードキャストモジュールであり、ブロードキャストを受信する上流のモジュールは受信モジュールであり、第二のパス中に、受信モジュールはブロードキャストモジュールに対し、どの受信モジュールが必要なフィールドの値を提供できるかを指定する1つ又は複数のメッセージを送信し、第三のパス中に、ブロードキャストモジュールは、受信モジュールから受信したメッセージを分析し、応答として、ブロードキャストモジュールは受信モジュールに対し、どの受信モジュールがブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つ又は複数のメッセージを返信する。
態様42~52の何れか1つによる態様53において、動作は、データストリームの中で、1つ又は複数のデータレコードを含む構造化データ項目を受信することと、1つ又は複数のデータレコードの少なくとも1つについて、コンピュータプログラムを実行して、1つ又は複数のデータレコードのうちの少なくとも1つを処理するステップと、1つ又は複数の第一のモジュールの少なくとも1つの保存された出力データフォーマットに基づき、1つ又は複数のレコードの少なくとも1つを1つ又は複数の第二のモジュールの1つにサブミットする前に、レコードの少なくとも1つから、少なくとも部分的に第一のモジュールの出力に基づいて、1つ又は複数の第二のモジュールの少なくとも1つへの入力として指定されない1つ又は複数のフィールドを除去することと、をさらに含む。
態様42~53の何れか1つによる態様54において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに保存することと、をさらに含む。
態様42~54の何れか1つによる態様55において、動作は、仕様書の中で、1つ又は複数の新規モジュールを定義することと、1つ又は複数の新規モジュールの少なくとも1つを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに保存することと、をさらに含む。
態様42~55の何れか1つによる態様56において、動作は、仕様書の定義のために、グローバルパレットに含められた、定義済みモジュールにアクセスすることと、定義済みモジュールの1つ又は複数の属性を変更することと、変更された定義済みモジュールを、その仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに記憶すること、又は変更された定義済みモジュールをグローバルパレットに保存して、変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるようにすることを含む動作を実行することと、をさらに含む。
態様42~56の何れか1つによる態様57において、動作は、仕様書の中で、1つ又は複数の新規第一のモジュールを定義することと、仕様書の中で、1つ又は複数の新規第二のモジュールを定義することと、1つ又は複数の新規第一のモジュールの少なくとも1つを、1つ又は複数の新規第二のモジュールの少なくとも1つのためのデータソースとなるように構成することと、をさらに含む。
態様42~57の何れか1つによる態様58において、モジュールは1つ又は複数の他のモジュールを含む。
態様42~58の何れか1つによる態様59において、動作は、選択されたモジュールをパラメータの値で構成することと、構成されたモジュールを、後で他のプログラムに含めるために記憶することと、をさらに含む。
態様42~59の何れか1つによる態様60において、動作は、1つ又は複数の第二のモジュールの1つのみが、第一のモジュールにとってアクセス可能な1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、1つ又は複数の第二のモジュールのその1つのみが、第一のモジュールとは異なる第三のモジュールからの1つ又は複数のフィールドの特定の1つにアクセスすることを特定することと、出力データフォーマットを、1つ又は複数の第二のモジュールのその1つのみによりアクセスされる1つ又は複数のフィールドの特定の1つのための1つ又は複数の値を出力しないように設定することと、をさらに含む。
態様42~60の何れか1つによる態様61において、構造化データ項目はデータレコードを含む。
第一のモジュールの出力データフォーマットを、第一のモジュールが、各々が(i)第一のモジュールにとってアクセス可能であり、(ii)少なくとも部分的に第一のモジュールの出力に基づく、1つ又は複数の第二のモジュールの少なくとも1つの入力として指定される、構造化データ項目の1つ又は複数のフィールドの1つ又は複数の値のみを出力するように設定することには数多くの利点がある。これらの利点には、計算リソース(メモリやCPU等)の消費が減ることが含まれ、それは、コンピュータプログラム内の下流のデータ処理のデータ処理要求事項を満たすために必要なデータフィールドだけがコンピュータプログラムに送信され、より深く処理されるからである。さらに、データレコード処理のレイテンシの短縮も実現され、それは、データ処理システムがより小さいレコード(例えば、フィールドのドロッピングによる)を、データ処理システムがデータフローグラフを通じたデータレコードの全体を処理しなければならない場合のデータ処理速度に関して、より迅速に処理できるからである。他の利点には、メモリ及びリソース消費の減少が含まれ、これは、レコードがより小さいことにより(例えば、フィールドのドロップによる)、レコードの処理中に消費されるメモリ空間がより小さいからである。
その他の特徴と利点は、以下の説明及び特許請求の範囲から明らかとなるであろう。
データベース管理システムの略図である。 データ処理システムの略図である。 モジュールを定義するための例示的なグラフィカルユーザインタフェースである。 モジュールを定義するための例示的なグラフィカルユーザインタフェースである。 永続的コンピュータプログラムへの仕様書の変換の例である。 永続的コンピュータプログラムへの仕様書の変換の例である。 永続的コンピュータプログラムへの仕様書の変換の例である。 仕様書のためのユーザ入力を受け取り、仕様書からエンティティを生成することを示す図である。 エンティティを含むデータフローグラフの図である。 仕様書のためのユーザ入力の受け取りと、仕様書からのコンピュータプログラムの生成を示す図である。 データフローグラフを通じたデータレコードの処理の図である。 フィールド特定のためのプロセスフローの図である。 仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。 仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。 仕様書のためのパラメータ値を指定するためのユーザインタフェースの例である。 エンティティを含むデータフローグラフの図である。 データフローグラフを生成するためのエンティティへと仕様書を変換するプロセスの図である。 コンピュータプログラムへと仕様書を変換するプロセスの図である。
以下に説明する例及び任意選択的特徴の各々は、付属の特許請求の範囲の何れと組み合わせてもよい。また、以下に説明する例及び任意選択による特徴の各々は、以下に説明する他の例及び任意選択による特徴の何れと組み合わせてもよく、この組合せを付属の特許請求の範囲の何れと組み合わせてもよい。
図1Aを参照すると、仕様書をデータフローグラフ等のコンピュータプログラムに変換するシステム1は、仕様書構成モジュール7と任意選択によるエンティティ生成モジュール6及びユーザインタフェースモジュール8を含む変換環境5のほか、データ記憶システム3と、データ処理システム4と、を含む。一般に、「エンティティ」には、コンピュータプログラムの一部(例えば、あるコンピュータプログラムのうち、他のコンピュータプログラムに含めるための事前に規定された部分)又は、1つ若しくは複数のデータフローグラフコンポーネント(例えば、事前に規定されたモジュールにカプセル化されるもの)が含まれる。この文書全体を通じて、「エンティティ」を、非限定的に、便宜上、「モジュール」と呼ぶ場合がある。データフローグラフコンポーネントには、データ処理コンポーネント及び/又はデータセット、例えばデータシンク及び/又はデータソースが含まれ得る。データフローグラフは有向グラフによって表すことができ、これは、データフローグラフコンポーネントを表すノード又は頂点を含み、それが、データフローグラフコンポーネント間の作業要素(すなわち、データ)の流れを表す有向リンク又はデータフロー接続により結ばれる。データ処理コンポーネントには、少なくとも1つのデータ入力からのデータを処理し、データをデータ処理コンポーネントの少なくとも1つのデータ出力に提供するコードが含まれていてよい。データフローグラフはそれゆえ、1つ又は複数の入力データセットからグラフコンポーネントを通じて1つ又は複数の出力データセットへと流れるデータに対して行われるグラフベースの計算を実装できる。
一般に、仕様書構成モジュール7は仕様書を構成するためのモジュールを含む。様々な種類の仕様書があり、これには例えば、エンティティのための仕様書、データフローグラフのための仕様書等が含まれる。一般に、エンティティのための仕様書は、データフローグラフコンポーネントを特定してよく、サンプルデータの閲覧等、ユーザがグラフを構成している間に、そのために特定の機能を実行できる特定のコンポーネントを特定してよい。データフローグラフのための仕様書は、どのエンティティをデータフローグラフの中に含めるか(すなわち、データフローグラフコンポーネント)、含められたこのようなエンティティのためのパラメータの値、及び含められたエンティティ間のデータフローを定義してよい。
システム1はまた、1つ又は複数のコンピュータプログラム(データフローグラフ等)を実行するためのデータ処理システム4を含み、これらは変換環境5を使って、及び本明細書に記載の技術を使って、仕様書をコンピュータプログラムに変換することにより生成された。データ処理システム4は、適当なオペレーティングシステム、例えばUNIX(登録商標)オペレーティングシステムの制御下で、1つ又は複数の汎用コンピュータ上でホストされてよい。例えば、データ処理システム4は、複数ノード並列計算環境を含むことができ、これはローカル(例えば、SMPコンピュータ等のマルチプロセッサシステム)か、ローカルに分散された(例えば、クラスタ又はMPPとして接続された複数のプロセッサ)、又はリモートに分散された(例えば、LAN又はWANネットワークを介して接続された複数のプロセッサ)、又はその組合せの何れでもよい、複数の中央処理ユニット(CPU)を使用するコンピュータシステムの構成を含む。
エンティティ生成モジュール6(例えば、これは幾つかの例では任意選択的であってよい)はエンティティを生成するが、これを以下により詳しく説明する。ユーザインタフェースモジュール8(例えば、これは幾つかの例では任意選択的であってよい)は、構成情報をユーザに対して表示し、構成アクションを表すデータをユーザから受け取る。特に、ユーザインタフェースモジュール8は、ユーザがどのエンティティをコンピュータプログラム又はデータフローグラフに含めるかを選択し、これらのエンティティのためのパラメータの値を入力できるようにする視覚表現を表示する。本明細書で使用される「パラメータ」という用語は、エンティティにより実行又は実装される動作の結果に影響を与える場合があり、それゆえ、「動作パラメータ」とも呼ばれてよい。ユーザインタフェースモジュール8により、ユーザは、例えばどのコンポーネントをエンティティに含めるかを指定するパラメータ値及び相互に関するコンポーネントの構成を入力することによって、エンティティを生成することもできる。ユーザインタフェースモジュール8はまた、仕様書構成モジュール7とも通信し、これはユーザインタフェースにおけるユーザのアクション(例えば、上記のユーザ自身による選択又は入力)に基づいて仕様書を構成する。この例では、仕様書構成モジュール7は、選択されたエンティティ(若しくは、ユーザが新規エンティティを定義する場合はエンティティ定義)又はユーザインタフェース内でそれ以外に指定されたエンティティに基づいて仕様書を構成する。仕様書の内容に基づいて、エンティティ生成モジュール6は、データフローグラフの中に含められ、又はそれにより実装されるための、及び実行のためのエンティティを生成する。一般に、エンティティ、データフローグラフ、及び/又は仕様書は、データ記憶システム3の中に保存でき、これは変換環境5にとってアクセス可能である。
変換環境5は、データ記憶システム3と通信し、これはユーザインタフェースモジュール8によりユーザインタフェースを表示するために使用されるデータを含む。データ記憶システム3はまた、任意選択による開発環境2にとってもアクセス可能であり、その中ではディベロッパ9がユーザインタフェースを開発でき、これがデータ記憶システム3に記憶され、それはユーザインタフェースモジュール8により、後述のユーザインタフェース10、11、15、又は38等のユーザインタフェースを表示するために使用可能である。変換環境5は、幾つかの実装において、エンティティを含むデータフローグラフとしてアプリケーションを開発するためのシステムである。
図1Bに示されるように、データ処理システム4は1つ又は複数のデータソース9aを含んでいてもよく、これは、1つ又は複数のデータソースのほか、データ記憶システム3(図1A)に接続され、1つ又は複数のコンピュータ上でホストされる実行環境9を含み、実行環境9は、コンピュータプログラムの計算(データ処理動作等)、例えばデータフローグラフコンポーネントにより実行されるデータ処理動作を実行するための計算リソース(例えば、CPU及び/又は一次メモリ)を割り当て、構成するように構成される事前実行モジュール9bを含んでいてよい。実行環境9はまた、コンピュータプログラムのコンポーネントの実行のスケジュールを立て、その実行を制御するための実行モジュール9cも含んでいてよい。コンピュータプログラムは、データ記憶システム3の中に記憶されたプログラミングコード及び/又はデータ構造により指定されてもよく、これらはコンピュータプログラムの実行中に事前実行モジュール9b又は実行モジュール9cにより読み出されてよい。
エンティティは、実行環境内で実行されるコンピュータプログラムの一部であり、1つ又は複数のデータソース9aからのデータを処理する。データソースからのデータは、コンピュータプログラム又はデータフローグラフの中に含められるエンティティにしたがって操作され、処理されて、1つ又は複数のデータシンク9dにエクスポートされる。換言すれば、実行モジュール9cは、データソース9aからのデータをコンピュータプログラム、例えばデータフローグラフにしたがって、事前実行モジュール9bによりコンピュータプログラムに割り当てられた実行環境9の計算リソースを使って処理するように構成され、それによって出力データが生成され、これが1つ又は複数のデータシンク9dにエクスポートされてよい。データソース及びシンク、それぞれ9a、9dは、例えばファイル、データベース、データストリーム、又はキューを含むことができる。
前述のように、データ処理コンポーネントは各々、少なくとも1つのデータ入力からのデータを処理し、データを少なくとも1つのデータ出力に提供するためのコードを含んでいてよい。エンティティはデータフローグラフに含められ、これはまた、データソース及び/又はシンクにアクセスするためのデータセットオブジェクトを表すノードも含む。ノードは、データソースから始まり、データシンクで終わるコンポーネント間のデータフローを表す有向リンクにより接続される。上流のデータフローグラフコンポーネントのデータ出力ポートは、下流のデータフローグラフコンポーネントのデータ入力ポートに接続される。データフローグラフ及び/又はエンティティは、データセットオブジェクトにより表される異なるデータソース及び異なるデータシンクのために再使用されてよい。データフローグラフ及び/又はエンティティを実装するために使用されるデータ構造とコンピュータプログラムコードは、例えば異なるソース及びシンクを容易に置換できるようにするために、パラメータを介してパラメータ化することにより、複数の異なる構成に対応できる。さらに、幾つかの配置では、エンティティの流れはパラメータの使用によって変更されてよく、それによってあるコンポーネント又は一連のコンポーネントが迂回されてもよい。一般に、パラメータはエンティティの特性を表し、これは構成又は変更可能で、そのエンティティにより実行される動作に影響を与える。一般に、エンティティのパラメータ又は特性は、そのエンティティの使用ごとに変更でき、エンティティによる動作(例えば、例えば、データの処理)は、変更された特性又はパラメータの結果として、異なっていてもよい。
構築エンティティは、幾つかのケースでは、技術的専門性の高い性質である可能性がある。エンティティの基本的構造と構築は、技術的検討に基づいて特定される。例えば、グラフコンポーネントは再使用可能性を最大限にするため、又は並列処理をサポートするために選択されてよい。エンティティに関連付けられるパラメータの幾つかは、コンピューティングに詳しくないユーザがエンティティをカスタマイズできるようにするために使用でき、ユーザがその実装の背景にある技術的な複雑さを理解する必要はない。パラメータ化されたエンティティにより、カスタマイゼーションが簡単となり、より多様なアプリケーション、状況、及びユーザのバックグラウンドへと容易に再使用できるようになる。
データフローグラフ及び/又はエンティティを構築するためのエンティティ及び関連パラメータ値の特定のためのユーザインタフェースは、クライアントマシン又はユーザデバイス上で提示できる。幾つかの実施例において、クライアントは、パラメータインタフェースを提供するクライアントでウェブブラウザを使ってサーバ上で実行される開発環境2(図1A)にアクセスし、クライアント側の処理のための幾つかの能力を提供するスクリプト言語を使用していてよい。スクリプト言語は、サーバと通信して、パラメータを更新し、その他の必要な動作を実行してよい。この通信はブリッジマシンを介して行われてよく、これはクライアントと、構築中のグラフ及びエンティティのためのオブジェクト及び関連パラメータ値を記憶する開発環境を実行するサーバとの間の通信を翻訳する。
ユーザインタフェースにより、ユーザは、たとえデータフローグラフ及びデータフローグラフの構成に関する技術的知識がなくても、データフローグラフに含めるエンティティを選択し、エンティティのパラメータを構成できる。特に、データフローグラフは、データレコードの処理のための実行可能ロジックに変換される。すなわち、実行可能ロジックの実行により、レコードの処理のためのコード(例えば、コンパイル済みコード)が生成される。
変形型において、システム1はデータソースも含み、これは記憶装置又はオンラインデータストリームへの接続等の1つ又は複数のデータソースを含んでいてよく、その各々は各種の記憶フォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)の何れかのデータを記憶してもよい。このデータソースは、1つ又は複数のデータソース9aと同じであっても、又は、追加のデータソースであってもよい。何れの場合も、データソースを提供する記憶装置はデータ処理システム4にローカルで、例えば、データ処理システム4を実行するコンピュータに接続された記憶媒体上に記憶されてもよく(例えば、ハードドライブ)、又はデータ処理システム4にリモートで、例えばローカル若しくはワイドエリアネットワーク上でデータ処理システム4を実行するコンピュータと通信するリモートシステム上でホストされてもよい(例えば、メインフレーム)。
図2Aを参照すると、略図10は、1つ又は複数のモジュール又はエンティティを構成するためのグラフィカルユーザインタフェース(以下、「グラフィカルユーザインタフェース10」という)を示す。この例では、グラフィカルユーザインタフェース10は1つ又は複数の事前構成されたモジュール(すなわち、モジュールの視覚表現10c~10f)を選択するためのパレット部分10aを含む。一般に、パレット部分10aは、コンピュータプログラム又はデータフローグラフに含めるために利用できる複数のモジュールを表す(例えば、モジュールパレットとも呼ばれる)。パレット部分10aはまた、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール10iも含んでいてよい。グラフィカルユーザインタフェース10はまた、新規モジュールの構成のための構成部分10bも含んでいてよい。
この例では、複数のモジュールに追加されることになる新規モジュールを作成するための追加コントロール10iを選択すると、構成部分10bがユーザに対し、例えばモジュール名を指定する情報等、モジュールを指定する情報を入力するための入力部分10gを提示することによって、新規モジュールを構成するように促す。構成部分10bはまた、入力部分10gにより指定されるモジュールのためのデータソースを指定するためのデータソース入力ボックス10hも含んでいてよい。この例では、ユーザは、データソース入力ボックス10hにデータファイルの名前を入力しても、又はデータソースモジュール(例えば、視覚表現10d、10eの1つにより表される)をデータソース入力ボックス10hにドラッグ・アンド・ドロップしてもよい。この例では、ユーザは視覚表現10dをデータソース入力ボックス10hにドラッグ・アンド・ドロップし、“A_customers”が“フィルタ処理済み顧客取引”モジュールのためのデータソースであることを指定している。構成部分10bはまた、構成部分10bの中で作成され、又は定義されるモジュールに関する1つ又は複数のパラメータ、変換、又は動作を追加し、構成するためのコントロール10j~10pも含んでいてよい。この例において、コントロール10j~10pの各々により、ユーザはパラメータ、動作、又は変換のための値を選択し、それによってそのパラメータ、動作、又は変換を構成することができる。例えば、コントロール10jは、作成中のモジュールがフィルタ処理動作を含むことを指定し、例えば、本明細書に記載されているように、フィルタ処理動作はモジュールの出力データフォーマットを指定してよい。この例では、ユーザはコントロール10jに含まれるドロップダウンボックスからフィルタオプションを選択する。コントロール10oは、コントロール10jと並置される。コントロール10oの選択により、ユーザはコントロール10jにより指定されたフィルタ処理動作を構成できる。この例では、コントロール10oを選択するとオーバレイ10qが表示される。オーバレイ10qには、コントロール10r、10s及び、フィルタ処理動作により実行される(例えば、評価される)ことになる条件又は表現を指定するための入力部分10tを含む。
コントロール10kは、作成中のモジュールが結合動作を含むことを指定する。この例では、ユーザは、コントロール10kに含まれるドロップダウンボックスから結合オプションを選択する。コントロール10pは、コントロール10kに並置される。コントロール10pを選択することにより、ユーザは、コントロール10kにより指定された結合動作を構成することができる。この例では、コントロール10pを選択すると、オーバレイ10uが表示される。オーバレイ10uは、結合動作の一部として実装されるアクション又は動作を指定するコントロール10v~10zを含む。この例では、A_customerモジュールから出力されたレコード(例えば、顧客取引を示すフォーマット済みレコード)はB_name_addressモジューから出力されたレコード(例えば、顧客の名前と住所を指定するフォーマット済みレコード)と結合されて、各種の取引のための顧客の名前と住所を含むデータセットが作られる。コントロール10vにより、ユーザは、データソース入力ボックス10hにおいて指定されたデータソースのためのキー名がコントロール10wにおいて指定されたデータソースにより指定されたキー名と異なるか否かを指定することができる。例えば、ユーザは特定のデータフィールド又はキー、例えば顧客識別子キーのための異なるフォーマットを有する2つのデータソースを結合していてもよい。この例では、コントロール10wにおいて指定されるデータソースは、視覚表現10eにより指定されるB_name_addressモジュールである。この例では、ユーザがコントロール10vを介して、キー名が違うことを指定すると、オーバレイ10aeが表示される。この例では、オーバレイ10aeにより、ユーザは各種のデータソースのための各種のキー名を指定することができる。この例では、コントロール10agにより、ユーザはコントロール10afにおいて指定されたデータソースのためのキー名を指定することができる。それに加えて、コントロール10aiにより、ユーザはコントロール10ahにより指定されたデータソースのためのキー名を指定することができる。構成部分10bは、追加コントロール10nを含み、その選択により、ユーザは追加の変換を追加することができる。この例では、顧客取引モジュール(視覚表現10cにより表される)は、フィルタ処理動作が除かれていること以外、フィルタ処理済み顧客取引モジュールと同じである。
図2Bを参照すると、略図11は、この場合はデータフローグラフであるプログラム(例えば、コンピュータプログラム)への仕様書の変換の「実世界での」例を示す。この例では、略図11は、グラフィカルユーザインタフェース12を示し、これは図2A、2Bに関して上述したグラフィカルユーザインタフェース10とは分離され、又は異なっていてよく、パレット部分12a及び構成部分12eを含む。パレット部分12aは、コンピュータプログラムを定義するのに利用できる複数のモジュールを表示する。この例では、パレット部分12aは視覚表現12b、12c、12d、12da、12db、12dc、12ddを表示する。この例では、視覚表現12bは、図2Aで定義されたフィルタ処理済み顧客取引モジュールを表す。視覚表現12cは、以前に定義された顧客取引モジュール、例えば図2Aにおいて視覚表現10cにより表された同じ顧客取引モジュールを表す。視覚表現12dはオファ送信モジュールを表し、これについては後述する。視覚表現12da、12dbは、A_customersモジュール(例えば、特定のデータソース及び、そのデータソースらのデータレコードのフォーマット方法を指定する)とB_name_addressモジュール(例えば、他の特定のデータソース及び適当なリフォーマットを指定する)を表す。この例では、視覚表現12da、12dbは、視覚表現10d、10eにより表されるものと同じデータソースを表す。視覚表現12dcは、データの記憶先となる出力ファイルを指定する出力モジュールを表す。この例では、視覚表現12dcは、図2Aにおいて視覚表現10fにより表される同じ出力モジュールを表す。視覚表現12b、12c、12d、12da、12db、12dc、12ddの各々は選択可能であり、例えばモジュールをコンピュータプログラムに追加するために構成部分12eに「ドラッグ・アンド・ドロップ」することができる。構成部分12eは、コンピュータプログラム又はデータフローグラフに含めるべきモジュールを表す、パレット部分12a内に表示されるパレット(例えば、視覚表現12b、12c、12d、12da、12db、12dc、12dd)から選択されるモジュールに関するパラメータを指定するためのユーザインタフェースを提供する。構成部分12eは、部分12ac(視覚表現12bにより表される、以前に定義されたフィルタ処理済み顧客取引モジュールを変更するため)及び新規モジュール、すなわちオファ送信モジュール(視覚表現12dにより表される)と出力ファイルモジュール(視覚表現12ddにより表される)を定義するための部分12aa、12abを含む。
部分12acは、視覚表現12bにより表されるフィルタ処理済み顧客取引モジュールの1つ又は複数のパラメータ又は属性を変更するためのコントロール12f、12i、12j、12k、12m、12nを表示する。特に、12f、12i、12j、12k、12m、12nの各々は、データソース入力ボックス10h(図2A)において指定されたデータと、それぞれコントロール10r、10s、入力部分10t、及びコントロール10v、10w、10y(図2A)に入力される選択又はデータに基づいて事前入力される。コントロール12f、12i、12j、12k、12m、12nの各々のデータは、ユーザによるモジュールのカスタマイゼーションを可能にするために変更可能である。
この例では、1つ又は複数のコントロール12f、12i、12j、12k、12m、12nにより調節可能なパラメータ又は属性の1つ又は複数の値を変更した後、変更はグローバルセーブコントロール12gを介したグローバルセーブとして、又はローカルセーブコントロール12hを介してローカルセーブとして保存できる。この例では、グローバルセーブにより、グローバルパレット内のすべてのパレット(グラフの定義に現在使用され、将来使用される-パレット12aだけではない)にわたり、並びにそのモジュールにアクセスするグラフ及びコンピュータプログラムにわたり、モジュールがアップデートされる。一般に、グローバルパレットは、グラフの定義にグローバルに利用できるモジュールの定義又はリストである。すなわち、グローバルパレット内のこれらのモジュールは、定義中の仕様書又はグラフのみに制約されない。ローカルセーブは、モジュールをローカルで、すなわち表示されている特定のパレットについてのみ、及び定義中の特定のグラフについてのみアップデートする。すなわち、ローカルセーブでは、モジュールの変更の範囲は、そのパレット及びグラフのみに限定される。この例では、ユーザはグローバルセーブコントロールを選択している(グローバルセーブコントロール12gの周囲の点線で示される)。グローバルセーブコントロール12gの選択に基づいて、フィルタ処理済み顧客取引モジュールに対する変更はグローバルに、すなわちすべてのパレットにわたり、並びにそのモジュールを含むすべてのグラフ及びコンピュータプログラムにわたり行われる。ユーザがその代わりにローカルセーブコントロール12hを選択すれば、変更はパレット12aと、構成部分12eにおいて定義中のグラフのみに適用されるであろう。
構成部分12eはまた、新規モジュール-オファ送信モジュールの構成及び定義のためのコントロール12oa、12o~12uを有する部分12aaも含む。コントロール12oaは、オファ送信モジュールのためのデータソースを指定する。この例では、オファ送信モジュールのためのデータソースはフィルタ処理済み顧客取引モジュールである。この例では、コントロール12o~12qは、発生させるべき、すなわち、ユーザに対し、無制限のテキストをアップデートしたいか否かを尋ねるSMSメッセージを送信するべきトリガを指定する。この例では、コントロール12rは、待機される特定のイベント(すなわち、その後のトリガにより指定されるアクションの実行の前に受信されることになる)を指定する。コントロール12s~12uは、実行されるべきアクション又はトリガを指定する(例えば、「$12.99/月でテキスティングをアップグレード」と記したSMSメッセージの送信)。この例では、オファ送信モジュールが部分12aaで新たに定義されているため、ローカルセーブ(これによれば、前に定義されたモジュールのバージョンがパレット12aについてローカルに保存されることになる)のオプションはない。この例では、部分12aaはグローバルセーブコントロール12vを含み、それを選択すると、オファ送信モジュールがグローバルパレットに追加され、これはすべてのグラフの生成において使用されるパレットである。この例では、ユーザはグローバルセーブコントロール12vを選択していない。そのため、オファ送信モジュールは、ローカルパレットであるパレット12a上でのみ利用できる。この例では、オファ送信モジュールの構成自体により、視覚表現12dがパレット12aに、ローカルで定義中であり、構成部分12eを通じて定義中のグラフのためにローカルで利用できるモジュールとして含められる。
構成部分12eはまた、出力ファイルモジュール(視覚表現12ddにより表される)を定義するための部分12abも含み、その中にオファの送信の結果が保存される。部分12abは、出力ファイルモジュールのためのデータソースを指定するためのコントロール12wを含む。この例では、コントロール12wは、データソースがオファ送信モジュールであることを指定する。ユーザはこれを、視覚表現12dをコントロール12wにドラッグ・アンド・ドロップすることにより指定してよい。部分12abはまた、データターゲットを指定するためのコントロール12xも含む。この例では、ユーザは視覚表現12ddをコントロール12xにドラッグ・アンド・ドロップして、出力モジュール(視覚表現12dcにより表される)が部分12abを通じて定義される出力ファイルモジュールのためのデータターゲットであることを指定する。
一般的に、それゆえすべての例と実施形態に当てはまることとして、構成部分12eの内容(及び/又は構成部分12eの内容から、又はそれに基づいて生成されるデータ)は、コンピュータプログラムにどのモジュールを含めるべきか、及びこれらのモジュールのためのパラメータの値を指定する仕様書を定義する。構成部分12eはまた、サブミッションコントロール12tも含んでいてよく、それを選択すると、コンピューティングシステム、例えば図1Aに記載された変換環境5は、構成部分12eの内容により指定される仕様書をコンピュータプログラムに変換し、それはこの例では、コンピュータプログラム14(この例では、データフローグラフ)により描かれている。
この例では、コンピュータプログラム14は、データソース14a、14b、フィルタ処理済み顧客取引モジュール14c、オファ送信モジュール14d、及び出力ファイルソース14eを含む。この例では、コンピュータ化システムがデータソース14aを構成して、データをそこから引き出す特定の外部モジュール(例えば、データウェアハウス)を指定する、“A_Customers”からのデータレコード及び/又はファイルにアクセスする。コンピュータ化システムは、データソース14bをB_name_addressモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール14cを、フィルタ処理済み顧客取引モジュール14cのための部分12acに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール14cは、コンポーネント(例えば、データフローグラフコンポーネント)14f、14h~14lを有するデータフローグラフ14yを含む。この例では、コンポーネント14fはフィルタコンポーネントである(以下、フィルタコンポーネント14f)。コンポーネント14h、14iはパーティションコンポーネントである(以下、パーティションコンポーネント14h、14i)。コンポーネント14j、14kはソートコンポーネントである(以下、ソートコンポーネント14j、14k)。コンポーネント14lは結合コンポーネントである(以下、結合コンポーネント14l)。
この例では、フィルタコンポーネント14fは、コントロール12i~12kにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント14fは、所定の条件を満たすレコード、例えば取引総額が$260未満のデータレコードを除外するように構成される。この例では、結合コンポーネント14lは、コントロール12m~12nにより指定される情報にしたがって、すなわち顧客IDフィールドのためのマッチングする、又は同様の値を有するデータレコードを結合するように構成される。この例では、パーティションコンポーネント14h、14i及びソートコンポーネント14j、14kは仕様書内で指定されず、すなわち構成部分12eへの入力によって指定されない。しかしながら、コンピュータ化システムは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあることを指定する(コンピュータ化システムにより)実行可能なロジックに基づいてパーティションコンポーネント14h、14i及びソートコンポーネント14j、14kを含む。この例では、オファ送信モジュール14dは、コントロール12oa、12o~12uに入力された情報にしたがって構成される。特に、オファ送信モジュール14dは、応答が送信されたことを指定するデータレコード(例えば、イベント)を待機するように構成される。そのイベントが検出されると、オファ送信モジュール14dは、「$12.99/月で無制限のテキスティングにアップグレード」という内容のSMSメッセージを送信するように構成される。出力ファイルソース14eは、部分12abの内容にしたがって、コンピュータプログラム14の実行の出力をデータレポジトリに保存するように構成される。
この例では、データソース14a、14b、フィルタ処理済み顧客取引モジュール14c、及びオファ送信モジュール14dの各々は、それぞれ出力ポート14m~14pを含み、これは、どのフィールド(例えば、データソース14a、14bから受け取ったデータレコード等の構造化データ項目から)がそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。換言すれば、各モジュール及びソースは、そのモジュール/ソースにとってアクセス可能であり、下流の1つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、フィルタ処理済み顧客取引モジュール14cは、入力ポート14q、14r(コントロール12f及び12mにより指定されるデータソースのため)及び出力ポート14o(例えば、オファ送信者モジュール14dに入力されるデータ及び/又はデータレコードを出力するため)を含み、オファ送信モジュール14dは、入力ポート14s及び出力ポート14pを含み、出力ファイルソース14eは入力ポート14tを含む。入力ポートは、他のモジュールから1つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な1つ又は複数のデータフォーマットで構成されてもよい。
図2Cを参照すると、略図15は図2Bの変形型を示しており、この場合、フィルタ処理済み顧客取引モジュール(例えば、図2Aのグラフィカルユーザインタフェース10を通じて生成されるフィルタ処理済み顧客取引モジュール)が、図2Bに示されるコンピュータプログラム14とは異なるコンピュータプログラムの一部として使用される。
略図15は、グラフィカルユーザインタフェース16を示し、これはパレット部分16aと構成部分16eを含む。パレット部分16aは、コンピュータプログラムの定義において利用できる複数のモジュールを表示する。この例において、パレット部分16aは視覚表現16b~16d及び16da~16ddを表示する。視覚表現16b~16d及び16da~16ddの各々は選択可能であり、構成部分16eに「ドラッグ・アンド・ドロップ」することにより、例えばモジュールをコンピュータプログラムに、又は新規モジュールの定義において追加できる。この例では、視覚表現16bは、図2Aに示されるように、当初、グラフィカルユーザインタフェース10への入力の仕様書を通じて作成され、その後、図2Bの部分12acにおいて(グローバルセーブを通じて)アップデートされたフィルタ処理済み顧客取引モジュールを表す。この例では、パレット部分16aは、図2Bに示されるオファ送信モジュールのための視覚表現を含まず、それは、オファ送信モジュールはローカルでのみ定義され、グローバルパレットには追加されなかったからである。構成部分16eは、パレット部分16aにおいて表示されたパレットから、コンピュータプログラム又はデータフローグラフに含められるモジュールを表すデータ(例えば、視覚表現16b~16d及び16da~16ddのうちの1つ)を選択するためのユーザインタフェースを提供する。この例では、構成部分16eは部分16h、16aa、16abを含む。
この例では、部分16hは、当初、図2Aにおいて定義され、図2Bにおいて変更されたフィルタ処理済み顧客取引モジュールの(コントロール16f、16i~16k、及び16m~16nを介した)変更を提供する。この例では、ユーザは、フィルタ処理済み顧客取引モジュールへの変更を、ローカルセーブコントロール16oの選択を介してローカルで保存する。この例では、部分16hは、グローバルセーブコントロール16pも含み、フィルタ処理済み顧客取引モジュールへの変更をグローバルで保存するオプションを提供する(すなわち、変更のための、ローカルスコープではなくグローバルスコープを定義する)。コントロール16f、16i~16k、及び16m~16nの各々は、それぞれコントロール10r、10s、10t、10v、10w、10y(図2A)の選択又はそれらに入力されるデータに基づいて事前入力され、その後、図2Bにおけるコントロール12f、12i~12k、及び12m~12nを通じて変更される。コントロール16f、16i~16k、及び16m~16nの各々のデータは、フィルタ処理済み顧客取引モジュールをユーザがカスタマイズできるように変更可能である。
構成部分16eはまた、部分16aaも含み、これは部分16aaにおいて新規に定義されている、取引合算モジュールの構成のためのコントロール16q~16vを有する。この例では、コントロール16qは取引合算モジュールのためのデータソースを指定する。この例では、データソースはフィルタ処理済み顧客取引モジュールである。フィルタ処理済み顧客取引モジュールを表す視覚表現16bは、コントロール16qにドラッグ・アンド・ドロップされる。コントロール16rは、フィルタ処理済み顧客取引モジュールからの出力と合併(結合)すべきデータソースを指定するためのものである。コントロール16sは、例えばWarehouse_A.datに含まれ、フィルタ処理済み顧客取引モジュールから出力されるレコードからのデータロールアップを実行するキーを指定するデータを受け取るためのものである。コントロール16tは、コントロール16uにより指定されたフィールド(ロールアップレコードに含まれる)及びコントロール16vにより指定された他のフィールド(ロールアップレコードに含まれる)上で実行されるべき動作を指定する。この例では、部分16aaは、グローバルセーブコントロール16wを含み、取引合算モジュールをグローバルパレットに追加して、例えばすべてのパレットにおいて全ユーザにとってアクセス可能となるようにする。取引合算モジュールは、部分16aaにおいて新規に定義されているため、例えばグローバルにアクセス可能なモジュールの変更バージョンをローカルで保存するために提供される、ローカルセーブコントロールはない。
構成部分16eはまた、出力を保存するための出力ファイルモジュールを定義するための部分16abも含む。この例では、コントロール16xは、出力ファイルモジュールのためのデータソースが取引合算モジュールであることを指定する。ユーザは、視覚表現16dをコントロール16xにドラッグ・アンド・ドロップすることによってこれを指定してよい。追加的に、コントロール16yは、視覚表現16dcにより表される出力モジュールが部分16abで定義されるデータファイルモジュールのためのデータターゲットであることを指定する。この例では、ユーザがコントロール16x、16yのための値を指定すると、パレット16aが、出力ファイルモジュールを表す視覚表現16ddを含むようにアップデートされる。
構成部分16eはまた、サブミッションコントロール16acも含み、これを選択することにより、コンピューティングシステム、例えば図1Aの変換環境5は、構成部分16eの内容により指定された仕様書をコンピュータプログラムに変換し、これはこの例ではコンピュータプログラム18(この例ではデータフローグラフである)により示されている。
この例では、コンピュータプログラム18は、データソース18a、18b、フィルタ処理済み顧客取引モジュール18c、取引合算モジュール18d、及び出力ファイルソース18eを含む。この例では、コンピュータ化システムは、データソース18aを構成して、A_Customersモジュールからのデータレコード及び/又はファイルにアクセスする。コンピュータ化システムは、データソース18bをB_name_addressモジュールとなるように構成する。コンピュータ化システムは、フィルタ処理済み顧客取引モジュール18cをフィルタ処理済み顧客取引モジュール18cのために部分16hに入力された情報にしたがって構成する。特に、フィルタ処理済み顧客取引モジュール18cは、コンポーネント18f、18h~18lを有するデータフローグラフ18yを含む。この例では、コンポーネント18fはフィルタコンポーネントである(以下、フィルタコンポーネント18f)。コンポーネント18h、18iはパーティションコンポーネントである(以下、パーティションコンポーネント18h、18i)。コンポーネント18j、18kはソートコンポーネントである(以下、ソートコンポーネント18j、18k)。コンポーネント18lは結合コンポーネントである(以下、結合コンポーネント18l)。
この例では、フィルタコンポーネント18fは、コントロール16g、16i~16kにおいて指定された入力にしたがって構成される。すなわち、フィルタコンポーネント18fは、所定の条件を満たすデータレコード、例えば取引総額が$250未満のレコードを除外するように構成される。この例では、結合コンポーネント18lは、コントロール16m~16nにより指定される情報にしたがって、すなわち顧客IDフィールドのためのマッチする、又は同様の値を持つデータレコードを結合するように構成される。この例では、パーティションコンポーネント18h、18i及びソートコンポーネント18j、18kは仕様書において指定されず、すなわち、構成部分16eへの入力により指定されない。しかしながら、コンピュータ化システムはパーティションコンポーネント18h、18iとソートコンポーネント18j、18kを含み、これは、結合コンポーネントの前にパーティションコンポーネントがあり、その前にソートコンポーネントがあると指定する実行可能ロジックの(コンピュータ化システムによる)実行に基づく。この例では、取引合算モジュール18dは、部分16aaに入力された情報にしたがって構成される。特に、取引合算モジュール18dは、「取引総額」のフィールドの中の値を「今日までの取引総額」のフィールドの中の値と合算するように構成される。出力ファイルソース18eは、部分16abにおいて定義された出力ファイルモジュールにより指定されるように、コンピュータプログラム18の実行の出力をデータレポジトリに保存するように構成される。この例では、データソース18a、18b、顧客取引モジュール18c、及び取引合算モジュール18dの各々は、それぞれ出力ポート18m~18pを含み、これは、(例えば、データソース18a、18bから受け取ったデータレコードから)どのフィールドがそのソース又はモジュールから出力されるかを指定する出力データフォーマットを指定する。前述及び後述のように、各モジュール及びソースは、そのモジュール/ソースにとってアクセス可能であり、下流の1つ又は複数のモジュールによりアクセスされるフィールドの値のみを出力するように構成される。この例では、顧客取引モジュール18cは入力ポート18q、18rを含み、取引合算モジュール18dは入力ポート18sを含み、出力ファイルソース18eは入力ポート18tを含む。入力ポートは、他のモジュールから1つ又は複数の構造化データ項目を受け取るように構成される。入力ポートはまた、受け取った構造化データ項目に必要な1つ又は複数のデータフォーマットで構成されてもよい。
図2Dを参照すると、略図20はグラフへの仕様書の変換を示している。この例では、グラフィカルユーザインタフェース19が略図20の中に示されている。この例では、グラフィカルユーザインタフェース19は、仕様書を定義するためのパレット部分19aと仕様書部分19bを含む。パレット部分は、各種のモジュールの視覚表現19c、19d、19e、19f、19g、19h、19i、19j、19k、19lを描写し、これは、仕様書の定義に使用可能な、以前に定義されたもの(例えば、それぞれ視覚表現19c、19d、19e、19f、19g、19hにより表されるフィルタ処理済み顧客取引モジュール、顧客取引モジュール、取引合算モジュール、A_customersモジュール、B_name_addressモジュール、及び出力モジュール)又は、仕様書19bにおいて新規に定義されてから初めてパレット19aに追加されたもの(例えば、それぞれ視覚表現19i、19j、19k、19lにより表されるモジュール1、2、3、4)である。
この例では、ユーザは、仕様書部分19bのモジュール1エリア19mで新規モジュール、すなわちモジュール1を定義する。モジュール1エリア19mは、モジュール1のためのデータソースを定義するためのコントロール19maを含む。この例では、ユーザは視覚表現19dをコントロール19maにドラッグ・アンド・ドロップして、顧客取引モジュールがモジュール1のためのデータソースであることを指定する。モジュール1エリア19mはまた、顧客取引モジュールから出力されるデータレコードについて実行されるべきフィルタ処理動作を定義するためのコントロール19mb、19mc、19mdも含む。この例では、モジュール1エリア19mはまた、この場合はフィルタ処理動作である、実行されるべき動作の種類を選択するためのコントロール(図示せず)も含む。モジュール1エリア19mはまた、モジュール1をグローバルパレットに追加するためのグローバルセーブコントロール19mfも含む。モジュール1エリア19mはローカルセーブコントロールを含まず、これは、モジュール1が新規に定義されたものであり、そのため、システムが以前に定義されたモジュールのローカルコピーを保存することができないからである。この例では、ユーザはグローバルセーブコントロール19mfを選択しない。その代わりに、モジュール1自体を定義するだけで、モジュール1は、視覚表現19iをパレット部分19aに追加することにより、ローカルパレット(定義中のグラフのため)に追加される。
この例では、仕様書部分19bはまた、他の新規モジュール、すなわちモジュール2をモジュール2エリア19oにおいて定義する。この例では、モジュール2エリア19oは、モジュール2のためのデータソースを定義するためのコントロール19oaを含む。この例では、視覚表現19eはコントロール19oaにドラッグ・アンド・ドロップされて、取引合算モジュール19eがモジュール2のためのデータソースであることを指定する。モジュール2エリア19oはまた、フィルタ処理動作の属性、例えばそれ自体が他のコントロール(図示せず)の選択を通じて指定されていたことを指定するためのコントロール19ob~19odも含む。モジュール2エリア19oは、グローバルセーブコントロール19ofを含み、それを選択すると、モジュール2がグローバルパレットに追加される。この例では、モジュール2エリア19oにおけるモジュール2の定義の仕様書により、視覚表現19jはパレット部分19aに追加される。
仕様書部分19bはまた、モジュール3エリア19n内で新規モジュール3を定義する。モジュール3エリア19nは、モジュール3のためのデータソースを指定するためのコントロール19naを含む。この例では、モジュール1がモジュール3のためのデータソースであり、これは、視覚表現19iをコントロール19naにドラッグ・アンド・ドロップすることによって指定される。モジュール3エリア19nはまた、結合動作(それ自体は、動作の種類を選択するための他のコントロールの選択を通じて指定される)の属性を指定するためのコントロール19nb、19nc、19ndも含む。この例では、モジュール1の出力は、コントロール19nbにより指定されるように、モジュール2の出力と結合される。この例では、ユーザは、視覚表現19jをコントロール19nbにドラッグ・アンド・ドロップし得る。追加的に、コントロール19nc、19ndは、結合が行われるべき、それぞれモジュール1、2から出力されたレコードのキー(すなわち、フィールド)の名前を指定する。モジュール3エリア19nはまた、グローバルセーブコントロール19nfも含み、それを選択すると、モジュール3がグローバルパレットに追加される。この例では、グローバルセーブコントロール19nfは選択されない。その代わりに、モジュール3を定義するだけで、視覚表現19kがパレット部分19aに追加される。
仕様書部分19bはまた、モジュール4エリア19p内で新規モジュール4を定義し、それはモジュール4のためのデータソースを指定するためのコントロール19paとモジュール4のためのデータターゲットを指定するためのコントロール19pbを含む。この例では、モジュール3がモジュール4のためのデータソースであり、出力モジュール(視覚表現19hにより表される)はデータターゲットである。この例では、モジュール4エリア19p内でモジュール4を定義すると、視覚表現19lがパレット部分19aに追加される。
仕様書部分19bはまた、サブミッションコントロール19sを含み、それを選択すると、システム、例えば図1Aの変換環境5は、仕様書部分19bで定義された仕様書をグラフ19qに変換する。この例では、グラフ19qは顧客取引データソース19qa、取引合算データソース19qb、モジュール1 19qc、モジュール2 19qd、モジュール3 19qe、及びモジュール4 19qfを含む。この例では、グラフ19qに含まれるデータソースとモジュールの多くが、他のモジュール、データソース、及び/又はコンポーネントをカプセル化する。この例では、グラフ19rはグラフ19qの展開されたビューを示しており、その中に、カプセル化された各モジュール及び/又はデータソースの各々の内容が示されている。グラフ19rは、コンポーネント(そのうちの幾つかはデータソース)19ra~19rpを含む。この例では、コンポーネント19ra~19rgは顧客取引モジュールに含まれ、これはモジュール1のためのデータソースとして定義される。この例では、コンポーネント19riは、コントロール19mb~19mdにより定義されるフィルタ機能を表す。この例では、コンポーネント19rh及び19rjはモジュール2を表す。コンポーネント19rk~19roはモジュール3を表す。前述のように、システムは、パーティション及びソートコンポーネントを結合コンポーネントの前に挿入するように構成される。最後に、コンポーネント19rpはモジュール4を表す。図2B~2Dに示されるように、異なるグラフの定義におけるモジュールの使用方法は仕様書の違いによって異なる。幾つかの例では、ここで説明するデータ処理システムは、以下のように仕様書をデータフローグラフへと変換する。データ処理システムは、データ記憶システムの中で、データ構造にアクセスし、これは仕様書の部分を表すデータをデータフローグラフコンポーネントにマッピングし、データ構造の中で、仕様書の特定部分を表すデータの項目を特定する。データ処理システムはまた、データ構造の中で、どのデータフローグラフコンポーネントが仕様書の特定部分にマッピングされるかも特定し、特定されたデータフローグラフコンポーネントを、仕様書により指定された動作の実行順序にしたがってデータフローグラフに追加する。
図2Eを参照すると、略図30はユーザインタフェースモジュール32、仕様書構成モジュール34、及びエンティティ生成モジュール36を含み、これらはまた図1Aに関して先に説明されている。ユーザインタフェースモジュール32は、特定のエンティティ(例えば、図2Eの「エンティティ1」)を構成するためのユーザインタフェース38を表示する(又は表示されるようにする)。ユーザインタフェース38は、ユーザインタフェース38を通じて構成中のエンティティに含められる動作、例えばマッピング動作のためのパラメータの1つ又は複数の値を受け取るための部分40を含む。この例では、部分40は、動作において使用されるパラメータの値を入力するためのフィールド40a、40bを含む。ユーザインタフェース38はまた、結合動作等の他の動作のためのパラメータの値を入力するための部分42も含んでいてよい。この例では、部分42はこれらの値を入力するためのフィールド42a、42bを含む。この例では、ユーザインタフェース38は、すでに定義されたエンティティを構成するためのものである。変形型において、ユーザインタフェースは、例えば、どのパラメータ、動作、及び/又はデータフローグラフコンポーネントがエンティティに含められるべきかを指定することにより、新規エンティティを定義するためにレンダリングすることができる。
ユーザインタフェース38のフィールド40a~40b及び42a~42bに入力されるデータに基づいて、仕様書構成モジュール34は、特定のエンティティを指定する仕様書44を生成する。データ処理システム(例えば、仕様書からデータフローグラフへの変換を行い、ユーザインタフェースモジュール32、仕様書構成モジュール34、及びエンティティ生成モジュール36のうちの1つ又は複数を含む変換環境5(図1A))は、(例えば、ユーザインタフェース38を表示又はレンダリングするクライアントデバイスから)フィールド40a~40b、42a~42bのための1つ又は複数の値を指定するリクエスト(例えば、XMLメッセージ又はその他のデータ)を受け取ってよい。このリクエストはまた、各々の値がそれに関して指定される動作の種類(例えば、マッピング動作、結合動作等)も指定してよい。リクエストの内容に基づき、仕様書構成モジュール34は仕様書44を生成する。変換環境5(図1A)は、ユーザインタフェース38を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するためリクエストを介して受け取った値をチェックしてよく、ユーザに対し、(例えば、ユーザインタフェース38を介して、又はクライアントへの応答メッセージを介して)、受け取った値が所定の基準に適合しているか否かの通知を出力してよい。変換環境5が、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知(警告等)はまた、ユーザを、特定のエンティティの対応する動作のための、所定の基準に適合する新規の1つ又は複数の値をサブミットするように導く情報も含んでいてよい。換言すれば、変換環境5(例えば、ユーザインタフェース38)は、導かれたユーザマシン相互作用プロセスを提供してよく、それによって、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることにより、基本となるシステム又はエンティティが適正に動作することが確実となる。
上述のリクエストには、下表1に示される内容が含まれていてよい:
上表に示されるように、リクエストの内容は、様々な動作の種類を指定するデータを含む。動作の種類の各々について、リクエストは、1つ又は複数のパラメータと、各パラメータのための1つ又は指定された(例えば、ユーザが入力した)複数の値を指定する。仕様書構成モジュール34は、リクエストの内容を使って、特定のエンティティのための仕様書44を生成する。例えば、仕様書構成モジュール34は、リクエストを構文解析して、仕様書、例えば仕様書44を生成するルールセットで構成される。この例では、仕様書は、特定のエンティティのための様々な動作(例えば、エンティティにより実行される)及び、各動作のための様々なパラメータ(関連するパラメータの値と共に)を指定する。
仕様書構成モジュール34は、下表2に示されるように、仕様書のための(例えば、エンティティのための)テンプレートにアクセスしてよい:
上表2に示されるように、仕様書のためのテンプレートは、例えばリクエストの内容に基づいて入力されることになるフィールドを含む。この例では、動作の種類のためのフィールド(すなわち、___動作)があり、その動作の第一のインスタンスを指定する他のフィールド(すなわち、___1)がある。また、動作のそのインスタンスのためのパラメータ(及び関連する値)を指定するための他のフィールドもある。テンプレートの入力済みバージョンが、仕様書44として図2Eに示されている。変形型において、リクエスト自体の内容(例えば、表1に示される)は、例えばリクエストの内容から入力されることになる別のテンプレートを有するのではなく、仕様書である。
エンティティ生成モジュール36は、仕様書44をエンティティ46に変換してよく、これは例えば、データレポジトリから仕様書44の中の動作の種類により指定されるコンポーネントを表すデータグラフコンポーネント又はデータを選択することによる。例えば、仕様書44は、「マッピング」の動作の種類と「結合」の動作の種類を含む。これらの動作の種類に基づき、エンティティ生成モジュール36は、エンティティ46に含めるためにデータフローグラフコンポーネント「マッピングコンポーネント48」及び「結合コンポーネント54」を選択する。
エンティティ生成モジュール36は、データ記憶システム3の中で、仕様書の部分を表すデータを、コンポーネント又はデータフローグラフコンポーネントを表すデータにマッピングするデータ構造にアクセスしてよい。エンティティ生成モジュール36は、マッピングにおいて、仕様書の特定の部分を表すデータの項目を特定する。エンティティ生成モジュール36は、マッピングにおいて、コンポーネント又はデータフローグラフコンポーネントを表すどのデータが仕様書の特定された部分にマッピングされるかを特定し、特定された、コンポーネント又はデータフローグラフコンポーネントを表すデータをユーザインタフェース38により指定された動作実行の順序にしたがってエンティティ46に追加する。幾つかの例では、仕様書の部分を表すデータとコンポーネントの特定の1つを表すデータとの間に1対1のマッピングがない。その代わりに、結合を表すデータは、複数の異なる結合コンポーネント(又は結合コンポーネントを表すデータ)にマッピングできる。この例では、エンティティ生成モジュール36は、適当なコンポーネントを選択するように構成される。
エンティティ生成モジュール36はまた、他のコンポーネントも選択し、これは例えば、仕様書によっても、ユーザインタフェース38への入力によっても指定されないソートコンポーネント50、53及びパーティションコンポーネント51、52である。この例では、エンティティ生成モジュール36は、様々な他の動作の種類の前に様々な動作の種類を指定するルールで構成される。例えば、キーに基づく動作(例えば、結合又はロールアップ動作)の前に、パーティション及びソート動作が行われて、例えばキーに基づく動作の実行中にメモリが節約される。一般に、キーに基づく動作には、データに対して、そのデータのためのキー(又はその他の固有の識別子)に基づいて動作する動作を含む。この例では、エンティティ生成モジュール36は、パーティション及びソート動作が結合動作に先行することを指定するルールでプログラムされる。このルールに基づいて、エンティティ生成モジュール36は、エンティティ46の中にソートコンポーネント50、53及びパーティションコンポーネント51、52を、エンティティ46の中の結合コンポーネント54の発生の前に含める。
他の例では、エンティティ生成モジュール36はまた、パーティション動作がマッピング動作の後になることを指定するルールでもプログラムされ、これによって例えば、マッピング動作の実行後のメモリが節約される。このルールの実行に基づいて、エンティティ生成モジュール36は、エンティティ46内にソートコンポーネント50を含める。エンティティ生成モジュール36は、コンポーネント48、50、52、54間にエッジ56、58、59、60、及び61(例えば、データフローを表す)を、仕様書44の中で各種の動作がリストされた(又は、それ以外に発生する)順序に基づいて、及び/又はルールにより指定される順序に基づいて挿入する。例えば、上述のルールの実行に基づいて、ソートコンポーネント50は、マッピングコンポーネント48と結合コンポーネント54との間に挿入される。この挿入の後に、エンティティ生成モジュール36は、マッピングコンポーネント48とソートコンポーネント50との間にエッジ56を挿入する。エンティティ生成モジュール36はまた、ソートコンポーネント50とパーティションコンポーネント51との間にエッジ58も挿入する。エンティティ生成モジュール36は、パーティションコンポーネント51と結合コンポーネント54との間にエッジ59を挿入する。追加的に、パーティションコンポーネント52の挿入後に、エンティティ生成モジュール36は、ソートコンポーネント53とパーティションコンポーネント52との間にエッジ60を挿入する。エンティティ生成モジュール36は、パーティションコンポーネント52と結合コンポーネント54との間にエッジ61を挿入する。
変形型において、仕様書構成モジュール34は、上述のルールで構成される。これらのルールの実行に基づき、仕様書構成モジュール34は、仕様書44及びエンティティ46に含めるべき追加の動作(例えば、パーティション動作及びソート動作)を特定するように構成される。
本明細書に記載のシステムは、ユーザに対し(ユーザインタフェース38を通じて)、エンティティの構成に必要な複雑さが最小限しか示されないように構成される。すなわち、ユーザには、構成のためにユーザの入力を必要とするデータ操作のためのパラメータ値を指定する入力が促される(例えば、ユーザが、それに対して結合及び/又はフィルタを実行するキーの値を入力することを必要とする結合及びフィルタ処理動作)。しかしながら、ユーザの入力とは独立して構成できる他の動作(例えば、パーティション及びソート動作)は自動的に構成され、エンティティに追加される、すなわち、これらのデータ操作の複雑さはユーザに対して示されない。そのため、ユーザに対して複雑さは最小限しか示されない。
図3Aに関して、略図70は、各々が本明細書に記載の技術を使って生成される複数のエンティティ46、76、78、80、82から生成されたデータフローグラフ71を示している。この例では、各エンティティはそれ自体、複数のその他のエンティティを含み得る。以下により詳しく説明するように、データ処理システムは、データフローグラフの中にどのエンティティを含めるべきか、及びそのエンティティの実行順序を選択するための各種のユーザインタフェースを提供する。この例では、データフローグラフ71はまた、データソース72、74も含む。この例では、ユーザインタフェースはまた、データソースの、及びデータフローグラフ内に含まれるデータソース及びエンティティ間の関係の仕様書のために提供される。この例では、データソースは、ユーザエンドでカスタマイズ可能であり、事前に指定する必要がない(例えば、デプロイ又はインストール時に指定できる)という点で変更可能なフィールドである。図3Bを参照すると、略図83は図2Eの変形型を示しており、この場合、仕様書は、個別の特定のエンティティのためではなく、複数の特定のエンティティを含むデータフローグラフのために、ユーザ入力に基づいて生成される。しかしながら、個別のエンティティについての図2Eに関する説明はまた、図3に関して述べる各エンティティにも、相応に当てはまる。この例では、ユーザインタフェースモジュール32は、すべてのパラメータ値(及び/又はデータフローグラフのための構成オプション)を収集するためのユーザインタフェース85を表示する。ユーザインタフェース85を通じて収集された入力に基づいて、仕様書構成モジュール34は、データフローグラフ内に含まれるエンティティのすべてについて、例えば図2Eに関して本明細に記載の技術を使って、仕様書86を生成する。仕様書86に基づいて、グラフ生成モジュール84はデータフローグラフ71を生成し、それ自体は様々なエンティティを含む。データフローグラフ全体を生成することにより、システムは、エンティティ間の必要な依存性及び/又はデータフローを特定し、生成することができる。少なくとも部分的にこれらの依存性及び/又はデータフローに基づいて、システムはエンティティのため、及びエンティティのコンポーネントのための入力及び出力データフォーマットを指定できる。
換言すれば、ユーザインタフェースモジュール32は、複数の特定のエンティティ(例えば、図3Bの「顧客取引エンティティ」及び「購入エンティティ」)を構成するためのユーザインタフェース85を表示する(又は表示されるようにする)。ユーザインタフェース85は、ユーザインタフェース85を通じて構成中のエンティティ(例えば、図3Bの「顧客取引エンティティ」)に含まれる動作、例えばマッピング動作のためのパラメータの1つ又は複数の値を受け取るための部分を含む。この例では、ユーザインタフェース85は、動作において使用されるパラメータの値を入力するためのフィールド85d、85eを含む。ユーザインタフェース85はまた、同じエンティティのための他の動作、例えば結合動作のためのパラメータの値を入力するための部分も含んでいてよい。この例では、この部分はまた、これらの結合動作等のためのパラメータの値を入力するためのフィールドも含んでいてよい。ユーザインタフェース85のフィールドに入力されるデータに基づいて、仕様書構成モジュール34は、複数の特定のエンティティを指定する仕様書86を生成する。
この例では、ユーザインタフェース85は選択するためのエンティティ(例えば、所定のエンティティ)のパレットを表示する。この例では、ユーザインタフェース85はコントロール85aを含み、それを選択すると、コンピュータプログラム及び/又はデータフローグラフに含められる各種のエンティティのリストが表示される。この例では、ユーザは、例えばエンティティの中でも特に「顧客取引」エンティティ85bと「購入」エンティティ85cとをコンピュータプログラムの中に含めるように選択している。この例では、「顧客取引」エンティティ85bは、マッピング動作と結合動作を含む。「顧客取引」エンティティ85bについて、ユーザインタフェース85により、ユーザはマッピング動作の値を、例えば結合動作のパラメータの値を入力するための入力ボックス85d、85eを介して構成できる。入力ボックスは、「顧客取引エンティティ」85bの一部である結合動作のパラメータの値を構成するため、及び「購入」エンティティ85cに含まれるソート及び結合動作のパラメータの値を構成するために提供される。
この例では、ユーザインタフェース85はコントロール85dを含み、それを選択すると、ユーザインタフェース85をレンダリングするクライアントデバイスは、リクエスト(例えば、XMLメッセージ又はその他のデータ)を、仕様書構成モジュール34を実行するデータ処理システム、例えば、変換環境5(図1A)に送信する。この例では、リクエストは、特定のエンティティの各々について、エンティティの名前、そのエンティティにより実行されるデータ操作の種類(例えば、マッピング動作、結合動作等)、及び、データ操作の各々の種類について、そのデータ操作のためのそれぞれのパラメータの値を指定する。リクエストは仕様書構成モジュール34に送信される。リクエストの内容に基づいて、仕様書構成モジュール34は仕様書86を生成する。仕様書構成モジュール34は、本明細書に記載の技術を使って仕様書に含める追加の何れかのデータ操作があるか否かを特定してよい。これらの追加のデータ操作には、他のデータ操作を実行するために必要なデータ操作又は、指定されたデータ操作がそれに依存するが、ユーザが入力値を入れるように促されていないデータ操作が含まれる。データ処理システムは、ユーザインタフェース38(図2E)若しくはユーザインタフェース85を介して、又は特定のエンティティの対応する動作に関連する所定の基準に適合するリクエストを介して受け取った値をチェックしてもよく、受け取った値が所定の基準に適合するか否かの通知をユーザに(例えば、ユーザインタフェース85を介して、又はクライアントへの応答メッセージを介して)出力してもよい。データ処理システムが、受け取った値の幾つかが所定の基準に適合しないと特定した場合、通知(例えば、警告)はまた、ユーザが、所定の基準に適合する特定のエンティティの対応する動作のための新規の1つ又は複数の値をサブミットするのを導く情報も含んでいてよい。換言すれば、データ処理システム(例えば、ユーザインタフェース85)は、導かれたユーザマシン相互作用プロセスを提供してよく、これによって例えば最終的に受け取った値が所定の基準に確実に適合するようにすることにより、基本のシステム又はエンティティの適正な動作を確実にする。
仕様書から、グラフ生成モジュール84は、例えばメモリから、仕様書86に含まれるエンティティの名前に対応するエンティティ(例えば、エンティティ76、78、80、82、46)を選択し、これらのエンティティのパラメータの値をユーザインタフェース85に入力された値にしたがって構成することによって、データフローグラフ71を生成する。エンティティがまだ事前に定義されてメモリに記憶されていないある例では、グラフ生成モジュール84は、例えばメモリから、仕様書により指定された各種の動作の名前に対応する名前を有するコンポーネントを選択することによって、エンティティを生成する。
図4を参照すると、略図90はデータ処理システム、例えば図1Aのデータ処理システム4が、あるフィールドを、そのフィールドはデータフローグラフ71(図3A)であってもよいデータフローグラフ91内の下流の、又はその後の何れかのエンティティ(又は、エンティティに含まれるコンポーネント)により必要とされないとデータ処理システムが特定したときにデータレコードから「ドロップする」か、又はそれ以外に取り除くように構成される様子を示す。この例では、データフローグラフ91はデータソース92、94、データシンク97(例えば、データの記憶のためのデータレポジトリ)、及びエンティティ98を含む。データフローグラフ91はまた、1つ又は複数のその他のエンティティも含んでいてよく、これはデータフローグラフ91に見られる楕円形の点(「...」)により示されている。
フィールドを、それらがデータフローグラフにより使用又は処理されなくなったときにドロップすることには多くの利点がある。これらの利点には、データレコード処理のレイテンシの短縮が含まれ、それは、データ処理システムがより小さいレコード(例えば、フィールドのドロッピングによる)を、データ処理システムがデータフローグラフを通じたすべてのデータレコードを処理しなければならない場合のデータ処理速度に関して、より素早く処理できるからである。その他の利点には、メモリ及びリソースの消費の削減が含まれ、これは、より小さいレコード(例えば、フィールドのドロッピングによる)がレコードの処理中に消費するメモリ空間はより小さいからである。
この例では、データフローグラフ91はエンティティ98を含み、それが今度はデータフローグラフコンポーネント100、102、104、106を含む。コンポーネント100、106の各々はフィルタコンポーネントであり、これはレコードを位置情報フィールドに基づいてフィルタ処理する。そのため、コンポーネント100、106の各々は、フィルタ処理を適正に実行するために、データレコードに位置情報フィールドがあることを必要とする。コンポーネント102はソートコンポーネントであり、これはデータレコードを、例えばデータレコードのID又はキーに基づいて選別するように構成される。そのため、コンポーネント102は、ソートを適正に実行するためにIDフィールドを必要とする。コンポーネント104は結合コンポーネントであり、これは同じ又は同様のキー又はIDに関連するデータレコードについて結合を行うように構成される。そのため、コンポーネント104は、結合動作を適正に行うために、IDフィールドを必要とする。この例では、データシンク97は、処理されたデータレコードの各々のための4つのフィールド(例えば、フィールド96a~96d)を有するデータレコード(例えば、データレコード96)を記憶するように構成される。この例では、4つのフィールドはIDフィールド96a、SMSフィールド96b、タイムスタンプフィールド96c、及びデータ利用フィールド96dを含む。そのため、データシンク97による記憶のために指定されたフィールドに基づいて、処理されたレコードは、これらのフィールドの値をデータシンク97に記憶できるようにするために、これら4つのフィールドを含むべきである。
この例では、データソース92は構造化データ項目、例えばデータレコード108を受け取り、これはIDフィールド108a、位置情報フィールド108b、SMSフィールド108c、及びタイムスタンプフィールド108dを含む。この例では、フィールド108a~108dの各々は、下流のエンティティ又はデータシンクにより必要とされる。例えば、フィールド108aは、コンポーネント102、104、及びデータシンク97により必要とされる。フィールド108bは、コンポーネント100により必要とされる。フィールド108cは、データシンク97により必要とされる。フィールド108dは、データシンク97により必要とされる。そのため、データ処理システムは、データレコード108から何れのフィールドもドロップせず、データレコード108はその全体がデータフローグラフ91内の次のエンティティに送信される。
この例では、データソース94はデータレコード110を受け取り、これはIDフィールド110a、位置情報フィールド110b、データ利用フィールド110c、タイムスタンプフィールド110d、及び音声フィールド110eを含む。IDフィールド110aは、データフローグラフ91内の下流のエンティティ及びコンポーネント(すなわち、コンポーネント104及びデータシンク96)により使用される。位置情報フィールド110bはコンポーネント106により使用される。データ利用フィールド110cはデータシンク97により使用される。タイムスタンプフィールド110dは、データシンク97により使用される。しかしながら、音声フィールド110eは、下流のコンポーネント又はエンティティの何れによっても使用されない。そのため、データ処理システムは音声フィールド110eをデータレコード110からドロップする(これは「音声」の取消し線により視覚的に示されている)。この例では、データソース94はデータレコード112(フィールド112a~112dを含み、ドロップされたフィールド110eを含まない)をデータフローグラフ91内の次のエンティティに送信する。データレコード112は、フィールド110eが取り除かれたバージョンのデータレコード110である。すなわち、この例では、データレコード112は、データレコード112がフィールド110eを含まないことを除き、データレコード110と同じである。この例では、フィールド112a~112dはそれぞれフィールド110a~110dと同じである。これは、データソース94に関連付けられる仕様書をデータソース94に変換している間にデータ処理のためのデータフローグラフの実行の前にデータソース94の出力データフォーマットを設定することによって行われてもよく、それによって音声フィールド110eは、データレコード110がデータレコード112としてデータソース94により下流エンティティ98によるその後の下流の処理のために出力される前に、データレコード110から除去又はドロップされる。
この例では、エンティティ98はデータレコード108を受け取る。データ処理システムは、データレコード108に対してコンポーネント100を実行し、例えば、データレコード108の処理を続けるか否か、又はデータレコードがフィルタにより除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド108bの値に基づいて、データ処理システムは、データレコード108がフィルタにより除外されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド108bが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント102、104又はデータシンク97の何れも位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード108から位置情報フィールド108bをドロップし、これはコンポーネント100の上の「位置情報」の取消し線により示されている。これは、エンティティ98に関連付けられる仕様書のエンティティ98への変換中にコンポーネント100の出力データフォーマットを設定することにより行われてよく、それによって、データレコード108が下流のコンポーネント102、104によるその後の下流の処理のためにコンポーネント100によってデータレコード114として出力される前に、位置情報フィールド108bがデータレコード108から除外され、又はドロップされる。位置情報フィールド108bの除外により、データレコード114が得られ、これはデータレコード108のあるバージョンである。すなわち、データレコード114は、データレコード108の、位置情報フィールド108bが取り除かれたバージョンである。この例では、データレコード114はフィールド114a~114cを含み、これらはそれぞれフィールド108a、108c~108dに対応する。コンポーネント102及び104は各々、データレコード114を処理する。この例では、コンポーネント102、104による処理の後、データレコード114から何れのフィールドもドロップされず、これは、フィールド114a~114cの各々がデータシンク97により必要とされるからである。
この例では、データレコード112がエンティティ98に渡され、それがデータレコード112に対してコンポーネント106を実行し、例えばデータレコード112の処理を継続するか否か、又はデータレコード112がフィルタで除外されて、さらに処理されないかを特定する。この例では、位置情報フィールド112bの値に基づいて、データ処理システムは、データレコード112がフィルタにより除去されて、さらに処理されないデータレコードの基準を満たさないと特定する。データ処理システムはまた、位置情報フィールド112bが下流のエンティティ又はコンポーネントの何れによっても使用されず、又は必要とされないと特定する。例えば、コンポーネント104もデータシンク97も位置情報フィールドを使用しない。そのため、データ処理システムは、データレコード112から位置情報フィールド112bをドロップし、これはコンポーネント106の下の「位置情報」の取消し線により示されている。これは、エンティティ98に関連付けられる仕様書のエンティティ98への変換中にコンポーネント106の出力データフォーマットを設定することにより行われてよく、それによって、位置情報フィールド112bは、データレコード112が下流のコンポーネント104によるその後の下流の処理のためにコンポーネント106によってデータレコード116として出力される前に、位置情報フィールド112bがデータレコード112から除外され、又はドロップされる。位置情報フィールド112bの除外により、データレコード116が得られ、これはデータレコード112のあるバージョンである。すなわち、データレコード116は、データレコード112の、位置情報フィールド112bが取り除かれたバージョンである。この例では、データレコード116はフィールド116a~116cを含み、これらはそれぞれフィールド112a、112c~112dに対応する。コンポーネント104は、データレコード116を処理する。この例では、コンポーネント104による処理の後、データレコード116から何れのフィールドもドロップされず、これは、フィールド116a~116cの各々がデータシンク97により必要とされるからである。
この例では、コンポーネント104はデータレコード114、116(例えば、データレコードの各々は同じIDを有する等)を結合する。コンポーネント104の出力はデータレコード118であり、これはデータレコード114、116を含む。この例では、データレコード114、116の各々はデータレコード118のサブレコードである。エンティティ98は、データレコード118を記憶のためにデータシンク97に伝送する。
ある例において、データ処理システム(例えばデータ処理システム4又は変換環境5)は、データフローグラフ(例えば、図3Aのデータフローグラフ71又は図4のデータフローグラフ91)内の各エンティティについて3つのパスを実行し、どのデータフィールドを、いつ、記憶から削除し、又はそれ以外に除外できるかを特定する。すなわち、コンピューティング及びメモリリソースの消費を減らすために、データ処理システムはフィールドをできるだけ早く、例えばそのフィールドがデータフローグラフによって、及び/又はデータフローグラフ内のエンティティによって必要とされなくなったときに「ドロップ」又は削除するように構成される。第一のパス中、データフローグラフのあるエンティティは、他のエンティティ(例えば、他の上流のエンティティ)に対し、それ自体により、及びそのエンティティの下流の何れかのエンティティにより必要とされるフィールドをブロードキャストする。このブロードキャストを行うエンティティは、ブロードキャストエンティティと呼ばれる。ある例において、ブロードキャストエンティティは、必要なフィールドを1つ又は複数の受信エンティティ(例えば、上流のエンティティ)に、必要なフィールドを表すデータを含む1つ又は複数のメッセージをこれらの上流のエンティティに送信することによってブロードキャストする。
第二のパス中、受信エンティティはブロードキャストエンティティに対し、どの受信エンティティが必要なフィールドの値を提供(例えば、ブロードキャストエンティティに伝送)できるかを指定する1つ又は複数のメッセージを伝送する。第三のパス中、ブロードキャストエンティティは、受信エンティティから受け取ったメッセージを構文解析(又はそれ以外に解析)する。ブロードキャストエンティティは、応答として、受信エンティティに対し、どの受信エンティティがどのフィールド(及び/又はフィールドの値)のブロードキャストエンティティへの伝送を担当するかを指定するデータ(例えば、メッセージ)を返信する。幾つかの例において、データ処理システムは、これらの3つのパスを実行する。そのようにする中で、各エンティティは、例えばブロードキャストエンティティを含む下流のエンティティによりどのフィールドが必要とされるかを指定するデータ(例えば、設定された出力データフォーマット)で構成される。一般に、エンティティ(例えば各エンティティ)は、メモリ及び/又はデータレポジトリの中に、必要なフィールドを表すデータを保存し、そのエンティティのための固有の識別子に関連付けられるデータを保存することによって、必要なフィールドを指定するデータで構成される。すると、データフローグラフの実行中、データ処理システムは、エンティティの実行中に、この記憶されたデータの問い合わせを行う。例えば、特定のエンティティを実行すると、データ処理システムは、データベース内でそのエンティティのためのデータを(例えば、そのエンティティの固有の識別子に基づいて)検索する。前述のように、検索されたデータは、どのフィールドが下流のエンティティにより必要とされるかを指定する。この例では、データ処理システムは、下流のエンティティにより必要とされないフィールドを、例えば現在のエンティティ(例えば、現在実行中で、どのフィールドが下流のエンティティにより必要とされ、必要とされないかを指定する、記憶データに関連付けられるエンティティ)によるデータ処理が終了したときに、(例えば、これらを記憶装置から削除することによって、又はこれらのフィールドに関するデータが記憶されないようにすることによって)ドロップするように構成される。
図5を参照すると、略図120は、データレコードのどのフィールドをいつドロップすべきかを特定する際にデータ処理システムが実行するプロセスを示す。この例では、データフローグラフはデータソース122、124、及びエンティティ126、128、130、132、134を含む。この例では、エンティティは、エンティティがフィールドの値を記憶しないという点で一時的である。この例では、エンティティ132は3つのフィールド、すなわちx、y、zを必要とする。エンティティ130は、1つのフィールド、すなわちAを必要とする。エンティティ126は2つのフィールド、すなわちx及びyを必要とする。追加的に、この例では、データソース122は、フィールドx、y、A を有するデータレコードを記憶する(又はそれ以外にそれにアクセスすることができる)。
どのフィールドがどのエンティティにより必要とされるか、及びデータ処理システムがフィールドをいつドロップできるかを追跡するために、データ処理システムは、データフローグラフの構成の一環として、データフローグラフによるデータ処理の前に、以下の技術を実行する。まず、エンティティ132は、矢印136に示されるように、第一のパス中にメッセージ170をエンティティ130に送信する。メッセージ170は、エンティティ132により必要とされるフィールドを指定するデータを含む。この例では、メッセージ170は、フィールドx、y、zがエンティティ132により必要とされることを指定するデータを含む。すると、エンティティ130はメッセージ170を受け取り、メッセージ170に、エンティティ130に必要なフィールドがあればこれを追加する。この例では、エンティティ130はメッセージ180を生成し、これはメッセージ170のあるバージョンであり、メッセージ170の内容(すなわち、フィールドx、y、zを表すデータ)の他、フィールドAを表す他のデータを含む。第一のパス中に、データ処理システムは、矢印138により示されるように、エンティティ130からエンティティ126にメッセージ180を伝送する。この例では、エンティティ126はフィールドx及びyを必要とする(例えば、エンティティ126はフィールドx及びyを読み出すからである)。そのため、エンティティ126はメッセージ180に対し、エンティティ126がフィールドx、yのための値を有することになると応答できる。エンティティ126は、矢印193により示されるように、第一のパス中、データソース122にメッセージ190を送信する。この例では、メッセージ190は、フィールドx、y、z、Aが、例えば1つ又は複数の下流のエンティティにより必要とされることを指定する。データソース122はフィールドx、y、Aのための値を記憶する(又は、それ以外にそれにアクセスする)ため、データ処理システムは、第二のパス中に、矢印194により示されるように、メッセージ192がデータソース122からエンティティ126に伝送されるようにする。この例では、メッセージ192は、データソース122がフィールドx、y、Aのための値を記憶するか、又はそれ以外にそれにアクセスできることを指定する。次に、第二のパス中、データ処理システムは、エンティティ126に、矢印140により示されるように、エンティティ130にメッセージ182を伝送させる。この例では、メッセージ182は、エンティティ126がフィールドx、y、Aのための値をエンティティ130に伝送できることを指定する。ある例において、データ処理システムは、受信した(そのエンティティへの)メッセージの中で指定されたフィールドを特定し、その後、指定されたフィールドのどれが、メッセージを受信したエンティティにより必要とされるか、又はメッセージを受信したエンティティによりアクセスすることができるかを特定することにより、(エンティティから伝送された)メッセージの中でどのフィールドを指定し、又はその中に含めるかを特定する。この例では、メッセージ180(エンティティ126により受信される)はフィールドx、y、z、Aを指定する。エンティティ126は、フィールドx、yを必要とする。したがって、エンティティ126はフィールドx、yのための値にアクセスできる(データソース122からこれらの値を受け取ることによる)。そのため、フィールドx、yがメッセージ182の中に含められる。エンティティ126はフィールドAを必要としないが、エンティティ126はデータソース122を通じてフィールドAにアクセスできる。そのため、エンティティ126はメッセージ182の中にフィールドAを含める。
この例では、エンティティ130はメッセージ182を受け取り、メッセージ182の中で指定されたフィールドのうちの、もしあれば、どれが下流のエンティティにより必要とされるかを特定する。この特定を行うために、エンティティ130はメッセージ182の内容をメッセージ170の内容と比較する。この例では、データ処理システムは、メッセージ182の中で指定されるフィールドとメッセージ170の中で指定されるフィールドとの間の重複を表すフィールド(例えば、重複フィールド)を指定する他のメッセージを生成するように構成される。そのため、データ処理システムは、フィールドx、yを表すデータでメッセージ185を生成し、例えば、エンティティ130がフィールドx、yをエンティティ132に提供できることを指定する。第二のパス中に、エンティティ130は、矢印142により示されるように、メッセージ185をエンティティ132に伝送する。エンティティ130はまた、メモリ又はデータレポジトリの中に、フィールドAがエンティティ130により処理されると、フィールドAを記憶装置からドロップし、又はそれ以外に削除できることを指定するデータを記憶する。ここで、図5に示されるデータフローグラフがデータ処理システム4(図1A)により(リアルタイムで)実行されると、データ処理システム4(データフローグラフを実行する)は、フィールドAをドロップすることを、エンティティ130による処理後に、例えばメモリ(又はデータレポジトリ)の中でエンティティ130によるデータ処理の完了時にフィールドAをドロップすることを指定するデータのデータ検索に基づいて特定できる。
メッセージ170の伝送と平行して(又はそれに続いて)、エンティティ132はまた、矢印150により示されるように、第一のパス中にメッセージ172をエンティティ134に伝送する。幾つかの例において、メッセージ170はメッセージ172と同じメッセージである。この例では、メッセージ172はフィールドx、y、zがエンティティ132により必要とされることを指定する。エンティティ134は、メッセージ172を受け取る。この例では、エンティティ134はそれ自体の何れのフィールドも必要としない。そのため、エンティティ134は、矢印152により示されるように、第一のパス中にメッセージ172をエンティティ128に送信する。エンティティ128はメッセージ172をソース124に送信し、それが今度は、メッセージ184で応答し、これはソース124がフィールドy、zを提供できることを指定する。今度は、エンティティ128は、エンティティ128がフィールドy、zのための値を提供できることを指定するメッセージ184で応答する。この例では、エンティティ128は、第二のパス中に、矢印154により示されるように、エンティティ134にメッセージ184を伝送する。この例では、エンティティ134は、第二のパス中に、矢印156により示されるように、エンティティ132にメッセージ184を送信する。
この例では、エンティティ132は2つのメッセージ(すなわち、メッセージ184、185)を受け取っており、その各々が、エンティティ132により必要とされるどのフィールドが上流のエンティティにより提供できるかを指定する。特に、メッセージ184は、フィールドx、yがエンティティ130により提供できることを指定する。メッセージ184は、フィールドy、zがエンティティ134により提供できることを指定する。エンティティ132は2つの異なるエンティティからフィールドxの値を受け取ることができるため、エンティティ132はこれらのエンティティのうちから、そこにフィールドxの値を要求し、そこから受け取ることのできるものを選択する。幾つかの例において、エンティティ132はランダムにこの選択を行う。他の例では、エンティティ132は最初に応答したエンティティを選択してよい。
この例では、エンティティ132はフィールドxを受け取るためのエンティティ130を選択する。そのため、第三のパス中に、エンティティ132は、矢印144によって示されるように、メッセージ179をエンティティ130に伝送する。この例では、メッセージ179は、エンティティ132がエンティティ130からフィールドx、yを受け取ることを選択していることを指定する。すると、エンティティ130は、エンティティ130がフィールドx、y、Aの値をエンティティ126から受け取ることを指定するメッセージ178を生成する。第三のパス中に、メッセージ178は、矢印146により示されるように、エンティティ130からエンティティ126に伝送される。第三のパス中に、エンティティ126は、矢印148により示されるように、メッセージ178をデータソース122に伝送する。この例では、データソース122は、メッセージ178の内容を、それが記憶している、又はそれ以外にアクセスするフィールドと比較して、例えばどの(もしある場合はフィールド)データソース122を記憶装置からドロップし、削除できるかを特定する。この例では、データ処理システムは、メッセージ178の内容に基づいて、データソース122のすべてのフィールドが下流のエンティティにより必要とされることを特定する。そのため、データソース122は何れのフィールドもドロップしないように構成される。
この例では、エンティティ132は、第三のパス中に、矢印158により示されるように、メッセージ176をエンティティ134に伝送し、これはエンティティ132がエンティティ134からフィールドzを受け取ることを指定する。今度は、エンティティ134は、データ処理システムにより、フィールドzの値をエンティティ132に伝送するように構成される。エンティティ134はまた、第三のパス中、矢印160により示されるように、メッセージ176をエンティティ128に伝送する。そのため、エンティティ128はまた、フィールドzの値をエンティティ134に伝送するように構成される。すると、エンティティ128は、第三のパス中に、矢印162により示されるように、メッセージ176をデータソース124に送信する。この例では、データソース124はメッセージ176の内容(すなわち、フィールドzを指定する)をデータソース124によりアクセスされるフィールド、この場合はフィールドy、zと比較する。比較に基づいて、データ処理システムは、フィールドyがメッセージ176に含められないことを特定する。そのため、データ処理システムは、下流のエンティティの何れも、フィールドyの値についてデータソース124に依存しないことを特定する。そのため、データソース124は、例えば図5に示されるデータフローグラフの実行時に、フィールドyをドロップするように構成される。この例では、データソース124はあるフィールドを、そのフィールドのための値をメモリ内に保存しないことによって、ドロップするように構成される。
ここまでの説明の中で、エンティティがメッセージを伝送し、メッセージを受信すると述べた。ある例において、エンティティはメッセージの伝送及び/又は受信を、実行中で、データを生成させるエンティティを表す実行可能なロジック又はコードで行い、生成されたデータはその後、他のエンティティを表す他の実行可能コードにより分析又は解釈される。
上述の例において、エンティティ、例えばエンティティ126は、例えばフィールドのための値を記憶するのではなく、フィールドへのアクセスを読み出している。変形型では、エンティティはまた、フィールドのための値を記憶してもよい。この例では、エンティティが要求されたフィールドの値を記憶する場合、そのエンティティは上流のエンティティ及び/又はデータソースに行って、その上流のエンティティ及び/又はデータソースがそのフィールドのための値を提供できるか否かを特定する必要がない。その代わりに、エンティティはそれ自体、下流のエンティティ(そのフィールドを要求する)に対し、上流のエンティティがそのフィールドの値を提供できると応答することができる。
この上記の例において、エンティティは、どのフィールドをいつドロップすべきかがわかるが、それは、各エンティティが、そのエンティティのための入力データフォーマット及び出力データフォーマットを指定するデータを記憶しているか、又はそれにアクセスできるからである。出力データフォーマットは、エンティティがそのための値を出力する必要のあるフィールドを指定する。ある例において、出力データフォーマット(又は、出力フィールド若しくは出力フォーマット)は、1つ又は複数の下流の(例えば、その後発生する)エンティティにより必要とされるどのフィールドが特定の上流のエンティティにより提供できるかを指定する。この例では、上流及び下流のエンティティは、データフローグラフの中の同じデータフローの一部である。すなわち、上流のエンティティは、出力フォーマットを介してこれらのフィールドを提供するように構成される。入力データフォーマットは、エンティティがそのための値を受け取るように構成されるフィールドを指定する。一般に、入力データフォーマットは、エンティティのためにアクセスされ、又は処理される必要のあるフィールドを含む。そのため、どのフィールドをいつドロップすべきかを特定するために、エンティティは、それぞれの出力データフォーマットの内容を構文解析し、又はそれ以外に分析する。
変形型において、エンティティ132は以下のように構成される:フィールドyの値を、その値がゼロでないかぎり、エンティティ130から受け取り、ゼロである場合、フィールドyの値をエンティティ134から受け取る。この変形型では、エンティティ126、128、130、134の各々は出力データフォーマットの一部としてフィールドyで構成される。
図6を参照すると、グラフィカルユーザインタフェース200が表示され(例えば、クライアントデバイス又はデータ処理システムによる)、ユーザがあるエンティティのため、及びそのエンティティを含むデータフローグラフのための仕様書を構成できるようにする。この例では、グラフィカルユーザインタフェース200は、入力データセットに関する仕様書の1つ又は複数の部分を構成するための部分202を含む。グラフィカルユーザインタフェース200はまた、入力データセットについて実行されるべき各種の動作(例えば、データ結合)を指定する値を入力するための部分204も含む。グラフィカルユーザインタフェース200はまた、値と、出力データセット及び出力データセットの記憶装置を指定するデータを入力するための部分206も含む。
図7を参照すると、グラフィカルユーザインタフェース209はグラフィカルユーザインタフェース200の変形型である。この変形型では、エンティティを構成するためのオーバレイ208が表示される。この例では、エンティティは、部分204の1つ又は複数の選択可能部分を選択すると構成される。この例では、オーバレイ208は、データ処理の一環として行われるべき動作(例えば、結合動作、マッピング動作、及びフィルタ処理動作)を構成するための構成コントロール210、212、214、216を含む。この例では、ユーザは構成コントロール210を選択して、結合動作がデータレコードについて行われることになることを指定する。
図8を参照すると、グラフィカルユーザインタフェース220は、エンティティに含められる結合動作を構成するためのオーバレイ222を表示する。この例では、オーバレイ222は、構成コントロール210が選択されると表示される。この例では、オーバレイ222は、結合動作を構成するためのコントロールを表示する。特に、オーバレイ222は構成コントロール224、226、228、229、230を表示する。この例では、構成コントロール224により、ユーザは結合を実行する相手のデータセットを指定することができる。構成コントロール226により、ユーザは結合動作のための名前を入力することができる。構成コントロール228により、ユーザは自分が重複するデータレコードを除去したいか否かを指定することができる。構成コントロール229により、ユーザは結合が行われるキー(すなわち、固有の識別子)を指定することができる。構成コントロール230により、ユーザは行われるべき結合の種類を指定することができる。
図9を参照すると、データ処理システムは、データフローグラフ240を、例えば指定された値(例えば、図6~8に示されるユーザインタフェース内で入力され、又はそれ以外に指定される値)から生成された仕様書に基づいて生成する。この例では、仕様書は、例えば図2Eに関して本明細書に記載されている技術を使って生成される。追加的に、データフローグラフ240も、同じく本明細書に記載されている技術を使って、仕様書から生成される。
この例では、データフローグラフ240は、入力データソース242、244、246、248、250、エンティティ252、254、256、258、260、262、及び出力データソース264を含む。この例では、エンティティ252、254、256、258、260、262の各々はデータフローグラフ(例えば、データフローグラフ240等の親データフローグラフ内に含められることになるデータフローグラフ)を含む。
図10を参照すると、略図300は、仕様書を、データフローグラフを生成するためのエンティティに変換するプロセスを示す。動作において、システム(例えば、本明細書に記載の図1Aのシステム1)は、少なくともエンティティの第一のパラメータの値を入力するための第一の部分と、少なくともそのエンティティの第二のパラメータの値を入力するための第二の部分とを含むユーザインタフェースを提供する。システムは、第一のパラメータの入力値を表すデータと、第二のパラメータの入力値を表すデータとを受け取る(302)。任意選択により、システムは入力値を表すデータについて、エンティティの対応するパラメータに関連する所定の基準に適合するかをチェックしてよく、ユーザに対し、(例えば、ユーザインタフェースを介して)、入力値が所定の基準に適合するか否かを示す通知を出力してもよい。システムが、入力値の幾つかが所定の基準に適合しないと特定した場合、通知(警告等)は、ユーザを、エンティティの対応するパラメータのための、所定の基準に適合する新たな1つ又は複数の値を入力するように導く情報も含んでいてよい。換言すれば、システムは任意選択により、導かれたユーザマシン相互作用プロセスを提供してもよく、これにより、例えば最終的に受け取った値が確実に所定の基準に適合するようにすることによって、エンティティの適正な動作が確実となる。
入力値に基づいて、システムはエンティティのための仕様書を生成し(304)、この仕様書は、データレコードを入力値にしたがって処理するための複数のデータ操作を指定し、データ操作の少なくとも1つは、受け取ったデータのうち入力値を表す部分により指定され、任意選択により、データ操作の少なくとも他の1つは、データ処理システムにより(例えば、自動的に、及び例えばユーザの入力を必要とせずに(それとは独立して)、例えば、指定されたルールに基づいて)、受け取ったデータのうち入力値を表す部分により指定されたデータ操作の少なくとも1つを実行できるようにするために仕様書に含めるものとして特定される。仕様書の複数の部分の各々について、システムは、仕様書のその部分により指定された1つ又は複数のデータ操作をカプセル化するコンポーネントを特定する(306)。
システムは、データ操作を実行するための特定されたコンポーネントを有するエンティティを生成し(308)、コンポーネントの第一のものは、第一のパラメータの値にしたがって1つ又は複数の動作を行うように構成され、コンポーネントの第二のものは、第二のパラメータの値にしたがって1つ又は複数の動作を行うように構成される。追加的に、それぞれの仕様書から特定されたそれぞれのコンポーネントで生成されたエンティティに基づいて、システムは、エンティティ間のデータフローを表すコンピュータプログラム又はデータフローグラフを生成する(310)。
図11を参照すると、データ処理システム(例えば、図1Aのシステム1、図1Aのデータ処理システム4、又は図1Aの変換環境5)は、仕様書を永続的コンピュータプログラムに変換するプロセス320を実装する。一般に、永続的とは、それを作成したプロセスが終了しても残る状態の特徴を指す。一般に、コンピュータプログラムは、データ処理システムにより実行可能な一連のコード化された命令を含む。動作において、データ処理システムは、第一のエンティティとその第一のエンティティにより実装される第一のデータ操作の第一のパラメータの入力値を指定し、さらに第二のエンティティとその第二のエンティティにより実装される第二のデータ操作の第二のパラメータの入力値を指定する仕様書データを受け取る(322)。
第一及び第二のエンティティのパラメータの入力値に基づいて、データ処理システムは、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムのための仕様書を生成し(324)、仕様書は、第一のエンティティがコンピュータプログラムの中に含められ、第一のエンティティは、少なくとも第一のパラメータの入力値にしたがってデータを処理するための少なくとも第一のデータ操作を実装することを指定し、仕様書はさらに、第二のエンティティがコンピュータプログラムの中に含められ、第二のエンティティは、少なくとも第二のパラメータの入力値にしたがってデータを処理するための第二のデータ操作を実装することを指定し、任意選択により、仕様書の中で第一のエンティティ又は第二のエンティティにより実装されると指定された少なくとも1つのデータ操作は、データ処理システムにより、ユーザインタフェースの中でそのエンティティのためのデータ操作として指定されることとは無関係に、そのエンティティの中に含められるものとして選択される。
本明細書に記載の技術を使って、データ処理システムは、仕様書を、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに変換し(326)、任意選択により、コンピュータプログラムの1つ又は複数の部分の内容は、ユーザインタフェースへの入力とは異なる。すなわち、仕様書の変換により、新しいコンピュータプログラムが得られ、これは、例えば後に実行及び/又は変更するために、メモリに記憶される。データ処理システムはまた、コンピュータプログラムをメモリに保存する(328)。このコンピュータプログラムは、永続的且つ編集可能である。追加的に、このコンピュータプログラムは、例えば後日実行するために保存される。
各エンティティについて、データ処理システムは、そのエンティティのための入力及び出力データフォーマットを保存する(330)。入力データフォーマットは、そのエンティティによりアクセスされる1つ又は複数のテータセットの1つ又は複数のフィールドを指定する。出力データフォーマットは、コンピュータプログラム内でそのエンティティの後に(すなわち、その下流で)発生する1つ又は複数のエンティティによりアクセスされる1つ又は複数のフィールドを指定する。この例では、データ処理システムは、例えば図4及び5に関して本明細書に記載される技術を使って、入力及び出力データフォーマットを自動的に特定する。出力データフォーマットの特定のために、これらの技術は、コンピュータプログラム内でそのエンティティの後に(すなわち、その下流で)発生する他のエンティティを特定することであって、他のエンティティとそのエンティティはコンピュータプログラムの中のデータフローの一部である、特定することと、他のエンティティによりアクセスされる1つ又は複数のフィールドを特定することと、他のエンティティによりアクセスされる1つ又は複数のフィールドのうちどれが、そのエンティティによりアクセス可能かを特定することと、エンティティの出力データフォーマットを、他のエンティティによりアクセスされる、及びそのエンティティによりアクセスすることができる1つ又は複数のフィールドを含むように設定することと、を含む。
この例では、データ処理システムはまた、各エンティティについて、そのエンティティによりアクセスされる1つ又は複数のフィールドを、そのエンティティによるこれらの1つ又は複数のフィールドにおけるデータ(例えば、値)の処理の後にデータレコードからドロップできるか否かを特定する(332)。データ処理システムは、コンピュータプログラムの中でそのエンティティの後に(すなわち、下流で)発生する1つ又は複数の他のエンティティと同じデータフローの一部であるコンピュータプログラム内の各エンティティについて、コンピュータプログラムのエンティティにより読み出され、エンティティの後に(すなわち、その下流で)発生する1つ又は複数の他のエンティティの何れによっても読み出されない1つ又は複数のフィールドを特定し、エンティティによるこれらの1つ又は複数のフィールドを読み出した後に、その1つ又は複数のフィールドがコンピュータプログラムによるさらなる処理を受けないようにすることによって、それを行う。
変形型において、データ処理システムは、複数のエンティティの中から、1つ又は複数のデータセットの処理において複数の異なるデータ操作を実行するコンピュータプログラムに含めるための1つ又は複数のエンティティを選択するため、及び選択された各エンティティについて、そのエンティティにより実装されるデータ操作のパラメータの値を入力するためのユーザインタフェース用データを提供する。他の変形型において、データ処理システムは、どのエンティティをコンピュータプログラムに含めるか、及びそれらのエンティティのためのパラメータ値を指定するデータを入力するスプレッドシート又はルールエディタを提供する。
複数のエンティティの中から1つ又は複数のエンティティを選択できるようにすることによって、データ処理システムは、ソフトウェアモジュールとコードの再使用を可能にし、コンピュータプログラムの生成におけるフレキシビリティと使いやすさを向上させる。例えば、エンティティが定義されると、その同じエンティティは複数の異なるコンピュータプログラムの中で再使用できる。そのようにすることにより、コンピュータプログラムの生成におけるエラーが減る。これは、コンピュータプログラムが、コンピュータプログラムを、すでに定義されたコンピュータプログラムとコード(エラーがない)の選択を介して開発でき、コンピュータプログラムのコンピュータによるプログラミングを新しいコードで始めなくてよいからである。追加的に、ユーザが複数のエンティティの中からあるエンティティを選択できるようにすることにより、データ処理システムは、ユーザインタフェースの中で、エンティティを構成するため、及びコンピュータプログラムを生成するために必要な複雑さを少ない(例えば、最小限の)量しか見せないようにすることができる。データ処理システムは、ユーザに、それについてユーザ入力又は仕様書が必要なパラメータの値のみを促すことによって、そのようにする。ユーザの入力が不要なその他のデータ操作は、ユーザインタフェース内のビューから隠され、データ処理コンピュータプログラムにより、仕様書生成の一部として仕様書に追加される。
この例では、仕様書データ(及び/又はユーザ入力)は、何が行われるか(例えば、何が結果か)の意味論的仕様書である。意味論的仕様書に基づいて、データ処理システムは、それがどのように行われるか、例えばどのように結果が実現されるかを指定する論理的仕様書(例えば、一般に本明細書中で仕様書と呼ばれる)を生成する。意味論的仕様書と論理的仕様書との間のこの差を通じて、データ処理システムは、コンピュータプログラムの生成時に、例えば、ユーザが意味論的仕様書の中で(ユーザインタフェース又はフローチャートを介して)指定したステップを省くことにより、エンドツーエンドの最適化を行うことができる。例示的な最適化は、ユーザが、特定のエンティティのパーティション及びソートを実行することを指定する場合である。しかしながら、特定のエンティティの前のあるエンティティがパーティション及びソートのために構成されている場合、コンピュータプログラムは、パーティショニングとソーティングの動作を1つの行の中で2回行わないように最適化される。この点で、グラフ又はコンピュータプログラムの作成は、推奨されるベストプラクティスにしたがって行われ、ユーザはこれを知らなくてよい。そのため、それほど専門知識を持ち合わせない人でも、プロフェッショナルらしく組み立てられたコンピュータプログラムを作成できる。
幾つかの例では、エンティティはリンクに対応するデータフローにより連結されるノードに対応する計算コンポーネントを含む。この例では、コンピュータプログラムは、リンクに対応するデータフローにより連結されるノードに対応するエンティティを含むデータフローグラフである。この例では、メモリは揮発性又は不揮発性メモリを含む。追加的に、幾つかの例において、エンティティは1つ又は複数の他のエンティティを含む。
上述のグラフ及びエンティティ構成アプローチは、コンピュータ上で実行されるソフトウェアを使って実装できる。例えば、ソフトウェアは、1つ又は複数のコンピュータプログラムの中で、1つ又は複数のコンピュータプログラムされた、又はコンピュータプログラム可能なコンピュータシステム(これは、分散型、クライアント/サーバ、又はグリッド等、様々なアーキテクチャのものであってよい)を実行する手順を形成し、各々が少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶素子を含む)、少なくとも1つの入力装置又はポート、及び少なくとも1つの出力装置又はポートを含む。ソフトウェアは、例えば計算グラフの設計と構成に関する他のサービスを提供する、より大きいコンピュータプログラムの1つ又は複数のモジュールを形成してもよい。グラフのノードと素子は、コンピュータ可読媒体に記憶されたデータ構造又は、データレポジトリに記憶されたデータモデルに適合するその他の組織化データとして実装できる。
ソフトウェアは、汎用又は特定用途プログラマブルコンピュータにより読取り可能なCD-ROM等の記憶媒体上で提供されても、又はネットワークの通信媒体上でそれが実行されるコンピュータへと送達(伝搬信号で符号化される)されてもよい。機能はすべて、特定用途コンピュータ上で実行されても、又は特定用途ハードウェア、例えばコプロセッサを使って実行されてもよい。ソフトウェアは分散方式で実装されてよく、この場合、ソフトウェアにより指定された計算の異なる部分は異なるコンピュータにより実行される。このようなコンピュータプログラムの各々は好ましくは、汎用又は特定用途プログラム可能コンピュータにより読取り可能な記憶媒体又はデバイス(例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光媒体)上に記憶されるか、又はそこにダウンロードされ、記憶媒体又は装置がコンピュータシステムにより読み取られて本明細書に記載の手順を実行するときに、コンピュータを構成し、動作させる。本発明のシステムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体として実装されることが考えられてもよく、そのように構成された記憶媒体は、コンピュータシステムに、本明細書に記載の機能を実行するために特別な所定の方法で動作させる。
多数の実施形態について説明した。しかしながら、本明細書に記載の技術の主旨と範囲から逸脱することなく、様々な変更を加えてよいと理解されたい。例えば、上述のステップの幾つかは順序非依存であり得、それゆえ、説明されたものとは異なる順序で実行できる。さらに、データフローグラフに関して説明した上述の技術はまた、プログラムに関しても実装及び実行できる。
上述の説明は、本明細書に記載の技術を例示するものであり、付属の特許請求の範囲により定義されるその範囲を限定しないと理解されたい。例えば、上述の多数の機能ステップは、全体的な処理に実質的に影響を与えることなく、異なる順序で実行してもよい。その他の実施形態も以下の特許請求の範囲に含まれる。

Claims (23)

  1. 構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換することにおいてコンピュータシステムが実行する方法であって、
    前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスするステップと、
    複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換するステップであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
    前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
    各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
    1つまたは複数のフィールドを、
    前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
    前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
    によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
    を含む、ステップと、
    永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定するステップと
    を含む、方法。
  2. 前記コンピュータプログラムの1つまたは複数の部分の内容が、前記仕様書とは異なり、かつユーザの入力を必要とせずに自動的に生成される、請求項1の方法。
  3. 前記コンピュータプログラムは永続的かつ編集可能である、請求項1の方法。
  4. 前記コンピュータプログラムがデータフローグラフであり、前記モジュールの各々が、前記データフローグラフのノードにより表されるデータフローグラフコンポーネントであり、前記データフローグラフコンポーネントが、ノード間のリンクにより表されるデータフローにより結合される、請求項1の方法。
  5. データ記憶システムの中で、前記データフローグラフコンポーネントに前記仕様書の一部を表すデータをマッピングするデータ構造にアクセスするステップと、
    前記データ構造の中で、前記仕様書の特定部分を表すデータの項目を特定するステップと、
    前記データ構造の中で、どのデータフローグラフコンポーネントが前記仕様書の前記特定部分にマッピングされるかを特定するステップと、
    前記仕様書により指定される動作の実行順序にしたがって前記データフローグラフに前記特定されたデータフローグラフコンポーネントを追加するステップと
    をさらに含む、請求項4の方法。
  6. 前記データフローグラフコンポーネント間の依存性を特定するステップと、これらの特定された依存性に少なくとも部分的に基づいて、前記データフローグラフコンポーネントの出力データフォーマットを指定するステップとをさらに含む、請求項5の方法。
  7. 特定の第1のモジュールについて、
    1つまたは複数の第2のモジュールのうちの1つのみが前記特定の第1のモジュールにとってアクセス可能な1つまたは複数のフィールドの特定の1つにアクセスすることを特定するステップと、
    前記1つまたは複数の第2のモジュールの前記1つのみが、前記特定の第1のモジュール及び前記1つまたは複数の第2のモジュールの各々とは異なる、前記複数のモジュールの第3のモジュールからの前記1つまたは複数のフィールドの前記特定の1つにアクセスすることを特定するステップと、
    前記1つまたは複数の第2のモジュールの前記1つのみによりアクセスされる前記1つまたは複数のフィールドの前記特定の1つのための1つまたは複数の値を出力しないように前記出力データフォーマットを設定するステップと
    をさらに含む、請求項1の方法。
  8. ユーザインタフェースの表示のためにデータを提供するステップと、
    前記ユーザインタフェースを介して、複数のモジュールの中からの、前記コンピュータプログラムに含めるための1つまたは複数のモジュールの選択を表すデータを受信するステップと、
    前記ユーザインタフェースを介してかつ選択された各モジュールについて、その選択された1つまたは複数のモジュールによって実装される動作のパラメータの値を受信するステップと
    をさらに含む、請求項1の方法。
  9. 前記ユーザインタフェースを介して受信した前記値が、前記動作に関連付けられる所定の基準に適合するかどうかを判定するステップと、
    前記受信した値が前記所定の基準に適合するかどうかを示す通知を前記ユーザインタフェースを介して出力するステップであって、前記受信した値が前記所定の基準に適合しないと判定された場合、前記通知が、前記受信した値を前記所定の基準に適合するためにどのように変更しなければならないかの案内情報を含む、ステップと
    をさらに含む、請求項8の方法。
  10. 前記パラメータの前記値で選択されたモジュールを構成するステップと、
    その後他のコンピュータプログラムに含められ、それによって実装される前記構成済みモジュールを記憶するステップと
    をさらに含む、請求項8の方法。
  11. 前記コンピュータプログラムを実行する前に、前記複数のモジュールの各特定のモジュールについて、第1、第2、及び第3のパスを実行して、前記特定のモジュールについて、前記特定のモジュールの下流のモジュールによりどのフィールドが必要とされるかを指定する前記設定された出力データフォーマットを決定しかつ保存し、前記特定のモジュールについて、前記特定のモジュールにとってどのフィールドがアクセス可能かを指定する入力データフォーマットを決定しかつ保存するステップをさらに含み、前記実行するステップが、
    前記第1のパス中に、前記特定のモジュールが、前記特定のモジュールの上流のモジュールに対し、それ自体により、かつ前記特定のモジュールの下流のいずれかのモジュールにより必要とされる1つまたは複数のフィールドを表すデータを含む1つまたは複数のメッセージをブロードキャストすることであって、前記ブロードキャストを行う前記特定のモジュールがブロードキャストモジュールであり、前記ブロードキャストを受信する前記上流のモジュールが受信モジュールである、ことと
    前記第2のパス中に、前記受信モジュールが、前記ブロードキャストモジュールに対し、どの受信モジュールが前記必要なフィールドの値を提供できるかを指定する1つまたは複数のメッセージを送信することと、
    前記第3のパス中に、前記ブロードキャストモジュールが、前記受信モジュールから受信した前記メッセージを分析し、応答として、前記ブロードキャストモジュールは前記受信モジュールに対し、どの受信モジュールが前記ブロードキャストモジュールへのどのフィールドの送信を担当するかを指定する1つまたは複数のメッセージを返信することと、
    をさらに含む、請求項1の方法。
  12. データストリームの中で、1つまたは複数のデータレコードを含む前記構造化データ項目を受信するステップと、
    前記1つまたは複数のデータレコードの少なくとも1つについて、
    前記コンピュータプログラムを実行して、前記1つまたは複数のデータレコードの前記少なくとも1つを処理するステップと、
    前記1つまたは複数の第1のモジュールの少なくとも1つの保存された出力データフォーマットに基づいて、前記1つまたは複数のレコードの前記少なくとも1つを前記1つまたは複数の第2のモジュールの1つにサブミットする前に、前記レコードの前記少なくとも1つから、少なくとも部分的に前記第1のモジュールの前記出力に基づいて、前記1つまたは複数の第2のモジュールの少なくとも1つへの入力として指定されない1つまたは複数のフィールドを除去するステップと、
    をさらに含む、請求項1の方法。
  13. 前記仕様書の中で、1つまたは複数の新規モジュールを定義するステップと、
    他の仕様書に含めるために利用できるエンティティを指定するグローバルパレットに前記1つまたは複数の新規モジュールの少なくとも1つを保存するステップと
    をさらに含む、請求項1の方法。
  14. 前記仕様書の中で、1つまたは複数の新規モジュールを定義するステップと、
    前記仕様書に含めるためにのみ利用でき、他の仕様書には含められないエンティティを指定するローカルパレットに前記1つまたは複数の新規モジュールの少なくとも1つを保存するステップと
    をさらに含む、請求項1の方法。
  15. 仕様書の定義のために、グローバルパレットに含められた定義済みモジュールにアクセスするステップと、
    前記定義済みモジュールの1つまたは複数の属性を変更するステップと、
    動作を実行するステップであって、前記動作が、
    前記仕様書に含めるためにのみ利用でき、かつ他の仕様書には含められないエンティティを指定するローカルパレットに前記変更された定義済みモジュールを記憶すること、または、
    前記変更された定義済みモジュールが他の仕様書にとってもアクセス可能となるように、前記グローバルパレットに前記変更された定義済みモジュールを保存すること
    を含む、ステップと
    をさらに含む、請求項1の方法。
  16. 前記仕様書の中で、1つまたは複数の新規の第1のモジュールを定義するステップと、
    前記仕様書の中で、1つまたは複数の新規の第2のモジュールを定義するステップと、
    前記1つまたは複数の新規の第2のモジュールの少なくとも1つのためのデータソースとなるように前記1つまたは複数の新規の第1のモジュールの少なくとも1つを構成するステップと
    をさらに含む、請求項1の方法。
  17. モジュールが、1つまたは複数の他のモジュールを含む、請求項1の方法。
  18. パラメータの値で選択されたモジュールを構成するステップと、
    他のプログラムに後で含めるために前記構成されたモジュールを記憶するステップと
    をさらに含む、請求項1の方法。
  19. 前記1つまたは複数の第2のモジュールの1つのみが、前記第1のモジュールにとってアクセス可能な前記1つまたは複数のフィールドの特定の1つにアクセスすると判定するステップと、
    前記1つまたは複数の第2のモジュールの前記1つのみが、前記第1のモジュールとは異なる第3のモジュールからの前記1つまたは複数のフィールドの前記特定の1つにアクセスすると判定するステップと、
    前記1つまたは複数の第2のモジュールの前記1つのみによりアクセスされる前記1つまたは複数のフィールドの前記特定の1つのための1つまたは複数の値を出力しないように前記出力データフォーマットを設定するステップと
    をさらに含む、請求項1の方法。
  20. 構造化データ項目はデータレコードを含む、請求項1の方法。
  21. 構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換することにおいてコンピュータシステムが実行する方法であって、
    前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために複数のモジュールに関連付けられるようにコンピュータプログラムに複数の動作を指定する仕様書を変換するステップであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
    前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
    前記第1のモジュールの出力に各々が少なくとも部分的に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
    1つまたは複数の値が前記1つまたは複数の第2のモジュールによって処理される、前記フィールドの1つまたは複数を、
    前記1つまたは複数の第2のモジュールの各々について、前記第2のモジュールが1つまたは複数のフィールドの1つまたは複数の値を処理するように構成されているときに、前記フィールドの、そのための1つまたは複数の値がその第2のモジュールによって処理される1つまたは複数を特定することによって、
    特定することと、
    前記1つまたは複数の値が前記1つまたは複数の第2のモジュールにより処理される前記1つまたは複数のフィールドの中から、1つまたは複数の値が前記第1のモジュールにとってアクセス可能な、前記フィールドの1つまたは複数を特定することと、
    前記1つまたは複数の値が前記第1のモジュールにとってアクセス可能な前記1つまたは複数のフィールドの各々について、
    前記フィールドの値が、前記第1のモジュールの前記出力に少なくとも部分的に基づいて前記1つまたは複数の第2のモジュールの少なくとも1つへの入力として指定されるかどうかを判定することと、
    1つまたは複数のフィールドを、
    前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
    前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
    によって、前記第1のモジュールの前記出力データフォーマット内に含むように特定することと
    を含む、ステップと、
    永続的メモリの中に前記コンピュータプログラムを保存するステップであって、前記コンピュータプログラムは、前記1つまたは複数の第1のモジュールの各々についての出力データフォーマットを指定する、ステップと
    を含む、方法。
  22. 構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換するためのコンピュータシステムであって、
    1つまたは複数の処理装置と、
    前記1つまたは複数の処理装置によって実行可能な命令を記憶した1つまたは複数の機械可読ハードウェア記憶装置であって、前記命令が、
    前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスすることと、
    複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換することであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
    前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
    各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
    1つまたは複数のフィールドを、
    前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
    前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
    によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
    を含む、ことと、
    永続的メモリの中に前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定することと
    を含む動作を行わせるためのものである、1つまたは複数の機械可読ハードウェア記憶装置と
    を備える、コンピュータシステム。
  23. 構造化データ項目の1つまたは複数のフィールドの1つまたは複数の値を処理するコンピュータプログラムに仕様書を変換するための1つまたは複数の機械可読ハードウェア記憶装置であって、前記1つまたは複数の機械可読ハードウェア記憶装置が1つまたは複数の処理装置によって実行可能な命令を記憶し、前記命令が、
    前記構造化データ項目の前記1つまたは複数のフィールドの前記1つまたは複数の値を処理するために前記コンピュータプログラムにより関連付けられることになる複数の動作を指定する仕様書にアクセスすることと、
    複数のモジュールを用いて、前記コンピュータプログラムに前記仕様書を変換することであって、前記複数のモジュールが前記動作に基づき、モジュールが、構造化データ項目のフィールドにアクセスするために構成可能であり、
    前記複数のモジュールの1つまたは複数の第1のモジュールの各々について、
    各々が少なくとも部分的に前記第1のモジュールの出力に基づく入力を受信する、前記複数のモジュールの1つまたは複数の第2のモジュールを特定することと、
    1つまたは複数のフィールドを、
    前記第1のモジュールによってアクセスされることになるフィールドの中から、特定された前記1つまたは複数の第2のモジュールによって依存される1つまたは複数のフィールドを特定することであって、前記1つまたは複数の第2のモジュールによって依存されると特定された前記1つまたは複数のフィールドが、前記第1のモジュールによってアクセスされることになる前記フィールドよりも少ない、ことと、
    前記第1のモジュールの出力が、(i)前記第1のモジュールによってアクセスされることになる前記フィールドおよび(ii)前記1つまたは複数の第2のモジュールによって依存される前記1つまたは複数のフィールドに対応する、1つまたは複数のフィールドの1つまたは複数の値だけを特定するように前記第1のモジュールの出力データフォーマットを指定することと
    によって、前記第1のモジュールの前記出力データフォーマット内に含むように設定することと
    を含む、ことと、
    永続的メモリの中に前記コンピュータプログラムを保存することであって、前記保存されたコンピュータプログラムが、前記1つまたは複数の第1のモジュールの各々のための前記設定された出力データフォーマットを指定することと
    含む動作を行わせるためのものである、1つまたは複数の機械可読ハードウェア記憶装置。
JP2023177212A 2017-10-27 2023-10-13 永続的コンピュータプログラムへの仕様書の変換 Active JP7842722B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/795,917 US11423083B2 (en) 2017-10-27 2017-10-27 Transforming a specification into a persistent computer program
US15/795,917 2017-10-27
JP2020543240A JP7369131B2 (ja) 2017-10-27 2018-10-24 永続的コンピュータプログラムへの仕様書の変換
PCT/US2018/057361 WO2019084172A1 (en) 2017-10-27 2018-10-24 TRANSFORMING A SPECIFICATION TO A PERSISTENT COMPUTER PROGRAM

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2020543240A Division JP7369131B2 (ja) 2017-10-27 2018-10-24 永続的コンピュータプログラムへの仕様書の変換

Publications (2)

Publication Number Publication Date
JP2024009960A JP2024009960A (ja) 2024-01-23
JP7842722B2 true JP7842722B2 (ja) 2026-04-08

Family

ID=64267955

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020543240A Active JP7369131B2 (ja) 2017-10-27 2018-10-24 永続的コンピュータプログラムへの仕様書の変換
JP2023177212A Active JP7842722B2 (ja) 2017-10-27 2023-10-13 永続的コンピュータプログラムへの仕様書の変換

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2020543240A Active JP7369131B2 (ja) 2017-10-27 2018-10-24 永続的コンピュータプログラムへの仕様書の変換

Country Status (9)

Country Link
US (2) US11423083B2 (ja)
EP (1) EP3701392A1 (ja)
JP (2) JP7369131B2 (ja)
CN (1) CN111801662B (ja)
AU (1) AU2018354240B2 (ja)
CA (1) CA3080113A1 (ja)
DE (1) DE112018005049T5 (ja)
SG (1) SG11202003079SA (ja)
WO (1) WO2019084172A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210141351A1 (en) * 2017-03-31 2021-05-13 Intel Corporation Declarative intentional programming in machine-to-machine systems
JP7629464B2 (ja) 2020-01-28 2025-02-13 アビニシオ テクノロジー エルエルシー 計算グラフを生成するためのエディタ
US11210285B2 (en) 2020-03-06 2021-12-28 Ab Initio Technology Llc Generation of optimized logic from a schema
JP7572819B2 (ja) * 2020-09-14 2024-10-24 Azapa株式会社 モデル作成システム
JP7832951B2 (ja) 2021-01-31 2026-03-18 アビニシオ テクノロジー エルエルシー データ処理システム用のデータセットマルチプレクサ
MX2023008982A (es) 2021-01-31 2023-12-04 Ab Initio Technology Llc Sistema de procesamiento de datos con manipulacion de grupos de conjuntos de datos logicos.
US12436998B2 (en) * 2023-02-28 2025-10-07 Infosys Limited In-situ ontology mapping in overlay systems
JP2026511562A (ja) 2023-03-23 2026-04-14 アビニシオ テクノロジー エルエルシー 拡張ビューのデータセットをプレビューするための論理アクセス
WO2024211674A1 (en) 2023-04-07 2024-10-10 Ab Initio Technology Llc On-demand integration of records with data catalog identifiers
US12339826B2 (en) 2023-04-07 2025-06-24 Ab Initio Technology Llc On-demand integration of records with data catalog identifiers
US12346350B2 (en) 2023-04-12 2025-07-01 Ab Initio Technology Llc Meta-data driven ingestion and data processing
KR20260021724A (ko) * 2023-06-12 2026-02-13 아브 이니티오 테크놀로지 엘엘시 재사용 가능 데이터 처리 프로그램 생성
WO2025137522A1 (en) 2023-12-21 2025-06-26 Ab Initio Technology Llc A development environment for automatically generating code using a multi-tiered metadata model

Family Cites Families (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914568A (en) 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US4901221A (en) 1986-04-14 1990-02-13 National Instruments, Inc. Graphical system for modelling a process and associated method
US5291587A (en) 1986-04-14 1994-03-01 National Instruments, Inc. Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs
US5481741A (en) 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US5301301A (en) 1991-01-30 1994-04-05 National Instruments Corporation Polymorphic dataflow block diagram system and method for programming a computer
US5438659A (en) 1992-10-08 1995-08-01 Hewlett-Packard Company Object-action user interface management system
JPH06230953A (ja) 1993-02-03 1994-08-19 Mitsubishi Electric Corp グラフィカル・ユーザインタフェース設計装置
JPH07152544A (ja) 1993-09-17 1995-06-16 Toshiba Corp ダイヤグラム作成支援システム及びダイアグラム作成支援方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5844554A (en) 1996-09-17 1998-12-01 Bt Squared Technologies, Inc. Methods and systems for user interfaces and constraint handling configurations software
US6064812A (en) 1996-09-23 2000-05-16 National Instruments Corporation System and method for developing automation clients using a graphical data flow program
US6437805B1 (en) 1996-09-23 2002-08-20 National Instruments Corporation System and method for accessing object capabilities in a graphical program
US6102965A (en) 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
JPH10222355A (ja) 1997-01-31 1998-08-21 Toshiba Corp Guiアプリケーション開発装置
US6219628B1 (en) 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6173438B1 (en) 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6341279B1 (en) 1998-10-12 2002-01-22 Starwave Corporation Method and apparatus for event modeling
US7000190B2 (en) 1999-08-19 2006-02-14 National Instruments Corporation System and method for programmatically modifying a graphical program in response to program information
US7120876B2 (en) 1999-08-19 2006-10-10 National Instruments Corporation System and method for programmatically generating a graphical program in response to user input
US7210117B2 (en) 1999-08-19 2007-04-24 National Instruments Corporation System and method for programmatically generating a graphical program in response to program information
US20090241089A1 (en) 1999-08-19 2009-09-24 Subramanian Ramamoorthy Converting a First Graphical Program into a Second Graphical Program Using an Intermediate Abstract Representation
US7937665B1 (en) 2000-06-13 2011-05-03 National Instruments Corporation System and method for automatically generating a graphical program to implement a prototype
US6694321B1 (en) 1999-09-23 2004-02-17 Affymetrix, Inc. System, method, and product for development and maintenance of database-related software applications
US6834382B2 (en) * 2000-06-29 2004-12-21 Lockheed Martin Corporation Message parser and formatter
AU2001243597A1 (en) 2000-03-03 2001-09-17 Radiant Logic, Inc. System and method for providing access to databases via directories and other hierarchical structures and interfaces
JP2001344105A (ja) 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
US6763515B1 (en) 2000-06-05 2004-07-13 National Instruments Corporation System and method for automatically generating a graphical program to perform an image processing algorithm
ATE370448T1 (de) 2000-06-09 2007-09-15 Univ Columbia Fifo schaltungen mit niedriger verzögerung für gemischte synchrone und asynchrone systeme
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US20070192863A1 (en) 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US8042098B2 (en) 2000-12-06 2011-10-18 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7188091B2 (en) 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US20040210445A1 (en) 2001-04-05 2004-10-21 Luca Veronese Method and system for specifying and implementing business applications
US6801229B1 (en) 2001-04-06 2004-10-05 Plumbdesign System for creation of visual representation of data
US7493397B1 (en) 2001-06-06 2009-02-17 Microsoft Corporation Providing remote processing services over a distributed communications network
US20040093342A1 (en) 2001-06-27 2004-05-13 Ronald Arbo Universal data mapping system
US6671869B2 (en) * 2001-12-12 2003-12-30 Scott A. Davidson Method and apparatus for graphically programming a programmable circuit
US20030172193A1 (en) 2002-03-07 2003-09-11 Olsen Jesse Dale User interface generator and method of automatically generating a user interface
US20030174165A1 (en) 2002-03-18 2003-09-18 Barney Rock D. System and method for rendering a directed graph
US7353464B1 (en) 2002-04-01 2008-04-01 Microsoft Corporation Hierarchical data navigation tool populated by a web service
US20080091491A1 (en) 2002-04-18 2008-04-17 Bdna Corporation Method and/or system for flexible data handling
US7574652B2 (en) 2002-06-20 2009-08-11 Canon Kabushiki Kaisha Methods for interactively defining transforms and for generating queries by manipulating existing query data
US20040030993A1 (en) 2002-08-08 2004-02-12 Hong Huey Anna Onon Methods and apparatus for representing dynamic data in a software development environment
US7565642B2 (en) 2002-08-09 2009-07-21 Corticon Technologies, Inc. Rule engine
EP1535164B1 (en) 2002-08-26 2012-01-04 International Business Machines Corporation Determining threat level associated with network activity
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7840545B2 (en) 2002-10-25 2010-11-23 International Business Machines Corporation Method and system for providing access to a database
JP2004172695A (ja) 2002-11-18 2004-06-17 Alpine Electronics Inc マルチメディア再生方法およびマルチメディア再生システム、操作画面カスタマイズ用プログラム
US7644361B2 (en) 2002-12-23 2010-01-05 Canon Kabushiki Kaisha Method of using recommendations to visually create new views of data across heterogeneous sources
AU2002953555A0 (en) 2002-12-23 2003-01-16 Canon Kabushiki Kaisha Method for presenting hierarchical data
JP4127194B2 (ja) 2003-01-15 2008-07-30 セイコーエプソン株式会社 レイアウトシステム及びレイアウトプログラム、並びにレイアウト方法
GB0306971D0 (en) 2003-03-26 2003-04-30 British Telecomm Client server model
JP2004349355A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置、その冗長回路及び携帯電子機器
US20040239674A1 (en) 2003-06-02 2004-12-02 Microsoft Corporation Modeling graphs as XML information sets and describing graphs with XML schema
US7624375B2 (en) 2003-06-12 2009-11-24 National Instruments Corporation Automatically configuring a graphical user interface element to bind to a graphical program
US7533347B2 (en) 2003-08-13 2009-05-12 National Instruments Corporation Creating a graphical user interface for selected parameters of a graphical program
KR100899850B1 (ko) 2003-09-15 2009-05-27 아브 이니티오 소프트웨어 엘엘시 데이터 프로파일링
US7756907B2 (en) 2003-09-16 2010-07-13 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for visualizing data
US7409400B2 (en) * 2003-10-22 2008-08-05 Intel Corporation Applications of an appliance in a data center
US20080052687A1 (en) 2003-11-03 2008-02-28 Agustin Gonzales-Tuchmann Development environment for data transformation applications
US7448047B2 (en) 2004-04-29 2008-11-04 Sybase, Inc. Database system with methodology for providing stored procedures as web services
US7913231B2 (en) 2004-05-11 2011-03-22 Sap Ag Testing pattern-based applications
US8296665B2 (en) 2004-05-11 2012-10-23 Sap Ag Developing and executing applications with configurable patterns
US7530052B2 (en) 2004-05-14 2009-05-05 National Instruments Corporation Creating and executing a graphical program with first model of computation that includes a structure supporting second model of computation
US7281018B1 (en) 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US8533229B2 (en) 2004-06-16 2013-09-10 Salesforce.Com, Inc. Soap-based web services in a multi-tenant database system
JP4275013B2 (ja) 2004-06-21 2009-06-10 三洋電機株式会社 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US20050289356A1 (en) 2004-06-29 2005-12-29 Idan Shoham Process for automated and self-service reconciliation of different loging IDs between networked computer systems
US20060074735A1 (en) 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US8799234B2 (en) * 2010-07-12 2014-08-05 Microsoft Corporation Semantic entity manipulation using input-output examples
WO2006043012A1 (en) * 2004-10-22 2006-04-27 New Technology/Enterprise Limited Data processing system and method
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7523440B2 (en) 2004-11-16 2009-04-21 The Mathworks, Inc. Dynamic generation of formatted user interfaces in software environments
US20070041041A1 (en) * 2004-12-08 2007-02-22 Werner Engbrocks Method and computer program product for conversion of an input document data stream with one or more documents into a structured data file, and computer program product as well as method for generation of a rule set for such a method
US7349384B2 (en) 2004-12-10 2008-03-25 Microsoft Corporation Reliable one-way messaging over request-response transport protocols
US20060190488A1 (en) 2005-02-22 2006-08-24 Transparency Software, Inc. System and method for determining information related to user interactions with an application
US20060190480A1 (en) 2005-02-22 2006-08-24 Transparency Software, Inc. Generation of names related to organization actions
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
JP2007011809A (ja) 2005-06-30 2007-01-18 Kureo:Kk 業務フローを搭載した業務管理システム
US8078954B2 (en) 2005-09-27 2011-12-13 Oracle International Corporation System and method for page flow editor
US7739292B2 (en) 2005-09-28 2010-06-15 Altova Gmbh System and method for modeling and managing enterprise architecture data and content models and their relationships
US8095565B2 (en) 2005-12-05 2012-01-10 Microsoft Corporation Metadata driven user interface
US7650316B2 (en) * 2006-03-10 2010-01-19 National Instruments Corporation Automatic generation of help information for specified systems
JP2007272809A (ja) 2006-03-31 2007-10-18 Oki Data Corp エディタプログラム、該エディタプログラムを記録したコンピュータ読取可能な記録媒体、及び該エディタプログラムを用いた機器操作支援システム
US20070233655A1 (en) 2006-04-03 2007-10-04 National Instruments Corporation Graphical program representation of queries
JP2007280189A (ja) 2006-04-10 2007-10-25 Toshiba Corp プログラム生成装置、プログラム生成方法、及びプログラム生成プログラム
WO2007134265A2 (en) 2006-05-12 2007-11-22 Captaris, Inc. Workflow data binding
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US8396848B2 (en) 2006-06-26 2013-03-12 Microsoft Corporation Customizable parameter user interface
US7701869B2 (en) 2006-07-21 2010-04-20 National Instruments Corporation Generating a data flow diagram
CN101501678B (zh) 2006-08-10 2013-10-16 起元科技有限公司 在基于图的计算中分配服务
CN100527131C (zh) 2006-12-30 2009-08-12 中国建设银行股份有限公司 一种ims数据库互动式访问方法和工具
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US7644254B2 (en) 2007-04-18 2010-01-05 International Business Machines Corporation Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
US8271943B2 (en) 2007-04-24 2012-09-18 National Instruments Corporation Automatically generating a graphical program with a plurality of models of computation
US9594731B2 (en) 2007-06-29 2017-03-14 Microsoft Technology Licensing, Llc WYSIWYG, browser-based XML editor
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
US8156481B1 (en) 2007-10-05 2012-04-10 The Mathworks, Inc. Profiler-based optimization of automatically generated code
JP5643654B2 (ja) 2008-02-26 2014-12-17 アビニシオ テクノロジー エルエルシー データ関連性のグラフ表現
JP2009282777A (ja) 2008-05-22 2009-12-03 Hitachi Information Systems Ltd アプリケーションプログラムの提供システム及びアプリケーションプログラム
US20090319494A1 (en) 2008-06-20 2009-12-24 Microsoft Corporation Field mapping for data stream output
WO2010002919A1 (en) 2008-06-30 2010-01-07 Ab Initio Software Llc Data logging in graph-based computations
US20100235495A1 (en) 2008-09-10 2010-09-16 Salesforce.Com, Inc. Methods and systems for reducing a load on a multi-tenant database
CA2750479C (en) 2009-02-13 2019-03-12 Ab Initio Technology Llc Communicating with data storage systems
US8713038B2 (en) * 2009-04-02 2014-04-29 Pivotal Software, Inc. Integrating map-reduce into a distributed relational database
US8560941B2 (en) 2009-04-08 2013-10-15 Microsoft Corporation Schema based user interface mechanisms
KR20120115233A (ko) 2009-11-13 2012-10-17 아브 이니티오 테크놀로지 엘엘시 레코드 포맷 정보의 관리
JP6084037B2 (ja) 2009-12-14 2017-02-22 アビニシオ テクノロジー エルエルシー ユーザ・インターフェース要素の指定
JP5881708B2 (ja) 2010-09-10 2016-03-09 アビニシオ テクノロジー エルエルシー 属性に基づくデータ選択管理
US8819286B2 (en) * 2010-10-19 2014-08-26 Hewlett-Packard Development Company, L.P. Methods, systems, and apparatus for processing messaging data sets using structured data sets
US9600456B2 (en) * 2011-08-30 2017-03-21 Hewlett-Packard Development Company, L.P. Automatically performing a web service operation
US20140143047A1 (en) * 2011-08-31 2014-05-22 Jason A. Carter Methods and Apparatus for Automated Campaign Generation
GB2509853A (en) 2011-10-12 2014-07-16 Ibm Method for generating workflow from business specification; program; and system
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US8868537B1 (en) * 2013-11-11 2014-10-21 Palantir Technologies, Inc. Simple web search
SG11201607312YA (en) 2014-04-17 2016-10-28 Ab Initio Technology Llc Integrated monitoring and control of processing environment
US10180861B2 (en) 2014-11-11 2019-01-15 Fair Isaac Corporation Stream schema resolution and stream tuple processing in a distributed stream-processing system
US10242122B2 (en) * 2015-05-05 2019-03-26 DGD Systems, Inc. Automated workflow management system for application and data retirement

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
[Talend Open Studio入門02] CSVデータを変換する。Talendの使い方からはじめます。, [オンライン], [テキスト],インターネットアーカイブ,2017年10月22日,[取得日 2024.12.23], 取得先,<https://web.archive.org/web/20171022120953/https://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8002%E3%80%91csv%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%80%82%E3%81%BE%E3%81%9A%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4>
[Talend Open Studio入門02] CSVデータを変換する。Talendの使い方からはじめます。,インターネットアーカイブ,2017年10月22日,[検索日 2024.12.23] インターネット,<URL:https://web.archive.org/web/20171022120953/https://tasokori.net/%E3%80%90talend-open-studio-%E5%85%A5%E9%96%8002%E3%80%91csv%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%80%82%E3%81%BE%E3%81%9A%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4>
[Talend] 作ったジョブをビルドして実行ファイル(.bat)を作る, [オンライン], [テキスト],インターネットアーカイブ,2017年06月06日,[取得日 2024.12.23], 取得先,<https://web.archive.org/web/20170606110532/https://tasokori.net/%E3%80%90talend%E3%80%91%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B8%E3%83%A7%E3%83%96%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB-bat%2F>
[Talend] 作ったジョブをビルドして実行ファイル(.bat)を作る,インターネットアーカイブ,2017年06月06日,[検索日 2024.12.23], インターネット,<URL:https://web.archive.org/web/20170606110532/https://tasokori.net/%E3%80%90talend%E3%80%91%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B8%E3%83%A7%E3%83%96%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB-bat%2F>
Talendの無償版(TOS)と有償版(Enterprise)の違い|Talend Open Studioに よるビッグデータ分析(第9回), [オンライン], [テキスト],インターネットアーカイブ,2017年05月23日,[取得日 2024.12.23], 取得先<http://web.archive.org/web/20170523023804/http://www.gixo.jp/blog/6667/>
Talendの無償版(TOS)と有償版(Enterprise)の違い|Talend Open Studioに よるビッグデータ分析(第9回),インターネットアーカイブ,2017年05月23日,[検索日 2024.12.23]インターネット<URL:http://web.archive.org/web/20170523023804/http://www.gixo.jp/blog/6667/>

Also Published As

Publication number Publication date
JP2021501429A (ja) 2021-01-14
EP3701392A1 (en) 2020-09-02
JP7369131B2 (ja) 2023-10-25
CN111801662B (zh) 2024-04-23
CA3080113A1 (en) 2019-05-02
US20220342935A1 (en) 2022-10-27
US20190130048A1 (en) 2019-05-02
AU2018354240B2 (en) 2023-11-30
WO2019084172A1 (en) 2019-05-02
AU2018354240A1 (en) 2020-04-23
CN111801662A (zh) 2020-10-20
JP2024009960A (ja) 2024-01-23
US12045286B2 (en) 2024-07-23
DE112018005049T5 (de) 2020-08-27
US11423083B2 (en) 2022-08-23
SG11202003079SA (en) 2020-05-28

Similar Documents

Publication Publication Date Title
JP7842722B2 (ja) 永続的コンピュータプログラムへの仕様書の変換
JP6084037B2 (ja) ユーザ・インターフェース要素の指定
CN101076783B (zh) 控制任务的执行
AU2018282168B2 (en) Dataflow graph configuration
CN115516443B (zh) 根据架构生成优化逻辑
AU2011323773B2 (en) Managing data set objects in a dataflow graph that represents a computer program
JP2020042828A (ja) 複合コントロール
US20160313874A1 (en) Visual effects system for &#34;big data&#34; analysis workflow editors, distribution platforms, execution engines, and management systems comprising same
CA2932897A1 (en) Visual effects system for &#34;big data&#34; analysis workflow editors, distribution platforms, execution engines, and management systems comprising same
JP2006190261A (ja) トポロジメタデータおよびナビゲーションパスを用いる規定ナビゲーション
CN111258567A (zh) 服务代码开发处理方法及装置
US20080140671A1 (en) Extensible application platform
US8812964B2 (en) Managing evelopment of an enterprise application
US10817811B2 (en) Methods and apparatus for exposing workflow process definitions as business objects
CA3117372A1 (en) System and method for integrating external services into process workflow environments
CN117312307A (zh) 业务数据处理方法、装置、计算机设备和存储介质
CN119720979B (zh) 一种模板管理方法、模板管理装置、电子设备及存储介质
CN119130101A (zh) 流程创建及执行方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231110

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250402

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20250407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20251104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20251117

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20260303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20260327

R150 Certificate of patent or registration of utility model

Ref document number: 7842722

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150