(57)【要約】  静的要素および動的要素の両方に対するサポートを含むデータフロー設計システムが提示される。データフロー設計システムは、静的要素の再現性および動的要素の適応性の両方を活用するデータフローを設計するための設計環境グラフィカルツールをユーザに提供する。静的要素は一般に時間とともに変化しないデータを処理するが、動的要素は変化するデータを処理する。例えば、新しいデータフィールドは、データフローの入力データソースに追加される。動的要素は、新しいデータフィールドをデータフローのフラグメントのマッピングに自動的にリンクする。フラグメントのマッピングは、式およびフィルタ規則を含む構成パラメータに基づいてデータを処理する。ユーザは、設計環境のユーザインタフェースを使用して、マッピングフラグメント、静的リンク、および動的リンクを、データフローに表示および追加する。【選択図】図１
2019518275.tif 000002
【特許請求の範囲】
【請求項１】
データ統合開発環境において、データマッピングをモデル化するデータフローの定義を受信する工程であって、
１）データフローに包含するための複数のマッピングフラグメントを受信するステップであって、各マッピングフラグメントは複数のポートを備え、前記複数のポートは少なくとも１つの動的ポートまたは１つの静的ポートを含み、動的ポートは前記複数のポートの任意の数のポートに対応し、静的ポートは前記複数のポートの１つのポートに対応し、各ポートは少なくとも１つのデータフィールドに対応する、ステップと、
２）前記複数のマッピングフラグメントの上流マッピングフラグメントの動的ポートと前記複数のマッピングフラグメントの下流マッピングフラグメントの動的ポートとの間に、少なくとも１つの動的リンクを生成する入力を受信するステップであって、前記動的リンクは動的ポートの全てのデータフィールドを動的ポートに提供する、ステップと、
３）前記複数のマッピングフラグメントの上流マッピングフラグメントの静的ポートと前記複数のマッピングフラグメントの下流マッピングフラグメントの静的ポートとの間に、少なくとも１つの静的リンクを生成する入力を受信するステップであって、前記静的リンクは静的ポートの全てのデータフィールドを静的ポートに提供する、ステップと、
を含む工程と、
前記複数のマッピングフラグメントの少なくとも１つのマッピングフラグメントに適用するために、１つ以上の構成パラメータを受信する工程であって、各構成パラメータは少なくとも１つの構成パラメータ値を含む、工程と、
１つ以上の構成パラメータの各構成パラメータ値を、対応するランタイム値で置き換えることにより、１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程と、
前記データフローの定義と前記ランタイム値とに少なくとも部分的に基づいて、実行可能ランタイム定義をコンパイルする工程と、を含む方法。
【請求項２】
実行可能ランタイム定義を実行する工程と、
前記実行の結果とデータベースからの入力データとに少なくとも部分的に基づいてレポートを生成する工程とをさらに含む、請求項１に記載の方法。
【請求項３】
前記データフローの定義を受信する工程が、さらに、
前記複数のマッピングフラグメントの参照上流マッピングフラグメントと、前記複数のマッピングフラグメントの参照下流マッピングフラグメントとの間のランタイムリンクを受信するステップを含み、
前記実行可能ランタイム定義を実行する工程が、前記参照上流マッピングフラグメントの１つ以上のポートのすべてのデータフィールドを、前記参照下流マッピングフラグメントの１つ以上のポートに提供することによって、前記ランタイムリンクを解決することを含む、請求項２に記載の方法。
【請求項４】
前記複数のマッピングフラグメントの各マッピングフラグメントは、入力データソース、出力データソース、または変換に対応する、請求項２に記載の方法。
【請求項５】
前記複数のマッピングフラグメントのうち、入力データソースまたは出力データソースに対応するマッピングフラグメントを修正することをさらに含み、
前記実行可能ランタイム定義の実行は、当該実行可能ランタイム定義の再コンパイルを必要としない、請求項４に記載の方法。
【請求項６】
前記１つ以上の構成パラメータの少なくとも１つの構成パラメータは、排他的または包含的フィルタを記述する規則であり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記排他フィルタによって示されるデータフィールドのタイプに基づいて、前記少なくとも１つの構成パラメータの構成パラメータ値を、対応するランタイム値に置き換えることをさらに含む、請求項１に記載の方法。
【請求項７】
前記１つ以上の構成パラメータの少なくとも１つの構成パラメータは、前記複数のマッピングフラグメントのうちの１つのマッピングフラグメントの参照動的ポートを示すプロキシであり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記少なくとも１つの構成パラメータ値の構成パラメータ値を、前記参照動的ポートに基づき、対応するランタイム値に置き換えることをさらに含む、請求項１に記載の方法。
【請求項８】
前記１つ以上の構成パラメータのうちの少なくとも１つの構成パラメータは、変換に対応するマクロであり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記少なくとも１つのマッピングフラグメントの複数のポートの各ポートに前記変換を適用することによって、少なくとも１つの構成パラメータの構成パラメータ値を、対応するランタイム値に置き換えることをさらに含む、請求項１に記載の方法。
【請求項９】
前記複数のマッピングフラグメントの上流マッピングフラグメントの動的ポートと、前記複数のマッピングフラグメントの下流マッピングフラグメントの動的ポートとの間に少なくとも１つの動的リンクを生成する入力を受信するステップは、前記動的ポートの全てのデータフィールドに対応して、前記下流マッピングフラグメントの前記動的ポートについて、複数の生成ポートを生成することをさらに含む、請求項１に記載の方法。
【請求項１０】
プロセッサによって実行可能なコンピュータプログラムであって、ユーザインタフェースを生成するコンピュータプログラムを記憶する非一時的なコンピュータ可読メモリであって、
前記ユーザインタフェースは、
データフローを表示するためのデータフロー表示領域と、
前記データフローにマッピングフラグメントを追加するための複数のアイコンを含むデータフロー表示領域に隣接するデータフローアイコン選択領域とを有し、
前記ユーザインタフェースは、前記コンピュータプログラムによって、
データフローアイコン選択における複数のアイコンのうちの１つのアイコンを選択する入力を受信すると、少なくとも１つの動的ポートまたは１つの静的ポートを含む新しいマッピングフラグメントをデータフロー表示エリアに表示する工程であって、動的ポートは２つ以上のデータフィールドのグループに対応し、静的ポートは１つのデータフィールドに対応する、工程と、
前記データフロー表示領域内の上流マッピングフラグメントの２つ以上のデータフィールドのグループを、前記データフロー表示領域内の下流マッピングフラグメントにドラッグする入力を受信すると、前記上流マッピングフラグメントと前記下流マッピングフラグメントとの間の動的リンクを表す視覚的接続を表示し、前記上流マッピングフラグメントの動的ポートにおいてドラッグされた前記２つ以上のフィールドのグループを、前記下流マッピングフラグメントに新たに生成されたポートに追加する工程とを実行する、コンピュータ可読メモリ。
【請求項１１】
前記ユーザインタフェースは、前記コンピュータプログラムによって、さらに、
前記データフロー表示領域内の上流マッピングフラグメントの２つ以上のデータフィールドのグループを、前記データフロー表示領域内の下流マッピングフラグメントにドラッグする入力を受信すると、前記上流マッピングフラグメントと前記下流マッピングフラグメントとの間の静的リンクを表す視覚的接続を表示し、前記上流マッピングフラグメントの静的ポートにおいてドラッグされた前記２つ以上のフィールドのグループを、前記下流マッピングフラグメントに新たに生成されたポートに追加する工程とを実行する、請求項１０に記載のコンピュータプログラム。
【請求項１２】
前記ユーザインタフェースは、前記データフローの上流マッピングフラグメントと前記データフローの下流マッピングフラグメントとの間のランタイムリンクを示すランタイム視覚的接続をさらに含み、前記ランタイム視覚的接続は、動的リンクを示す前記視覚的接続とは視覚的に異なる、請求項１０に記載のコンピュータプログラム。
【請求項１３】
エンコードされた命令を格納した非一時的なコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、プロセッサによって実行されたとき、当該プロセッサに、
データ統合開発環境において、データマッピングをモデル化するデータフローの定義を受信する工程であって、
１）データフローに包含するための複数のマッピングフラグメントを受信するステップであって、各マッピングフラグメントは複数のポートを備え、前記複数のポートは少なくとも１つの動的ポートまたは１つの静的ポートを含み、動的ポートは前記複数のポートの任意の数のポートに対応し、静的ポートは前記複数のポートの１つのポートに対応し、各ポートは少なくとも１つのデータフィールドに対応する、ステップと、
２）前記複数のマッピングフラグメントの上流マッピングフラグメントの動的ポートと前記複数のマッピングフラグメントの下流マッピングフラグメントの動的ポートとの間に、少なくとも１つの動的リンクを生成する入力を受信するステップであって、前記動的リンクは動的ポートの全てのデータフィールドを動的ポートに提供する、ステップと、
３）前記複数のマッピングフラグメントの上流マッピングフラグメントの静的ポートと前記複数のマッピングフラグメントの下流マッピングフラグメントの静的ポートとの間に、少なくとも１つの静的リンクを生成する入力を受信するステップであって、前記静的リンクは静的ポートの全てのデータフィールドを静的ポートに提供する、ステップと、
を含む工程と、
前記複数のマッピングフラグメントの少なくとも１つのマッピングフラグメントに適用するために、１つ以上の構成パラメータを受信する工程であって、各構成パラメータは少なくとも１つの構成パラメータ値を含む、工程と、
１つ以上の構成パラメータの各構成パラメータ値を、対応するランタイム値で置き換えることにより、１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程と、
前記データフローの定義と前記ランタイム値とに少なくとも部分的に基づいて、実行可能ランタイム定義をコンパイルする工程と、
を実行させる、コンピュータプログラム。
【請求項１４】
前記プロセッサによって実行されると、前記プロセッサに、前記実行可能ランタイム定義を実行させる命令をさらに含む、請求項１３に記載のコンピュータプログラム製品。
【請求項１５】
前記データフローの定義を受信する工程が、さらに、
前記複数のマッピングフラグメントの参照上流マッピングフラグメントと、前記複数のマッピングフラグメントの参照下流マッピングフラグメントとの間のランタイムリンクを受信するステップを含み、
前記実行可能ランタイム定義を実行する工程が、前記参照上流マッピングフラグメントの１つ以上のポートのすべてのデータフィールドを、前記参照下流マッピングフラグメントの１つ以上のポートに提供することによって、前記ランタイムリンクを解決することを含む、請求項１４に記載のコンピュータプログラム製品。
【請求項１６】
前記複数のマッピングフラグメントの各マッピングフラグメントは、入力データソース、出力データソース、または変換に対応する、請求項１４に記載のコンピュータプログラム製品。。
【請求項１７】
前記複数のマッピングフラグメントのうち、入力データソースまたは出力データソースに対応するマッピングフラグメントを修正することをさらに含み、
前記実行可能ランタイム定義の実行は、当該実行可能ランタイム定義の再コンパイルを必要としない、請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前記１つ以上の構成パラメータの少なくとも１つの構成パラメータは、排他的または包含的フィルタを記述する規則であり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記排他フィルタによって示されるデータフィールドのタイプに基づいて、前記少なくとも１つの構成パラメータの構成パラメータ値を、対応するランタイム値に置き換えることをさらに含む、請求項１３に記載のコンピュータプログラム製品。
【請求項１９】
前記１つ以上の構成パラメータの少なくとも１つの構成パラメータは、前記複数のマッピングフラグメントのうちの１つのマッピングフラグメントの参照動的ポートを示すプロキシであり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記少なくとも１つの構成パラメータ値の構成パラメータ値を、前記参照動的ポートに基づき、対応するランタイム値に置き換えることをさらに含む、請求項１３に記載のコンピュータプログラム製品。
【請求項２０】
前記１つ以上の構成パラメータのうちの少なくとも１つの構成パラメータは、変換に対応するマクロであり、
前記１つ以上の構成パラメータを前記少なくとも１つのマッピングフラグメントに適用する工程は、前記少なくとも１つのマッピングフラグメントの複数のポートの各ポートに前記変換を適用することによって、少なくとも１つの構成パラメータの構成パラメータ値を、対応するランタイム値に置き換えることをさらに含む、請求項１３に記載のコンピュータプログラム製品。
【請求項２１】
前記複数のマッピングフラグメントの上流マッピングフラグメントの動的ポートと、前記複数のマッピングフラグメントの下流マッピングフラグメントの動的ポートとの間に少なくとも１つの動的リンクを生成する入力を受信するステップは、前記動的ポートの全てのデータフィールドに対応して、前記下流マッピングフラグメントの前記動的ポートについて、複数の生成ポートを生成することをさらに含む、請求項１３に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願データ
本出願は２０１６年５月１１日に出願された米国非仮出願第１５／１５２，５０２号の優先権を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【０００２】
本開示は一般に、データモデリング、スキーマ、概念レイアウト、および物理的レイアウトを含む、データベースおよび／またはデータベース管理システムの実装に関し、より詳細には、静的および動的要素を有するデータベース、スキーマ、またはデータベース構造におけるデータフロー設計を生成または修正するためのグラフィカルユーザインタフェースに関する。
【背景技術】
【０００３】
企業は大量のデジタルデータを収集し、多くの場合、様々なソースからのデータを統合し、データを分析することを望む。デジタルデータは、データベース、スプレッドシート、テキスト文書、オンラインウェブサイト、または他の形態の電子記録に格納され得る。これらのソースからのデータを統合することは、典型的にはデータを標準化されたフォーマットに処理することを必要とする。各企業は、それらの特定の使用のためにカスタマイズを必要とする好ましい標準化されたフォーマットを有することがある。データフロー設計システムは、それらのデータを統合し分析するためのカスタムデータフローを設計するための企業ツールを提供する。例えば、ビジネスにおいて、データフローを使用して生の販売データを処理し、経営判断をするために販売レポートを生成する。
【０００４】
既存のデータフロー設計システムは、経時的なデータフローの変化に対して柔軟でない場合がある。入力データソースは、例えば、企業が新しいデータコレクションまたはデータベース管理ソフトウェアを使用するか、あるいは企業が新しいタイプのデータを分析することを望むなど、様々な要因によって変化することが多い。既存の設計システムのユーザは、これらの変更に適応するために、以前に設計されたデータフローを手動で更新する必要があるが、これは時間がかかり、面倒であり、エラーを起こしやすい。
【発明の概要】
【０００５】
データベース管理システムにおけるデータ統合は、様々なソースからのデータを統合することによって、ユーザに価値ある洞察を提供する。例えば、ビジネスは、複数のデータベースからの情報を組み合わせ、経営判断を推進する分析を決定するためにデータ統合を使用する。データベース管理システムにおけるデータフロー設計システムは、複数のマッピングフラグメントを有するデータフローの作成および修正の両方を行うグラフィカルユーザインタフェースツールを含み、マッピングフラグメントの基礎となるデータ変換を可能にする。データフローは複数のオンラインデータベースからデータを取り出し、ユーザによって作成されたカスタマイズされた手順を実行することによって、取り出されたデータを統合する。
【０００６】
ユーザは、グラフィカルユーザインタフェースツールを使用してデータフローを設計する。データフローはデータを処理し、例えば、スプレッドシートの数の行の合計を決定する。グラフィカルユーザインタフェースツールは、データフローを示す表示領域と、ユーザがデータフローにマッピングフラグメントを追加するために選択するアイコンとを含む。パーツは、異なるタイプのマッピングフラグメント、またはマッピングの部分、およびフラグメントを互いに接続するリンクを含む。ユーザは、１つのフラグメントのセクションを別のフラグメントにドラッグアンドドロップして、２つのフラグメント間のリンクを作成することができる。ユーザは、異なるルールを使用してフラグメントをカスタマイズすることもできる。ユーザは入力データを処理して出力データを作成するデータフローを実行し、例えば、販売注文記録をマスタ販売注文データベースに処理する。
【０００７】
データフロー設計システムはマッピングフラグメント（すなわち、マッピングの部分）、静的要素、および動的要素（すなわち、静的および動的「ポート」）を有するデータフローを設計するための設計環境をユーザに提供する。マッピングフラグメントは、データフローの入力データに適用される変換を含む再利用可能なオブジェクトである。静的要素は、一般に時間とともに変化しないデータを処理するが、動的要素は変化するデータを処理する。例えば、新しいデータフィールドは、データフローのソースオンラインデータベースに追加される。動的要素は、新しいデータフィールドを、データフローのフラグメントのマッピングに自動的にリンクする。さらに、マッピングフラグメントは、静的ポートおよび動的ポートを含む。静的ポートは１つのデータフィールドに対応し、動的ポートはゼロまたはそれ以上のデータフィールドに対応する。静的リンクは、上流マッピングフラグメントの静的ポートを、下流マッピングフラグメントの入力ポートにマッピングする。動的リンクは、上流マッピングフラグメントのデータフィールドグループまたは動的ポートを、下流マッピングフラグメントの入力ポートにマッピングし、その結果、上流マッピングフラグメントのデータフィールドグループまたは動的ポートの全てのデータフィールドは、下流マッピングフラグメントの入力ポートに流れ、任意選択で包含および排除ルールに従う。
【０００８】
一実施形態によれば、方法は、データ統合開発環境において、データマッピングをモデル化するデータフローの定義を受信することから始まる。この定義は以下のように、マッピングフラグメントと、マッピングフラグメント間の動的リンクおよび静的リンクと、構成パラメータとを含む。最初に、データフローに含めるために複数のマッピングフラグメントが受信される。各マッピングフラグメントは複数のポートを含む。複数のポートは、少なくとも１つの動的ポートまたは１つの静的ポート、複数のポートのゼロまたは複数のポートに対応する動的ポート、複数のポートの１つのポートに対応する静的ポートを含み、各ポートは少なくとも１つのデータフィールドに対応する。次に、複数のマッピングフラグメントの上流マッピングフラグメントの動的ポートと複数のマッピングフラグメントの下流マッピングフラグメントの動的ポートとの間に少なくとも１つの動的リンクを作成する入力が受信される。動的リンクは、動的ポートの全てのデータフィールドを動的ポートに提供する。複数のマッピングフラグメントの上流マッピングフラグメントの静的ポートと、複数のマッピングフラグメントの下流マッピングフラグメントの静的ポートとの間に少なくとも１つの静的リンクを生成する入力も受信される。静的リンクは、静的ポートのデータフィールドを静的ポートに提供する。複数のマッピングフラグメントのうちの少なくとも１つのマッピングフラグメントに適用するために、１つまたは複数の構成パラメータが受信される。各構成パラメータは、少なくとも１つの構成パラメータ値を含む。次に、１つまたは複数の構成パラメータの各構成パラメータ値を、対応するランタイム値で置き換えることによって、構成パラメータが少なくとも１つのマッピングフラグメントに適用され、実行可能ランタイム定義が、データフローおよびランタイム値の定義に少なくとも部分的に基づいてコンパイルされる。
【０００９】
一実施形態によれば、プロセッサによって実行可能なコンピュータプログラムを記憶する非一時的なコンピュータ可読メモリは、データフローを表示するためのデータフロー表示領域と、データフロー表示領域に隣接し、マッピングフラグメントをデータフローに追加するための複数のアイコンを備えるデータフローアイコン選択領域とを有するユーザインタフェースを生成する。ユーザインタフェースは、データフロー表示エリアに新しいマッピングフラグメントを表示するようにコンピュータプログラムによって構成され、マッピングフラグメントはデータフローアイコン選択における複数のアイコンのうちの１つのアイコンを選択する入力の受信に応答して、少なくとも１つのデータフィールドグループを含み、動的ポートはゼロ以上のデータフィールドのグループに対応し、静的ポートは１つのデータフィールドに対応する。ユーザインタフェースは、また、データフロー表示エリア内の上流マッピングフラグメントのデータフィールドグループまたは動的ポートをデータフロー表示エリア内の下流マッピングフラグメントにドラッグする入力の受信に応答して、動的リンクを示す上流マッピングフラグメントと下流マッピングフラグメントとの間の視覚的接続を表示し、上流マッピングフラグメントのデータフィールドグループまたは動的ポートのデータフィールドを、下流マッピングフラグメント内の新たに生成された動的ポートに追加するように構成される。
【図面の簡単な説明】
【００１０】
【図１】図１は、一実施形態によるデータフロー設計システムのシステム環境を示す図である。
【図２】図２は、一実施形態による、図１のシステム環境内のデータフロー設計システムのより詳細なシステムアーキテクチャの図である。
【図３Ａ】図３Ａは、一実施形態による、静的リンクでフラグメントをマッピングする例を示す。
【図３Ｂ】図３Ｂは、一実施形態による、動的リンクでフラグメントをマッピングする例を示す。
【図４Ａ】図４Ａは、一実施形態による、マッピングフラグメント、静的要素、および動的要素を含むデータフローの図である。
【図４Ｂ】図４Ｂは、一実施形態による、図４Ａに示されるデータフローのコンパイルされたバージョンの図である。
【図５】図５は、一実施形態によるデータフローを設計するプロセスのフローチャートである。
【図６Ａ】図６Ａは、一実施形態によるデータフロー設計環境ユーザインタフェースを示す。
【図６Ｂ】図６Ｂは、一実施形態によるドラッグアンドドロップ機能を示すデータフロー設計環境ユーザインタフェースを示す。
【図６Ｃ】図６Ｃは、一実施形態による動的リンクを示すデータフロー設計環境ユーザインタフェースを示す。
【図６Ｄ】図６Ｄはまた、一実施形態によるデータフロー設計環境ユーザインタフェースを示す。
【図６Ｅ】図６Ｅはまた、一実施形態によるドラッグアンドドロップ機能を示すデータフロー設計環境ユーザインタフェースを示す。
【図６Ｆ】図６Ｆは、一実施形態による静的リンクを示すデータフロー設計環境ユーザインタフェースを示す。
【図６Ｇ】図６Ｇは、一実施形態による、図６Ｆに示されるデータフローのコンパイルされた実行可能ランタイム定義を示す。
【図７】図７は、一実施形態による、データフロー設計環境ユーザインタフェース内のリンクされたアイコンを示す。
【図８】図８は、一実施形態によるマッピングフラグメントのＸＭＬコードのスニペットを示す。
【図９】図９はまた、一実施形態によるマッピングフラグメントのＸＭＬコードのスニペットを示す。
【図１０Ａ】図１０Ａは、一実施形態による、データフローのコンパイルされた実行可能ランタイム定義のＸＭＬコードのスニペットを示す。
【図１０Ｂ】図１０Ｂはまた、一実施形態による、データフローのコンパイルされた実行可能ランタイム定義のＸＭＬコードのスニペットを示す。
【００１１】
図面は、例示のみを目的として、本発明の様々な実施形態を示す。当業者は、本願に記載の本発明の原理から逸脱することなく、本願に示される構造および方法の代替実施形態が採用され得ることを本議論から容易に理解されるのであろう。
【００１２】
詳細な説明
本明細書で説明する特定の実施形態は、静的要素および動的要素の両方を使用するデータフロー設計環境に関する。図１および図２は入力データを処理し、オンラインデータベースから出力データを生成するためにマッピングフラグメントを使用するデータフロー設計システムの概要を示す。図３Ａ〜３Ｂは、フラグメント、静的リンク、および動的リンクをマッピングする例を示す。図４Ａ〜４Ｂは、入力データを処理するための構成パラメータを有するフラグメントのマッピングを示す。図５は、設計環境を使用してデータフローを設計するプロセスを示す。図６Ａ〜６Ｇおよび図７は、設計環境の例示的なユーザインタフェースを示す。図８、図９、および図１０Ａ〜１０Ｂは、マッピングフラグメントおよびコンパイルされたデータフローを表すＸＭＬコードのスニペットを示す。
【００１３】
システム概要
図１は、一実施形態によるデータフロー設計システム１００のシステムアーキテクチャの図である。システムアーキテクチャは、ネットワーク１４０を介して互いに接続されたデータフロー設計システム１００、クライアント装置１１０、１つ以上のデータベース１０５、およびデータベース管理システム１５０を含む。他の実施形態では、異なるエンティティおよび／または追加のエンティティをシステムアーキテクチャに含めることができる。
【００１４】
データフロー設計システム１００はデータフロー情報を管理するシステムであり、図２を参照して以下にさらに説明する。一般に、データフロー設計システム１００はユーザがデータフローを設計するためのグラフィカルユーザインタフェースを提供し、基礎となるデータフローをイネーブルし、グラフィカルユーザインタフェースを介してユーザから入力を受け取る。グラフィカルユーザインタフェースは、ユーザのクライアント装置１１０に表示される設計環境１１５とも呼ばれる。データフロー設計システム１００は、ユーザから受信した入力に基づいて、ユーザが設計したデータフローを表す情報を記憶する。データフロー設計システム１００は、図２に関連して以下により詳細に説明する種々の構成要素を含む。
【００１５】
データベース管理システム１５０は、ＤＢＭＳとも呼ばれ、ネットワーク１４０を介してクライアント装置１１０をデータベース１０５にインタフェースするアプリケーションである。データベース１０５は例えば、データテーブル、スプレッドシート、レポート、及び他のタイプのドキュメントのようなデータの編成されたコレクションである。クライアントデバイス１１０（またはデータフロー設計システム１００）はＤＢＭＳ１５０を使用して、データベース（例えば、データベース１０５またはオンラインサーバ）から情報を取り出すか、またはデータベース（例えば、データベース１０５またはオンラインサーバ）に情報を書き込むことができる。いくつかの実施形態では、データフロー設計システム１００および／またはクライアントデバイス１１０は、ローカルデータベースを含む。
【００１６】
クライアント装置１１０は、クライアント装置１１０のユーザから入力を受け取り、ネットワーク１４０を介してデータを送受信することができるコンピューティング装置である。例えば、クライアントデバイス１１０は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレット、またはコンピューティング機能およびデータ通信機能を含む任意の他のデバイスとすることができる。クライアントデバイス１１０は、有線通信システムと無線通信システムの両方を使用して、ローカルエリアネットワークまたはワイドエリアネットワークの任意の組合せを含むことができるネットワーク１４０を介して通信するように構成される。
【００１７】
ネットワーク１４０は、クライアント装置１１０とデータフロー設計システム１００との間の通信を可能にする。一実施形態では、ネットワーク１４０が標準的な通信技術および／またはプロトコルを使用する。ネットワーク１４０上で交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張可能マークアップ言語（ＸＭＬ）などを含む技術および／またはフォーマットを使用して表すことができる。さらに、リンクのすべてまたはいくつかは、セキュア・ソケット・レイヤ（ＳＳＬ）、トランスポート・レイヤ・セキュリティ（ＴＬＳ）、仮想プライベート・ネットワーク（ＶＰＮ）、インターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化することができる。別の実施形態では、エンティティが、上述のものの代わりに、または上述のものに加えて、カスタムおよび／または専用のデータ通信技術を使用することができる。
【００１８】
設計環境１１５は、データフローシステム１００を使用してデータフローを設計するためのグラフィカルユーザインタフェースである。ユーザは例えば、データフローの要素を追加、編集、または除去するために、クライアントデバイス１１０を使用して設計環境１１５と対話する。設計環境１１５は、データフロー１２５、入力データ１２０、および出力データ１３５のグラフィカル表現を表示する。データフロー１２５は、ＤＢＭＳ１５０を使用して、ソースデータベース、例えばデータベース１０５の１つから入力データ１２０を受信する。データフロー１２５は、１セットの１つまたは複数の変換を含む再使用可能なオブジェクトである１組のマッピングフラグメント１３０を使用して入力データ１２０を処理する。マッピングフラグメントは、マッピングフラグメントを流れるデータに変換を適用する。フラグメントのマッピングについては、図３Ａ〜Ｂおよび図４Ａを参照してさらに説明する。参照のために、マッピングフラグメントのＸＭＬコード表現の例示的なスニペットを、図８および図９に示す。変換の適用に基づいて、データフロー１２５は出力データ１３５を生成する。データフロー１２５はＤＢＭＳ１５０を使用して、出力データ１３５を、ターゲットデータベース、例えば、データベース１０５の１つに書き込むことができる。ユースケースの一例では、入力データ１２０が企業の顧客に関する情報（例えば、企業から製品を購入した顧客のファーストネームおよびラストネーム）を含み、データのソースとしてデータベース１０５のうちの１つを有することができる。データフロー１２５はマッピングフラグメント１３０を使用して、顧客情報をフォーマットし、レポートに表示する（例えば、最新の月の製品購入を示す）。出力データ１３５はレポート（例えば、スプレッドシートまたはテキスト文書）の提示であり、最終的には、データベース１０５のうちの１つなどのターゲットデータベースに格納され得る。
【００１９】
データフロー設計システム
図２は、一実施形態による、図１のシステム環境内のデータフロー設計システム１００のシステムアーキテクチャ２００の図である。データフロー設計システム１００は、ユーザインタフェースマネージャ２１０、データフローモジュール２２０、ルールエンジン２３０、コンパイルモジュール２４０、実行モジュール２５０、データフローストア２７０、およびルールセットストア２８０を備える。他の実施形態では、データフロー設計システム１００が追加の、より少ない、および／または異なるモジュールおよびストアを含むことができる。
【００２０】
ユーザインタフェースマネージャ２１０は、データフロー設計システム１００からのコンテンツおよび変換情報を含む、設計環境１１５、例えば、図６Ａ〜Ｆに示されるようなグラフィカルユーザインタフェース６００を生成する。設計環境１１５に含まれる内容は、マッピングフラグメントなどのデータフローの要素のグラフィック表現を含み、それらは図３Ａ〜Ｂおよび図４を参照してより詳細に説明される。さらに、図６Ａ〜図６Ｆを参照して、例示的なユーザインタフェース６００をさらに説明する。ユーザインタフェースマネージャ２１０はデータフローの異なるビューを生成し、切り替えることができる。例えば、データフローの縮小されたビューは規則的な（すなわち、縮小されていない）ビューにおける対応するグラフィック要素に対してサイズがより小さいアイコン（図７を参照してさらに説明される）を使用して、フラグメントをマッピングすることを表す。
【００２１】
ユーザインタフェースモジュール２１０によって生成される設計環境１１５は、データフロー設計システム１００のユーザがデータフロー設計システム１００に情報を通信することを可能にすることもできる。ユーザインタフェースは、ユーザがデータフロー情報を入力すること、またはデータフロー設計システム１００にアクションを実行する要求を入力することを可能にする対話型要素（例えば、異なる設計制御のグラフィカルメニュー）を含むことができる。例えば、ユーザはデータフローの要素（例えば、マッピングフラグメント）を追加、編集、または除去するために設計制御を使用する。さらなる例として、ユーザは、データフローを実行するために「実行（ｒｕｎ）」制御を選択する。ユーザインタフェースモジュール２１０が設計環境１１５を生成すると、ユーザインタフェースモジュール２１０は、設計環境１１５を、例えばクライアント装置１１０の表示領域においてユーザに提示する。
【００２２】
データフローモジュール２２０は、データフロー設計システム１００のユーザによって入力されたデータフロー情報を処理する。特に、データフローモジュール２２０は、ユーザインタフェースモジュール２１０からデータフロー情報を受信し、データフローストア２７０にデータフロー情報を格納する。例えば、データフロー情報は、ユーザが設計したいデータフローのマッピングフラグメントを記述する。データフローモジュール２２０は対応するマッピングフラグメントを生成し、マッピングフラグメントをデータフローに関連付け、マッピングフラグメントをデータストア２７０に格納する。
【００２３】
ルールエンジン２３０は、構成パラメータをデータフローのフラグメントのマッピングに適用する。構成パラメータは、データを変換する手順、例えば、数学的演算、ストリング演算、またはフィルタを記述する。さらに、構成パラメータは、例えば、特定の条件（例えば、マッピングフラグメントを通って流れるデータが目標値に等しい）が満たされる場合、手順と共にロジックを実行し得る（例えば数学的演算を実行する）。構成パラメータは、図４Ａを参照してさらに説明されるルールおよび／またはマクロを含む。構成パラメータは構成パラメータ値を含み、マッピングフラグメントのマークアップ言語、例えばＸＭＬ表現で表される。ルールエンジン２３０は、構成パラメータ値をマークアップ言語の対応するランタイム値で置き換えることによって、構成パラメータをマッピングフラグメントに適用する。例えば、構成パラメータ規則は、ＸＭＬ、<Rule patternText="ABC123"/>によって表され、ここで、"patternText"は識別子を指し、"ABC123"は構成パラメータ値、すなわち、マッピングフラグメントのＸＭＬにおいて定義される異なる値"test"に対する別の識別子を指す。ルールエンジン２３０は、構成パラメータ値を、識別子に対応するランタイム値に置き換える。したがって、構成パラメータルールが適用された後、対応するＸＭＬは<Rule patternText="test"/>となる。ルールエンジン２３０はデータフローをトポロジー順にトラバースし、データフロー内のフラグメントをマッピングする任意の構成パラメータを実行して、結果セットを生成する。ルールエンジン２３０は、結果セットを、結果セットを実行することができる下流マッピングフラグメントに提供する。ルールエンジン２３０はデータフローストア２７０に格納されたデータフローとは別に、結果セットをルールセットストア２８０に格納する。
【００２４】
コンパイルモジュール２４０は、データフローの実行可能ランタイム定義をコンパイルする。データフローの実行可能ランタイム定義の一例について、図６Ｇを参照してさらに説明する。参考のために、データフローのコンパイルされた実行可能ランタイム定義のＸＭＬコード表現のスニペット例を図１０Ａ〜Ｂに示す。コンパイルモジュール２４０は、データフローストア２７０からデータフローに関する情報を受け取る。コンパイルモジュール２４０は、マッピングフラグメント、静的ポート、動的ポート、およびランタイムリンクなどのデータフローの要素に基づいて、実行可能ランタイム定義をコンパイルする。いくつかの実施形態では、コンパイルモジュール２４０が独自開発のエンジンを実行して、実行可能ランタイム定義をコンパイルする。データフローの入力データソースまたは出力データソースおよび／またはシステムが変化する場合、コンパイルモジュール２４０は、必ずしも実行可能ランタイム定義を再コンパイルする必要はない。
【００２５】
再コンパイルは、データソースおよび／またはシステムが一般に時間とともに発展するので、回避される。したがって、非データフロー関連変更によるデータフローの再コンパイルの必要性を排除することにより、時間が節約される。さらに、データフローはよりコンパクトであり、読み取りがより容易であり、より保守可能であり、例えば、データフローは、データソースおよび／またはシステムに対する変更に動的に適応する。一実施形態では、コンパイルモジュール２４０が、ユーザインタフェースマネージャ２００を介してクライアント装置１１０から実行可能ランタイム定義をコンパイルすることを要求する入力を受信することに応答して、実行可能ランタイム定義をコンパイルする（例えば、図６Ａを参照してさらに説明される「ｒｕｎ」設計制御に対応する要求）。コンパイルモジュール２４０は、実行可能ランタイム定義を、実行のために実行モジュール２５０に提供する。
【００２６】
実行モジュール２５０は、データフローの実行可能ランタイム定義を実行する。実行モジュール２５０は、コンパイルモジュール２４０から実行可能ランタイム定義を受け取る。一実施形態では、実行モジュール２５０がユーザインタフェースマネージャ２００を介して、クライアント装置１１０からデータフローの実行を要求する入力を受信することに応答して、実行可能ランタイム定義を実行する。ユースケースの例では、実行モジュール２５０が実行可能ランタイム定義を実行することによって、入力データを読み取り、出力データ（例えば、図１の入力データ１２０および出力データ１３５）をそれぞれ書き込む。
【００２７】
本明細書で説明されるデータフローは、静的要素および／または動的要素を含む。静的要素は静的ポートおよび静的リンクを含み、動的要素は、動的ポートおよび動的リンクを含む。静的要素と比較して、動的要素は、設計環境１１５における機能及び視覚的外観の両方において異なる。データフロー設計システム１００のユーザは、設計環境１１５と対話して、マッピングフラグメント、静的要素、および動的要素を追加、除去、および／または編集して、データフローを設計する。
【００２８】
マッピングスニペット
図３Ａは、一実施形態による、静的リンク３１０でフラグメントをマッピングする例を示す。マッピングフラグメントは名前を有し、データフィールド名およびタイプに関連付けられたデータフィールドを含む。データフィールドは、データフロー内のマッピングフラグメントを流れるデータを格納する。例えば、マッピングフラグメント３００は「Read_Customer_Data」と名付けられ、データフィールド３０５を含む。特に、データフィールド３０５は顧客のディーラシップ識別子（すなわち、データフィールド名「dealership_ID」）、領域（すなわち、データフィールド名「region」）、顧客識別子（すなわち、データフィールド名「customer」）、ファーストネーム（すなわち、データフィールド名「firstname」）、ラストネーム（すなわち、データフィールド名「lastname」）、および性別（すなわち、データフィールド名「gender」）に対応するデータフィールドを含む。データフィールド「dealership_ID」は、文字（char）タイプのデータフィールドである。データフィールド「customer」は、整数型データフィールドである。データフィールド「region」、「firstname」、「lastname」、「gender」は、文字列（string）タイプのデータフィールドである。いくつかの実施形態では、データフィールド３０５が他のデータフィールドグループ、データフィールド名、および／またはデータフィールドタイプ（例えば、１０進数、日付／時間、フロート（ｆｌｏａｔ）、ブーリアン（Ｂｏｏｌｅａｎ）、文字、ヌル（ｎｕｌｌ）など）を含む。データフィールドグループは、あるデータフィールドグループ名の下に編成された１つまたは複数のデータフィールドを含む。マッピングフラグメントは少なくとも１つのデータフィールドグループ、すなわち、マッピングフラグメントの全てのデータフィールドを含むデータフィールドグループを含む。ユーザは、設計環境１１５を使用して、追加のデータフィールドグループを作成することができる。
【００２９】
マッピングフラグメントは、１つ以上のデータフィールドに対応するポートを含む。静的ポートは、１つのデータフィールドを表す従来のポートである。動的ポートは複数のデータフィールドがリンクを介してマッピングフラグメントに流れることを可能にするが、これについては以下でさらに説明する。例えば、マッピングフラグメント３００は、データフィールド「dialership_ID」、「region」、「customer」、「firstname」、「lastname」、および「gender」の各々を表す静的ポートを含む。さらに、マッピングフラグメント３００は、マッピングフラグメント３００のすべての、例えば６つのデータフィールドがマッピングフラグメント３００のリンクを通って流れることを可能にする動的ポートも含むことができる。
【００３０】
データフローは、それぞれが異なるタイプの変換に対応する異なるタイプのマッピングフラグメントを含むことができる。例えば、マッピングフラグメントのタイプは、とりわけ、「read data」、「target」、「expression」、「aggregator」、「joiner」、および「filter」を含む。「read data」タイプのマッピングフラグメントは、ＤＢＭＳ１５０を介してソースデータベース、例えばデータベース１０５の１つから情報を取り出す。検索された情報は、データフローの他のマッピングフラグメントによってさらに処理されてもよい。「target」タイプのマッピングフラグメントは、ＤＢＭＳ１５０を介して、ターゲットデータベース、例えばデータベース１０５の１つに情報を書き込む。情報は、データフローのフラグメントをマッピングすることによって処理されるデータに基づく。「expression」マッピングフラグメントはデータフィールドからのデータに対して式を実行し、例えば、式を行ごとに実行する。例えば、この式は数値型データに対して実行される数学的演算（例えば、整数にスケーリングファクタを乗算すること、または１０進数の絶対値を決定すること）である。別の例では、式は文字列タイプデータに対して実行される文字列演算（例えば、文字列の連結、文字列からの空間文字のトリミング、または部分文字列の決定）である。「aggregator」タイプのマッピングフラグメントは、データフィールドからのデータのグループに対して式を実行する。例えば、式は、複数のデータフィールドから整数タイプのデータの合計を決定するか、または複数のデータフィールドから文字列タイプのデータを連結する。「joiner」タイプのマッピングフラグメントは複数のソースデータベース（例えば、データベース１０５）からの複数の異種（または同種）入力データからのデータを結合する。異種入力データは、異なるフォーマットまたはタイプのデータフィールドを有する入力データを含む。例えば、１つの入力データは整数のテーブルであり、第２の入力データは文字および／または文字列のテキスト文書である。「filter」タイプのマッピングフラグメントは、データフィールド値または別の条件に基づいて、マッピングフラグメントを流れるデータを選択する。例えば、マッピングフラグメントは「country=USA」（すなわち、「country」の文字列値が文字列「USA」に等しい）であるレコードのみを、マッピングフラグメントを通って流れるレコードとして選択する。異なるタイプのマッピングフラグメントは、マッピングフラグメントを互いに視覚的に区別するための異なるタイプのアイコンを含み、これらについては図４Ａを参照してさらに説明する。
【００３１】
図８は、一実施形態によるマッピングフラグメントのＸＭＬコードのスニペットを示す。特に、マッピングフラグメントは変換のインスタンス、例えば、"<Instance transformation="U: 7PeivxI0..."を含む。変換のインスタンスは、必ずしも変換を適用するための命令を含まないので、プログラムの関数呼び出しに類似している。むしろ、例えば、インスタンスは、コードの他の部分への参照を含むことができる。インスタンスは複数のポート、例えば"<TransformationFieldPort imx:id="ID_6"..."と、フィールド、例えば、"transformationField="U:7PeiwR..."とを含み、これらは変換の入力パラメータとして使用される。いくつかの実施形態では、入力パラメータは設計中には知られていないが、データフローの実行時に決定される。
【００３２】
図９はまた、一実施形態によるマッピングフラグメントのＸＭＬコードのスニペットを示す。特に、マッピングフラグメントは、マッピングフラグメントを通って流れるデータに対してストリング演算を実行する表現型マッピングフラグメントである。
【００３３】
静的リンク
データフローでは、静的リンクが上流マッピングフラグメントの静的ポートを下流マッピングフラグメントの入力ポートにマッピングする。上流マッピングフラグメントは、データフロー内の下流マッピングフラグメントに先行するマッピングフラグメントである。例えば、図３Ａに示す静的リンク３１０は、それぞれが上流マッピングフラグメント３００のデータフィールド３０５の１つに対応する６つの静的リンクを含む。各静的リンクは「mapping fragment 1（マッピングフラグメント１）」と呼ばれる下流マッピングフラグメント３２０のデータフィールド３２５のうちの１つに対応する入力ポートにマッピングされるので、上流マッピングフラグメント３００のデータフィールド３０５からのデータは静的リンク３１０を通って下流マッピングフラグメント３２０のデータフィールド３２５に流れる。
【００３４】
動的リンク
図３Ｂは、一実施形態による、動的リンク３３０を用いてフラグメントをマッピングする例を示す。マッピングフラグメント３４０は「Fields(6)」と名付けられたデータフィールドグループを含み、これは、データフィールド３４５のすべて、例えば、６つからのデータが動的ポートを通って動的リンク３３０に流れることを可能にする。動的リンク３３０は「Fields(6)」データフィールドグループを、下流マッピングフラグメント３５０「From_Read_Customer_Data」（例えば、上流マッピングフラグメント３４０の名前に基づいて）と名付けられた入力ポートにマッピングする。動的リンク３３０により、マッピングフラグメント３５０は、「From_Read_Customer_Data」入力ポート、すなわち動的ポートの下に編成された生成されたポートを生成する。生成されたポートは、静的ポートと同様にマッピングフラグメントで使用される。しかし、生成されたポートは、データフローの上流マッピングフラグメントへの変更の結果として、実行時にマッピングフラグメントに削除または追加することができる。具体的には、マッピングフラグメント３５０がデータフィールド３５５のそれぞれに対応する６つの生成されたポート、すなわち、「dealership_ID」という名前の文字タイプデータフィールド、「customer」という名前の整数タイプデータフィールド、ならびに「region」、「firstname」、「lastname」、および「gender」という名前の文字タイプデータフィールドを含む。データフィールド３４５からのデータは、動的リンク３３０を通ってデータフィールド３５５に流れる。データフロー設計システム１００のユーザは、動的ポート「From_Read_Customer_Data」のエクスパンダコントロール３６０を選択することによって、生成されたポートの表示と非表示を切り替えることができる。他の実施形態では、動的リンクが上流マッピングフラグメントの動的ポートを下流マッピングフラグメントのポートにマッピングする。
【００３５】
静的要素および動的要素はそれぞれ、異なる特徴を有する。特に、静的要素は動的要素よりも多くの再現性を提供し、これは、主に固定データ構造を有するデータフローを設計するのに有用である。例えば、固定データ構造は、時間にわたって同じ数およびタイプのデータフィールドを維持するか、またはデータフィールドに対する最小量の変更を経験するマッピングフラグメントである。一方、動的要素は、静的要素よりも多くのデータフロー設計の柔軟性を提供する。すなわち、動的ポートおよび動的リンクなどの動的要素は、データフローにおける変化により適応可能である。
【００３６】
データフロー
図４Ａは、一実施形態による、マッピングフラグメント、静的要素、および動的要素を含むデータフロー４００の図である。データフロー４００は、「Read_Customer_Data」と名付けられたマッピングフラグメント４０２と、「Expression」と名付けられたマッピングフラグメント４１２と、「Filter」と名付けられたマッピングフラグメント４２２と、「Target」と名付けられたマッピングフラグメント４３２とを含む。マッピングフラグメント４０２は「read data」タイプのマッピングフラグメントであり、したがって「read data」タイプのアイコン４０４を有する。マッピングフラグメント４２２は「filter」タイプのマッピングフラグメントであり、したがって「filter」タイプのアイコン４２４を有する。マッピングフラグメント４１２は「expression」タイプのマッピングフラグメントであり、したがって「expression」タイプのアイコン４１４を有する。マッピングフラグメント４３２は「target」タイプのマッピングフラグメントであり、したがって「target」タイプのアイコン４３４を有する。
【００３７】
動的リンク４０８は、上流マッピングフラグメント４０２のデータフィールドグループを、下流マッピングフラグメント４１２の入力動的ポート「From_Read_Customer_data」にマッピングする。入力動的ポートは、「string-only（文字列のみ）」包含ルール、すなわちルール４３８を有する。したがって、上流マッピングフラグメント４０２からの４つの文字列タイプデータフィールド、たとえば「region」、「firstname」、「lastname」、および「gender」からのデータのみが、動的リンク４０８を通って、入力動的ポート「From_Read_Customer_Data」に流れる。したがって、マッピングフラグメント４１２は、データフィールドグループの各データフィールドに対して生成されたポート４１６を生成する。
【００３８】
マッピングフラグメント４１２はまた、その値がストリング演算を実行する式に依存する「fullname」出力静的ポートを有する。この式は、マッピングフラグメント４１２「firstname」および「lastname」データフィールドに対してストリング演算を実行する。特に、「lastname」の文字列データを「firstname」の文字列データの末尾に連結して、「fullname」動的ポートに格納されたデータ値を生成することにより、この式が適用される。例えば、「Marie」の末尾に連結された「Curie」は、「fullname」データ値「Marie Curie」をもたらす。この例では式は「firstname」と「lastname」の間にスペース文字も挿入する。
【００３９】
静的リンク４１０は、上流マッピングフラグメント４０２の「customer」データフィールドを表す静的ポートを、下流マッピングフラグメント４２２「customer」データフィールドを表す入力静的ポートにマッピングする。したがって、データフィールド４０６の「customer」データフィールドからのデータは、静的リンク４１０を通ってデータフィールド４２６「customer」データフィールドに流れる。静的リンク４６０は、データフィールド４２６「customer」データフィールドの静的ポートを、下流マッピングフラグメント４３２の入力静的ポートにマッピングする。マッピングフラグメント４２２は「フィルタ」タイプのマッピングフラグメントであるため、構成パラメータ規則を適用して、それらのデータフィールド値に基づいて特定のデータフィールドを除外または含めることができる。例えば、マッピングフラグメント４２２は「customer>50000」、すなわち、５００００より大きい「customer」値のみを含む構成パラメータルールを有することができる。
【００４０】
ランタイムリンクは上流のマッピングフラグメントが動的要素を有するが、対応する下流のマッピングフラグメントが動的要素をサポートしない状況を処理する。具体的には、ランタイムリンクが上流マッピングフラグメント内の生成されたポートと下流マッピングフラグメント内の静的ポートとの間のランタイムでリンクを生成するための情報を含む。ランタイムリンク４３０により生成されたリンクの例は、図４Ｂを参照して以下でさらに説明される。ランタイムリンク４３０は、上流マッピングフラグメント４１２の「Fields」データフィールドグループ４３５を下流マッピングフラグメント４３２「Fields」データフィールドグループ４６２にマッピングする。設計環境１１５のユーザインタフェースでは、ランタイムリンクが静的リンクおよび動的リンクとはグラフィカルに区別される。例えば、ランタイムリンク４３０は動的リンク４０８よりも太い線によって表され、例えば、ランタイムリンク４３０は７ピクセル幅であり、動的リンク４０８は１ピクセル幅である。いくつかの実施形態では、ランタイムリンクが静的リンクおよび／または動的リンクとは異なる色または透明度レベルで表される。ランタイムリンクは、データフローの特定の入力または構成がランタイム（データフローの実行）まで知られていない可能性があるので、データフロー設計の柔軟性を提供する。したがって、ランタイムリンクは対照的に、ランタイム前に知られている入力および構成を使用して動作する静的リンクを補足する。
【００４１】
データフロー４００は静的リンク４１０および４６０、動的リンク４０８、およびランタイムリンク４３０を含むので、データフロー４００は静的要素と動的要素の両方を結合する。したがって、設計環境１１５を使用してデータフロー４００を設計するユーザは、異なるタイプのデータソースおよび／またはデータ処理手順に基づいてデータフロー４００をカスタマイズすることができる。静的要素と動的要素の組み合わせは、例えば、ある入力データが静的要素をサポートするだけであり、動的要素をサポートしない可能性があるため、様々なソースデータベースからの入力データを統合するのに役立つ。さらに、別の入力データは異なる入力データのフォーマットと一致するように、マッピングフラグメントによって再フォーマットされる必要があり得る。ユーザはまた、マッピングフラグメントに適用するために、構成パラメータ（例えば、フィルタ、数学的演算、またはストリング演算を記述するルール）を作成することによって、データフローをカスタマイズする。ユーザはより再現性を必要とし、変化しにくいデータフロー４００のセクションに対して静的要素を使用する。ユーザは「customer」データフィールドが経時的に同じままであるため、例えば、顧客が「customer」データフィールドのデータ値によって表される同じ顧客識別子を保持するため、静的リンク４１０および４６０を使用する。さらに、ストリングタイプデータフィールドは時間とともに変化する可能性があるので、ユーザは動的リンク４０８を使用する。例えば、ユーザは、顧客の「middlename」、「city」、または「state」に関する追加の文字列タイプデータフィールドをマッピングフラグメント４０２に追加する。動的リンク４０８は、追加のストリングタイプデータフィールドに対応するマッピングされた下流マッピングフラグメント内に新しい生成されたポートを自動的に生成することによって、変更に適応する。
【００４２】
図４Ｂは、一実施形態による、図４Ａに示すデータフロー４００のコンパイル済み実行可能ランタイム定義４７０を示す。特に、コンパイルモジュール２４０は、任意の動的リンクまたはランタイムリンクに基づいて、データフロー４００のリンクを生成する。例えば、コンパイルモジュール２４０は、動的リンク４０８を、それぞれが上流マッピングフラグメント４０２の静的ポートを下流マッピングフラグメント４１２の静的ポートにマッピングする一組の４つの静的リンク４７２に置き換える。さらに、コンパイルモジュール２４０は、ランタイムリンク４３０を、それぞれが上流マッピングフラグメント４１２の静的ポートを下流マッピングフラグメント４３２の静的ポートにマッピングする１組の５つの静的リンク４７４で置き換える。コンパイルモジュール２４０は、データフロー４００のマッピングフラグメントから動的ポートおよびデータフィールドグループを除去する。静的リンク４１０および４６０は変更されないことに留意されたい。いくつかの実施形態では、コンパイルモジュール２４０がデータフローの実行可能ランタイム定義をコンパイルするときに、テキストタイプデータフィールドを文字列タイプデータフィールドに変換するか、または他のタイプのデータフィールドタイプ変換を実行する。
【００４３】
図１０Ａは、一実施形態による、データフローのコンパイルされた実行可能ランタイム定義のＸＭＬコードのスニペットを示す。コンパイルされた実行可能ランタイム定義コードは例えば、特徴、入力バインディング、能力、および関係フィールドをそれぞれ表すタグ「<Characteristic>」「<inputBinding>」「<Capability>」「<Relational Field>」を含む。特性、例えば、「<Characteristic imx:id="ID_2" xsi:type="optimizer:OptimizerCharacteristic">」はマッピングフラグメントの機能、例えば、マッピングフラグメントが特定の環境（例えば、クラウドデータベースまたはローカルエンジン）で実行されるように設計されているかどうかをさらに記述することができる。入力バインディング、例えば<InputBinding imx:id="ID_5"..."は、ランタイム値がマッピングフラグメントにどのように提供されるかを示すことができる。
【００４４】
図１０Ｂはまた、一実施形態による、データフローのコンパイルされた実行可能ランタイム定義のＸＭＬコードのスニペットを示す。例えば、"<Capability imx:id = "ID_61" xsi:type = "datasourceoperation1":ReadCapability"..., "は、例えば「read data」または「target」タイプのマッピングフラグメントに対する、データソースのシグネチャ（署名）を示すことができる。シグネチャの例には、読み取り（read）、書き込み（write）、およびルックアップ（look up）が含まれる。リレーショナルフィールド、例えば、「<RelationalField imx:id="ID_64"…,"」は、ケイパビリティのシグネチャ内の要素を記述することができる。リレーショナルフィールドはケイパビリティに関連付けられるので、マッピングフラグメントは、様々なデータソースタイプと互換性があり得る。
【００４５】
プロセスフロー
図５は、一実施形態によるデータフローを設計するプロセス５００のフローチャートである。いくつかの実施形態では、プロセス５００がデータフロー設計システム１００（例えば、図２を参照して説明したデータフロー設計システム１００のモジュール）によって、図１のシステム環境内で使用される。プロセス５００は、いくつかの実施形態において、図５に関連して記載されたものとは異なるまたは追加のステップを含んでもよく、または図５に関連して記載された順序とは異なる順序でステップを実行してもよい。プロセス５００は、データフロー設計システム１００のユーザが自動車ディーラシップ事業の所有者である例示的な使用事例の文脈で説明される。ユーザは毎月の終わりに販売レポートを生成して、今後の月の販売に関する予測を行い、顧客の行動を研究し、ビジネスの全体的なパフォーマンスの評価を支援することを望む。したがって、ユーザは販売レポートを生成するデータフローを設計するために、データ統合開発環境、例えば、図６Ａ〜Ｆに示されるユーザインタフェース６００を使用する。
【００４６】
データフロー設計システム１００は、データ統合開発環境において、図２で説明したユーザインタフェースマネージャ２１０を介してクライアント装置１１０からデータフローの定義を受信する（５１０）。データフローの定義は動的ポートおよび静的ポートに対応するデータフィールドを有するマッピングフラグメント、例えば、図６Ｄに示すマッピングフラグメント６２０、６２８、６３４および６４０を含む。マッピングフラグメント６２０は、ＤＢＭＳ１５０を介して、スプレッドシート、データベース、またはユーザによって記録された顧客データの任意の他のデジタル記録などのソースから、企業の顧客に関するデータを取り出す。データフロー設計システム１００は、ユーザインタフェースマネージャ２１０を介して、上流マッピングフラグメントのデータフィールドグループと下流マッピングフラグメントのデータフィールドグループとの間の動的リンクを作成する入力を受信する（５２０）。例えば、図６Ｅにおいて、動的リンク６４８は、上流マッピングフラグメント６２８の動的ポート「From_Read_Customers」を、下流マッピングフラグメント６４０の動的ポート「From_Expression」にマッピングする。データフロー設計システム１００は、ユーザインタフェースマネージャ２１０を介して、上流マッピングフラグメントの静的ポートと下流マッピングフラグメントの静的ポートとの間に静的リンクを作成する入力を受信する（５３０）。例えば、図６Ｆにおいて、静的リンク６５８の１つは、上流マッピングフラグメント６３４「price」データフィールドに対応する静的ポートを、下流マッピングフラグメント６４０の対応する「price」データフィールドの静的ポートにマッピングする。ユーザインタフェースマネージャ２１０は設計環境においてユーザに表示するために、クライアント装置１１０にデータフローを提供する。いくつかの実施形態では、データフローが例えば、図７に示されるアイコンを含む、縮小アイコンビューによって表される。
【００４７】
データフロー設計システム１００は、マッピングフラグメントに関連付けられた構成パラメータを、ユーザインタフェースマネージャ２１０を介してクライアント装置１１０から受信する（５４０）。例えば、再び図４Ａを参照すると、構成パラメータルール４３８は、マッピングフラグメント４１２「From_Read_Customer_Data」動的ポートに関連付けられる。構成パラメータは構成パラメータ値を含み、例えば、構成パラメータルール４３８は、ストリングデータタイプフィルタに対応する構成パラメータ値を有する。ルールエンジン２３０は、構成パラメータ値を対応するランタイム値で置き換えることによって、構成パラメータをマッピングフラグメントに適用する（５５０）。コンパイルモジュール２４０はデータフローの実行可能ランタイム定義（例えば、図４Ｂまたは図６Ｇに示される実行可能ランタイム定義）をコンパイルする（５６０）。
【００４８】
一実施形態によれば、実行モジュール２５０は実行可能ランタイム定義を実行して（５７０）、例えば、ＤＢＭＳ１５０を介して、ターゲットデータベース（例えば、データベース１０５の１つ）に格納された出力販売レポートデータを生成する。他の実施形態では、実行がデータフロー設計システム１００の外部のエンティティから開始することができる。例えば、販売レポートは、年齢、性別、または民族などの人口統計情報に基づいて顧客を編成する。この編成を達成するために、ユーザは人口統計情報を表すデータフィールド、例えば、図４Ａに示す「gender」データフィールドのデータ値に基づいてデータをフィルタリングする構成パラメータ規則を使用することができる。販売レポートに基づいて、ユーザは、大部分の顧客が１８〜２５歳の年齢範囲にあると判断することができる。さらに、ユーザは、数式に対応する構成パラメータを使用して、年齢範囲の顧客から得られる総収入を決定する。したがって、ユーザは、翌月に１８〜２５歳に人気のある自動車を広告することに集中することができる。ユーザがＤＢＭＳ１５０を介してデータフローシステム１００によってアクセス可能な新しいオンラインサーバ上に新しい顧客データを格納する場合、データフローは、実行前に再コンパイルされる必要はない。実行モジュール２５０は実行可能ランタイム定義を実行するときに、任意のランタイムリンク、例えば、図４Ａに示すランタイムリンク４３０を解決する。
【００４９】
設計環境ユーザーインタフェース
例示的なデータフローユーザインタフェース６００を図６Ａ〜図６Ｆに示す。データフロー設計システム１００のユーザは、ユーザインタフェース６００を使用して、マッピングフラグメント、静的要素、および動的要素を用いてデータフローを設計する。
【００５０】
図６Ａは、一実施形態によるデータフロー設計環境ユーザインタフェース６００を示す。ユーザインタフェース６００は図１に示す設計環境１１５の一実施形態であり、「My_Flow」と名付けられたデータフロー６０２、データフロー６０２を表示するための表示領域６０８、およびメニュー６０６のユーザインタフェースを含む。表示領域６０８は、データフロー６０２「Read_Customers」と名付けられた「read data」タイプのマッピングフラグメント６２０を含む。
【００５１】
メニュー６０６は、ユーザによって選択可能な異なるタイプの設計制御アイコンを含む。図６Ａはメニュー６０６内の７つの設計制御アイコンを示すが、他の実施形態ではメニューが追加の、異なる、および／またはより少ない設計制御アイコンを含むことができる。ユーザインタフェースマネージャ２１０はデータフロー６０２を設計するユーザから、クライアント装置１１０を介して、設計制御アイコンの選択を示す入力を受信する。選択に基づいて、データフロー設計システム１００は、対応する機能を実行する。例えば、選択が「run」設計制御アイコン６０４に対応する場合、コンパイルモジュール２４０はデータフロー６０２の実行可能ランタイム定義をコンパイルし、実行モジュール２５０は、実行可能ランタイム定義を実行する。ユーザは、「read data」設計制御アイコン４０４または「target」設計制御アイコン４３４を選択して、「read data」タイプのマッピングスニペットまたは「target」タイプのマッピングスニペットをそれぞれデータフロー６０２に追加する。同様に、ユーザは、「expression」設計制御アイコン４１４、「aggregator」設計制御アイコン６１２、「joiner」設計制御アイコン６１４、または「filter」設計制御アイコン４２４を選択して、「expression」タイプのマッピングスニペット、「aggregator」タイプのマッピングスニペット、「joiner」タイプのマッピングスニペット、または「filter」タイプのマッピングスニペットをそれぞれデータフロー６０２に追加する。
【００５２】
図６Ｂは、一実施形態によるドラッグアンドドロップ機能を示すデータフローユーザインタフェース６００を示す。図６Ａに示すデータフロー６０２と比較して、図６Ｂに示すデータフロー６０２は例えば、ユーザが図６Ａの「expression」設計制御アイコン４１４を選択した結果として、「expression」と名付けられた追加の「expression」タイプマッピングフラグメント６２８を含む。ユーザインタフェースマネージャ２１０は、クライアント装置１１０を介してユーザから「drag and drop」動作を示す入力を受け取る。例えば、ユーザは、マッピングフラグメント６２０のすべてのデータフィールド６２２のグループ、すなわち「firstname」および「lastname」データフィールドを表すマッピングフラグメント６２０「fields」データフィールドグループに対応する領域６２４を選択する。ユーザは領域６２４の選択をマッピングフラグメント６２８に「drag」し、選択をマッピングフラグメント６２２内の領域６２６に「drop」する。したがって、ユーザインタフェースマネージャ２１０は「drag and drop」アクションを記録し、入力情報をデータフローモジュール２２０に提供する。入力情報に基づいて、データフローモジュール２２０は上流マッピングフラグメント６２０と下流マッピングフラグメント６２８との間の動的リンクを生成し、これについては、図６Ｃを参照して以下でさらに説明する。
【００５３】
図６Ｃは、一実施形態による動的リンク６３０を示すデータフローユーザインタフェース６００を示す。図６Ｂに示すデータフロー６０２と比較して、図６Ｂに示すデータフロー６０２は例えば、図６Ｂに示すユーザからの「drag and drop」動作の結果として、追加の動的リンク６３０を含む。動的リンク６３０は、上流マッピングフラグメント６２０「Fields」動的ポートを、下流マッピングフラグメント６２８の入力「From_Read_Customers」動的ポートにマッピングする。「From_Read_Customers」動的ポートは、「Fields」動的ポートのデータフィールドにそれぞれ対応する２つの生成されたポート６３２を含む。
【００５４】
ここで、マッピングフラグメント６２８「Fields」データフィールドグループは、ユーザによって追加された「Trimmed_Strings」動的ポートを含む。「Trimmed_Strings」動的ポートは、マクロとも呼ばれるマクロ構成パラメータを有する。一般に、マクロを有する動的ポートは新しい生成されたポートを生成するために、１つまたは複数の他の動的ポートにプロシージャを適用する。例えば、「Trimmed_Strings」動的ポートのマクロは「From_Read_Customers」動的ポートの各文字列タイプデータフィールドに左トリミング文字列操作を適用する（すなわち、文字列の左側の先頭スペース文字を除去する）。さらに、「Trimmed_Strings」の下の生成されたポートは、「From_Read_Customers」動的ポートの各文字列タイプデータフィールドに対して生成される。したがって、「Trimmed_Strings」動的ポートは２つの生成されたポート６７２、「firstnameT」および「lastnameT」を含み、これらは、それぞれ、「From_Read_Customers」の「firstname」および「lastname」データフィールドの左トリム値を格納する。
【００５５】
図６Ｄはまた、一実施形態によるデータフローユーザインタフェース６００を示す。図６Ｃに示すデータフロー６０２と比較して、図６Ｄに示すデータフローは例えば、ユーザが「read data」設計制御アイコン４０４および「joiner」設計制御アイコン６１４をそれぞれ選択した結果として、「Read_Sales」という名前の追加の「データ読み取り」タイプマッピングフラグメント６３４および「Joiner」という名前の追加の「joiner」タイプマッピングフラグメント６４０を含む。ユーザインタフェースモジュール２１０は、クライアント装置１１０を介してユーザから別の「drag and drop」動作を示す入力を受信する。例えば、ユーザは、マッピングフラグメント６２８の生成されたポート６７２を表すマッピングフラグメント６２８「Trimmed_Strings」動的ポートに対応する領域６４２を選択する。ユーザは領域６４２の選択をマッピングフラグメント６４０に「drag」し、「Master」データフィールドグループ６４６に対応するマッピングフラグメント６４０内の領域６４４に「drop」する。したがって、データフローモジュール２２０は上流マッピングフラグメント６２８と下流マッピングフラグメント６４０との間に動的リンクを生成し、これについては、図６Ｅを参照して以下でさらに説明する。
【００５６】
図６Ｅはまた、一実施形態によるドラッグアンドドロップ機能を示すデータフローユーザインタフェース６００を示す。図６Ｄに示すデータフロー６０２と比較して、図６Ｅに示すデータフローは例えば、図６Ｄに示すユーザからの「drag and drop」動作の結果として、追加の動的リンク６４８を含む。動的リンク６４８は、上流マッピングフラグメント６２８「Trimmed_Strings」動的ポートを、「Master」データフィールドグループ６４６の下の入力動的ポート「From_Expression」にマッピングする。「From_Expression」動的ポートは、「Trimmed_Strings」動的ポートの生成ポートにそれぞれ対応する２つの生成ポート６５０を含む。
【００５７】
ユーザインタフェースモジュール２１０は、クライアント装置１１０を介してユーザからさらに別の「drag and drop」動作を示す入力を受け取る。例えば、ユーザは、「price」、「quantity」、および「Buyer_lname」データフィールド６３６を表すマッピングフラグメント６３４の静的ポートに対応する複数のデータフィールド６５２を選択する。ユーザは複数のデータフィールド６５２の選択をマッピングフラグメント６４０に「drag」し、「Detail」データフィールドグループ６５６に対応するマッピングフラグメント６４０内の領域６５４に選択を「drop」する。したがって、データフローモジュール２２０は上流マッピングフラグメント６３４と下流マッピングフラグメント６４０との間に静的リンクを生成し、これについては、図６Ｆを参照して以下でさらに説明する。
【００５８】
図６Ｆは、一実施形態による静的リンクを示すデータフローユーザインタフェース６００を示す。図６Ｄに示されるデータフロー６０２と比較して、図６Ｆに示されるデータフローは例えば、図６Ｅに示されるユーザからの「drag and drop」アクションの結果として、追加の静的リンク６５８を含む。静的リンク６５８の各々は、上流マッピングフラグメント６３４のデータフィールド６３６の静的ポートを、下流マッピングフラグメント６４０「Detail」データフィールドグループ６５６の下のデータフィールド６６０の静的ポートにマッピングする。データフローモジュール２２０は動的リンクの代わりに静的リンク６５８を生成するが、これは例えば、ユーザが動的ポートまたはデータフィールドグループではなく、複数の静的ポートを選択して、下流のマッピングフラグメントをドロップしたためである。
【００５９】
いくつかの実施形態では、「drag and drop」アクションの下流マッピングフラグメントが新しいポートの作成を可能にしないか、または動的要素をサポートしない。この場合、ユーザが領域の選択を「drop」すると、ユーザインタフェース６００は、ユーザが上流マッピングフラグメントを下流マッピングフラグメントにマッピングするためのランタイムリンクを設計することを可能にするダイアログユーザインタフェースを表示する。ランタイムリンクは例えば、その値がランタイムで供給されるデータフィールドのセットを表す構成パラメータ、データフィールド名に基づく手順、またはＤＢＭＳ１５０を介したデータベーステーブルルックアップの組み合わせであってもよい。
【００６０】
いくつかの実施形態では、マッピングフラグメント６４０が「joiner」タイプのマッピングフラグメントであるため、マッピングフラグメント６４０は「lastname」データフィールドに関連するテーブルの列と、「buyer_lname」（すなわち、買い手のラストネーム）データフィールドに関連するテーブルの別の列とを結合する。これら２つのデータフィールドは類似の情報、例えば、買い手の名前を表し、従って、マッチングのために使用することができる。一般に、「joiner」タイプのマッピングフラグメントは複数のテーブルを（例えば、ソースデータベースから）１つのテーブルにマージし、各マージされたテーブルの全ての列の結合を含む。特に、「joiner」タイプのマッピングフラグメントは、各マージされたテーブルの少なくとも１つの列と一致する。一致した列は「joiner」タイプのマッピングフラグメントの出力データフィールドグループ、例えば、「output」データフィールドグループ６７０（例えば、明瞭にするために折り畳まれた図で図６Ｆに示される）に示される。
【００６１】
図６Ｇは、一実施形態による、図６Ｆに示されるデータフロー６０２のコンパイルされた実行可能ランタイム定義を示す。コンパイルモジュール２４０は、動的リンク６３０を、それぞれが上流マッピングフラグメント６２０の静的ポートを下流マッピングフラグメント６２８の静的ポートにマッピングする一組の２つの静的リンク６６２で置き換える。さらに、コンパイルモジュール２４０は、動的リンク６４８を、それぞれが上流マッピングフラグメント６２８の静的ポートを下流マッピングフラグメント６４０の静的ポートにマッピングする一組の２つの静的リンク６６４で置き換える。コンパイルモジュール２４０は動的ポートおよび対応するデータフィールドグループを除去し、例えば、動的ポート「From_Read_Customers」および「Trimmed_Strings」は、マッピングフラグメント６２８から除去される。さらに、動的ポート「From_Expression」およびデータフィールドグループ「Output」、「Master」および「Detail」は、マッピングフラグメント６４０から除去される。他のマッピングフラグメントからの「Fields」データフィールドグループも同様に除去される。静的リンク６５８は変更されないことに留意されたい。
【００６２】
図７は、一実施形態によるユーザインタフェース６００内のリンクされたアイコンを示す。ユーザインタフェース６００は、図６Ｃに示すデータフロー６０２のアイコンビューを含む。アイコンビューはデータフロー６０２の各マッピングフラグメントのアイコンを表示するが、マッピングフラグメントのデータフィールドは表示しない。特に、マッピングフラグメント６２０およびマッピングフラグメント６２８は、動的リンク６３０によってリンクされる「read data」アイコン７００および「expression」アイコン７１０によって表される。アイコンビューは、データフロー６０２の縮小ビューをユーザに提示する。多数のマッピングフラグメントおよびデータフィールドを含むデータフローの場合、縮小ビューは、データフローの詳細によって混乱しないユーザフレンドリなユーザインタフェース６００を提供する。
【００６３】
一実施形態では、データフロー設計システム１００がデフォルトでユーザインタフェース６００内のアイコンビューにデータフローを表示する。したがって、データフローに追加されたマッピングフラグメントは、対応するアイコンによって表される。ユーザインタフェース６００はユーザがアイコンビュー（すなわち、図７に示されるような）とレギュラービュー（すなわち、図６Ｃに示されるような）との間で切り替えることを可能にするユーザプリファレンスを含む。
【００６４】
まとめ
本発明の実施形態の上述の説明は例示の目的で提示されたものであり、網羅的であること、または本発明を開示された厳密な形態に限定することを意図するものではない。当業者は、上記の開示に照らして多くの修正および変形が可能であることを理解することができる。
【００６５】
この説明のいくつかの部分は、情報に対する動作のアルゴリズムおよび記号表現に関して本発明の実施形態を説明する。これらのアルゴリズムの説明および表現は、データ処理技術の当業者によって一般的に使用され、彼らの作業の内容を他の当業者に効果的に伝える。これらの動作は機能的に、計算的に、または論理的に説明されているが、コンピュータプログラムまたは等価の電気回路、マイクロコードなどによって実施されると理解される。さらに、一般性を失うことなく、これらの動作の配置をモジュールと呼ぶことが便利な場合もある。説明された動作およびそれらの関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せで具現化されてもよい。
【００６６】
本明細書で説明されるステップ、動作、またはプロセスのいずれも、単独で、または他のデバイスと組み合わせて、１つまたは複数のハードウェアまたはソフトウェアモジュールで実行または実装することができる。一実施形態では、ソフトウェアモジュールが、コンピュータプログラムコードを記録したコンピュータ可読非一時的媒体を含むコンピュータプログラム製品で実装され、コンピュータプログラムコードは説明されたステップ、動作、またはプロセスのいずれかまたはすべてを実行するためにコンピュータプロセッサによって実行することができる。
【００６７】
本発明の実施形態は、本明細書で説明する計算プロセスによって生成される製品にも関する。そのような製品はコンピューティングプロセスから生じる情報を含むことができ、その情報は、非一時的で有形のコンピュータ可読記憶媒体に格納され、本明細書で説明されるコンピュータプログラム製品または他のデータ組合せの任意の実施形態を含むことができる。
【００６８】
最後に、本明細書で使用される言語は主に、読みやすさおよび説明の目的のために選択されており、本発明の主題を描写または限定するために選択されていない場合がある。したがって、本発明の範囲は、この詳細な説明によってではなく、むしろ、本明細書に基づく出願に基づいて発行される任意の特許請求の範囲によって制限されることが意図される。したがって、本発明の実施形態の開示は以下の特許請求の範囲に記載される本発明の範囲を例示することを意図するものであり、限定するものではない。
【図１】
2019518275.tif 000003
【図２】
2019518275.tif 000004
【図３Ａ】
2019518275.tif 000005
【図３Ｂ】
2019518275.tif 000006
【図４Ａ】
2019518275.tif 000007
【図４Ｂ】
2019518275.tif 000008
【図５】
2019518275.tif 000009
【図６Ａ】
2019518275.tif 000010
【図６Ｂ】
2019518275.tif 000011
【図６Ｃ】
2019518275.tif 000012
【図６Ｄ】
2019518275.tif 000013
【図６Ｅ】
2019518275.tif 000014
【図６Ｆ】
2019518275.tif 000015
【図６Ｇ】
2019518275.tif 000016
【図７】
2019518275.tif 000017
【図８】
2019518275.tif 000018
【図９】
2019518275.tif 000019
【図１０Ａ】
2019518275.tif 000020
【図１０Ｂ】
2019518275.tif 000021
【国際調査報告】
2019518275.tif 000022