(57)【要約】  データ処理システムを動作する方法が提供される。データ処理システムは、記録済み構成テンプレート、ならびに、少なくとも第１のコントロールおよび第２のコントロールを備え、該方法は、構成テンプレートに従って、第１のコントロールのユーザインターフェース部に基づいて第１のユーザインターフェースをレンダリングすることと、第１のユーザインターフェースを通して第１のユーザ入力を受信することと、少なくとも一部分が構成テンプレート、および第１のコントロールの動作部に基づいて第２のコントロールを特定することと、特定された第２のコントロールのユーザインターフェース部に基づいて第２のユーザインターフェースをレンダリングすることと、第２のユーザインターフェースを通して第２のユーザ入力を受信することと、を含む。
2018520452.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのコンピュータプログラムが記録済み構成テンプレートに従って少なくとも一部分が定義されるユーザインターフェースを介して構成される、データ処理システムを動作する方法であって、前記データ処理システムは、実行時間データと、少なくとも第１の構成コントロールおよび第２の構成コントロールを含む複数の構成コントロールとを備え、前記第１の構成コントロールおよび前記第２の構成コントロールは少なくともユーザインターフェース部および動作部を備え、
前記方法は、
前記構成テンプレートに従って前記第１の構成コントロールの前記ユーザインターフェース部に基づいて第１のユーザインターフェースをレンダリングすることと、
前記第１のユーザインターフェースを通して第１のユーザ入力を受信することであって、前記第１のユーザ入力は前記少なくとも１つのプログラムの前記インスタンスに構成情報を提供する、受信することと、
少なくとも一部分が前記構成テンプレートに基づいて、少なくとも一部分が前記第１の構成コントロールの前記動作部の少なくとも一部分の値を求めることに基づいて、前記第２の構成コントロールを特定することであって、前記値を求めることは少なくとも一部分が前記実行時間データに基づいている、特定することと、
特定された前記第２の構成コントロールの前記ユーザインターフェース部に基づいて第２のユーザインターフェースをレンダリングすることと、
前記第２のユーザインターフェースを通して第２のユーザ入力を受信することであって、前記第２のユーザ入力は前記少なくとも１つのプログラムの前記インスタンスに構成情報を提供する、受信することと、
によって、前記ユーザインターフェースを動的に生成することで、前記少なくとも１つのプログラムのインスタンスをユーザが構成できるようにすること、を含む、方法。
【請求項２】
前記少なくとも１つのプログラムの前記インスタンスに対する前記構成情報に従って前記少なくとも１つのプログラムの前記インスタンスを実行することをさらに含む、請求項１に記載の方法。
【請求項３】
少なくとも一部分が前記実行時間データに基づいている前記第１の構成コントロールの前記動作部の少なくとも一部分の値を求めることは、前記構成テンプレートの少なくとも１つのパラメータの値を求めることを含む、請求項１に記載の方法。
【請求項４】
少なくとも一部分が前記実行時間データに基づいている前記第１の構成コントロールの前記動作部の少なくとも一部分の値を求めることは、少なくとも１つの環境変数の値を求めることを含む、請求項１に記載の方法。
【請求項５】
前記実行時間データは実行可能コンピュータプログラムコードを実行する際の１つまたは複数の結果を含む、請求項１に記載の方法。
【請求項６】
前記少なくとも１つのプログラムはデータ処理言語によって定義される、請求項１に記載の方法。
【請求項７】
前記少なくとも１つのプログラムはデータフローグラフを含む、請求項１に記載の方法。
【請求項８】
前記データフローグラフの第１のパラメータの値は前記第１のユーザ入力に基づいて判断され、前記データフローグラフの第２のパラメータの値は前記第２のユーザ入力に基づいて判断される、請求項７に記載の方法。
【請求項９】
前記データフローグラフの前記第１のパラメータの前記値は、前記第１のユーザインターフェースの少なくとも１つのユーザインターフェース要素と、前記データフローグラフの前記第１のパラメータとの間の所定のマッピングに基づいて判断される、請求項８に記載の方法。
【請求項１０】
前記少なくとも１つのプログラムはデータフローグラフの部分グラフを含む、請求項１に記載の方法。
【請求項１１】
前記第２の構成コントロールを特定することはさらに前記第１のユーザ入力に基づいている、請求項１に記載の方法。
【請求項１２】
前記第２の構成コントロールを特定することは少なくとも１つのルックアップを行う結果にさらに基づいている、請求項１に記載の方法。
【請求項１３】
前記第１の構成コントロールの前記動作部は前記第１のユーザインターフェースを通して提供されるユーザ入力に応じて値が求められる、請求項１に記載の方法。
【請求項１４】
ユーザが少なくとも１つのコンピュータプログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを作成する方法であって、前記方法は、
コンピューティングシステムによって、少なくとも一部分がユーザ入力に基づいて、
第１の構成コントロールを前記インターフェースに関連付けることであって、前記第１の構成コントロールは、少なくとも動作部と、第１のユーザインターフェースを定義するユーザインターフェース部とを備え、前記第１の構成コントロールは、少なくとも一部分が前記第１のユーザインターフェースを通して受信されるユーザ入力に基づいて前記少なくとも１つのプログラムに対して構成情報を定義するように構成される、関連付けることと、
第２の構成コントロールを前記インターフェースに関連付けることであって、前記第２の構成コントロールは、少なくとも動作部と、第２のユーザインターフェースを定義するユーザインターフェース部とを備え、前記第２の構成コントロールは、少なくとも一部分が前記第２のユーザインターフェースを通して受信されるユーザ入力に基づいて前記少なくとも１つのプログラムに対して構成情報を定義するように構成される、関連付けることと、
少なくとも一部分が実行時間データに基づいて、前記第１のユーザインターフェースを通して受信される前記ユーザ入力が前記第２のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも１つのインスタンスを定義するデータを記録することと、を含む、方法。
【請求項１５】
前記少なくとも１つのプログラムはデータフローグラフを含む、請求項１４に記載の方法。
【請求項１６】
ユーザ入力に基づいて、前記データフローグラフの第１のパラメータの値を前記第１のユーザ入力に関連付けることと、前記データフローグラフの第２のパラメータの値を前記第２のユーザ入力に関連付けることと、をさらに含む、請求項１５に記載の方法。
【請求項１７】
前記少なくとも１つのプログラムに対して構成情報を記憶することは、前記データフローグラフの１つまたは複数の構成要素に関連付けられた１つまたは複数のパラメータの値を設定することを含む、請求項１５に記載の方法。
【請求項１８】
前記第１のユーザインターフェースを通して受信された前記ユーザ入力は第３のユーザインターフェースのレンダリングを引き起こすことである少なくとも１つのインスタンスを定義することをさらに含む、請求項１４に記載の方法。
【請求項１９】
前記少なくとも１つのプログラムはデータフローグラフの部分グラフを含む、請求項１４に記載の方法。
【請求項２０】
前記第１のユーザインターフェースを通して受信された前記ユーザ入力は前記第２のユーザインターフェースのレンダリングを引き起こすことである少なくとも１つのインスタンスを定義するデータを記録することは、少なくとも１つのルックアップファイルを定義することを含む、請求項１４に記載の方法。
【請求項２１】
前記第１のユーザインターフェースを通して受信された前記ユーザ入力は前記第２のユーザインターフェースのレンダリングを引き起こすことである少なくとも１つのインスタンスを定義するデータを記録することは、前記第１の構成コントロールの前記動作部内のデータを記録することを含む、請求項１４に記載の方法。
【請求項２２】
前記第１の構成コントロールの前記動作部の少なくとも一部分は、前記第１のユーザインターフェースを通して提供されるユーザ入力に応じて値が求められるように構成される、請求項１４に記載の方法。
【請求項２３】
実行される時、コンピュータにコンピュータプログラムを構成する方法を行わせる命令を含む、少なくとも１つのコンピュータ可読媒体であって、前記方法は、
第１のユーザインターフェースを通して受信される情報に基づいて前記プログラムを記録することであって、前記プログラムは１つまたは複数の構成パラメータを受け入れる、記録することと、
ユーザが前記プログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを記録することと、、
ユーザが前記プログラムのインスタンスを構成できるように構成ユーザインターフェースを動的に生成することと、
を含み、
前記構成テンプレートを記録することは、
それぞれがユーザインターフェース要素を含む複数の構成コントロールを選択すること、
選択された前記構成コントロールの前記ユーザインターフェース要素と、前記１つまたは複数の構成パラメータの構成パラメータとの間のマッピングを記録すること、および、
前記複数の構成コントロールの少なくとも一部の前記ユーザインターフェース要素のレンダリングの条件付き順序を記録すること、
によって、第２のユーザインターフェースを通して受信される情報に基づいており、
前記構成ユーザインターフェースを動的に生成することは、
前記複数の構成コントロールの第１の構成コントロールに関連付けられた前記構成ユーザインターフェースにおいてユーザインターフェース要素をレンダリングすること、
前記第１の構成コントロールの前記ユーザインターフェース要素を介してユーザ入力を受信すること、および、
少なくとも一部分が前記ユーザ入力および前記マッピングに基づいて少なくとも１つの構成パラメータの値を記憶し、前記複数の構成コントロールの第２の構成コントロールのユーザインターフェース要素に基づいて前記構成ユーザインターフェースを修正することであって、前記第２の構成コントロールは少なくとも一部分が前記ユーザ入力に基づいて選択される、修正すること、
によって、動的に生成する、コンピュータ可読媒体。
【請求項２４】
前記少なくとも１つのプログラムはデータフローグラフを含む、請求項２３に記載の方法。
【請求項２５】
前記複数の構成コントロールの少なくとも一部の前記ユーザインターフェース要素のレンダリングの前記条件付き順序を記録することは、１つまたは複数のルックアップファイルを定義することを含む、請求項２３に記載の方法。
【請求項２６】
前記条件付き順序は、前記複数の構成コントロールの少なくともユーザインターフェース要素を介して受信されるユーザ入力に基づいている、請求項２３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  データフローグラフなどの実行可能プログラムは、プログラムの実行の態様を構成する１つまたは複数のパラメータを含むことができる。例えば、データファイルを読み取るプログラムは、データファイルが記憶される場所を指示するための値が供給可能であるパラメータを含むことができる。プログラムが実行される前に、パラメータの値は、指定場所がデータファイルを読み取るためにアクセスされるように供給できる。同プログラムは、該プログラムを２回目に実行する時にユーザがパラメータの異なる値を供給することによって、異なるデータファイルを読み取る間に再び実行されてよい。
【０００２】
[0002]  いくつかの実行可能プログラムは、一般に、タスクを指定するように書き込まれた後、所与のシナリオのタスクを行うように「パラメータ化する」ことによって構成可能である。プログラムを「パラメータ化する」ことは、シナリオに対応するプログラムにパラメータの値を供給することを必然的に伴う。このようなプログラムは、「汎用プログラム」と呼ばれる時がある。例えば、データファイルをソートするための汎用プログラムは、入力ファイル場所、出力ファイル場所、データ用記録フォーマット、およびソートキーによってパラメータ化されてよい。これらのパラメータの適した値を供給することによって、汎用プログラムは、データをソートしその結果をファイルに保存することが所望される任意のインスタンスにおいて実行可能である。
【０００３】
[0003]  汎用プログラムは、ユーザが、汎用プログラムのパラメータの適切な値を指定できるようにするユーザインターフェースの使用によって、パラメータ化できる。場合によっては、汎用プログラムをパラメータ化するユーザは、汎用プログラムを書き込むユーザと異なっている場合がある。例えば、汎用プログラムの作成は、汎用プログラムを実行するためのパラメータの選択より高いレベルの技術的熟練を必要とする場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
[0004]  いくつかの態様に従って、データ処理システムを動作する方法が提供される。このシステムにおいて、少なくとも１つのコンピュータプログラムが、記録済み構成テンプレートに従って少なくとも一部分が定義されるユーザインターフェースを介して構成される。データ処理システムは、実行時間データと、少なくとも第１の構成コントロールおよび第２の構成コントロールを含む複数の構成コントロールとを備え、第１の構成コントロールおよび第２の構成コントロールは少なくともユーザインターフェース部および動作部を備える。該方法は、構成テンプレートに従って、第１の構成コントロールのユーザインターフェース部に基づいて第１のユーザインターフェースをレンダリングすることと、第１のユーザインターフェースを通して第１のユーザ入力を受信することであって、第１のユーザ入力は少なくとも１つのプログラムのインスタンスに構成情報を提供する、受信することと、少なくとも一部分が構成テンプレートに基づき、少なくとも一部分が第１の構成コントロールの動作部の少なくとも一部分の値を求めることに基づいて、第２の構成コントロールを特定することであって、この値を求めることは少なくとも一部分が実行時間データに基づいている、特定することと、特定された第２の構成コントロールのユーザインターフェース部に基づいて第２のユーザインターフェースをレンダリングすることと、第２のユーザインターフェースを通して第２のユーザ入力を受信することであって、第２のユーザ入力は少なくとも１つのプログラムのインスタンスに構成情報を提供する、受信することと、によって、ユーザインターフェースを動的に生成することで、少なくとも１つのプログラムのインスタンスをユーザが構成できるようにすることを含む。
【０００５】
[0005]  いくつかの態様によると、ユーザが少なくとも１つのコンピュータプログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを作成する方法が提供される。該方法は、コンピューティングシステムによって、少なくとも一部分がユーザ入力に基づいて、第１の構成コントロールをインターフェースに関連付けることであって、第１の構成コントロールは、少なくとも動作部と、第１のユーザインターフェースを定義するユーザインターフェース部とを備え、第１の構成コントロールは、少なくとも一部分が第１のユーザインターフェースを通して受信されるユーザ入力に基づいて少なくとも１つのプログラムに対して構成情報を定義するように構成される、関連付けることと、第２の構成コントロールをインターフェースに関連付けることであって、第２の構成コントロールは、少なくとも動作部と、第２のユーザインターフェースを定義するユーザインターフェース部とを備え、第２の構成コントロールは、少なくとも一部分が第２のユーザインターフェースを通して受信されるユーザ入力に基づいて少なくとも１つのプログラムに対して構成情報を定義するように構成される、関連付けることと、少なくとも一部分が実行時間データに基づいて、第１のユーザインターフェースを通して受信されるユーザ入力が第２のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも１つのインスタンスを定義するデータを記録することと、を含む。
【０００６】
[0006]  いくつかの態様によると、少なくとも１つのコンピュータ可読媒体が提供される。該コンピュータ可読媒体は、実行される時、コンピュータにコンピュータプログラムを構成する方法を行わせる命令を含む。該方法は、第１のユーザインターフェースを通して受信される情報に基づいてプログラムを記録することであって、プログラムは１つまたは複数の構成パラメータを受け入れる、記録することと、ユーザがプログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを記録することと、ユーザがプログラムのインスタンスを構成できるように構成ユーザインターフェースを動的に生成することと、を含み、構成テンプレートを記録することは、それぞれがユーザインターフェース要素を含む複数の構成コントロールを選択すること、選択された構成コントロールのユーザインターフェース要素と、１つまたは複数の構成パラメータの構成パラメータとの間のマッピングを記録すること、および、複数の構成コントロールの少なくとも一部のユーザインターフェース要素のレンダリングの条件付き順序を記録すること、によって、第２のユーザインターフェースを通して受信される情報に基づいており、構成ユーザインターフェースを動的に生成することは、複数の構成コントロールの第１の構成コントロールに関連付けられた構成ユーザインターフェースにおいてユーザインターフェース要素をレンダリングすること、第１の構成コントロールのユーザインターフェース要素を介してユーザ入力を受信すること、および、少なくとも一部分がユーザ入力およびマッピングに基づいて少なくとも１つの構成パラメータの値を記憶し、複数の構成コントロールの第２の構成コントロールのユーザインターフェース要素に基づいて構成ユーザインターフェースを修正することであって、第２の構成コントロールは少なくとも一部分がユーザ入力に基づいて選択される、修正することによって、動的に生成する。
【０００７】
[0007]  前述は本発明の非限定的な要約であり、これは添付の特許請求の範囲によって定義される。
【０００８】
[0008]  以下の図を参照して、さまざまな態様および実施形態について説明する。図は、必ずしも一定の尺度で描かれる訳ではないことは理解されるべきである。図面では、さまざまな図に示されるそれぞれの同一のまたはほぼ同一の構成要素が同様の数字で表される。明確にするために、全ての構成要素が全ての図面において標示されない場合がある。
【図面の簡単な説明】
【０００９】
【図１】[0009]いくつかの実施形態に従って、１つまたは複数の構成コントロールを使用して汎用プログラムを構成するための例示のプロセスを示す図である。
【図２】[0010]いくつかの実施形態に従って、構成コントロールの例示の構成要素を示す図である。
【図３Ａ】[0011]いくつかの実施形態に従って、条件付きで選択されるシーケンスにおける構成コントロールの例示の使用を示す図である。
【図３Ｂ】いくつかの実施形態に従って、条件付きで選択されるシーケンスにおける構成コントロールの例示の使用を示す図である。
【図４】[0012]いくつかの実施形態による、データフローグラフの構成を示す機能ブロック図である。
【図５】[0013]いくつかの実施形態による、メタデータリポジトリに記憶される構成コントロールおよび汎用データフローグラフを示す図である。
【図６】[0014]本明細書に説明される技法に従って、ユーザが汎用プログラムを構成するための例示の開発プロセスを示す図である。
【図７】[0015]本発明の態様が実装可能であるコンピューティングシステム環境の一例を示す図である。
【発明を実施するための形態】
【００１０】
[0016]  本発明者は、データ処理システム、および、複雑なプログラムによって制御される他のシステムの効率がそういった複雑なプログラムのパラメータ化を簡易にする技法によって改善可能であることを認識しかつ理解している。このような効率は、異なる人々が、異なるスキルセットによって、異なる時間に異なるタイプの入力を行うことができるようにする技法によって実現可能である。熟練したプログラマは、例えば、プログラムを実行するコンピュータ化システムと１つまたは複数のデータ記憶装置との間の対話を定義することができる。これらの対話は、汎用プログラムとしてキャプチャ可能である。汎用プログラムを企業内で十分に有用にするために、ビジネスアナリストといった、ビジネスの必要性に精通している別のユーザは、プログラムの実行時に使用されるパラメータの値を指定することができる。例えば、ビジネスアナリストは、どのデータソースにアクセスするか、データソース内のどのフィールドにアクセスするか、データソースからアクセスしたデータをどのようにソートするか、および／またはデータに関して行われるべき１つまたは複数の変換などのパラメータの値を指定することができる。
【００１１】
[0017]  しかしながら、ビジネスアナリストは、本来ならばビジネスアナリストが所望のビジネスロジックを実装するためにプログラムを書き込むことができると思われるプログラミングの詳細な知識を欠如している場合がある。それに従って、いくつかのシナリオでは、プログラマは、汎用のやり方でプログラムを書き込む場合があり、そうすることで、複数のシナリオのいずれかにおいて該プログラムを作動させることができるようにする。そのプログラムは、複数の構成パラメータを有することができ、それによって、構成パラメータに対する値が指定される時、プログラムは本来ならば特定のシナリオに対してカスタマイズされた動作を行うように実行する。例えば、データソース場所を指定するパラメータの値に基づいて、適切なデータソースにアクセスすることができる。
【００１２】
[0018]  ビジネスアナリスト、またはプログラムの他のユーザは、適したユーザインターフェースにアクセスするなどによって、所与のシナリオに対して構成パラメータの値を指定することができる。このように、ビジネスアナリスト、またはプログラミングに精通していない場合がある他の人は、特定的なビジネスシナリオに対するプログラムを構成できる。いくつかの実施形態では、プログラムに対するテンプレートは、ビジネスアナリストが構成パラメータの値を容易に入力することができるようにするために定義可能である。テンプレートは、汎用プログラムの詳細に精通しているプログラマによって作成されてよく、ユーザ（例えばビジネスアナリスト）によって入力された値と、プログラムのパラメータとの間のマッピングを供給することができる。プログラムを所望のやり方で制御するために値を入力する際にビジネスアナリストを支援するために、テンプレートは、所望の機能を果たすようにプログラムを構成するパラメータの値を提供するためにビジネスアナリストがプログラムの動作の詳細な知識を必要としないようにそれぞれのパラメータが制御することを指示する情報を収めることができる。テンプレートのこれらの態様および／または他の態様は、少なくとも一部分がテンプレートによって定義可能であるユーザインターフェースを介してビジネスアナリストに提示可能である。
【００１３】
[0019]  アナリストが構成パラメータの値を提供できるように、テンプレートの生成を簡易にするために、より直観的インターフェースを提供するために、テンプレートによって、別個に定義される構成コントロールに基づいてアナリストに提示されるインターフェースの態様が動的に生成可能である。構成コントロールは、例えば、プログラマによって定義されてよい。代替的には、構成コントロールのセットは、あらかじめ定義されたおよび／またはユーザ定義のコントロールを含むことができる。いくつかの実施形態では、例えば、テンプレートは、ユーザインターフェース要素をユーザに動的に提示可能である。それぞれのユーザインターフェース要素は、インターフェースを通してユーザによって入力された１つまたは複数の値をプログラムの構成パラメータと関連付ける構成コントロールと関連付けられてよい。いくつかの実施形態において、構成コントロールのセットは、あらかじめ定義されたコントロールから成ることができ、それによって、プログラムを構成するためにユーザ入力を整理する「テンプレート」はあらかじめ定義されたコントロールのセットを選択することによって生成可能とする。
【００１４】
[0020]  本明細書において使用されるように、構成コントロールは、呼び出される時コンピュータの実行を制御する命令のセットまたは他の情報に言及することができる。これらの構成コントロールは、構成するために使用可能であるプログラムについての情報に頼ることなくプログラムされてよい。これらの構成コントロールは、種々の汎用プログラムに対する種々の構成プロセスを定義することができる種々のテンプレートが種々のシナリオにおいて同じコントロールを利用できるように、再利用可能である。特定の構成アクティビティは頻繁に行われてよく（例えば、ファイルを選択する）、それに従って、「共通の」構成コントロール（または単に「共通のコントロール」）は、関連付けられた構成アクティビティが行われるべきである任意の適したシナリオで使用可能であるように定義されてよい。このように、共通のコントロールは、テンプレートによって定義された構成プロセスの少なくとも一部分の定義をモジュール化することができる。
【００１５】
[0021]  いくつかの実施形態によると、構成データは、汎用プログラムを構成するために構成コントロールを使用することによって生じる場合がある複雑性にかかわらず、汎用プログラムの構成を可能にするために構成コントロールと併せて使用されてよい。例えば、汎用プログラムの１パラメータにとって適切である値の幅は、プログラムの１つまたは複数の他のパラメータに対して指定された値に左右される場合がある。同様に、プログラムを構成するための値が必要とされるパラメータは、他のパラメータに対して指定された値に左右される場合がある。例えば、汎用プログラムは、データファイルを読み取った後、データを使用したアクションを行うことができる。汎用プログラムは、データファイル場所をパラメータ化するように構成されてよいが、フラットファイル用の記録フォーマット、ＸＭＬドキュメント用のスキーマなど、データファイルの他の態様に関連している既定のパラメータのセットを使用することは、プログラムを実行させるためにどのように構成可能であるかを限定する場合がある。例えば、記録フォーマットを指定するためのパラメータを提供することは、データファイルがフラットファイルである時に必要である場合があるが、データファイルがＸＭＬドキュメントである時には無関係であるかさらには不正確である場合がある。別の例として、記録当たり３つのフィールドを有するデータソースを指定することは、データソースを指定するパラメータの値が１０のデータフィールドを有するデータソースを指示する場合とは、動作するフィールドを指定するパラメータに対する可能な値を異なる幅でもたらすことができる。代替的には、プログラムが記憶済みのデータに対して結果を比較するプログラムの一部をバイパスすべきであることをパラメータの値が指示する場合、記憶済みのデータのソースを指定するユーザ入力を要請すべき理由がない可能性がある。
【００１６】
[0022]  それに従って、構成パラメータの値が得られるユーザインターフェースを生成する際に使用される構成コントロールのセットを指定することと併せて、構成データは記録されてよい。この構成データは、入力パラメータの値をリクエストするためにどの構成コントロールが使用されるか、および／または、入力パラメータの値をリクエストするためにそれらの構成コントロールが使用される順序が指定可能であるかなどの事を指示することができる。この実行の順序は、条件付きであってよく、先に、他の構成コントロールから受信された構成パラメータの値といった、ユーザから受信された入力に基づくことができる。同様に、ユーザインターフェース要素は先に受信された値に基づいて構成されてよい。
【００１７】
[0023]  いくつかの実施形態によると、構成コントロールは、１つまたは複数のパラメータ、変数、引数の値を求める、および／または、実行時間データに基づいて１つまたは複数のプログラムを実行することができる。構成コントロールをユーザに提示するデータ処理システムは、（例えば、環境パラメータ、データファイル、および／または実行可能プログラムによって）実行時間で定義されたデータを含むことができ、構成コントロールは、１つまたは複数のパラメータ、変数、引数の値を求めるように、および／またはかかる実行時間データに基づいて１つまたは複数のプログラムを実行するように構成されてよい。それぞれの構成コントロールは、それ自体の範囲に、構成コントロールの１つのインスタンス内で求められた名前付きパラメータの値が、同じ構成コントロールの別のインスタンスにおいて値が求められる時、同名前付きパラメータと異なる結果の値まで求めることができるようにしてよい。例えば、構成コントロールは、値が環境変数に応じて表現される構成パラメータを含むことができる。構成コントロールが構成パラメータの値を求める時、環境変数の現在の値を判断し、それに応じて構成パラメータの値を求める。同じ構成コントロールが同じ構成プロセスの異なる部分において（すなわち、同じ汎用プログラムの同じインスタンスを構成する際に）後に使用される場合、それぞれのケースにおける構成パラメータの値は、それ自体の範囲内で求められてよく、従って、それぞれのケースにおいて異なる値まで求めることができる。構成パラメータは、同じ構成コントロール内の他のパラメータ、および／または構成テンプレート内の他のパラメータに応じて表現されてよい。
【００１８】
[0024]  それに従って、本明細書に説明される技術の態様は、構成インターフェースを生じさせるために組み合わせ可能である構成コントロールの使用に関する。本発明者は、汎用プログラムを構成するための動的インターフェースが動作ロジックに加えてインターフェース要素を提供することができる構成コントロールを使用してインターフェースをビルドすることによって効率的に提供可能であることを認識している。動作ロジックは、値が求められる時、構成インターフェースをどのように提示するかおよび／または適応させるかを判断することができる、静的コードまたは動的（例えば実行可能）コードを含むことができる。そのような適応は、例えば、構成インターフェースによって提示されるユーザインターフェースを初期化するおよび／または更新することを伴う場合がある。代替的にはまたはさらに、それらの適応は、ユーザによって構成インターフェースに提供された入力を検証することなどの他のタスクを含むことができる。
【００１９】
[0025]  さらに、ユーザによって構成コントロールに入力された値は、コントロールによって提供されたコンテキストに基づいて汎用プログラムの適切なパラメータにマッピングされてよい。このようなマッピングは、構成コントロールのユーザインターフェース要素を通して収集された値を汎用プログラムの特定的なパラメータにリンクする「アダプタ」によって指定されてよい。上で論じられたように、「共通の」構成コントロールは、プログラム構成タスクの幅に対する広範な適用性を有する、再利用可能なインターフェース構成要素を表すことができ、アダプタはこのような使用をサポートすることができる。しかしながら、いくつかの実施形態が既定の機能性を果たす構成コントロールを利用することができるため、構成コントロール全てが汎用であるまたは再利用可能である必要性はない。
【００２０】
[0026]  実例として、汎用プログラムを構成するためのインターフェースは、ファイル選択インターフェースを提供するユーザインターフェース要素と関連付けられた構成コントロールによって生成されてよい。記録フォーマットの選択といった、ファイルを選択することに関連付けられたタスクのための、および選択されたファイルのためのＸＭＬスキーマの選択のためのインターフェースを提供する追加の構成コントロールが利用可能であってよい。ユーザは、第１の構成コントロールのユーザインターフェース要素を使用してファイルを選択することができ、その後、選択されたファイルのタイプを判断するためのユーザ入力に基づくロジックを実行する。ファイルのタイプに基づいて、追加の構成コントロールのうちの１つは選択されてよく、次いで、ユーザがファイルタイプに従ってさらなる構成情報を提供することができる（例えば、フラットファイルの場合に記録フォーマットを選択する、またはＸＭＬドキュメントの場合にＸＭＬスキーマを選択する）ように提示可能である。このように、汎用プログラムは、汎用プログラムがユーザによってどのように構成可能であるかにおける柔軟性をより大きくするように、動的に選択されたパラメータ値のセットを使用して構成されてよい。
【００２１】
[0027]  いくつかの実施形態によると、構成コントロールは、少なくとも部分的に、ユーザインターフェース内に提示する後続の構成コントロールを指定することができる。例えば、上の例では、ファイル選択構成コントロールは、記録フォーマットを選択するためにユーザに提示される構成コントロールを特定することができる。当初の構成コントロールは、例えば、提示されるべき後続の構成コントロールを特定するロジックを実行する（またはロジックを実行させる）ことができる。動的に判断された条件に基づいて構成コントロールをこうして特定することは、後続の構成コントロールが特定されるように、ルックアップファイルにアクセスすること、プログラムを実行することなどによって、任意の適したやり方で行われてよい。
【００２２】
[0028]  いくつかの実施形態では、「ウィザード」はプログラムと併せて提供可能である。ウィザードは、構成コントロールのシーケンスを選択することによってユーザインターフェースを生成するプログラムであってよい。ウィザードは、ディスプレイまたは他のユーザインターフェース機構上に、少なくとも一部分が選択された構成コントロールによって定義されたページをうまく提示することができる。ウィザードは、ウィザードが実行される時に選択されたコントロールの実行の順序を動的に判断することができる構成データによって符号化されてよい、またはこれにアクセスしてよい。ページの順序は、ユーザに提示する前に選択されてよい、および／または、ユーザ入力、またはシーケンスの提示中に生じる場合がある他のイベントに基づいて動的に選択されてよい。例えば、ページの順序は、ユーザインターフェースを通して受信された値に左右される場合がある。同様に、ユーザインターフェース要素は、受信された値に基づいてカスタマイズされてよい。いくつかの実施形態によると、構成コントロールは、少なくとも一部分が、ウィザードによって実行されるロジックに、およびウィザードによって提示されている構成コントロールに提供される入力に基づいて選択可能である。例えば、ウィザードは、ユーザによってアクティブにされる時にアクティブにされたナビゲーション要素に、およびウィザードによって提示されている構成コントロールに提供される入力に基づいて、構成コントロールを特定するロジックを実行する（例えば方向ボタンの形態の）ユーザインターフェースにおいてナビゲーション要素を提供することができる。これによって、例えば、ウィザードに、先に提示された構成コントロールによって実行されるロジックに基づいて選定される構成コントロールをうまく提示可能とすることができる。ウィザードは、ウィザードによって定義される、任意の数の構成コントロールおよび／または任意の数の他のコントロールを含むことができる。
【００２３】
[0029]  いくつかの実施形態によると、ウィザードは、ウィザードによって定義される、任意の数の構成コントロールおよび／または任意の数の他のコントロールに基づいて、構成インターフェースを提示することができる。例えば、ウィザードは、構成コントロールによって定義されるユーザインターフェース、および、構成インターフェース上に、ユーザによってアクティブにされる時、ユーザがウィザードによって提示されるページのシーケンスを通して前進するおよび／または後退することができるようにするナビゲーション要素を提供する追加のユーザインターフェース要素の一部分を提示することができる。これらのナビゲーション要素は、構成コントロールからの要素の提示とは違って、ウィザードによって提示可能である。さらに、ユーザは、提示された構成コントロールによって提供されるもの以外の追加の機能を果たす、かかる提示された要素（例えばナビゲーション要素）と対話することができる。
【００２４】
[0030]  下記に従って、動的に選択された構成コントロールを使用して汎用プログラムを構成することに関するさまざまな概念、およびこの実施形態について、より詳細に説明する。本明細書に説明される種々の態様が多数のやり方のいずれかで実装可能であることは理解されるべきである。特定的な実装形態の例は、例示の目的のためだけに本明細書において提供される。さらに、以下の実施形態において説明されるさまざまな態様は単体でまたは任意の組み合わせで使用されてよく、本明細書に明示的に説明される組み合わせに限定されない。本明細書に説明されるような構成コントロールは、「複合コントロール（Compound Controls）」という名称の、２０１４年２月２７日に出願された米国特許出願第１４／１９２，１８４号に説明されるような「複合コントロール」を含むことができ、この文献は参照により本明細書に組み込まれている。
【００２５】
[0031]  上で論じられたように、構成コントロールは、汎用プログラムを構成するためのインターフェースを動的に生成するために使用可能である。図１は、いくつかの実施形態に従って、ユーザインターフェースを有するシステムによって提示される１つまたは複数の構成コントロールを使用する汎用プログラムをユーザが構成するプロセスを概略的に示す。方法１００における構成コントロールの選択および提示は、ユーザが、ユーザコマンド、アクションなどによってインターフェース接続することができる１つまたは複数のシステムによって行われてよい。
【００２６】
[0032]  方法１００において、構成コントロールは、構成コントロール１１０のセットから選択され、ユーザ１３０が汎用プログラム１４０を構成できるユーザインターフェースをコンピューティングステムが提示するようにユーザに提示される。適したシステムは、以下で説明されるように、全体または一部が、構成テンプレート１５０によって提供されるロジックに基づく構成コントロール１１０のセットから構成コントロールを選択することができる。本明細書で使用されるように、構成コントロールの「提示」は、構成コントロールに基づいてユーザに対してユーザインターフェース１２０の全てまたは一部をレンダリングすることを含むことができる。
【００２７】
[0033]  ユーザは、汎用プログラムに構成情報を提供するためにレンダリングされたユーザインターフェースとインターフェース接続することができる。構成コントロールの選択は、構成テンプレート１５０に基づいて判断される。この構成テンプレート１５０は、上で論じられたように、ユーザ（例えばビジネスユーザ）による汎用プログラムの構成を容易にするように（例えば技術系ユーザによって）先に定義されている場合がある。構成テンプレートは、構成コントロール１１０の１つまたは複数を含むことができる汎用プログラム１４０の構成のために使用されるべきコントロールのシーケンスを定義することができる。構成コントロールの選択は、構成テンプレート、現在選択されている構成コントロールおよび／または他の構成コントロールに提供されるユーザ入力、１つもしくは複数のルックアップファイル、任意の他の適した要因、またはこれらの組み合わせに基づいて、動的に行われてよい。
【００２８】
[0034]  図１の例では、構成コントロール１１０のセットは、汎用プログラムを構成するためのインターフェースの動的な生成に利用可能である。構成コントロールはユーザインターフェース部および動作部を含むことができる。構成コントロールのユーザインターフェース部は、任意の適したやり方で、コントロールを実行するコンピュータシステムが構成コントロールを提示する時にどのようにユーザインターフェースをレンダリングするのかを定義することができる。動作部は、ユーザインターフェースまたはその他に対する機能性を提供する、１つまたは複数のパラメータ、変数、もしくは引数、および／または１つもしくは複数のプログラムに関連付けられてよい。このような関連性は、動作部内にこれらの態様（例えばパラメータ）を含むこと、および／または他の所で記憶されるパラメータにリンクすることによるものであってよい。例えば、動作部は、レンダリングされた構成コントロールのユーザインターフェースに入力されたデータの検証を行うように構成されるプログラムに対するポインタを含むことができる（または、プログラム自体を含むことができる）。構成コントロールのユーザインターフェース部および動作部は、図２との関連で以下にさらに詳細に論じられる。
【００２９】
[0035]  方法１００の行為１０１において、ユーザ１３０が対話するコンピューティングシステムは、現在選択されている構成コントロールのユーザインターフェース部に基づいてユーザインターフェースをレンダリングする。ユーザインターフェースは、限定はされないが、テキストボックス、ボタン、スライダー、リストボックス、ドロップダウンリスト、メニュー、ツールバー、アイコン、ツリー表示、標識といった、任意の数の任意のタイプのユーザインターフェース要素を含むことができる。当技術分野で知られているように、コンピューティングシステムは、ディスプレイ上にこのような要素のグラフィック表示をレンダリングすることができる。ユーザは、表示された要素と相関している、マウスの移動、マウスのクリック、キーストロークなどの１つまたは複数の入力を行うことで、コンピュータシステムが、そのユーザ入力を、コントロールのプログラミングによって定義される特定的な意義と関連付けるようにすることができる。ユーザインターフェース要素およびそれらのレンダリングのやり方（例えばそれらのレイアウト）は、任意の適したやり方で現在選択されている構成コントロールのユーザインターフェース部によって定義されてよい。
【００３０】
[0036]  いくつかの実施形態によると、レンダリングされた構成コントロールのユーザインターフェース１２０のユーザインターフェース要素の１つまたは複数には、少なくとも一部分が現在選択されている構成コントロールの動作部に基づくデータが投入されてよい。例えば、動作部は、レンダリングされた構成コントロールの１つまたは複数のユーザインターフェース要素内の選択に利用可能である値を定義することができる。このような値は、構成コントロールによって記憶される静的値であってよい、および／または、（例えば、１つまたは複数のプログラムを実行することによって、または別の方法で、構成コントロールの動作部のロジックを実行することによって）動的に判断されてよい。それに従って、レンダリングされた構成コントロールのユーザインターフェース１２０の視覚による見た目は、現在選択されている構成コントロールのユーザインターフェース部によって定義可能であるのに対して、レンダリングされた構成コントロールのユーザインターフェース内の選択に利用可能である少なくともいくつかのデータ値は、現在選択されている構成コントロールの動作部のプログラミングによって定義可能である。
【００３１】
[0037]  いくつかの実施形態によると、構成コントロールの動作部は、構成コントロールのレンダリングされたユーザインターフェースの初期挙動を判断することができる、および／または、レンダリングされたユーザインターフェースの反応的挙動を判断することができる。初期挙動は、上で論じられたように、レンダリングされた構成コントロールの１つまたは複数のユーザインターフェース要素内の選択に利用可能である値を定義することを含むことができる。例えば、構成コントロールを提示するシステムは、構成コントロールの動作部に基づいて構成コントロールのユーザインターフェース要素の選択可能な値を定義することができる。反応的挙動は、レンダリングされたユーザインターフェース１２０の１つまたは複数のユーザインターフェース要素内の選択に対する値を更新すること、妥当性チェックを行うこと、ユーザインターフェースのフィールドに投入すること、ユーザインターフェース要素を示すことおよび／または隠すことなどを含むことができ、これらのいずれも、少なくとも一部分が、レンダリングされたユーザインターフェースに提供されるユーザ入力１０２に基づくことができる。例えば、レンダリングされた構成コントロールはファイルを選択するためのユーザインターフェース要素を含むことができる。ファイルが選択されると、ファイルが読み取り可能であることをチェックする、パスが有効である、構成コントロールの動作部のプログラムが実行可能であり、このプログラムは、構成コントロールの別のユーザインターフェース要素において表示するために、ファイルのコンテンツのプレビューを生じさせる。場合によっては、静的および／または動的であってよく、構成コントロールの動作部に関連付けられているパラメータおよび／または実行可能コードは、（例えば、ユーザが上の例で異なるファイルを選択する場合）ユーザがレンダリングされた構成コントロールと対話する際に何度も値が求められてよい。
【００３２】
[0038]  システムは、ユーザ入力１０２に基づいて構成されている汎用プログラム１４０に適用されるべき構成値を判断することができる。例えば、ユーザは、１つまたは複数のインターフェース要素を介して値を入力することができる。これらの値は、ユーザによってタイプされた値をパラメータに割り当てることなどによって、汎用プログラム１４０のパラメータに投入するために直接使用されてよい。代替的にはまたはさらに、ユーザは、ボタンまたはスライダーなど、含意された値を有するユーザインターフェース要素と対話することができ、ここで、含意された値は汎用プログラム１４０のパラメーラに割り当てられる。代替的には、値は、汎用プログラムに供給される前に現在レンダリングされている構成コントロールの動作部に基づいて修正されてよい。
【００３３】
[0039]  いくつかの実施形態によると、アダプタは、現在レンダリングされている構成コントロールのユーザインターフェースにユーザ入力を介して提供される値と、汎用プログラムのパラメータとの間のマッピングを提供することができる。アダプタは、例えば、構成テンプレート自体を定義する技術系ユーザによって、構成テンプレートと併せて定義可能である。アダプタは、例えば、汎用プログラム１４０の一部分として記憶可能である、構成テンプレート１５０の一部分として記憶可能である、および／または、図に示されない別個の構成要素として記憶可能である。アダプタは、同じ構成コントロールの２つのコピー内の同じパラメータを、構成中の構成コントロールのそれぞれの使用中の汎用プログラムの種々のパラメータにマッピングすることができるため、構成プロセスの種々の態様のために同じ構成コントロールの再利用を可能にすることができる。それに従って、アダプタは、構成テンプレートによって特定される構成コントロールが、構成されている汎用プログラムのパラメータの値を定義するためにアダプタがそれらを利用するやり方に対する依存性を有するため、一般的に構成テンプレートと併せて定義されてよい。
【００３４】
[0040]  アダプタの使用の１つの非限定的な例として、提示されている構成コントロールは、そのユーザインターフェース内のデータフィールドに対して第１のパラメータ名を使用することができるのに対して、この値は異なるパラメータ名を有する汎用プログラム内のパラメータにマッピングされるものとする。アダプタは、値がユーザによって提供される時に汎用プログラムのパラメータに構成コントロールの第１のパラメータの値をマッピングするように構成されていてよい。このように、アダプタは、構成プロセスの種々の態様に対して同じ構成コントロールの再利用を可能にすることができるが、これは、アダプタが、同じ構成コントロールの２つのコピー内の同じパラメータを、構成中の構成コントロールのそれぞれの使用中の汎用プログラムの種々のパラメータにマッピングすることができるからである。
【００３５】
[0041]  行為１０４において、さらなる構成コントロールは、構成コントロール１１０から提示のために選択される。選択された構成コントロールは、先に提示されたのと同じ構成コントロールであってよい（すなわち、上述されるように構成コントロールのユーザインターフェースをレンダリングすることによって）、または、異なる構成コントロールであってよい。構成テンプレート１５０および／または当初の構成コントロールでは、少なくとも一部分は、どの構成コントロールが提示のために選択されるのかを判断することができる。構成テンプレートは、提示されるべき構成コントロールの順序付けられたシーケンスを指示することができる、および／または、提示されるべき構成コントロールを動的に判断するためのロジックを含むことができる。さらにまたは代替的には、提示された構成コントロールは、少なくとも一部分が、最初に提示された構成コントロールの動作部の態様に基づいて選択可能である。いくつかの実施形態によると、構成コントロールは、提示するための後続の構成コントロールを特定するパラメータを含むことができる。このようなパラメータは、静的（例えば、固定値で構成コントロールによって記憶される）、または動的（例えば、提示するための後続の構成コントロールを特定する値をもたらすロジックを実行することができるであってよい。動的パラメータは、このようなロジックを、少なくとも一部分、例えば、構成テンプレート１５０によって定義および／または記憶可能であるルックアップファイルにアクセスすることによって、実行することができる。
【００３６】
[0042]  いくつかの実施形態によると、提示する構成コントロールを選択することは、ユーザ入力を介して、任意の数の、先にレンダリングされた構成コントロールに提供されたデータに基づくことができる。例として、ユーザがデータファイルを選択するための入力を行う第１の構成コントロールが提示可能である。第１の構成コントロール内の構成テンプレートおよび／または実行可能ロジックは、次いで、行われた入力に基づいて（例えば、ファイルシステムにおけるファイルの場所に基づいて、ファイルタイプ、その拡張に基づいて、など）提示するために第２の構成コントロールを特定してよい。
【００３７】
[0043]  いくつかの実施形態によると、構成コントロールは、構成テンプレート１５０に基づいて定義される１つまたは複数の値を含むことができる。構成コントロールは、使用時に構成テンプレートに基づいてこの値に変える構成テンプレートによって定義されるべき値に対する１つまたは複数の基準を含むことができる。例えば、いくつかの構成コントロールは、「company_name」というパラメータの値を有するのと同じやり方で定義された（および、例えば、それらの構成コントロールのいずれかに基づいてレンダリングされたユーザインターフェース内に表示可能である）パラメータを含むことができる。構成テンプレート内の「company_name」の値を定義することによって、構成コントロールのそれぞれは、ユーザインターフェースをレンダリングするために使用される時、ユーザインターフェースにおいて値を表示することができる。これは、例えば、構成テンプレートにおいて定義された「company_name」の値を、値が構成コントロール内の「company_name」に左右されるパラメータに渡すことによって行われてよい。
【００３８】
[0044]  上で論じられたように、構成プロセスを定義する情報は、構成プロセスにおけるさまざまな段階においてコントロールを選択し、選択されたコントロールが使用される際に、表示要素において提示された任意選択を変更すること、またはユーザ入力によってプロセスを改変するやり方を変更することなどのために使用されるデータ値を提供するために、システムによる記憶およびその後のアクセスが可能である。いくつかの実施形態では、その情報は「テンプレート」として記憶されてよい。構成テンプレートは、構成される特定の汎用プログラム１４０のために開発されてよい。例えば、汎用プログラム１４０を定義するプログラマはまた、構成テンプレート１５０を定義することができ、それによって、汎用プログラムを構成するビジネスアナリストは、汎用プログラムに構成情報を提供するために（任意の数の構成コントロールを含む）構成テンプレートによって定義されるコントロールを利用することができる。上で論じられたように、構成テンプレートは１つまたは複数の要因に基づいて構成コントロールを動的に判断するためのロジックを含むことができる、および／またはこれに関連付けられてよい。よって、汎用プログラムを構成するための動的に生成されたインターフェースはユーザに提示可能である。
【００３９】
[0045]  いくつかの実施形態によると、システムは、例えば、構成テンプレート内でおよび／または別の構成コントロール（例えば、現在提示されているもの）内で提供されるデータに基づいて行われてよい、提示するための後続の構成コントロールを特定するために１つまたは複数のルックアップファイルにアクセスできる。ルックアップファイルは、構成テンプレートが、１つまたは複数の値をルックアップに提供し、それに応じて、後に提示するための構成コントロールの指示を受信することができるように、任意の数の索引を含むことができる。例えば、ユーザが最初に提示された構成コントロールにファイル名を提供する場合、ファイル名、ファイル名のいくつかの態様（例えば拡張）、および／またはファイル名から導出される情報（例えば、ファイルタイプ、ファイルのサイズなど）を使用して、１つまたは複数のルックアップファイルのルックアップを行うことができる。ルックアップの結果は、提示するための後続の構成コントロールを特定することができる。提示する構成コントロールを特定するために１つまたは複数のルックアップを使用することは、このような特定を行うためのロジックが構成テンプレートとは別個に記憶可能であるという利点を有することができる。例えば、構成テンプレートは、構成プロセス中に構成コントロールを特定するためのロジックを規定する１つまたは複数のルックアップファイルと関連付けられてよく、それに従って、ロジックは、構成テンプレートの修正なしで、もっと正確に言えば、ルックアップファイル内の値を修正することだけによって変更可能である。
【００４０】
[0046]  提示された構成コントロールを介してユーザに適した構成情報が提供されると、新しい構成コントロールが特定されるべきであるという指示は任意の適したやり方で提供されてよい。いくつかの実施形態によると、汎用プログラムの構成プロセスにおける工程を指示するユーザインターフェース要素は、このような要素をアクティブにすることによって、ユーザが後続の工程に進む、および／または前の工程に戻ることができるようにレンダリングされてよい。例えば、構成コントロールがウィザードを介して提示される場合、ウィザードは、構成コントロールを提示し、さらに、構成プロセスを通して前方および後方に移動するためのボタンを提供することができる。ユーザが「前方」ボタンをアクティブにする時、システムは、別の構成コントロールを特定するためのロジックを実行することによって応答し、上で論じられた技法によって構成コントロールを提示することができる。代替的には、ロジックは、ボタンがアクティブにされると、システムが即座に後続の構成コントロールを提示することができるように、ボタンをアクティブにする前に実行されてよい。
【００４１】
[0047]  図２は、いくつかの実施形態による構成コントロールの例示の構成要素を示す。上で論じられたように、（共通のコントロールを含む）構成コントロールは、ユーザインターフェース部および動作部を含むことができる。図２はこれら部を図で示すが、これら部は、該部が実行されているまたは別の方法で値が求められている間、コンピュータ実行可能命令およびデータ、または、データがどこで得られるべきであるかの指示によって実施可能であることは理解されるであろう。図２の例では、構成コントロール２１０は、ユーザインターフェース部２２０および動作部２３０を含む。ユーザインターフェース部２２０は、３つの例示のユーザインターフェース要素２２１、２２２、および２２３を定義し、これら要素は、それぞれ、テキストボックス、ドロップダウンリスト、および一対のラジオボタンである。上で論じられたように、構成コントロールのユーザインターフェース部によって定義されるユーザインターフェース要素は、ユーザインターフェース内でレンダリングされ、ユーザ入力をこれらの要素の１つまたは複数に行う場合があるユーザに表示されてよい。これらのユーザインターフェース要素の値と、汎用プログラムのパラメータとの間の関連性は、（例えば、上で論じられたようなアダプタを介して）先に確立されていてよい。その結果、ユーザインターフェース要素２２１、２２２、および２２３にユーザ入力を行うことによって、ユーザは、構成情報を汎用プログラムに提供することができる。
【００４２】
[0048]  図２の例では、動作部２３０は、１つまたは複数のパラメータ２３１を定義し、１つまたは複数のプログラム２３２と関連付けられる。上で論じられたように、一般に、構成コントロールの動作部は、（これらのタイプの要素のいずれかのゼロを含む）任意の数のパラメータおよび／またはプログラムを含んでよい。プログラム２３２は、限定はされないが、スクリプト、宣言ステートメントおよび／もしくは式、データフローグラフ、ならびに／またはデータフロー部分グラフなどの任意の実行可能ロジックを含むことができ、構成コントロール２１０の動作部２３０は、構成コントロールによって任意の数のこのようなプログラムを記憶することができる、および／または任意の数のこのようなプログラムに対するポインタを含むことができる。構成コントロール２１０が適したアプリケーションによって提示される時、プログラム２３２の任意の１つまたは複数は、実行可能ロジックが構成コントロールの一部分として実行可能である任意の特定の方法に本発明が限定されないため、そのアプリケーション内で、または別個のプロセスとして実行されてよい。例えば、プログラム２３２は、構成コントロール２１０を提示するアプリケーションによって実行される式を含むことができる。
【００４３】
[0049]  いくつかの実施形態によると、プログラム２３２は、レンダリングされた構成コントロールのユーザインターフェースの１つまた複数のユーザインターフェース要素へのユーザ入力の妥当性をチェックする実行可能ロジックを含むことができる。例えば、ユーザインターフェース要素は、有効に入力されてよい値の幅を制限すること、または、入力されてよい特性のタイプを限定すること（例えば、ファイルパス値のスペースを禁止すること）などによって、入力されてよいデータのタイプに対する制限があってよい。プログラム２３２は、それによって、レンダリングされた構成コントロールのユーザインターフェースへのユーザ入力に応じて、ユーザインターフェースの１つまたは複数のユーザインターフェース要素のコンテンツの妥当性を判断する実行可能ロジックを含むことができる。コンテンツが無効であると判断される場合、視覚的にまたは他の方法によって、無効なコンテンツに関してユーザに警告する指示をユーザインターフェースに提供することができる。場合によっては、動作部２３０にある実行可能ロジックは、ユーザが有効なコンテンツを提供するのを支援するためのメッセージを生じさせ、そのメッセージをユーザに提示するためにユーザインターフェースに提供することができる。
【００４４】
[0050]  動作部２３０は１つまたは複数のパラメータ２３１を定義することができる。パラメータの定義は、例えば、パラメータ名のリスト化を含むことができ、場合によっては、それらパラメータのデフォルト値を含むことができる。パラメータ２３１は、任意の数の静的パラメータ、および／または、パラメータ式内に、プログラム２３２内に含まれてよい、および／または別の場所から得られてよい実行可能ロジックに基づいて、値が動的に判断されるパラメータを含むことができる。いくつかの実施形態によると、パラメータ２３１は、解釈されたパラメータ定義言語によって求められた１つまたは複数のパラメータの値を含む。これらのパラメータ式の値は、ステートメントがパラメータ値に変わるように、構成コントロール２１０を提示する時またはその他の場合に求められてよい。例えば、パラメータは、特定のデータファイルが存在する時に値が「Ａ」になるように、データファイルが存在しない時に値が「Ｂ」となるように定義されてよい。
【００４５】
[0051]  パラメータ２３１は、プログラム２３２の任意の実行可能ロジックによって利用される値を含むことができる。これらの変数は、値、またはこれらの変数の１つまたは複数を変更することが結果として同じ実行可能ロジックの挙動を変更する場合があるため、構成コントロール２１０と関連付けられた実行可能ロジックを、他の構成コントロールにおいて再利用可能とすることができる。例えば、２つの異なる構成コントロールは、それらそれぞれの動作部を介して同じプログラムと関連付けられてよい。プログラムは、動作時に、（例えば、パラメータの名称を参照することによって）それぞれの構成コントロールのパラメータ値を参照することができる。２つの構成コントロールのそれぞれにおけるパラメータの異なる値を利用することによって、プログラムの挙動は、同じプログラムが実行されていてもそれぞれの場合では異なる場合がある。よって、汎用プログラムは、構成コントロールの動作部との関連で使用可能である。
【００４６】
[0052]  非限定的な例として、実行可能ロジックは、ファイル名の拡張が所望のファイル拡張（例えば、「.txt」、「.dat」など）に一致するかをチェックすることができ、パラメータの値として求められた所望のファイル拡張に対するファイル名をチェックするように書き込まれてよい。それによって、パラメータ２３１は、所望のファイル拡張のパラメータを含むことができ、それによって、実行可能ロジックはレンダリングされた構成コントロールのユーザインターフェースへのユーザ入力を介して提供されたファイル名をパラメータ値と比較するようにする。２つの構成コントロールは、それによって、同じ実行可能ロジックを使用してファイル拡張をチェックすることができ、しかも、それら構成コントロールが実行可能ロジックによって利用されるファイル拡張パラメータの種々の値によって構成される場合、種々のファイル拡張に対してチェックすることができる。
【００４７】
[0053]  いくつかの実施形態によると、パラメータ２３１のパラメータは、少なくとも一部分が、構成コントロール２１０の提示後に提示するための後続の構成コントロールを定義することができる。このようなパラメータは、特定の標識が与えられてよい、または他の方法で、構成コントロール２１０を提示するシステムが後続の構成コントロールを特定するためにこのパラメータの値を求めるように命令可能であるように特定されてよい。場合によっては、構成コントロール２１０の提示が常に、パラメータの値によって特定される特定の構成コントロールが続くように、パラメータは静的値を有することができる。場合によっては、パラメータは、変えられたパラメータ値が後続の構成コントロールを特定するように動的に判断される値を有することができる。パラメータ値をこのように動的に変えることにおいて、少なくとも一部分は、パラメータの値内で値が求められるべき任意の解釈された式に加えて、関連付けられた構成テンプレートおよび／または１つもしくは複数のルックアップファイルに基づくことができる。例えば、後続の構成コントロールを指示する第１のパラメータは、現在の日付の値を求め、さらにはパラメータ２３１の第２のパラメータの値を読み取るロジックを含んでよい。第２のパラメータの値に基づいて、日付によるルックアップが行われるように、構成コントロールの名称を指示するルックアップファイルが特定される。その後、現在の日付の値を求めることによって、第１のパラメータの値を変える後続の構成コントロールの名称の選択が行われることになる。
【００４８】
[0054]  上で論じられたように、構成コントロールの動作部は、これ自体の範囲において、構成コントロールの第１のインスタンスの動作部内のパラメータが同じ構成コントロールの第２のインスタンスの動作部内のパラメータとは無関係の値に変えることができるようにしてよい。動作部の範囲は、本来は語彙的（静的）または動的であってよい。動作部２３０のパラメータの値を判断する時、任意の数の他の値を使用して、同じ動作部の他のパラメータ、現在の構成シーケンスを定義するために使用される構成テンプレート内で定義されたパラメータ、プログラム２３２のうちの１つによって返されたパラメータ、実行環境内で定義されたパラメータ、またはこれらの組み合わせを含んで、この値を求めることができる。
【００４９】
[0055]  図３Ａ〜図３Ｂは、いくつかの実施形態に従って、シーケンスに基づいて汎用プログラムを構成するための、いくつかの構成コントロールの例示の使用を示す。上で論じられたように、構成テンプレートは、ユーザに動的に提示可能である構成コントロールのシーケンスを定義することができる。場合によっては、このシーケンスは、提示された構成コントロールのシーケンスに加えてさらなる機能性を提供することができる「ウィザード」と呼ばれるプログラムによって提示可能である。「ウィザード」は例えば、ユーザ入力として、あらかじめ記憶されたデータ、またはある他の形態の情報にかかわらず、情報にアクセス可能であり、この情報を使用してあるエリアで提示するのはどのコントロールかを判断することができる。該ウィザードはまた、選択されたコントロールにデータを提供して、該コントロールを特定的なコンテキストに適応させることができる。
【００５０】
[0056]  図３Ａの例では、構成テンプレートは、６つの構成コントロールを含むシーケンス３１０を定義する。この構成コントロールのシーケンスはウィザードまたは他の方法によってユーザに提示されてよい。シーケンスがユーザにどのように提示されるかに関係なく、適したシステム（例えば、方法１００において構成コントロール１１０を提示するシステム）は最初に構成コントロール３０１を提示することができる。その後、構成コントロール３０２または構成コントロール３０３のどちらかがユーザに提示される。上で論じられたように、例えば、構成コントロール３０１のレンダリングされた構成コントロールのユーザインターフェースに対してユーザによって行われるユーザ入力に基づいて、１つまたは複数のルックアップファイルを介して、またはこれらの組み合わせに基づいて、このような決定がなされてよい。
【００５１】
[0057]  図３Ａの例では、構成コントロール３０３が提示される時、さらなる構成コントロールが提示される。これは、例えば、構成コントロール３０１および３０３に対して行われる入力だけに基づいて構成されてよい。その他の場合、構成コントロール３０２がユーザに提示される場合、構成コントロール３０４、構成コントロール３０５、または構成コントロール３０６のいずれかが、後に提示される。これらの構成コントロールのうちのどれを提示するかは、構成コントロール３０１および／または３０２のいずれかのレンダリングされた構成コントロールのユーザインターフェースに対してユーザによって行われるユーザ入力に基づいて、または他の方法によって、判断されてよい。
【００５２】
[0058]  いくつかの実施形態によると、ユーザインターフェースは、最初に提示された構成コントロールが必ずしも最上流の構成コントロール（図３Ａの例では構成コントロール３０１）ではない、構成シーケンスに基づいて提示されてよい。例えば、システムは、構成コントロール３０３にはアクセスしないことが分かっている場合（例えば、構成コントロール３０２および３０３のどれが選定されるかを判断する決定による結果が前もって分かっている場合）、最初に提示する構成コントロール３０２によって構成シーケンス３１０に基づいてユーザに対してユーザインターフェースを提示することができる。よって、図３Ａに示されるように構成される構成コントロール３０２および３０４〜３０６だけを含む新しい構成シーケンスを生じさせるのではなく、構成シーケンス３１０は、構成コントロール３０２が、最初に提示される構成コントロールであるものとする仕様に沿って使用可能である。
【００５３】
[0059]  上で論じられたように、例示の構成シーケンス３１０などの構成シーケンスは、ウィザードによって提示される構成コントロールを定義することができる。図３Ｂは、ウィザードを実行するシステムによって生成されるユーザインターフェースの実例を示す。この例では、ウィザードは、シーケンスによって定義されるような構成コントロールを提示し、さらには、構成コントロール間をナビゲートするためのユーザインターフェース要素を提供する。構成ウィザードユーザインターフェース３２０は、構成コントロール３３０（例えば、構成シーケンス３１０による構成コントロール３０１〜３０６のいずれか）を提示し、提示された構成コントロール間をナビゲートするためにユーザが使用可能であるナビゲーションボタン３４０および３５０を提供する。図１との関連で上で論じられたように、（例えばボタンをクリックすることによって）ユーザインターフェースのナビゲーションボタンをアクティブにするユーザは、１つまたは複数の要因に基づいて提示するための構成コントロールの判断を開始することができる。
【００５４】
[0060]  構成ウィザードユーザインターフェース３２０は、使用されている構成シーケンスに基づいてナビゲーションボタン３４０および／または３５０を示すおよび／または隠すことができる。構成シーケンス３１０の例では、構成ウィザードユーザインターフェース３２０は、ユーザがナビゲートする場合がある定義されたシーケンスにおける以前の構成コントロールがないため、構成コントロール３０１の提示中ナビゲーションボタン３４０を隠すことができる。同様に、構成ウィザードユーザインターフェース３２０は、構成コントロール３０４、３０５、または３０６の提示中、または、シーケンスにおける次のコントロールを選択するための、十分なユーザ入力または他の情報をウィザードが受信していない時の構成シーケンス中のどんな時にも、ナビゲーションボタン３５０を隠すことができる。
【００５５】
[0061]  いくつかの実施形態によると、ナビゲーションボタン３５０をアクティブにすることによって、（例えば、提示された構成コントロールの動作部を介して）現在提示されている構成コントロール３３０に対して行われる入力の妥当性チェックが行われてよい。このようなチェックは、ユーザが定義されたシーケンスにおいて次の工程に進む前に入力が有効であることを徹底することができる。入力のある態様が無効であると判断される場合、構成ウィザードは正しくは、次の工程にアクセスすることができる前に、アクション（すなわち、有効なデータの入力）が必要とされるという指示をユーザに提供することができる。さらにまたは代替的には、ナビゲーションボタン３５０は、有効なデータが現在提示されている構成コントロールに提供されるまで、隠される、灰色にされる、またはその他の場合視覚的に非アクティブにされてよい。
【００５６】
[0062]  いくつかの実施形態によると、構成ウィザードユーザインターフェース３２０を提示するシステムは、関連付けられた構成シーケンスを通して先におよび／または後に行われる工程を指示する構成ウィザードの状態を保存することができる。これによって、ナビゲーションボタン３４０および／または３５０が、アクティブなシーケンスにおいてどの構成コントロールが先にまたは後に提示されたのかを判断するためにこの状態にアクセスすることによって機能できるようにしてよい。例えば、ユーザが構成シーケンス３１０を通してそのシーケンスにおける構成コントロール３０１、３０２、そして３０５を介してナビゲートする場合、そのコントロールのシーケンス（すなわち、３０１、次に３０２、その次に３０５へ）を表す状態は記憶可能である。それに従って、アクティブなシーケンスにおける前の工程へナビゲートする時、その状態が読み取られて、どの構成コントロールが提示されるべきであるかを判断することができる。ユーザが前の工程へナビゲートすると、先に訪れたその後の工程は、ユーザがそれらの工程に戻ることができるように記憶されてよい。例えば、上の例示のシーケンスにおいて、ユーザは、構成コントロール３０２に戻るようにナビゲートすることができ、次いで、再び前方にナビゲートすることを望む場合がある。保存された状態は、これらのナビゲーションアクションに基づいて提示するための後続の構成コントロールであるとして、構成コントロール３０５の特定を可能にすることができる。
【００５７】
[0063]  図４は、いくつかの実施形態による、データフローグラフの構成を示す機能ブロック図を示す。図４の例では、構成シーケンス４１０は、汎用データフローグラフ４３０を構成するために（図１との関連で上で論じられたように構成テンプレートを使用することを含んでよい）構成コントロールを使用して定義されている。アダプタ４２０は、構成シーケンスによって指定される構成コントロールに基づいてレンダリングされるユーザインターフェースへの入力として提供される値と、汎用データフローグラフのパラメータ値との間のマッピングを提供する。データフローグラフ、およびデータフローグラフのパラメータ値は、全体が両方共参照により本明細書に組み込まれている、「グラフとして表現された計算の実行（Executing Computations Expressed as Graphs）」という名称の米国特許第５，９６６，０７２号、および、「グラフ型計算のためのパラメータ管理（Managing Parameters For Graph-Based Computations）」という名称の米国特許第７，７１６，６３０号において、さらに詳細に説明される。
【００５８】
[0064]  図４の例では、構成シーケンス４１０の最初の２つの工程のみが示され、（図３Ａの例にあるような動的に判断される工程を含む）任意の数の追加の工程が含まれてよいことは理解されるべきである。示された工程において、構成コントロール４０１はデータフローグラフにおける第１の入力ファイル（「入力ファイル１」）に対応するファイルパスを選択するために使用され、構成コントロール４０２はデータフローグラフにおける第２の入力ファイル（「入力ファイル２」）に対応するファイルパスを選択するために使用される。
【００５９】
[0065]  汎用データフローグラフ４３０は例示のデータフローグラフであり、これは、この例では、２つのソースからのデータの結合、および結合されたデータの出力ファイルへの出力を示し、単に、データフローグラフの１つの例として提示される。汎用データフローグラフ４３０は、任意の数のパラメータ定義に関連付け可能である。このパラメータ定義は、定義されたパラメータの値を受信する、記憶する、および／または使用するためのグラフを構成する。この定義されたパラメータは、グラフ自体に関連付けられた任意の数のパラメータに加えて、グラフの４つの構成要素（「入力ファイル１」、「入力ファイル２」、「結合」、および「出力ファイル」）のそれぞれに対する任意の数のパラメータ定義を含む。しかしながら、図４に示される実施形態の例を示す目的で、入力ファイルの構成要素のための入力ファイルパスに対応するパラメータ４３１および４３２のみが示される。
【００６０】
[0066]  いくつかの実施形態によると、構成コントロール４０１および４０２は、構成シーケンス４１０の最初の２つの工程のそれぞれにおいて再利用可能である同じ基となる構成コントロールを表すことができる。代替的には、構成コントロール４０１および４０２は、同じユーザインターフェース部を含んでよいが、異なる動作部を有する場合がある。どちらの場合でも、構成コントロール４０１および４０２は、図に示されるような、ユーザがファイルを選択することを可能にする同じユーザインターフェース部を含む。ユーザインターフェース部は、選択されたファイルパスが表示されるテキストボックス（構成コントロール４０１および４０２においてそれぞれ、４０１ａおよび４０２ａ）、および、アクティブにされた時、ユーザが選択されたファイルのためのファイルシステムをブラウズできるようにする「ブラウズ」ボタン（構成コントロール４０１および４０２においてそれぞれ４０１ｂおよび４０２ｂ）を含む。
【００６１】
[0067]  構成コントロール４０１および４０２（ならびに、構成シーケンス４１０において使用されるさらなる構成コントロール）は、示されたユーザインターフェース部をウィザードにおいて（例えば、図３Ｂに示されるような構成ウィザードユーザインターフェースにおいて）レンダリングすることによってなどを含む、任意の適したやり方で、ユーザに提示されてよい。図４の例では、構成コントロール４０１はユーザに最初に提示され、これは、図に示されるような構成コントロールのユーザインターフェース部をレンダリングすることを含む。ユーザは、ブラウズボタン４０１ｂによってファイルパスを選択することができ、選択されたファイルのファイルパスは、上で論じられたようなテキストボックス４０１ａに示される。このファイルパスは、次いで、アダプタ４２０を介して汎用データフローグラフ４３０のファイルパスパラメータ４３１に提供される。
【００６２】
[0068]  上で論じられたように、アダプタは、構成コントロールのレンダリングされたユーザインターフェース内で選択された値が汎用プログラムのパラメータにどのようにマッピングされるべきかを指示することができる。アダプタは、汎用プログラムの一部分、行われている構成シーケンスを定義する構成テンプレートの一部分、または別個の構成要素とすることができる。アダプタがどこで定義されるかに関係なく、図４Ａの例では、アダプタは構成コントロール４０１の提示中に選択されたファイルパスパラメータを、データフローグラフ４３０におけるファイルパスパラメータ４３１にマッピングするように構成される。ユーザは次いで、（例えば、提示された構成ウィザードユーザインターフェースにおけるナビゲーションボタンによって）構成シーケンス４１０における次の工程に進むことができ、ここで構成コントロール４０２が提示される。ブラウズボタン４０２ｂによってファイルパスが選択されてよく、選択されたファイルのファイルパスはテキストボックス４０２ａに示される。このファイルパスは次いで、アダプタ４２０を介して汎用データフローグラフ４３０のファイルパスパラメータ４３２に提供される。この場合、アダプタは、構成コントロール４０２の提示中に選択されたファイルパスパラメータを、データフローグラフにおけるファイルパスパラメータ４３２にマッピングするように構成される。このように、汎用データフローグラフ４３０のパラメータ４３１および４３２の値は、ユーザによって選択可能である。
【００６３】
[0069]  上で論じられたように、構成コントロール４０１および構成コントロール４０２は、同じ基となる構成コントロールを表すことができる。従って、図４の例では、「ファイル選択」構成アクティビティを表すこの単一の構成コントロールは、アダプタを介して２つの工程のそれぞれに対する適したマッピングを提供することによって構成シーケンスの２つの工程に対して再利用されることで、汎用データフローグラフの種々のパラメータがそれぞれの工程において値が与えられるようにする。この構成コントロールは、例えば、汎用データフローグラフの「出力ファイル」構成要素に対するファイルを選択する時に使用されてもよい。このように、構成テンプレートは、少なくともいくつかが動的に判断されたシーケンスにおいて提示可能であるいくつかの構成コントロールを含むように構成シーケンス４１０を表現することができる。
【００６４】
[0070]  図５は、いくつかの実施形態による、メタデータリポジトリに記憶される構成コントロールおよび汎用データフローグラフを示す。本明細書において使用されるように、「メタデータリポジトリ」は、種々のタイプのオブジェクトに加えて、それらオブジェクトに関連付けられたメタデータを記憶するように構成されるデータ記憶装置に言及し、これは同じまたは異なるタイプのオブジェクト間の関係リンクを含むことができる。例えば、メタデータリポジトリは、データフローグラフ、およびデータフローグラフのパラメータの値のセットを記憶することができ、この場合、パラメータ値のそれぞれのセットはデータフローグラフに対する関係リンクを有する。
【００６５】
[0071]  いくつかの実施形態によると、メタデータリポジトリは、構成コントロール、データフローグラフ、構成テンプレート、およびパラメータセットを含むデータオブジェクト、これらのオブジェクトの少なくともいくつかの間の関連性、および、該リポジトリに記憶されたそれぞれのオブジェクトに関連付けられたメタデータを含むことができる。メタデータリポジトリは、全体が参照により本明細書に組み込まれている、「関係データオブジェクトの管理（Managing Related Data Objects）」という名称の米国特許第７，８９９，８３３号において、さらに詳細に説明されている。
【００６６】
[0072]  構成コントロールおよび汎用プログラムは一般的に任意の適したやり方で記憶されてよいが、システム５００は、構成コントロールおよび汎用データフローグラフがメタデータリポジトリに記憶される例示の実施形態を示す。さらに、汎用データフローグラフに関連付けられた構成テンプレートは、関連付けられた構成テンプレートを使用して汎用データフローグラフを構成するプロセスの成果を表すパラメータセットと共にメタデータリポジトリに記憶される。汎用データフローグラフは、該グラフがパラメータセットによって定義されるパラメータを使用して実行されるように、グラフに対して確立されたパラメータセットを使用して実行されてよい。図５に示される要素間の関連性は、破線によって示され、後述される。示されたオブジェクトを記憶することが、リポジトリに割り当てられたメモリにおいてそれらオブジェクトを含むコンピュータ命令およびデータを記録することによって行われてよいことは理解されるべきである。しかしながら、リポジトリはまた、これに対するリンク、または命令またはデータの他の特定を記憶することによって補完されてよい。それに従って、リポジトリは任意の適したやり方で実装可能である。
【００６７】
[0073]  図５の例では、メタデータリポジトリ５２０は、構成コントロール５２２を含み、そのうちの少なくともいくつかは、１つまたは複数の構成テンプレート５２６によって参照される。上で論じられたように、構成テンプレートは、１つまたは複数の構成コントールを含むシーケンスを指定することができる。それに従って、構成テンプレートは、構成コントロール５２２の１つまたは複数に関連付けられてよい。さらに、それぞれの構成テンプレートは、汎用データフローグラフ５２４のうちの特定の１つと関連付けられる。しかしながら、単一の汎用データフローグラフは、例えば、種々の構成テンプレートとして具現化されるようにグラフを構成する複数のやり方が定義される場合、２つ以上の構成テンプレートに関連付けられてよい。汎用グラフが本明細書に説明されるような構成テンプレートによって構成される時、関連付けられた汎用グラフに対して定義される、結果として生じるパラメータは、パラメータセットに記憶可能である。それに従って、それぞれのパラメータセットは特定のグラフに関連付けられる。
【００６８】
[0074]  汎用グラフが実行される時、１つまたは複数のデータ記憶装置５４０にアクセス可能である。データ記憶装置５４０は、フラットファイル、データベーステーブル、データベースクエリなどを含む、多数の任意のタイプのデータソースを含むことができる。図５の例では、データフローグラフの実行によって吸収され、生じたデータは、メタデータリポジトリにではなく、正しくは、任意の数の適したファイルシステム上の１つまたは複数のファイルに記憶される。さらに、図５の例では、構成テンプレート５２６は、上述されるように、構成プロセス中に提示するための構成コントロールを判断するために１つまたは複数のルックアップファイル５３０を活用する。
【００６９】
[0075]  上で論じられたように、汎用プログラムは、異なる時間に異なるタイプの入力を行う異なるスキルセットによる異なる人々によって構成可能である。図６は、本明細書に説明される技法を使用して汎用プログラムを構成するユーザの例示の開発プロセスを示す。図６の例では、３人のユーザ６１０、６２０、および６３０はそれぞれ、プロセス６００の工程、すなわち、工程６０２、６０４、および６０６をそれぞれ行う。これらのユーザは、それぞれが企業組織内の異なる役割（およびことによると異なるスキルセット）を有する３人の異なる人々であってよい。しかしながら、一般に、プロセス６００の複数の工程は同じユーザによって行われる場合があることは理解されるであろう。例えば、工程６０２および６０４は同じ個人によって行われてよい。
【００７０】
[0076]  工程６０２では、汎用プログラムが定義される。ユーザ６１０は、場合によっては、汎用プログラムが書き込まれる特定のプログラミング環境に精通している熟練したプログラマであってよい。例えば、汎用プログラムがデータフローグラフである場合、ユーザ６１０はデータフローグラフを書き込むのに熟練したユーザであってよい。
【００７１】
[0077]  工程６０４では、工程６０２において定義された汎用プログラム用の構成テンプレートが定義される。ユーザ６２０は、場合によっては、構成テンプレートが書き込まれる特定のプログラミング環境に精通している熟練したプログラマであってよい。構成テンプレートは、汎用プログラムを定義するために使用されたのと同じアプリケーションであってよいしそうでなくてもよい任意の適したアプリケーションを使用して定義可能である。構成テンプレートは、汎用プログラムのパラメータが入力として提供される場合があるシーケンスを定義する。上で論じられたように、これは、１つまたは複数の構成コントロールの使用を含むことができ、汎用プログラムの構成中にユーザに提示するのはどの構成コントロールかを動的に判断するためのロジックを、さらに含む、または他の方法でこれにアクセスすることができる。それに従って、ユーザ６２０は、（例えば１つまたは複数のルックアップファイルを定義することによって）かかるロジックを定義することができる。いくつかの実施形態によると、ユーザ６１０および／または６２０は、汎用プログラムのパラメータ値を、構成テンプレートによって定義されたユーザインターフェースに対する入力として提供された値にマッピングするアダプタを定義することができる。かかるアダプタは、構成テンプレートの一部分、汎用プログラムの一部分、またはその両方であるように構成されてよい。
【００７２】
[0078]  工程６０６において、汎用プログラムは、工程６０４において定義された構成テンプレートによって定義されたユーザインターフェースを使用して構成される。ユーザ６３０は、ビジネスアナリストといった、ビジネスの必要性に精通しているユーザであってよい。工程６０６における構成プロセスは、汎用プログラムが、提供されるパラメータ値を使用して即時に実行される、および／または、汎用プログラムが値を使用してその後になって実行できるような任意の適したやり方でパラメータ値が記憶されるという結果をもたらすことができる。上記が生じる時に関係なく、工程６０８において、汎用プログラムは、工程６０６において提供されたパラメータ値を使用して実行される。
【００７３】
[0079]  図７は、本発明に説明される技術が実装可能である、適したコンピューティングシステム環境７００の一例を示す。コンピューティングシステム環境７００は、適したコンピューティング環境の１つの例に過ぎず、本明細書に説明される技術の使用または機能性の範囲に関していずれの限定も示唆しようとするものではない。コンピューティング環境７００も、代表的な動作環境７００において示される構成要素の任意の１つまたは組み合わせに関連する任意の従属性または必要性を有するとして解釈されるべきではない。
【００７４】
[0080]  本明細書に説明される技術は、多数の他の汎用もしくは専用コンピューティングシステム環境または構成で運用されている。本明細書に説明される技術による使用に適していると思われる周知のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらに限定されない。
【００７５】
[0081]  コンピューティング環境は、プログラムモジュールといった、コンピュータ実行可能命令を実行することができる。一般的に、プログラムモジュールは、特定のタスクを行う、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本明細書に説明される技術はまた、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実践されてよい。分散コンピューティング環境において、プログラムモジュールは、メモリ記憶デバイスを含む、ローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体両方に位置することができる。
【００７６】
[0082]  図７を参照すると、本明細書に説明される技術を実装する代表的なシステムは、コンピュータ７１０の形態の汎用コンピューティングデバイスを含む。コンピュータ７１０の構成要素は、処理ユニット７２０、システムメモリ７３０、および、システムメモリを含むさまざまなシステム構成要素を処理ユニット７２０に連結するシステムバス７２１を含むことができるがこれらに限定されない。システムバス７２１は、さまざまなバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかであってよい。限定ではなく例として、かかるアーキテクチャは、業界標準アーキテクチャ（ISA）バス、マイクロチャネルアーキテクチャ（MCA）バス、拡張ＩＳＡ（EISA）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（VESA）ローカルバス、およびメザニンバスとしても知られる周辺構成要素相互接続（PCI）バスを含む。
【００７７】
[0083]  コンピュータ７１０は、典型的には、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ７１０によってアクセス可能であり、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体両方を含む、任意の利用可能な媒体とすることができる。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性の、取り外し可能および取り外し不可能媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（DVD）、もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用でき、コンピュータ７１０によってアクセス可能である任意の他の媒体を含むがこれらに限定されない。通信媒体は、典型的には、搬送波または他の移送機構などの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具現化し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、その信号の特性セットのうちの１つまたは複数が、その信号内で情報を符号化するようなやり方で設定または変更されている信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、および、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。上記のいずれかの組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるものとする。
【００７８】
[0084]  システムメモリ７３０は、読み出し専用メモリ（ROM）７３１、およびランダムアクセスメモリ（RAM）７３２などの、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中など、コンピュータ７１０内の要素間で情報を伝送するのに役立つ基本ルーチンを収めた基本入力／出力システム７３３（BIOS）は、典型的には、ＲＯＭ７３１に記憶される。ＲＡＭ７３２は、典型的には、処理ユニット７２０によって即時にアクセス可能である、および／または現在動作させているデータおよび／またはプログラムモジュールを収める。限定ではなく例として、図７は、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、およびプログラムデータ７３７を示す。
【００７９】
[0085]  コンピュータ７１０はまた、他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を含むことができる。ほんの一例として、図７は、取り外し不可能な不揮発性磁気媒体に対して読み書きするハードディスクドライブ７４１、取り外し可能な不揮発性磁気ディスク７５２に対して読み書きする磁気ディスクドライブ７５１、および、ＣＤ−ＲＯＭまたは他の光媒体などの取り外し可能な不揮発性光ディスク７５６に対して読み書きする光ディスクドライブ７５５を示す。代表的なオペレーティング環境で使用できる他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、および固体ＲＯＭなどを含むが、これらに限定されない。ハードディスクドライブ７４１は、典型的には、インターフェース７４０などの取り外し不可能なメモリインターフェースを通してシステムバス７２１に接続され、磁気ディスクドライブ７５１および光ディスクドライブ７５５は、典型的には、インターフェース７５０といった取り外し可能なメモリインターフェースによってシステムバス７２１に接続される。
【００８０】
[0086]  上で論じられ、図７に示される、ドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ７１０に、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを記憶させる。図７において、例えば、ハードディスクドライブ７４１は、オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、およびプログラムデータ７４７を記憶するものとして示される。これらの構成要素は、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、およびプログラムデータ７３７と同じか異なっているかのいずれかである可能性があることは留意されたい。オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、およびプログラムデータ７４７には、ここでは、少なくともこれらが異なるコピーであることを示すために異なる番号を付している。ユーザは、キーボード７６２、および、通例、マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス７６１によって、コマンドおよび情報をコンピュータ７１０に入力することができる。（図示されない）他の入力デバイスは、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、またはスキャナなどを含むことができる。これらのおよび他の入力デバイスは、システムバスに連結されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（USB）などの他のインターフェースおよびバス構造によって接続可能であるユーザ入力インターフェース７６０を通して処理ユニット７２０に接続されることが多い。モニタ７９１または他のタイプの表示デバイスはまた、ビデオインターフェース７９０などのインターフェースを介してシステムバス７２１に接続される。モニタに加えて、コンピュータは、周辺インターフェース７９５を通して接続可能であるスピーカ７９７およびプリンタ７９６などの他の周辺出力デバイスも、含むことができる。
【００８１】
[0087]  コンピュータ７１０は、リモートコンピュータ７８０といった、１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化環境で動作可能である。リモートコンピュータ７８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードであってよく、典型的には、コンピュータ７１０に関連して上述される要素の多くまたは全てを含むが、メモリ記憶デバイス７８１のみが図７に示されている。図７に示される論理接続は、ローカルエリアネットワーク（LAN）７７１およびワイドエリアネットワーク（WAN）７７３を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、会社、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは普通である。
【００８２】
[0088]  コンピュータ７１０は、ＬＡＮネットワーキング環境において使用される時、ネットワークインターフェースまたはアダプタ７７０を通してＬＡＮ７７１に接続される。ＷＡＮネットワーキング環境において使用される時、コンピュータ７１０は、典型的には、インターネットなど、ＷＡＮ７７３上での通信を確立するためのモデム７７２または他の手段を含む。内蔵または外付けであってよいモデム７７２は、ユーザ入力インターフェース７６０を介したシステムバス７２１、または他の適切な機構に接続されてよい。ネットワーク化環境では、コンピュータ７１０に関連して示されるプログラムモジュール、またはこの一部は、リモートメモリ記憶デバイスに記憶可能である。限定ではなく例として、図７は、メモリデバイス７８１に常駐するようなリモートアプリケーションプログラム７８５を示す。示されるネットワーク接続が代表的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることは理解されるであろう。
【００８３】
[0089]  そのように、本発明の少なくとも１つの実施形態のいくつかの態様が説明されたが、さまざまな改変、修正、および改善が当業者には容易に想到するであろうことは理解されたい。例えば、構成コントロールによって実装されるようなシステムが説明される。本明細書に定義されるように、システムおよびコントロールは、構成コントロールがそれぞれ、タスクを行うように定義されるように実装され、タスクが行われる構成プロセスのどの時点であっても使用可能である。このような構成コントロールは、例えば、そのタスクが行われる特定のコンテキストについて、ユーザ入力またはデータサービスによって適応可能である。構成コントロールが構成プロセスにおいて複数の場所で使用されることは必要条件ではない。その構成の全てがかかる構成コントロールによって行われることも必要条件ではない。プロセスの一部は、例えば、実行される際にコンテキストにかかわらず、該プロセスを行うコントロールによって行われてよい。
【００８４】
[0090]  さらに、汎用データフローグラフの構成に対する応用性を有するコントロールが本明細書において論じられているが、このようなコントロールが任意の適した汎用プログラムを構成するために使用可能であることは理解されるであろう。例えば、本明細書に論じられたような汎用プログラムを構成するための技法は、任意の適したデータ処理言語で書き込まれた汎用プログラムを構成するために使用されてよい、または、ＪａｖａまたはＣ＋＋などの汎用プログラミング言語で書き込まれた汎用プログラムを構成するために使用されてよい。それでもやはり、本明細書に論じられた汎用プログラムの構成のための技法は、汎用プログラムが、高いレベルのパラメータ表示が可能なデータフローグラフまたは他のデータ処理プログラムである時に特定の実用性を有することができる。
【００８５】
[0091]  かかる改変、修正、および改善は、本開示の一部分であることが意図され、本発明の趣旨および範囲内であることが意図される。さらに、本発明の利点が指示されるが、本明細書に説明される技術の全ての実施形態が説明される利点の全てを含むことにはならないことは理解されるべきである。いくつかの実施形態は、本明細書において利点として説明されるいずれの特徴も実装しなくてもよく、いくつかのインスタンスでは、説明される特徴の１つまたは複数はさらなる実施形態を実現するために実装可能である。それに従って、前述の説明および図面はほんの一例である。
【００８６】
[0092]  本明細書に説明される技術の上述される実施形態は、多数のやり方のいずれかで実装可能である。例えば、実施形態は、ハードウェア、ソフトウェア、またはこれらの組み合わせを使用して実装されてよい。ソフトウェアに実装される時、ソフトウェアコードは、単一のコンピュータで提供されるか、複数のコンピュータの間で分散されるかにかかわらず、任意の適したプロセッサまたはプロセッサ群上で実行できる。かかるプロセッサは、ＣＰＵチップ、ＧＰＵチップ、マイクロプロセッサ、マイクロコントローラ、またはコプロセッサなどの名称で当技術分野では知られている市販の集積回路部品を含む集積回路部品における１つまたは複数のプロセッサによって、集積回路として実装されてよい。代替的には、プロセッサは、ＡＳＩＣなどのカスタム回路構成内で、またはプログラマブル論理デバイスを構成することから生じるセミカスタム回路構成で実装されてよい。なおさらなる代替策として、プロセッサは、市販、セミカスタム、またはカスタムにかかわらず、より大規模な回路または半導体デバイスの一部であってよい。具体的な例として、いくつかの市販のマイクロプロセッサは複数のコアを有し、それによって、それらのコアの１つまたはサブセットは、プロセッサを構成することができる。しかしながら、プロセッサは、任意の適したフォーマットの回路構成を使用して実装可能である。
【００８７】
[0093]  また、コンピュータは、ラックマウントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータなどのいくつかの形態のうちのいずれかで具現化されてよいことは理解されるべきである。さらに、コンピュータは、携帯情報端末（PDA）、スマートフォン、または任意の他の適したポータブル電子デバイスもしくは固定電子デバイスを含む、一般的にコンピュータとみなされないが適した処理機能を有するデバイスに組み込まれてよい。
【００８８】
[0094]  また、コンピュータは、１つまたは複数の入出力デバイスを有することができる。これらのデバイスは、とりわけ、ユーザインターフェースを提示するために使用可能である。ユーザインターフェースを提供するために使用可能である出力デバイスの例は、出力の視覚的提示のためのプリンタまたは表示画面、および出力の可聴式提示のためのスピーカまたは他の音生成デバイスを含む。ユーザインターフェースに使用可能である入力デバイスの例は、キーボード、ならびにマウス、タッチパッド、およびデジタル化タブレットなどのポインティングデバイスを含む。別の例として、コンピュータは、音声認識によってまたは他の可聴式フォーマットにおいて入力情報を受信することができる。
【００８９】
[0095]  このようなコンピュータは、企業ネットワークまたはインターネットなどのローカルエリアネットワークまたはワイドエリアネットワークとして含む、任意の適した形態の１つまたは複数のネットワークによって相互接続可能である。このようなネットワークは任意の適した技術に基づくものであってよく、任意の適したプロトコルに従って動作可能であり、無線ネットワーク、有線ネットワーク、または光ファイバーネットワークを含むことができる。
【００９０】
[0096]  また、本明細書において概説されるさまざまな方法またはプロセスは、さまざまなオペレーティングシステムまたはプラットフォームのいずれか１つを用いる１つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコード化されてよい。さらに、かかるソフトウェアは、いくつかの適切なプログラミング言語および／またはプログラミングツールもしくはスクリプトツールのいずれかを使用して書き込まれてよく、フレームワークまたは仮想機械上で実行される実行可能機械言語コードまたは中間コードとしてコンパイルされてもよい。
【００９１】
[0097]  この点では、本発明は、１つまたは複数のコンピュータもしくは他のプロセッサ上で実行される時、上で論じられた本発明のさまざまな実施形態を実装する方法を行う１つまたは複数のプログラムと共に符号化された、コンピュータ可読記憶媒体（または複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１つまたは複数のフロッピーディスク、コンパクトディスク（CD）、光ディスク、デジタルビデオディスク（DVD）、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイもしくは他の半導体デバイス内の回路構成、または他の有形コンピュータ記憶媒体）として具現化されてよい。前述の例から明らかであるように、コンピュータ可読記憶媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間にわたって情報を保持することができる。このような１つまたは複数のコンピュータ可読記憶媒体は、移送可能とすることができ、それによって、その上に記憶される１つまたは複数のプログラムは、１つまたは複数の異なるコンピュータもしくは他のプロセッサ上にロードされて、上で論じられた本発明のさまざまな態様を実装することができる。本明細書で使用されるように、「コンピュータ可読記憶媒体」という用語は、製品（すなわち、製造品）または機械であると考えられ得る非一時的なコンピュータ可読媒体のみを包含する。代替的にはまたはさらに、本発明は、伝播信号などの、コンピュータ可読記憶媒体以外のコンピュータ可読媒体として具現化可能である。
【００９２】
[0098]  「プログラム」または「ソフトウェア」という用語は、本明細書では、一般的な意味において、上で論じられた本発明のさまざまな態様を実装するようにコンピュータまたは他のプロセッサをプログラムするために用いられることが可能な任意のタイプのコンピュータコードまたはコンピュータ実行可能命令のセットに言及するために使用される。さらに、この実施形態の１つの態様によると、実行される時、本発明の方法を行う１つまたは複数のコンピュータプログラムは、単一のコンピュータまたはプロセッサ上に常駐する必要はないが、本発明のさまざまな態様を実装するためにいくつかの異なるコンピュータまたはプロセッサの間にモジュール方式で分散されてよいことは、理解されるべきである。
【００９３】
[0099]  コンピュータ実行可能命令は、１つまたは複数のコンピュータもしくは他のデバイスによって実行される、プログラムモジュールなどの多くの形態であってよい。一般的に、プログラムモジュールは、特定のタスクを行うまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。典型的には、プログラムモジュールの機能性は、さまざまな実施形態において必要に応じて組み合わせまたは分散可能である。
【００９４】
[00100]  また、データ構造は、コンピュータ可読媒体内に任意の適した形態で記憶されてよい。説明を簡単にするために、データ構造は、データ構造における場所を通して関係付けられるフィールドを有するように示される場合がある。同様に、このような関係は、フィールド間の関係を伝えるコンピュータ可読媒体における場所にフィールドの記憶を割り当てることによって実現可能である。しかしながら、任意の適した機構が、ポインタ、タグ、またはデータ要素間の関係を確立する他の機構の使用によることを含めて、データ構造のフィールドにおける情報間の関係を確立するために使用可能である。
【００９５】
[00101]  本発明のさまざまな態様は、単独で使用されてよいし、組み合わせて使用されてよいし、前述の内容で説明された実施形態では具体的に論じられていないさまざまな配置構成で使用されてよく、従って、その応用において、前述の説明に記載されたまたは図面に示された構成要素の詳細および配置構成に限定されない。例えば、１つの実施形態において説明される態様は、他の実施形態で説明される態様と任意のやり方で組み合わせ可能である。
【００９６】
[00102]  また、本発明は、その一例が提供されている方法として具現化可能である。その方法の一部分として行われる行為は、任意の適したやり方で順序付けられてよい。それに従って、示されたものとは異なる順序で行為が行われる実施形態が構築されてよく、これは、例示的な実施形態では連続的な行為として示されていても、いくつかの行為を同時には行うことを含むことができる。
【００９７】
[00103]  さらに、「ユーザ」によって取られるいくつかのアクションが説明される。「ユーザ」は１人の個人である必要はなく、いくつかの実施形態では、「ユーザ」によるアクションは、個人から成るチーム、および／またはコンピュータ支援ツールまたは他の機構と組み合わせた個人によって行われてよいことは理解されるべきである。
【００９８】
[00104]  請求項の要素を修正するための特許請求の範囲における「第１の」、「第２の」、「第３の」などの順序を表す用語の使用は、これらの用語自体が、一方の請求項の要素の他方に対する優先順位、上下関係、もしくは順序、または方法の行為が行われる時間的順序のいずれも暗示せず、単にある特定の名称を有する一方の請求項の要素を、同じ名称を有する（序数用語の使用を別にすれば）別の要素から区別して、これらの請求項の要素を区別するための標識として使用されるに過ぎない。
【００９９】
[00105]  また、本明細書で使用される術語および専門用語は、説明の目的のためのものであり、限定するものとみなされるべきではない。本明細書における「含む」、「備える」、または「有する」、「収める」、「伴う」、およびその変形の使用は、その後に列挙される項目およびその等価物ならびに追加の項目を包含することを意味する。
【図１】
2018520452.tif 000003
【図２】
2018520452.tif 000004
【図３Ａ】
2018520452.tif 000005
【図３Ｂ】
2018520452.tif 000006
【図４】
2018520452.tif 000007
【図５】
2018520452.tif 000008
【図６】
2018520452.tif 000009
【図７】
2018520452.tif 000010
【国際調査報告】
2018520452.tif 000011
2018520452.tif 000012
2018520452.tif 000013