IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アビニシオ テクノロジー エルエルシーの特許一覧

特許7096762コントロールを使用して汎用プログラムを構成する技法
<>
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図1
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図2
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図3A
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図3B
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図4
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図5
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図6
  • 特許-コントロールを使用して汎用プログラムを構成する技法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-28
(45)【発行日】2022-07-06
(54)【発明の名称】コントロールを使用して汎用プログラムを構成する技法
(51)【国際特許分類】
   G06F 8/38 20180101AFI20220629BHJP
   G06F 3/0481 20220101ALI20220629BHJP
【FI】
G06F8/38
G06F3/0481
【請求項の数】 13
(21)【出願番号】P 2018511356
(86)(22)【出願日】2016-05-13
(65)【公表番号】
(43)【公表日】2018-07-26
(86)【国際出願番号】 US2016032439
(87)【国際公開番号】W WO2016187033
(87)【国際公開日】2016-11-24
【審査請求日】2019-05-10
【審判番号】
【審判請求日】2021-07-16
(31)【優先権主張番号】14/714,037
(32)【優先日】2015-05-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】パイル,ヒュー,エフ.
【合議体】
【審判長】田中 秀人
【審判官】林 毅
【審判官】須田 勝巳
(56)【参考文献】
【文献】米国特許出願公開第2013/0247006(US,A1)
【文献】米国特許第6275225(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G66F8/38
G06F3/0481
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のパラメータによってパラメータ化される少なくとも1つの汎用コンピュータプログラムが、記録済み構成テンプレートに従って少なくとも部分的に定義されるユーザインターフェースを介して構成される、データ処理システムを動作する方法であって、前記データ処理システムは、実行時において定義されたデータである実行時データと、少なくとも第1の構成コントロールおよび第2の構成コントロールを含む複数の構成コントロールとを備え、前記第1の構成コントロールおよび前記第2の構成コントロールは少なくともユーザインターフェース部および動作部を備え、
前記方法は、コンピューティングシステムによって、
前記構成テンプレートに従って前記第1の構成コントロールの前記ユーザインターフェース部に基づいて第1のユーザインターフェースをレンダリングすることと、
前記第1のユーザインターフェースを通して第1のユーザ入力を受信することであって、前記第1のユーザ入力は前記少なくとも1つの汎用プログラムのインスタンスに前記1つまたは複数のパラメータのうちの少なくとも1つのパラメータの値を提供することと、
少なくとも部分的に前記構成テンプレートに基づいて、少なくとも部分的に前記第1の構成コントロールの前記動作部の少なくとも一部分の値を求めることに基づいて、前記第2の構成コントロールを特定することであって、前記値を求めることは少なくとも部分的に前記実行時データに基づいていることと、
特定された前記第2の構成コントロールの前記ユーザインターフェース部に基づいて第2のユーザインターフェースをレンダリングすることと、
前記第2のユーザインターフェースを通して第2のユーザ入力を受信することであって、前記第2のユーザ入力は前記少なくとも1つの汎用プログラムの前記インスタンスに前記1つまたは複数のパラメータのうちの少なくとも1つのパラメータの値を提供することと、
によって、前記ユーザインターフェースを動的に生成することで、前記少なくとも1つの汎用プログラムの前記インスタンスをユーザが構成できるようにすること、を含む、方法。
【請求項2】
前記少なくとも1つの汎用プログラムの前記インスタンスに対する前記1つまたは複数のパラメータのうちの少なくとも1つのパラメータの前記値に従って前記少なくとも1つの汎用プログラムの前記インスタンスを実行することをさらに含む、請求項1に記載の方法。
【請求項3】
少なくとも部分的に前記実行時データに基づいて前記第1の構成コントロールの前記動作部の少なくとも一部分の値を求めることは、前記構成テンプレートの少なくとも1つのパラメータの値を求めることを含む、請求項1に記載の方法。
【請求項4】
少なくとも部分的に前記実行時データに基づいて前記第1の構成コントロールの前記動作部の少なくとも一部分の値を求めることは、少なくとも1つの環境変数の値を求めることを含む、請求項1に記載の方法。
【請求項5】
前記実行時データは実行可能コンピュータプログラムコードを実行する際の1つまたは複数の結果を含む、請求項1に記載の方法。
【請求項6】
前記少なくとも1つの汎用プログラムはデータ処理言語によって定義される、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの汎用プログラムはデータフローグラフを含む、請求項1に記載の方法。
【請求項8】
前記データフローグラフの第1のパラメータの値は前記第1のユーザ入力に基づいて判断され、前記データフローグラフの第2のパラメータの値は前記第2のユーザ入力に基づいて判断される、請求項7に記載の方法。
【請求項9】
前記データフローグラフの前記第1のパラメータの前記値は、前記第1のユーザインターフェースの少なくとも1つのユーザインターフェース要素と、前記データフローグラフの前記第1のパラメータとの間の所定のマッピングに基づいて判断される、請求項8に記載の方法。
【請求項10】
前記少なくとも1つの汎用プログラムはデータフローグラフの部分グラフを含む、請求項1に記載の方法。
【請求項11】
前記第2の構成コントロールを特定することはさらに前記第1のユーザ入力に基づいている、請求項1に記載の方法。
【請求項12】
前記第2の構成コントロールを特定することは少なくとも1つのルックアップを行った結果にさらに基づいている、請求項1に記載の方法。
【請求項13】
前記第1の構成コントロールの前記動作部は前記第1のユーザインターフェースを通して提供されるユーザ入力に応じて値が求められる、請求項1に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
[0001] データフローグラフなどの実行可能プログラムは、プログラムの実行の態様を構成する1つまたは複数のパラメータを含むことができる。例えば、データファイルを読み取るプログラムは、データファイルが記憶される場所を指示するための値が供給可能であるパラメータを含むことができる。プログラムが実行される前に、パラメータの値は、指定場所がデータファイルを読み取るためにアクセスされるように供給できる。同プログラムは、該プログラムを2回目に実行する時にユーザがパラメータの異なる値を供給することによって、異なるデータファイルを読み取る間に再び実行されてよい。
【0002】
[0002] いくつかの実行可能プログラムは、一般に、タスクを指定するように書き込まれた後、所与のシナリオのタスクを行うように「パラメータ化する」ことによって構成可能である。プログラムを「パラメータ化する」ことは、シナリオに対応するプログラムにパラメータの値を供給することを必然的に伴う。このようなプログラムは、「汎用プログラム」と呼ばれる時がある。例えば、データファイルをソートするための汎用プログラムは、入力ファイル場所、出力ファイル場所、データ用記録フォーマット、およびソートキーによってパラメータ化されてよい。これらのパラメータの適した値を供給することによって、汎用プログラムは、データをソートしその結果をファイルに保存することが所望される任意のインスタンスにおいて実行可能である。
【0003】
[0003] 汎用プログラムは、ユーザが、汎用プログラムのパラメータの適切な値を指定できるようにするユーザインターフェースの使用によって、パラメータ化できる。場合によっては、汎用プログラムをパラメータ化するユーザは、汎用プログラムを書き込むユーザと異なっている場合がある。例えば、汎用プログラムの作成は、汎用プログラムを実行するためのパラメータの選択より高いレベルの技術的熟練を必要とする場合がある。
【発明の概要】
【課題を解決するための手段】
【0004】
[0004] いくつかの態様に従って、データ処理システムを動作する方法が提供される。このシステムにおいて、少なくとも1つのコンピュータプログラムが、記録済み構成テンプレートに従って少なくとも一部分が定義されるユーザインターフェースを介して構成される。データ処理システムは、実行時間データと、少なくとも第1の構成コントロールおよび第2の構成コントロールを含む複数の構成コントロールとを備え、第1の構成コントロールおよび第2の構成コントロールは少なくともユーザインターフェース部および動作部を備える。該方法は、構成テンプレートに従って、第1の構成コントロールのユーザインターフェース部に基づいて第1のユーザインターフェースをレンダリングすることと、第1のユーザインターフェースを通して第1のユーザ入力を受信することであって、第1のユーザ入力は少なくとも1つのプログラムのインスタンスに構成情報を提供する、受信することと、少なくとも一部分が構成テンプレートに基づき、少なくとも一部分が第1の構成コントロールの動作部の少なくとも一部分の値を求めることに基づいて、第2の構成コントロールを特定することであって、この値を求めることは少なくとも一部分が実行時間データに基づいている、特定することと、特定された第2の構成コントロールのユーザインターフェース部に基づいて第2のユーザインターフェースをレンダリングすることと、第2のユーザインターフェースを通して第2のユーザ入力を受信することであって、第2のユーザ入力は少なくとも1つのプログラムのインスタンスに構成情報を提供する、受信することと、によって、ユーザインターフェースを動的に生成することで、少なくとも1つのプログラムのインスタンスをユーザが構成できるようにすることを含む。
【0005】
[0005] いくつかの態様によると、ユーザが少なくとも1つのコンピュータプログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを作成する方法が提供される。該方法は、コンピューティングシステムによって、少なくとも一部分がユーザ入力に基づいて、第1の構成コントロールをインターフェースに関連付けることであって、第1の構成コントロールは、少なくとも動作部と、第1のユーザインターフェースを定義するユーザインターフェース部とを備え、第1の構成コントロールは、少なくとも一部分が第1のユーザインターフェースを通して受信されるユーザ入力に基づいて少なくとも1つのプログラムに対して構成情報を定義するように構成される、関連付けることと、第2の構成コントロールをインターフェースに関連付けることであって、第2の構成コントロールは、少なくとも動作部と、第2のユーザインターフェースを定義するユーザインターフェース部とを備え、第2の構成コントロールは、少なくとも一部分が第2のユーザインターフェースを通して受信されるユーザ入力に基づいて少なくとも1つのプログラムに対して構成情報を定義するように構成される、関連付けることと、少なくとも一部分が実行時間データに基づいて、第1のユーザインターフェースを通して受信されるユーザ入力が第2のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも1つのインスタンスを定義するデータを記録することと、を含む。
【0006】
[0006] いくつかの態様によると、少なくとも1つのコンピュータ可読媒体が提供される。該コンピュータ可読媒体は、実行される時、コンピュータにコンピュータプログラムを構成する方法を行わせる命令を含む。該方法は、第1のユーザインターフェースを通して受信される情報に基づいてプログラムを記録することであって、プログラムは1つまたは複数の構成パラメータを受け入れる、記録することと、ユーザがプログラムのインスタンスを構成できるようにするインターフェースを少なくとも一部分が定義する構成テンプレートを記録することと、ユーザがプログラムのインスタンスを構成できるように構成ユーザインターフェースを動的に生成することと、を含み、構成テンプレートを記録することは、それぞれがユーザインターフェース要素を含む複数の構成コントロールを選択すること、選択された構成コントロールのユーザインターフェース要素と、1つまたは複数の構成パラメータの構成パラメータとの間のマッピングを記録すること、および、複数の構成コントロールの少なくとも一部のユーザインターフェース要素のレンダリングの条件付き順序を記録すること、によって、第2のユーザインターフェースを通して受信される情報に基づいており、構成ユーザインターフェースを動的に生成することは、複数の構成コントロールの第1の構成コントロールに関連付けられた構成ユーザインターフェースにおいてユーザインターフェース要素をレンダリングすること、第1の構成コントロールのユーザインターフェース要素を介してユーザ入力を受信すること、および、少なくとも一部分がユーザ入力およびマッピングに基づいて少なくとも1つの構成パラメータの値を記憶し、複数の構成コントロールの第2の構成コントロールのユーザインターフェース要素に基づいて構成ユーザインターフェースを修正することであって、第2の構成コントロールは少なくとも一部分がユーザ入力に基づいて選択される、修正することによって、動的に生成する。
【0007】
[0007] 前述は本発明の非限定的な要約であり、これは添付の特許請求の範囲によって定義される。
【0008】
[0008] 以下の図を参照して、さまざまな態様および実施形態について説明する。図は、必ずしも一定の尺度で描かれる訳ではないことは理解されるべきである。図面では、さまざまな図に示されるそれぞれの同一のまたはほぼ同一の構成要素が同様の数字で表される。明確にするために、全ての構成要素が全ての図面において標示されない場合がある。
【図面の簡単な説明】
【0009】
図1】[0009]いくつかの実施形態に従って、1つまたは複数の構成コントロールを使用して汎用プログラムを構成するための例示のプロセスを示す図である。
図2】[0010]いくつかの実施形態に従って、構成コントロールの例示の構成要素を示す図である。
図3A】[0011]いくつかの実施形態に従って、条件付きで選択されるシーケンスにおける構成コントロールの例示の使用を示す図である。
図3B】いくつかの実施形態に従って、条件付きで選択されるシーケンスにおける構成コントロールの例示の使用を示す図である。
図4】[0012]いくつかの実施形態による、データフローグラフの構成を示す機能ブロック図である。
図5】[0013]いくつかの実施形態による、メタデータリポジトリに記憶される構成コントロールおよび汎用データフローグラフを示す図である。
図6】[0014]本明細書に説明される技法に従って、ユーザが汎用プログラムを構成するための例示の開発プロセスを示す図である。
図7】[0015]本発明の態様が実装可能であるコンピューティングシステム環境の一例を示す図である。
【発明を実施するための形態】
【0010】
[0016] 本発明者は、データ処理システム、および、複雑なプログラムによって制御される他のシステムの効率がそういった複雑なプログラムのパラメータ化を簡易にする技法によって改善可能であることを認識しかつ理解している。このような効率は、異なる人々が、異なるスキルセットによって、異なる時間に異なるタイプの入力を行うことができるようにする技法によって実現可能である。熟練したプログラマは、例えば、プログラムを実行するコンピュータ化システムと1つまたは複数のデータ記憶装置との間の対話を定義することができる。これらの対話は、汎用プログラムとしてキャプチャ可能である。汎用プログラムを企業内で十分に有用にするために、ビジネスアナリストといった、ビジネスの必要性に精通している別のユーザは、プログラムの実行時に使用されるパラメータの値を指定することができる。例えば、ビジネスアナリストは、どのデータソースにアクセスするか、データソース内のどのフィールドにアクセスするか、データソースからアクセスしたデータをどのようにソートするか、および/またはデータに関して行われるべき1つまたは複数の変換などのパラメータの値を指定することができる。
【0011】
[0017] しかしながら、ビジネスアナリストは、本来ならばビジネスアナリストが所望のビジネスロジックを実装するためにプログラムを書き込むことができると思われるプログラミングの詳細な知識を欠如している場合がある。それに従って、いくつかのシナリオでは、プログラマは、汎用のやり方でプログラムを書き込む場合があり、そうすることで、複数のシナリオのいずれかにおいて該プログラムを作動させることができるようにする。そのプログラムは、複数の構成パラメータを有することができ、それによって、構成パラメータに対する値が指定される時、プログラムは本来ならば特定のシナリオに対してカスタマイズされた動作を行うように実行する。例えば、データソース場所を指定するパラメータの値に基づいて、適切なデータソースにアクセスすることができる。
【0012】
[0018] ビジネスアナリスト、またはプログラムの他のユーザは、適したユーザインターフェースにアクセスするなどによって、所与のシナリオに対して構成パラメータの値を指定することができる。このように、ビジネスアナリスト、またはプログラミングに精通していない場合がある他の人は、特定的なビジネスシナリオに対するプログラムを構成できる。いくつかの実施形態では、プログラムに対するテンプレートは、ビジネスアナリストが構成パラメータの値を容易に入力することができるようにするために定義可能である。テンプレートは、汎用プログラムの詳細に精通しているプログラマによって作成されてよく、ユーザ(例えばビジネスアナリスト)によって入力された値と、プログラムのパラメータとの間のマッピングを供給することができる。プログラムを所望のやり方で制御するために値を入力する際にビジネスアナリストを支援するために、テンプレートは、所望の機能を果たすようにプログラムを構成するパラメータの値を提供するためにビジネスアナリストがプログラムの動作の詳細な知識を必要としないようにそれぞれのパラメータが制御することを指示する情報を収めることができる。テンプレートのこれらの態様および/または他の態様は、少なくとも一部分がテンプレートによって定義可能であるユーザインターフェースを介してビジネスアナリストに提示可能である。
【0013】
[0019] アナリストが構成パラメータの値を提供できるように、テンプレートの生成を簡易にするために、より直観的インターフェースを提供するために、テンプレートによって、別個に定義される構成コントロールに基づいてアナリストに提示されるインターフェースの態様が動的に生成可能である。構成コントロールは、例えば、プログラマによって定義されてよい。代替的には、構成コントロールのセットは、あらかじめ定義されたおよび/またはユーザ定義のコントロールを含むことができる。いくつかの実施形態では、例えば、テンプレートは、ユーザインターフェース要素をユーザに動的に提示可能である。それぞれのユーザインターフェース要素は、インターフェースを通してユーザによって入力された1つまたは複数の値をプログラムの構成パラメータと関連付ける構成コントロールと関連付けられてよい。いくつかの実施形態において、構成コントロールのセットは、あらかじめ定義されたコントロールから成ることができ、それによって、プログラムを構成するためにユーザ入力を整理する「テンプレート」はあらかじめ定義されたコントロールのセットを選択することによって生成可能とする。
【0014】
[0020] 本明細書において使用されるように、構成コントロールは、呼び出される時コンピュータの実行を制御する命令のセットまたは他の情報に言及することができる。これらの構成コントロールは、構成するために使用可能であるプログラムについての情報に頼ることなくプログラムされてよい。これらの構成コントロールは、種々の汎用プログラムに対する種々の構成プロセスを定義することができる種々のテンプレートが種々のシナリオにおいて同じコントロールを利用できるように、再利用可能である。特定の構成アクティビティは頻繁に行われてよく(例えば、ファイルを選択する)、それに従って、「共通の」構成コントロール(または単に「共通のコントロール」)は、関連付けられた構成アクティビティが行われるべきである任意の適したシナリオで使用可能であるように定義されてよい。このように、共通のコントロールは、テンプレートによって定義された構成プロセスの少なくとも一部分の定義をモジュール化することができる。
【0015】
[0021] いくつかの実施形態によると、構成データは、汎用プログラムを構成するために構成コントロールを使用することによって生じる場合がある複雑性にかかわらず、汎用プログラムの構成を可能にするために構成コントロールと併せて使用されてよい。例えば、汎用プログラムの1パラメータにとって適切である値の幅は、プログラムの1つまたは複数の他のパラメータに対して指定された値に左右される場合がある。同様に、プログラムを構成するための値が必要とされるパラメータは、他のパラメータに対して指定された値に左右される場合がある。例えば、汎用プログラムは、データファイルを読み取った後、データを使用したアクションを行うことができる。汎用プログラムは、データファイル場所をパラメータ化するように構成されてよいが、フラットファイル用の記録フォーマット、XMLドキュメント用のスキーマなど、データファイルの他の態様に関連している既定のパラメータのセットを使用することは、プログラムを実行させるためにどのように構成可能であるかを限定する場合がある。例えば、記録フォーマットを指定するためのパラメータを提供することは、データファイルがフラットファイルである時に必要である場合があるが、データファイルがXMLドキュメントである時には無関係であるかさらには不正確である場合がある。別の例として、記録当たり3つのフィールドを有するデータソースを指定することは、データソースを指定するパラメータの値が10のデータフィールドを有するデータソースを指示する場合とは、動作するフィールドを指定するパラメータに対する可能な値を異なる幅でもたらすことができる。代替的には、プログラムが記憶済みのデータに対して結果を比較するプログラムの一部をバイパスすべきであることをパラメータの値が指示する場合、記憶済みのデータのソースを指定するユーザ入力を要請すべき理由がない可能性がある。
【0016】
[0022] それに従って、構成パラメータの値が得られるユーザインターフェースを生成する際に使用される構成コントロールのセットを指定することと併せて、構成データは記録されてよい。この構成データは、入力パラメータの値をリクエストするためにどの構成コントロールが使用されるか、および/または、入力パラメータの値をリクエストするためにそれらの構成コントロールが使用される順序が指定可能であるかなどの事を指示することができる。この実行の順序は、条件付きであってよく、先に、他の構成コントロールから受信された構成パラメータの値といった、ユーザから受信された入力に基づくことができる。同様に、ユーザインターフェース要素は先に受信された値に基づいて構成されてよい。
【0017】
[0023] いくつかの実施形態によると、構成コントロールは、1つまたは複数のパラメータ、変数、引数の値を求める、および/または、実行時間データに基づいて1つまたは複数のプログラムを実行することができる。構成コントロールをユーザに提示するデータ処理システムは、実行時間において(例えば、環境パラメータ、データファイル、および/または実行可能プログラムによって)定義されたデータを含むことができ、構成コントロールは、1つまたは複数のパラメータ、変数、引数の値を求めるように、および/またはかかる実行時間データに基づいて1つまたは複数のプログラムを実行するように構成されてよい。それぞれの構成コントロールは、それ自体の範囲に、構成コントロールの1つのインスタンス内で求められた名前付きパラメータの値が、同じ構成コントロールの別のインスタンスにおいて値が求められる時、同名前付きパラメータと異なる結果の値まで求めることができるようにしてよい。例えば、構成コントロールは、値が環境変数に応じて表現される構成パラメータを含むことができる。構成コントロールが構成パラメータの値を求める時、環境変数の現在の値を判断し、それに応じて構成パラメータの値を求める。同じ構成コントロールが同じ構成プロセスの異なる部分において(すなわち、同じ汎用プログラムの同じインスタンスを構成する際に)後に使用される場合、それぞれのケースにおける構成パラメータの値は、それ自体の範囲内で求められてよく、従って、それぞれのケースにおいて異なる値まで求めることができる。構成パラメータは、同じ構成コントロール内の他のパラメータ、および/または構成テンプレート内の他のパラメータに応じて表現されてよい。
【0018】
[0024] それに従って、本明細書に説明される技術の態様は、構成インターフェースを生じさせるために組み合わせ可能である構成コントロールの使用に関する。本発明者は、汎用プログラムを構成するための動的インターフェースが動作ロジックに加えてインターフェース要素を提供することができる構成コントロールを使用してインターフェースをビルドすることによって効率的に提供可能であることを認識している。動作ロジックは、値が求められる時、構成インターフェースをどのように提示するかおよび/または適応させるかを判断することができる、静的コードまたは動的(例えば実行可能)コードを含むことができる。そのような適応は、例えば、構成インターフェースによって提示されるユーザインターフェースを初期化するおよび/または更新することを伴う場合がある。代替的にはまたはさらに、それらの適応は、ユーザによって構成インターフェースに提供された入力を検証することなどの他のタスクを含むことができる。
【0019】
[0025] さらに、ユーザによって構成コントロールに入力された値は、コントロールによって提供されたコンテキストに基づいて汎用プログラムの適切なパラメータにマッピングされてよい。このようなマッピングは、構成コントロールのユーザインターフェース要素を通して収集された値を汎用プログラムの特定的なパラメータにリンクする「アダプタ」によって指定されてよい。上で論じられたように、「共通の」構成コントロールは、プログラム構成タスクの幅に対する広範な適用性を有する、再利用可能なインターフェース構成要素を表すことができ、アダプタはこのような使用をサポートすることができる。しかしながら、いくつかの実施形態が既定の機能性を果たす構成コントロールを利用することができるため、構成コントロール全てが汎用であるまたは再利用可能である必要性はない。
【0020】
[0026] 実例として、汎用プログラムを構成するためのインターフェースは、ファイル選択インターフェースを提供するユーザインターフェース要素と関連付けられた構成コントロールによって生成されてよい。記録フォーマットの選択といった、ファイルを選択することに関連付けられたタスクのための、および選択されたファイルのためのXMLスキーマの選択のためのインターフェースを提供する追加の構成コントロールが利用可能であってよい。ユーザは、第1の構成コントロールのユーザインターフェース要素を使用してファイルを選択することができ、その後、選択されたファイルのタイプを判断するためのユーザ入力に基づくロジックを実行する。ファイルのタイプに基づいて、追加の構成コントロールのうちの1つは選択されてよく、次いで、ユーザがファイルタイプに従ってさらなる構成情報を提供することができる(例えば、フラットファイルの場合に記録フォーマットを選択する、またはXMLドキュメントの場合にXMLスキーマを選択する)ように提示可能である。このように、汎用プログラムは、汎用プログラムがユーザによってどのように構成可能であるかにおける柔軟性をより大きくするように、動的に選択されたパラメータ値のセットを使用して構成されてよい。
【0021】
[0027] いくつかの実施形態によると、構成コントロールは、少なくとも部分的に、ユーザインターフェース内に提示する後続の構成コントロールを指定することができる。例えば、上の例では、ファイル選択構成コントロールは、記録フォーマットを選択するためにユーザに提示される構成コントロールを特定することができる。当初の構成コントロールは、例えば、提示されるべき後続の構成コントロールを特定するロジックを実行する(またはロジックを実行させる)ことができる。動的に判断された条件に基づいて構成コントロールをこうして特定することは、後続の構成コントロールが特定されるように、ルックアップファイルにアクセスすること、プログラムを実行することなどによって、任意の適したやり方で行われてよい。
【0022】
[0028] いくつかの実施形態では、「ウィザード」はプログラムと併せて提供可能である。ウィザードは、構成コントロールのシーケンスを選択することによってユーザインターフェースを生成するプログラムであってよい。ウィザードは、ディスプレイまたは他のユーザインターフェース機構上に、少なくとも一部分が選択された構成コントロールによって定義されたページをうまく提示することができる。ウィザードは、ウィザードが実行される時に選択されたコントロールの実行の順序を動的に判断することができる構成データによって符号化されてよい、またはこれにアクセスしてよい。ページの順序は、ユーザに提示する前に選択されてよい、および/または、ユーザ入力、またはシーケンスの提示中に生じる場合がある他のイベントに基づいて動的に選択されてよい。例えば、ページの順序は、ユーザインターフェースを通して受信された値に左右される場合がある。同様に、ユーザインターフェース要素は、受信された値に基づいてカスタマイズされてよい。いくつかの実施形態によると、構成コントロールは、少なくとも一部分が、ウィザードによって実行されるロジックに、およびウィザードによって提示されている構成コントロールに提供される入力に基づいて選択可能である。例えば、ウィザードは、ユーザによってアクティブにされる時にアクティブにされたナビゲーション要素に、およびウィザードによって提示されている構成コントロールに提供される入力に基づいて、構成コントロールを特定するロジックを実行する(例えば方向ボタンの形態の)ユーザインターフェースにおいてナビゲーション要素を提供することができる。これによって、例えば、ウィザードに、先に提示された構成コントロールによって実行されるロジックに基づいて選定される構成コントロールをうまく提示可能とすることができる。ウィザードは、ウィザードによって定義される、任意の数の構成コントロールおよび/または任意の数の他のコントロールを含むことができる。
【0023】
[0029] いくつかの実施形態によると、ウィザードは、ウィザードによって定義される、任意の数の構成コントロールおよび/または任意の数の他のコントロールに基づいて、構成インターフェースを提示することができる。例えば、ウィザードは、構成コントロールによって定義されるユーザインターフェース、および、構成インターフェース上に、ユーザによってアクティブにされる時、ユーザがウィザードによって提示されるページのシーケンスを通して前進するおよび/または後退することができるようにするナビゲーション要素を提供する追加のユーザインターフェース要素の一部分を提示することができる。これらのナビゲーション要素は、構成コントロールからの要素の提示とは違って、ウィザードによって提示可能である。さらに、ユーザは、提示された構成コントロールによって提供されるもの以外の追加の機能を果たす、かかる提示された要素(例えばナビゲーション要素)と対話することができる。
【0024】
[0030] 下記に従って、動的に選択された構成コントロールを使用して汎用プログラムを構成することに関するさまざまな概念、およびこの実施形態について、より詳細に説明する。本明細書に説明される種々の態様が多数のやり方のいずれかで実装可能であることは理解されるべきである。特定的な実装形態の例は、例示の目的のためだけに本明細書において提供される。さらに、以下の実施形態において説明されるさまざまな態様は単体でまたは任意の組み合わせで使用されてよく、本明細書に明示的に説明される組み合わせに限定されない。本明細書に説明されるような構成コントロールは、「複合コントロール(Compound Controls)」という名称の、2014年2月27日に出願された米国特許出願第14/192,184号に説明されるような「複合コントロール」を含むことができ、この文献は参照により本明細書に組み込まれている。
【0025】
[0031] 上で論じられたように、構成コントロールは、汎用プログラムを構成するためのインターフェースを動的に生成するために使用可能である。図1は、いくつかの実施形態に従って、ユーザインターフェースを有するシステムによって提示される1つまたは複数の構成コントロールを使用する汎用プログラムをユーザが構成するプロセスを概略的に示す。方法100における構成コントロールの選択および提示は、ユーザが、ユーザコマンド、アクションなどによってインターフェース接続することができる1つまたは複数のシステムによって行われてよい。
【0026】
[0032] 方法100において、構成コントロールは、構成コントロール110のセットから選択され、ユーザ130が汎用プログラム140を構成できるユーザインターフェースをコンピューティングステムが提示するようにユーザに提示される。適したシステムは、以下で説明されるように、全体または一部が、構成テンプレート150によって提供されるロジックに基づく構成コントロール110のセットから構成コントロールを選択することができる。本明細書で使用されるように、構成コントロールの「提示」は、構成コントロールに基づいてユーザに対してユーザインターフェース120の全てまたは一部をレンダリングすることを含むことができる。
【0027】
[0033] ユーザは、汎用プログラムに構成情報を提供するためにレンダリングされたユーザインターフェースとインターフェース接続することができる。構成コントロールの選択は、構成テンプレート150に基づいて判断される。この構成テンプレート150は、上で論じられたように、ユーザ(例えばビジネスユーザ)による汎用プログラムの構成を容易にするように(例えば技術系ユーザによって)先に定義されている場合がある。構成テンプレートは、構成コントロール110の1つまたは複数を含むことができる汎用プログラム140の構成のために使用されるべきコントロールのシーケンスを定義することができる。構成コントロールの選択は、構成テンプレート、現在選択されている構成コントロールおよび/または他の構成コントロールに提供されるユーザ入力、1つもしくは複数のルックアップファイル、任意の他の適した要因、またはこれらの組み合わせに基づいて、動的に行われてよい。
【0028】
[0034] 図1の例では、構成コントロール110のセットは、汎用プログラムを構成するためのインターフェースの動的な生成に利用可能である。構成コントロールはユーザインターフェース部および動作部を含むことができる。構成コントロールのユーザインターフェース部は、任意の適したやり方で、コントロールを実行するコンピュータシステムが構成コントロールを提示する時にどのようにユーザインターフェースをレンダリングするのかを定義することができる。動作部は、ユーザインターフェースまたはその他に対する機能性を提供する、1つまたは複数のパラメータ、変数、もしくは引数、および/または1つもしくは複数のプログラムに関連付けられてよい。このような関連性は、動作部内にこれらの態様(例えばパラメータ)を含むこと、および/または他の所で記憶されるパラメータにリンクすることによるものであってよい。例えば、動作部は、レンダリングされた構成コントロールのユーザインターフェースに入力されたデータの検証を行うように構成されるプログラムに対するポインタを含むことができる(または、プログラム自体を含むことができる)。構成コントロールのユーザインターフェース部および動作部は、図2との関連で以下にさらに詳細に論じられる。
【0029】
[0035] 方法100の行為101において、ユーザ130が対話するコンピューティングシステムは、現在選択されている構成コントロールのユーザインターフェース部に基づいてユーザインターフェースをレンダリングする。ユーザインターフェースは、限定はされないが、テキストボックス、ボタン、スライダー、リストボックス、ドロップダウンリスト、メニュー、ツールバー、アイコン、ツリー表示、標識といった、任意の数の任意のタイプのユーザインターフェース要素を含むことができる。当技術分野で知られているように、コンピューティングシステムは、ディスプレイ上にこのような要素のグラフィック表示をレンダリングすることができる。ユーザは、表示された要素と相関している、マウスの移動、マウスのクリック、キーストロークなどの1つまたは複数の入力を行うことで、コンピュータシステムが、そのユーザ入力を、コントロールのプログラミングによって定義される特定的な意義と関連付けるようにすることができる。ユーザインターフェース要素およびそれらのレンダリングのやり方(例えばそれらのレイアウト)は、任意の適したやり方で現在選択されている構成コントロールのユーザインターフェース部によって定義されてよい。
【0030】
[0036] いくつかの実施形態によると、レンダリングされた構成コントロールのユーザインターフェース120のユーザインターフェース要素の1つまたは複数には、少なくとも一部分が現在選択されている構成コントロールの動作部に基づくデータが投入されてよい。例えば、動作部は、レンダリングされた構成コントロールの1つまたは複数のユーザインターフェース要素内の選択に利用可能である値を定義することができる。このような値は、構成コントロールによって記憶される静的値であってよい、および/または、(例えば、1つまたは複数のプログラムを実行することによって、または別の方法で、構成コントロールの動作部のロジックを実行することによって)動的に判断されてよい。それに従って、レンダリングされた構成コントロールのユーザインターフェース120の視覚による見た目は、現在選択されている構成コントロールのユーザインターフェース部によって定義可能であるのに対して、レンダリングされた構成コントロールのユーザインターフェース内の選択に利用可能である少なくともいくつかのデータ値は、現在選択されている構成コントロールの動作部のプログラミングによって定義可能である。
【0031】
[0037] いくつかの実施形態によると、構成コントロールの動作部は、構成コントロールのレンダリングされたユーザインターフェースの初期挙動を判断することができる、および/または、レンダリングされたユーザインターフェースの反応的挙動を判断することができる。初期挙動は、上で論じられたように、レンダリングされた構成コントロールの1つまたは複数のユーザインターフェース要素内の選択に利用可能である値を定義することを含むことができる。例えば、構成コントロールを提示するシステムは、構成コントロールの動作部に基づいて構成コントロールのユーザインターフェース要素の選択可能な値を定義することができる。反応的挙動は、レンダリングされたユーザインターフェース120の1つまたは複数のユーザインターフェース要素内の選択に対する値を更新すること、妥当性チェックを行うこと、ユーザインターフェースのフィールドに投入すること、ユーザインターフェース要素を示すことおよび/または隠すことなどを含むことができ、これらのいずれも、少なくとも一部分が、レンダリングされたユーザインターフェースに提供されるユーザ入力102に基づくことができる。例えば、レンダリングされた構成コントロールはファイルを選択するためのユーザインターフェース要素を含むことができる。ファイルが選択されると、ファイルが読み取り可能であることをチェックする、パスが有効である、構成コントロールの動作部のプログラムが実行可能であり、このプログラムは、構成コントロールの別のユーザインターフェース要素において表示するために、ファイルのコンテンツのプレビューを生じさせる。場合によっては、静的および/または動的であってよく、構成コントロールの動作部に関連付けられているパラメータおよび/または実行可能コードは、(例えば、ユーザが上の例で異なるファイルを選択する場合)ユーザがレンダリングされた構成コントロールと対話する際に何度も値が求められてよい。
【0032】
[0038] システムは、ユーザ入力102に基づいて構成されている汎用プログラム140に適用されるべき構成値を判断することができる。例えば、ユーザは、1つまたは複数のインターフェース要素を介して値を入力することができる。これらの値は、ユーザによってタイプされた値をパラメータに割り当てることなどによって、汎用プログラム140のパラメータに投入するために直接使用されてよい。代替的にはまたはさらに、ユーザは、ボタンまたはスライダーなど、含意された値を有するユーザインターフェース要素と対話することができ、ここで、含意された値は汎用プログラム140のパラメーラに割り当てられる。代替的には、値は、汎用プログラムに供給される前に現在レンダリングされている構成コントロールの動作部に基づいて修正されてよい。
【0033】
[0039] いくつかの実施形態によると、アダプタは、現在レンダリングされている構成コントロールのユーザインターフェースにユーザ入力を介して提供される値と、汎用プログラムのパラメータとの間のマッピングを提供することができる。アダプタは、例えば、構成テンプレート自体を定義する技術系ユーザによって、構成テンプレートと併せて定義可能である。アダプタは、例えば、汎用プログラム140の一部分として記憶可能である、構成テンプレート150の一部分として記憶可能である、および/または、図に示されない別個の構成要素として記憶可能である。アダプタは、同じ構成コントロールの2つのコピー内の同じパラメータを、構成中の構成コントロールのそれぞれの使用中の汎用プログラムの種々のパラメータにマッピングすることができるため、構成プロセスの種々の態様のために同じ構成コントロールの再利用を可能にすることができる。それに従って、アダプタは、構成テンプレートによって特定される構成コントロールが、構成されている汎用プログラムのパラメータの値を定義するためにアダプタがそれらを利用するやり方に対する依存性を有するため、一般的に構成テンプレートと併せて定義されてよい。
【0034】
[0040] アダプタの使用の1つの非限定的な例として、提示されている構成コントロールは、そのユーザインターフェース内のデータフィールドに対して第1のパラメータ名を使用することができるのに対して、この値は異なるパラメータ名を有する汎用プログラム内のパラメータにマッピングされるものとする。アダプタは、値がユーザによって提供される時に汎用プログラムのパラメータに構成コントロールの第1のパラメータの値をマッピングするように構成されていてよい。このように、アダプタは、構成プロセスの種々の態様に対して同じ構成コントロールの再利用を可能にすることができるが、これは、アダプタが、同じ構成コントロールの2つのコピー内の同じパラメータを、構成中の構成コントロールのそれぞれの使用中の汎用プログラムの種々のパラメータにマッピングすることができるからである。
【0035】
[0041] 行為104において、さらなる構成コントロールは、構成コントロール110から提示のために選択される。選択された構成コントロールは、先に提示されたのと同じ構成コントロールであってよい(すなわち、上述されるように構成コントロールのユーザインターフェースをレンダリングすることによって)、または、異なる構成コントロールであってよい。構成テンプレート150および/または当初の構成コントロールでは、少なくとも一部分は、どの構成コントロールが提示のために選択されるのかを判断することができる。構成テンプレートは、提示されるべき構成コントロールの順序付けられたシーケンスを指示することができる、および/または、提示されるべき構成コントロールを動的に判断するためのロジックを含むことができる。さらにまたは代替的には、提示された構成コントロールは、少なくとも一部分が、最初に提示された構成コントロールの動作部の態様に基づいて選択可能である。いくつかの実施形態によると、構成コントロールは、提示するための後続の構成コントロールを特定するパラメータを含むことができる。このようなパラメータは、静的(例えば、固定値で構成コントロールによって記憶される)、または動的(例えば、提示するための後続の構成コントロールを特定する値をもたらすロジックを実行することができるであってよい。動的パラメータは、このようなロジックを、少なくとも一部分、例えば、構成テンプレート150によって定義および/または記憶可能であるルックアップファイルにアクセスすることによって、実行することができる。
【0036】
[0042] いくつかの実施形態によると、提示する構成コントロールを選択することは、ユーザ入力を介して、任意の数の、先にレンダリングされた構成コントロールに提供されたデータに基づくことができる。例として、ユーザがデータファイルを選択するための入力を行う第1の構成コントロールが提示可能である。第1の構成コントロール内の構成テンプレートおよび/または実行可能ロジックは、次いで、行われた入力に基づいて(例えば、ファイルシステムにおけるファイルの場所に基づいて、ファイルタイプ、その拡張に基づいて、など)提示するために第2の構成コントロールを特定してよい。
【0037】
[0043] いくつかの実施形態によると、構成コントロールは、構成テンプレート150に基づいて定義される1つまたは複数の値を含むことができる。構成コントロールは、使用時に構成テンプレートに基づいてこの値に変える構成テンプレートによって定義されるべき値に対する1つまたは複数の基準を含むことができる。例えば、いくつかの構成コントロールは、「company_name」というパラメータの値を有するのと同じやり方で定義された(および、例えば、それらの構成コントロールのいずれかに基づいてレンダリングされたユーザインターフェース内に表示可能である)パラメータを含むことができる。構成テンプレート内の「company_name」の値を定義することによって、構成コントロールのそれぞれは、ユーザインターフェースをレンダリングするために使用される時、ユーザインターフェースにおいて値を表示することができる。これは、例えば、構成テンプレートにおいて定義された「company_name」の値を、値が構成コントロール内の「company_name」に左右されるパラメータに渡すことによって行われてよい。
【0038】
[0044] 上で論じられたように、構成プロセスを定義する情報は、構成プロセスにおけるさまざまな段階においてコントロールを選択し、選択されたコントロールが使用される際に、表示要素において提示された任意選択を変更すること、またはユーザ入力によってプロセスを改変するやり方を変更することなどのために使用されるデータ値を提供するために、システムによる記憶およびその後のアクセスが可能である。いくつかの実施形態では、その情報は「テンプレート」として記憶されてよい。構成テンプレートは、構成される特定の汎用プログラム140のために開発されてよい。例えば、汎用プログラム140を定義するプログラマはまた、構成テンプレート150を定義することができ、それによって、汎用プログラムを構成するビジネスアナリストは、汎用プログラムに構成情報を提供するために(任意の数の構成コントロールを含む)構成テンプレートによって定義されるコントロールを利用することができる。上で論じられたように、構成テンプレートは1つまたは複数の要因に基づいて構成コントロールを動的に判断するためのロジックを含むことができる、および/またはこれに関連付けられてよい。よって、汎用プログラムを構成するための動的に生成されたインターフェースはユーザに提示可能である。
【0039】
[0045] いくつかの実施形態によると、システムは、例えば、構成テンプレート内でおよび/または別の構成コントロール(例えば、現在提示されているもの)内で提供されるデータに基づいて行われてよい、提示するための後続の構成コントロールを特定するために1つまたは複数のルックアップファイルにアクセスできる。ルックアップファイルは、構成テンプレートが、1つまたは複数の値をルックアップに提供し、それに応じて、後に提示するための構成コントロールの指示を受信することができるように、任意の数の索引を含むことができる。例えば、ユーザが最初に提示された構成コントロールにファイル名を提供する場合、ファイル名、ファイル名のいくつかの態様(例えば拡張)、および/またはファイル名から導出される情報(例えば、ファイルタイプ、ファイルのサイズなど)を使用して、1つまたは複数のルックアップファイルのルックアップを行うことができる。ルックアップの結果は、提示するための後続の構成コントロールを特定することができる。提示する構成コントロールを特定するために1つまたは複数のルックアップを使用することは、このような特定を行うためのロジックが構成テンプレートとは別個に記憶可能であるという利点を有することができる。例えば、構成テンプレートは、構成プロセス中に構成コントロールを特定するためのロジックを規定する1つまたは複数のルックアップファイルと関連付けられてよく、それに従って、ロジックは、構成テンプレートの修正なしで、もっと正確に言えば、ルックアップファイル内の値を修正することだけによって変更可能である。
【0040】
[0046] 提示された構成コントロールを介してユーザに適した構成情報が提供されると、新しい構成コントロールが特定されるべきであるという指示は任意の適したやり方で提供されてよい。いくつかの実施形態によると、汎用プログラムの構成プロセスにおける工程を指示するユーザインターフェース要素は、このような要素をアクティブにすることによって、ユーザが後続の工程に進む、および/または前の工程に戻ることができるようにレンダリングされてよい。例えば、構成コントロールがウィザードを介して提示される場合、ウィザードは、構成コントロールを提示し、さらに、構成プロセスを通して前方および後方に移動するためのボタンを提供することができる。ユーザが「前方」ボタンをアクティブにする時、システムは、別の構成コントロールを特定するためのロジックを実行することによって応答し、上で論じられた技法によって構成コントロールを提示することができる。代替的には、ロジックは、ボタンがアクティブにされると、システムが即座に後続の構成コントロールを提示することができるように、ボタンをアクティブにする前に実行されてよい。
【0041】
[0047] 図2は、いくつかの実施形態による構成コントロールの例示の構成要素を示す。上で論じられたように、(共通のコントロールを含む)構成コントロールは、ユーザインターフェース部および動作部を含むことができる。図2はこれら部を図で示すが、これら部は、該部が実行されているまたは別の方法で値が求められている間、コンピュータ実行可能命令およびデータ、または、データがどこで得られるべきであるかの指示によって実施可能であることは理解されるであろう。図2の例では、構成コントロール210は、ユーザインターフェース部220および動作部230を含む。ユーザインターフェース部220は、3つの例示のユーザインターフェース要素221、222、および223を定義し、これら要素は、それぞれ、テキストボックス、ドロップダウンリスト、および一対のラジオボタンである。上で論じられたように、構成コントロールのユーザインターフェース部によって定義されるユーザインターフェース要素は、ユーザインターフェース内でレンダリングされ、ユーザ入力をこれらの要素の1つまたは複数に行う場合があるユーザに表示されてよい。これらのユーザインターフェース要素の値と、汎用プログラムのパラメータとの間の関連性は、(例えば、上で論じられたようなアダプタを介して)先に確立されていてよい。その結果、ユーザインターフェース要素221、222、および223にユーザ入力を行うことによって、ユーザは、構成情報を汎用プログラムに提供することができる。
【0042】
[0048] 図2の例では、動作部230は、1つまたは複数のパラメータ231を定義し、1つまたは複数のプログラム232と関連付けられる。上で論じられたように、一般に、構成コントロールの動作部は、(これらのタイプの要素のいずれかのゼロを含む)任意の数のパラメータおよび/またはプログラムを含んでよい。プログラム232は、限定はされないが、スクリプト、宣言ステートメントおよび/もしくは式、データフローグラフ、ならびに/またはデータフロー部分グラフなどの任意の実行可能ロジックを含むことができ、構成コントロール210の動作部230は、構成コントロールによって任意の数のこのようなプログラムを記憶することができる、および/または任意の数のこのようなプログラムに対するポインタを含むことができる。構成コントロール210が適したアプリケーションによって提示される時、プログラム232の任意の1つまたは複数は、実行可能ロジックが構成コントロールの一部分として実行可能である任意の特定の方法に本発明が限定されないため、そのアプリケーション内で、または別個のプロセスとして実行されてよい。例えば、プログラム232は、構成コントロール210を提示するアプリケーションによって実行される式を含むことができる。
【0043】
[0049] いくつかの実施形態によると、プログラム232は、レンダリングされた構成コントロールのユーザインターフェースの1つまた複数のユーザインターフェース要素へのユーザ入力の妥当性をチェックする実行可能ロジックを含むことができる。例えば、ユーザインターフェース要素は、有効に入力されてよい値の幅を制限すること、または、入力されてよい特性のタイプを限定すること(例えば、ファイルパス値のスペースを禁止すること)などによって、入力されてよいデータのタイプに対する制限があってよい。プログラム232は、それによって、レンダリングされた構成コントロールのユーザインターフェースへのユーザ入力に応じて、ユーザインターフェースの1つまたは複数のユーザインターフェース要素のコンテンツの妥当性を判断する実行可能ロジックを含むことができる。コンテンツが無効であると判断される場合、視覚的にまたは他の方法によって、無効なコンテンツに関してユーザに警告する指示をユーザインターフェースに提供することができる。場合によっては、動作部230にある実行可能ロジックは、ユーザが有効なコンテンツを提供するのを支援するためのメッセージを生じさせ、そのメッセージをユーザに提示するためにユーザインターフェースに提供することができる。
【0044】
[0050] 動作部230は1つまたは複数のパラメータ231を定義することができる。パラメータの定義は、例えば、パラメータ名のリスト化を含むことができ、場合によっては、それらパラメータのデフォルト値を含むことができる。パラメータ231は、任意の数の静的パラメータ、および/または、パラメータ式内に、プログラム232内に含まれてよい、および/または別の場所から得られてよい実行可能ロジックに基づいて、値が動的に判断されるパラメータを含むことができる。いくつかの実施形態によると、パラメータ231は、解釈されたパラメータ定義言語によって求められた1つまたは複数のパラメータの値を含む。これらのパラメータ式の値は、ステートメントがパラメータ値に変わるように、構成コントロール210を提示する時またはその他の場合に求められてよい。例えば、パラメータは、特定のデータファイルが存在する時に値が「A」になるように、データファイルが存在しない時に値が「B」となるように定義されてよい。
【0045】
[0051] パラメータ231は、プログラム232の任意の実行可能ロジックによって利用される値を含むことができる。これらの変数は、値、またはこれらの変数の1つまたは複数を変更することが結果として同じ実行可能ロジックの挙動を変更する場合があるため、構成コントロール210と関連付けられた実行可能ロジックを、他の構成コントロールにおいて再利用可能とすることができる。例えば、2つの異なる構成コントロールは、それらそれぞれの動作部を介して同じプログラムと関連付けられてよい。プログラムは、動作時に、(例えば、パラメータの名称を参照することによって)それぞれの構成コントロールのパラメータ値を参照することができる。2つの構成コントロールのそれぞれにおけるパラメータの異なる値を利用することによって、プログラムの挙動は、同じプログラムが実行されていてもそれぞれの場合では異なる場合がある。よって、汎用プログラムは、構成コントロールの動作部との関連で使用可能である。
【0046】
[0052] 非限定的な例として、実行可能ロジックは、ファイル名の拡張が所望のファイル拡張(例えば、「.txt」、「.dat」など)に一致するかをチェックすることができ、パラメータの値として求められた所望のファイル拡張に対するファイル名をチェックするように書き込まれてよい。それによって、パラメータ231は、所望のファイル拡張のパラメータを含むことができ、それによって、実行可能ロジックはレンダリングされた構成コントロールのユーザインターフェースへのユーザ入力を介して提供されたファイル名をパラメータ値と比較するようにする。2つの構成コントロールは、それによって、同じ実行可能ロジックを使用してファイル拡張をチェックすることができ、しかも、それら構成コントロールが実行可能ロジックによって利用されるファイル拡張パラメータの種々の値によって構成される場合、種々のファイル拡張に対してチェックすることができる。
【0047】
[0053] いくつかの実施形態によると、パラメータ231のパラメータは、少なくとも一部分が、構成コントロール210の提示後に提示するための後続の構成コントロールを定義することができる。このようなパラメータは、特定の標識が与えられてよい、または他の方法で、構成コントロール210を提示するシステムが後続の構成コントロールを特定するためにこのパラメータの値を求めるように命令可能であるように特定されてよい。場合によっては、構成コントロール210の提示が常に、パラメータの値によって特定される特定の構成コントロールが続くように、パラメータは静的値を有することができる。場合によっては、パラメータは、変えられたパラメータ値が後続の構成コントロールを特定するように動的に判断される値を有することができる。パラメータ値をこのように動的に変えることにおいて、少なくとも一部分は、パラメータの値内で値が求められるべき任意の解釈された式に加えて、関連付けられた構成テンプレートおよび/または1つもしくは複数のルックアップファイルに基づくことができる。例えば、後続の構成コントロールを指示する第1のパラメータは、現在の日付の値を求め、さらにはパラメータ231の第2のパラメータの値を読み取るロジックを含んでよい。第2のパラメータの値に基づいて、日付によるルックアップが行われるように、構成コントロールの名称を指示するルックアップファイルが特定される。その後、現在の日付の値を求めることによって、第1のパラメータの値を変える後続の構成コントロールの名称の選択が行われることになる。
【0048】
[0054] 上で論じられたように、構成コントロールの動作部は、これ自体の範囲において、構成コントロールの第1のインスタンスの動作部内のパラメータが同じ構成コントロールの第2のインスタンスの動作部内のパラメータとは無関係の値に変えることができるようにしてよい。動作部の範囲は、本来は語彙的(静的)または動的であってよい。動作部230のパラメータの値を判断する時、任意の数の他の値を使用して、同じ動作部の他のパラメータ、現在の構成シーケンスを定義するために使用される構成テンプレート内で定義されたパラメータ、プログラム232のうちの1つによって返されたパラメータ、実行環境内で定義されたパラメータ、またはこれらの組み合わせを含んで、この値を求めることができる。
【0049】
[0055] 図3A図3Bは、いくつかの実施形態に従って、シーケンスに基づいて汎用プログラムを構成するための、いくつかの構成コントロールの例示の使用を示す。上で論じられたように、構成テンプレートは、ユーザに動的に提示可能である構成コントロールのシーケンスを定義することができる。場合によっては、このシーケンスは、提示された構成コントロールのシーケンスに加えてさらなる機能性を提供することができる「ウィザード」と呼ばれるプログラムによって提示可能である。「ウィザード」は例えば、ユーザ入力として、あらかじめ記憶されたデータ、またはある他の形態の情報にかかわらず、情報にアクセス可能であり、この情報を使用してあるエリアで提示するのはどのコントロールかを判断することができる。該ウィザードはまた、選択されたコントロールにデータを提供して、該コントロールを特定的なコンテキストに適応させることができる。
【0050】
[0056] 図3Aの例では、構成テンプレートは、6つの構成コントロールを含むシーケンス310を定義する。この構成コントロールのシーケンスはウィザードまたは他の方法によってユーザに提示されてよい。シーケンスがユーザにどのように提示されるかに関係なく、適したシステム(例えば、方法100において構成コントロール110を提示するシステム)は最初に構成コントロール301を提示することができる。その後、構成コントロール302または構成コントロール303のどちらかがユーザに提示される。上で論じられたように、例えば、構成コントロール301のレンダリングされた構成コントロールのユーザインターフェースに対してユーザによって行われるユーザ入力に基づいて、1つまたは複数のルックアップファイルを介して、またはこれらの組み合わせに基づいて、このような決定がなされてよい。
【0051】
[0057] 図3Aの例では、構成コントロール303が提示される時、さらなる構成コントロールが提示される。これは、例えば、構成コントロール301および303に対して行われる入力だけに基づいて構成されてよい。その他の場合、構成コントロール302がユーザに提示される場合、構成コントロール304、構成コントロール305、または構成コントロール306のいずれかが、後に提示される。これらの構成コントロールのうちのどれを提示するかは、構成コントロール301および/または302のいずれかのレンダリングされた構成コントロールのユーザインターフェースに対してユーザによって行われるユーザ入力に基づいて、または他の方法によって、判断されてよい。
【0052】
[0058] いくつかの実施形態によると、ユーザインターフェースは、最初に提示された構成コントロールが必ずしも最上流の構成コントロール(図3Aの例では構成コントロール301)ではない、構成シーケンスに基づいて提示されてよい。例えば、システムは、構成コントロール303にはアクセスしないことが分かっている場合(例えば、構成コントロール302および303のどれが選定されるかを判断する決定による結果が前もって分かっている場合)、最初に提示する構成コントロール302によって構成シーケンス310に基づいてユーザに対してユーザインターフェースを提示することができる。よって、図3Aに示されるように構成される構成コントロール302および304~306だけを含む新しい構成シーケンスを生じさせるのではなく、構成シーケンス310は、構成コントロール302が、最初に提示される構成コントロールであるものとする仕様に沿って使用可能である。
【0053】
[0059] 上で論じられたように、例示の構成シーケンス310などの構成シーケンスは、ウィザードによって提示される構成コントロールを定義することができる。図3Bは、ウィザードを実行するシステムによって生成されるユーザインターフェースの実例を示す。この例では、ウィザードは、シーケンスによって定義されるような構成コントロールを提示し、さらには、構成コントロール間をナビゲートするためのユーザインターフェース要素を提供する。構成ウィザードユーザインターフェース320は、構成コントロール330(例えば、構成シーケンス310による構成コントロール301~306のいずれか)を提示し、提示された構成コントロール間をナビゲートするためにユーザが使用可能であるナビゲーションボタン340および350を提供する。図1との関連で上で論じられたように、(例えばボタンをクリックすることによって)ユーザインターフェースのナビゲーションボタンをアクティブにするユーザは、1つまたは複数の要因に基づいて提示するための構成コントロールの判断を開始することができる。
【0054】
[0060] 構成ウィザードユーザインターフェース320は、使用されている構成シーケンスに基づいてナビゲーションボタン340および/または350を示すおよび/または隠すことができる。構成シーケンス310の例では、構成ウィザードユーザインターフェース320は、ユーザがナビゲートする場合がある定義されたシーケンスにおける以前の構成コントロールがないため、構成コントロール301の提示中ナビゲーションボタン340を隠すことができる。同様に、構成ウィザードユーザインターフェース320は、構成コントロール304、305、または306の提示中、または、シーケンスにおける次のコントロールを選択するための、十分なユーザ入力または他の情報をウィザードが受信していない時の構成シーケンス中のどんな時にも、ナビゲーションボタン350を隠すことができる。
【0055】
[0061] いくつかの実施形態によると、ナビゲーションボタン350をアクティブにすることによって、(例えば、提示された構成コントロールの動作部を介して)現在提示されている構成コントロール330に対して行われる入力の妥当性チェックが行われてよい。このようなチェックは、ユーザが定義されたシーケンスにおいて次の工程に進む前に入力が有効であることを徹底することができる。入力のある態様が無効であると判断される場合、構成ウィザードは正しくは、次の工程にアクセスすることができる前に、アクション(すなわち、有効なデータの入力)が必要とされるという指示をユーザに提供することができる。さらにまたは代替的には、ナビゲーションボタン350は、有効なデータが現在提示されている構成コントロールに提供されるまで、隠される、灰色にされる、またはその他の場合視覚的に非アクティブにされてよい。
【0056】
[0062] いくつかの実施形態によると、構成ウィザードユーザインターフェース320を提示するシステムは、関連付けられた構成シーケンスを通して先におよび/または後に行われる工程を指示する構成ウィザードの状態を保存することができる。これによって、ナビゲーションボタン340および/または350が、アクティブなシーケンスにおいてどの構成コントロールが先にまたは後に提示されたのかを判断するためにこの状態にアクセスすることによって機能できるようにしてよい。例えば、ユーザが構成シーケンス310を通してそのシーケンスにおける構成コントロール301、302、そして305を介してナビゲートする場合、そのコントロールのシーケンス(すなわち、301、次に302、その次に305へ)を表す状態は記憶可能である。それに従って、アクティブなシーケンスにおける前の工程へナビゲートする時、その状態が読み取られて、どの構成コントロールが提示されるべきであるかを判断することができる。ユーザが前の工程へナビゲートすると、先に訪れたその後の工程は、ユーザがそれらの工程に戻ることができるように記憶されてよい。例えば、上の例示のシーケンスにおいて、ユーザは、構成コントロール302に戻るようにナビゲートすることができ、次いで、再び前方にナビゲートすることを望む場合がある。保存された状態は、これらのナビゲーションアクションに基づいて提示するための後続の構成コントロールであるとして、構成コントロール305の特定を可能にすることができる。
【0057】
[0063] 図4は、いくつかの実施形態による、データフローグラフの構成を示す機能ブロック図を示す。図4の例では、構成シーケンス410は、汎用データフローグラフ430を構成するために(図1との関連で上で論じられたように構成テンプレートを使用することを含んでよい)構成コントロールを使用して定義されている。アダプタ420は、構成シーケンスによって指定される構成コントロールに基づいてレンダリングされるユーザインターフェースへの入力として提供される値と、汎用データフローグラフのパラメータ値との間のマッピングを提供する。データフローグラフ、およびデータフローグラフのパラメータ値は、全体が両方共参照により本明細書に組み込まれている、「グラフとして表現された計算の実行(Executing Computations Expressed as Graphs)」という名称の米国特許第5,966,072号、および、「グラフ型計算のためのパラメータ管理(Managing Parameters For Graph-Based Computations)」という名称の米国特許第7,716,630号において、さらに詳細に説明される。
【0058】
[0064] 図4の例では、構成シーケンス410の最初の2つの工程のみが示され、(図3Aの例にあるような動的に判断される工程を含む)任意の数の追加の工程が含まれてよいことは理解されるべきである。示された工程において、構成コントロール401はデータフローグラフにおける第1の入力ファイル(「入力ファイル1」)に対応するファイルパスを選択するために使用され、構成コントロール402はデータフローグラフにおける第2の入力ファイル(「入力ファイル2」)に対応するファイルパスを選択するために使用される。
【0059】
[0065] 汎用データフローグラフ430は例示のデータフローグラフであり、これは、この例では、2つのソースからのデータの結合、および結合されたデータの出力ファイルへの出力を示し、単に、データフローグラフの1つの例として提示される。汎用データフローグラフ430は、任意の数のパラメータ定義に関連付け可能である。このパラメータ定義は、定義されたパラメータの値を受信する、記憶する、および/または使用するためのグラフを構成する。この定義されたパラメータは、グラフ自体に関連付けられた任意の数のパラメータに加えて、グラフの4つの構成要素(「入力ファイル1」、「入力ファイル2」、「結合」、および「出力ファイル」)のそれぞれに対する任意の数のパラメータ定義を含む。しかしながら、図4に示される実施形態の例を示す目的で、入力ファイルの構成要素のための入力ファイルパスに対応するパラメータ431および432のみが示される。
【0060】
[0066] いくつかの実施形態によると、構成コントロール401および402は、構成シーケンス410の最初の2つの工程のそれぞれにおいて再利用可能である同じ基となる構成コントロールを表すことができる。代替的には、構成コントロール401および402は、同じユーザインターフェース部を含んでよいが、異なる動作部を有する場合がある。どちらの場合でも、構成コントロール401および402は、図に示されるような、ユーザがファイルを選択することを可能にする同じユーザインターフェース部を含む。ユーザインターフェース部は、選択されたファイルパスが表示されるテキストボックス(構成コントロール401および402においてそれぞれ、401aおよび402a)、および、アクティブにされた時、ユーザが選択されたファイルのためのファイルシステムをブラウズできるようにする「ブラウズ」ボタン(構成コントロール401および402においてそれぞれ401bおよび402b)を含む。
【0061】
[0067] 構成コントロール401および402(ならびに、構成シーケンス410において使用されるさらなる構成コントロール)は、示されたユーザインターフェース部をウィザードにおいて(例えば、図3Bに示されるような構成ウィザードユーザインターフェースにおいて)レンダリングすることによってなどを含む、任意の適したやり方で、ユーザに提示されてよい。図4の例では、構成コントロール401はユーザに最初に提示され、これは、図に示されるような構成コントロールのユーザインターフェース部をレンダリングすることを含む。ユーザは、ブラウズボタン401bによってファイルパスを選択することができ、選択されたファイルのファイルパスは、上で論じられたようなテキストボックス401aに示される。このファイルパスは、次いで、アダプタ420を介して汎用データフローグラフ430のファイルパスパラメータ431に提供される。
【0062】
[0068] 上で論じられたように、アダプタは、構成コントロールのレンダリングされたユーザインターフェース内で選択された値が汎用プログラムのパラメータにどのようにマッピングされるべきかを指示することができる。アダプタは、汎用プログラムの一部分、行われている構成シーケンスを定義する構成テンプレートの一部分、または別個の構成要素とすることができる。アダプタがどこで定義されるかに関係なく、図4Aの例では、アダプタは構成コントロール401の提示中に選択されたファイルパスパラメータを、データフローグラフ430におけるファイルパスパラメータ431にマッピングするように構成される。ユーザは次いで、(例えば、提示された構成ウィザードユーザインターフェースにおけるナビゲーションボタンによって)構成シーケンス410における次の工程に進むことができ、ここで構成コントロール402が提示される。ブラウズボタン402bによってファイルパスが選択されてよく、選択されたファイルのファイルパスはテキストボックス402aに示される。このファイルパスは次いで、アダプタ420を介して汎用データフローグラフ430のファイルパスパラメータ432に提供される。この場合、アダプタは、構成コントロール402の提示中に選択されたファイルパスパラメータを、データフローグラフにおけるファイルパスパラメータ432にマッピングするように構成される。このように、汎用データフローグラフ430のパラメータ431および432の値は、ユーザによって選択可能である。
【0063】
[0069] 上で論じられたように、構成コントロール401および構成コントロール402は、同じ基となる構成コントロールを表すことができる。従って、図4の例では、「ファイル選択」構成アクティビティを表すこの単一の構成コントロールは、アダプタを介して2つの工程のそれぞれに対する適したマッピングを提供することによって構成シーケンスの2つの工程に対して再利用されることで、汎用データフローグラフの種々のパラメータがそれぞれの工程において値が与えられるようにする。この構成コントロールは、例えば、汎用データフローグラフの「出力ファイル」構成要素に対するファイルを選択する時に使用されてもよい。このように、構成テンプレートは、少なくともいくつかが動的に判断されたシーケンスにおいて提示可能であるいくつかの構成コントロールを含むように構成シーケンス410を表現することができる。
【0064】
[0070] 図5は、いくつかの実施形態による、メタデータリポジトリに記憶される構成コントロールおよび汎用データフローグラフを示す。本明細書において使用されるように、「メタデータリポジトリ」は、種々のタイプのオブジェクトに加えて、それらオブジェクトに関連付けられたメタデータを記憶するように構成されるデータ記憶装置に言及し、これは同じまたは異なるタイプのオブジェクト間の関係リンクを含むことができる。例えば、メタデータリポジトリは、データフローグラフ、およびデータフローグラフのパラメータの値のセットを記憶することができ、この場合、パラメータ値のそれぞれのセットはデータフローグラフに対する関係リンクを有する。
【0065】
[0071] いくつかの実施形態によると、メタデータリポジトリは、構成コントロール、データフローグラフ、構成テンプレート、およびパラメータセットを含むデータオブジェクト、これらのオブジェクトの少なくともいくつかの間の関連性、および、該リポジトリに記憶されたそれぞれのオブジェクトに関連付けられたメタデータを含むことができる。メタデータリポジトリは、全体が参照により本明細書に組み込まれている、「関係データオブジェクトの管理(Managing Related Data Objects)」という名称の米国特許第7,899,833号において、さらに詳細に説明されている。
【0066】
[0072] 構成コントロールおよび汎用プログラムは一般的に任意の適したやり方で記憶されてよいが、システム500は、構成コントロールおよび汎用データフローグラフがメタデータリポジトリに記憶される例示の実施形態を示す。さらに、汎用データフローグラフに関連付けられた構成テンプレートは、関連付けられた構成テンプレートを使用して汎用データフローグラフを構成するプロセスの成果を表すパラメータセットと共にメタデータリポジトリに記憶される。汎用データフローグラフは、該グラフがパラメータセットによって定義されるパラメータを使用して実行されるように、グラフに対して確立されたパラメータセットを使用して実行されてよい。図5に示される要素間の関連性は、破線によって示され、後述される。示されたオブジェクトを記憶することが、リポジトリに割り当てられたメモリにおいてそれらオブジェクトを含むコンピュータ命令およびデータを記録することによって行われてよいことは理解されるべきである。しかしながら、リポジトリはまた、これに対するリンク、または命令またはデータの他の特定を記憶することによって補完されてよい。それに従って、リポジトリは任意の適したやり方で実装可能である。
【0067】
[0073] 図5の例では、メタデータリポジトリ520は、構成コントロール522を含み、そのうちの少なくともいくつかは、1つまたは複数の構成テンプレート526によって参照される。上で論じられたように、構成テンプレートは、1つまたは複数の構成コントールを含むシーケンスを指定することができる。それに従って、構成テンプレートは、構成コントロール522の1つまたは複数に関連付けられてよい。さらに、それぞれの構成テンプレートは、汎用データフローグラフ524のうちの特定の1つと関連付けられる。しかしながら、単一の汎用データフローグラフは、例えば、種々の構成テンプレートとして具現化されるようにグラフを構成する複数のやり方が定義される場合、2つ以上の構成テンプレートに関連付けられてよい。汎用グラフが本明細書に説明されるような構成テンプレートによって構成される時、関連付けられた汎用グラフに対して定義される、結果として生じるパラメータは、パラメータセットに記憶可能である。それに従って、それぞれのパラメータセットは特定のグラフに関連付けられる。
【0068】
[0074] 汎用グラフが実行される時、1つまたは複数のデータ記憶装置540にアクセス可能である。データ記憶装置540は、フラットファイル、データベーステーブル、データベースクエリなどを含む、多数の任意のタイプのデータソースを含むことができる。図5の例では、データフローグラフの実行によって吸収され、生じたデータは、メタデータリポジトリにではなく、正しくは、任意の数の適したファイルシステム上の1つまたは複数のファイルに記憶される。さらに、図5の例では、構成テンプレート526は、上述されるように、構成プロセス中に提示するための構成コントロールを判断するために1つまたは複数のルックアップファイル530を活用する。
【0069】
[0075] 上で論じられたように、汎用プログラムは、異なる時間に異なるタイプの入力を行う異なるスキルセットによる異なる人々によって構成可能である。図6は、本明細書に説明される技法を使用して汎用プログラムを構成するユーザの例示の開発プロセスを示す。図6の例では、3人のユーザ610、620、および630はそれぞれ、プロセス600の工程、すなわち、工程602、604、および606をそれぞれ行う。これらのユーザは、それぞれが企業組織内の異なる役割(およびことによると異なるスキルセット)を有する3人の異なる人々であってよい。しかしながら、一般に、プロセス600の複数の工程は同じユーザによって行われる場合があることは理解されるであろう。例えば、工程602および604は同じ個人によって行われてよい。
【0070】
[0076] 工程602では、汎用プログラムが定義される。ユーザ610は、場合によっては、汎用プログラムが書き込まれる特定のプログラミング環境に精通している熟練したプログラマであってよい。例えば、汎用プログラムがデータフローグラフである場合、ユーザ610はデータフローグラフを書き込むのに熟練したユーザであってよい。
【0071】
[0077] 工程604では、工程602において定義された汎用プログラム用の構成テンプレートが定義される。ユーザ620は、場合によっては、構成テンプレートが書き込まれる特定のプログラミング環境に精通している熟練したプログラマであってよい。構成テンプレートは、汎用プログラムを定義するために使用されたのと同じアプリケーションであってよいしそうでなくてもよい任意の適したアプリケーションを使用して定義可能である。構成テンプレートは、汎用プログラムのパラメータが入力として提供される場合があるシーケンスを定義する。上で論じられたように、これは、1つまたは複数の構成コントロールの使用を含むことができ、汎用プログラムの構成中にユーザに提示するのはどの構成コントロールかを動的に判断するためのロジックを、さらに含む、または他の方法でこれにアクセスすることができる。それに従って、ユーザ620は、(例えば1つまたは複数のルックアップファイルを定義することによって)かかるロジックを定義することができる。いくつかの実施形態によると、ユーザ610および/または620は、汎用プログラムのパラメータ値を、構成テンプレートによって定義されたユーザインターフェースに対する入力として提供された値にマッピングするアダプタを定義することができる。かかるアダプタは、構成テンプレートの一部分、汎用プログラムの一部分、またはその両方であるように構成されてよい。
【0072】
[0078] 工程606において、汎用プログラムは、工程604において定義された構成テンプレートによって定義されたユーザインターフェースを使用して構成される。ユーザ630は、ビジネスアナリストといった、ビジネスの必要性に精通しているユーザであってよい。工程606における構成プロセスは、汎用プログラムが、提供されるパラメータ値を使用して即時に実行される、および/または、汎用プログラムが値を使用してその後になって実行できるような任意の適したやり方でパラメータ値が記憶されるという結果をもたらすことができる。上記が生じる時に関係なく、工程608において、汎用プログラムは、工程606において提供されたパラメータ値を使用して実行される。
【0073】
[0079] 図7は、本発明に説明される技術が実装可能である、適したコンピューティングシステム環境700の一例を示す。コンピューティングシステム環境700は、適したコンピューティング環境の1つの例に過ぎず、本明細書に説明される技術の使用または機能性の範囲に関していずれの限定も示唆しようとするものではない。コンピューティング環境700も、代表的な動作環境700において示される構成要素の任意の1つまたは組み合わせに関連する任意の従属性または必要性を有するとして解釈されるべきではない。
【0074】
[0080] 本明細書に説明される技術は、多数の他の汎用もしくは専用コンピューティングシステム環境または構成で運用されている。本明細書に説明される技術による使用に適していると思われる周知のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらに限定されない。
【0075】
[0081] コンピューティング環境は、プログラムモジュールといった、コンピュータ実行可能命令を実行することができる。一般的に、プログラムモジュールは、特定のタスクを行う、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本明細書に説明される技術はまた、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実践されてよい。分散コンピューティング環境において、プログラムモジュールは、メモリ記憶デバイスを含む、ローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体両方に位置することができる。
【0076】
[0082] 図7を参照すると、本明細書に説明される技術を実装する代表的なシステムは、コンピュータ710の形態の汎用コンピューティングデバイスを含む。コンピュータ710の構成要素は、処理ユニット720、システムメモリ730、および、システムメモリを含むさまざまなシステム構成要素を処理ユニット720に連結するシステムバス721を含むことができるがこれらに限定されない。システムバス721は、さまざまなバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかであってよい。限定ではなく例として、かかるアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、およびメザニンバスとしても知られる周辺構成要素相互接続(PCI)バスを含む。
【0077】
[0083] コンピュータ710は、典型的には、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ710によってアクセス可能であり、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体両方を含む、任意の利用可能な媒体とすることができる。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性の、取り外し可能および取り外し不可能媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用でき、コンピュータ710によってアクセス可能である任意の他の媒体を含むがこれらに限定されない。通信媒体は、典型的には、搬送波または他の移送機構などの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具現化し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、その信号の特性セットのうちの1つまたは複数が、その信号内で情報を符号化するようなやり方で設定または変更されている信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、および、音響、RF、赤外線、および他の無線媒体などの無線媒体を含む。上記のいずれかの組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるものとする。
【0078】
[0084] システムメモリ730は、読み出し専用メモリ(ROM)731、およびランダムアクセスメモリ(RAM)732などの、揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中など、コンピュータ710内の要素間で情報を伝送するのに役立つ基本ルーチンを収めた基本入力/出力システム733(BIOS)は、典型的には、ROM731に記憶される。RAM732は、典型的には、処理ユニット720によって即時にアクセス可能である、および/または現在動作させているデータおよび/またはプログラムモジュールを収める。限定ではなく例として、図7は、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、およびプログラムデータ737を示す。
【0079】
[0085] コンピュータ710はまた、他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体を含むことができる。ほんの一例として、図7は、取り外し不可能な不揮発性磁気媒体に対して読み書きするハードディスクドライブ741、取り外し可能な不揮発性磁気ディスク752に対して読み書きする磁気ディスクドライブ751、および、CD-ROMまたは他の光媒体などの取り外し可能な不揮発性光ディスク756に対して読み書きする光ディスクドライブ755を示す。代表的なオペレーティング環境で使用できる他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、および固体ROMなどを含むが、これらに限定されない。ハードディスクドライブ741は、典型的には、インターフェース740などの取り外し不可能なメモリインターフェースを通してシステムバス721に接続され、磁気ディスクドライブ751および光ディスクドライブ755は、典型的には、インターフェース750といった取り外し可能なメモリインターフェースによってシステムバス721に接続される。
【0080】
[0086] 上で論じられ、図7に示される、ドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ710に、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを記憶させる。図7において、例えば、ハードディスクドライブ741は、オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、およびプログラムデータ747を記憶するものとして示される。これらの構成要素は、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、およびプログラムデータ737と同じか異なっているかのいずれかである可能性があることは留意されたい。オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、およびプログラムデータ747には、ここでは、少なくともこれらが異なるコピーであることを示すために異なる番号を付している。ユーザは、キーボード762、および、通例、マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス761によって、コマンドおよび情報をコンピュータ710に入力することができる。(図示されない)他の入力デバイスは、マイクロホン、ジョイスティック、ゲームパッド、パラボラアンテナ、またはスキャナなどを含むことができる。これらのおよび他の入力デバイスは、システムバスに連結されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造によって接続可能であるユーザ入力インターフェース760を通して処理ユニット720に接続されることが多い。モニタ791または他のタイプの表示デバイスはまた、ビデオインターフェース790などのインターフェースを介してシステムバス721に接続される。モニタに加えて、コンピュータは、周辺インターフェース795を通して接続可能であるスピーカ797およびプリンタ796などの他の周辺出力デバイスも、含むことができる。
【0081】
[0087] コンピュータ710は、リモートコンピュータ780といった、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化環境で動作可能である。リモートコンピュータ780は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードであってよく、典型的には、コンピュータ710に関連して上述される要素の多くまたは全てを含むが、メモリ記憶デバイス781のみが図7に示されている。図7に示される論理接続は、ローカルエリアネットワーク(LAN)771およびワイドエリアネットワーク(WAN)773を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、会社、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは普通である。
【0082】
[0088] コンピュータ710は、LANネットワーキング環境において使用される時、ネットワークインターフェースまたはアダプタ770を通してLAN771に接続される。WANネットワーキング環境において使用される時、コンピュータ710は、典型的には、インターネットなど、WAN773上での通信を確立するためのモデム772または他の手段を含む。内蔵または外付けであってよいモデム772は、ユーザ入力インターフェース760を介したシステムバス721、または他の適切な機構に接続されてよい。ネットワーク化環境では、コンピュータ710に関連して示されるプログラムモジュール、またはこの一部は、リモートメモリ記憶デバイスに記憶可能である。限定ではなく例として、図7は、メモリデバイス781に常駐するようなリモートアプリケーションプログラム785を示す。示されるネットワーク接続が代表的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることは理解されるであろう。
【0083】
[0089] そのように、本発明の少なくとも1つの実施形態のいくつかの態様が説明されたが、さまざまな改変、修正、および改善が当業者には容易に想到するであろうことは理解されたい。例えば、構成コントロールによって実装されるようなシステムが説明される。本明細書に定義されるように、システムおよびコントロールは、構成コントロールがそれぞれ、タスクを行うように定義されるように実装され、タスクが行われる構成プロセスのどの時点であっても使用可能である。このような構成コントロールは、例えば、そのタスクが行われる特定のコンテキストについて、ユーザ入力またはデータサービスによって適応可能である。構成コントロールが構成プロセスにおいて複数の場所で使用されることは必要条件ではない。その構成の全てがかかる構成コントロールによって行われることも必要条件ではない。プロセスの一部は、例えば、実行される際にコンテキストにかかわらず、該プロセスを行うコントロールによって行われてよい。
【0084】
[0090] さらに、汎用データフローグラフの構成に対する応用性を有するコントロールが本明細書において論じられているが、このようなコントロールが任意の適した汎用プログラムを構成するために使用可能であることは理解されるであろう。例えば、本明細書に論じられたような汎用プログラムを構成するための技法は、任意の適したデータ処理言語で書き込まれた汎用プログラムを構成するために使用されてよい、または、JavaまたはC++などの汎用プログラミング言語で書き込まれた汎用プログラムを構成するために使用されてよい。それでもやはり、本明細書に論じられた汎用プログラムの構成のための技法は、汎用プログラムが、高いレベルのパラメータ表示が可能なデータフローグラフまたは他のデータ処理プログラムである時に特定の実用性を有することができる。
【0085】
[0091] かかる改変、修正、および改善は、本開示の一部分であることが意図され、本発明の趣旨および範囲内であることが意図される。さらに、本発明の利点が指示されるが、本明細書に説明される技術の全ての実施形態が説明される利点の全てを含むことにはならないことは理解されるべきである。いくつかの実施形態は、本明細書において利点として説明されるいずれの特徴も実装しなくてもよく、いくつかのインスタンスでは、説明される特徴の1つまたは複数はさらなる実施形態を実現するために実装可能である。それに従って、前述の説明および図面はほんの一例である。
【0086】
[0092] 本明細書に説明される技術の上述される実施形態は、多数のやり方のいずれかで実装可能である。例えば、実施形態は、ハードウェア、ソフトウェア、またはこれらの組み合わせを使用して実装されてよい。ソフトウェアに実装される時、ソフトウェアコードは、単一のコンピュータで提供されるか、複数のコンピュータの間で分散されるかにかかわらず、任意の適したプロセッサまたはプロセッサ群上で実行できる。かかるプロセッサは、CPUチップ、GPUチップ、マイクロプロセッサ、マイクロコントローラ、またはコプロセッサなどの名称で当技術分野では知られている市販の集積回路部品を含む集積回路部品における1つまたは複数のプロセッサによって、集積回路として実装されてよい。代替的には、プロセッサは、ASICなどのカスタム回路構成内で、またはプログラマブル論理デバイスを構成することから生じるセミカスタム回路構成で実装されてよい。なおさらなる代替策として、プロセッサは、市販、セミカスタム、またはカスタムにかかわらず、より大規模な回路または半導体デバイスの一部であってよい。具体的な例として、いくつかの市販のマイクロプロセッサは複数のコアを有し、それによって、それらのコアの1つまたはサブセットは、プロセッサを構成することができる。しかしながら、プロセッサは、任意の適したフォーマットの回路構成を使用して実装可能である。
【0087】
[0093] また、コンピュータは、ラックマウントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータなどのいくつかの形態のうちのいずれかで具現化されてよいことは理解されるべきである。さらに、コンピュータは、携帯情報端末(PDA)、スマートフォン、または任意の他の適したポータブル電子デバイスもしくは固定電子デバイスを含む、一般的にコンピュータとみなされないが適した処理機能を有するデバイスに組み込まれてよい。
【0088】
[0094] また、コンピュータは、1つまたは複数の入出力デバイスを有することができる。これらのデバイスは、とりわけ、ユーザインターフェースを提示するために使用可能である。ユーザインターフェースを提供するために使用可能である出力デバイスの例は、出力の視覚的提示のためのプリンタまたは表示画面、および出力の可聴式提示のためのスピーカまたは他の音生成デバイスを含む。ユーザインターフェースに使用可能である入力デバイスの例は、キーボード、ならびにマウス、タッチパッド、およびデジタル化タブレットなどのポインティングデバイスを含む。別の例として、コンピュータは、音声認識によってまたは他の可聴式フォーマットにおいて入力情報を受信することができる。
【0089】
[0095] このようなコンピュータは、企業ネットワークまたはインターネットなどのローカルエリアネットワークまたはワイドエリアネットワークとして含む、任意の適した形態の1つまたは複数のネットワークによって相互接続可能である。このようなネットワークは任意の適した技術に基づくものであってよく、任意の適したプロトコルに従って動作可能であり、無線ネットワーク、有線ネットワーク、または光ファイバーネットワークを含むことができる。
【0090】
[0096] また、本明細書において概説されるさまざまな方法またはプロセスは、さまざまなオペレーティングシステムまたはプラットフォームのいずれか1つを用いる1つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコード化されてよい。さらに、かかるソフトウェアは、いくつかの適切なプログラミング言語および/またはプログラミングツールもしくはスクリプトツールのいずれかを使用して書き込まれてよく、フレームワークまたは仮想機械上で実行される実行可能機械言語コードまたは中間コードとしてコンパイルされてもよい。
【0091】
[0097] この点では、本発明は、1つまたは複数のコンピュータもしくは他のプロセッサ上で実行される時、上で論じられた本発明のさまざまな実施形態を実装する方法を行う1つまたは複数のプログラムと共に符号化された、コンピュータ可読記憶媒体(または複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つまたは複数のフロッピーディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイもしくは他の半導体デバイス内の回路構成、または他の有形コンピュータ記憶媒体)として具現化されてよい。前述の例から明らかであるように、コンピュータ可読記憶媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間にわたって情報を保持することができる。このような1つまたは複数のコンピュータ可読記憶媒体は、移送可能とすることができ、それによって、その上に記憶される1つまたは複数のプログラムは、1つまたは複数の異なるコンピュータもしくは他のプロセッサ上にロードされて、上で論じられた本発明のさまざまな態様を実装することができる。本明細書で使用されるように、「コンピュータ可読記憶媒体」という用語は、製品(すなわち、製造品)または機械であると考えられ得る非一時的なコンピュータ可読媒体のみを包含する。代替的にはまたはさらに、本発明は、伝播信号などの、コンピュータ可読記憶媒体以外のコンピュータ可読媒体として具現化可能である。
【0092】
[0098] 「プログラム」または「ソフトウェア」という用語は、本明細書では、一般的な意味において、上で論じられた本発明のさまざまな態様を実装するようにコンピュータまたは他のプロセッサをプログラムするために用いられることが可能な任意のタイプのコンピュータコードまたはコンピュータ実行可能命令のセットに言及するために使用される。さらに、この実施形態の1つの態様によると、実行される時、本発明の方法を行う1つまたは複数のコンピュータプログラムは、単一のコンピュータまたはプロセッサ上に常駐する必要はないが、本発明のさまざまな態様を実装するためにいくつかの異なるコンピュータまたはプロセッサの間にモジュール方式で分散されてよいことは、理解されるべきである。
【0093】
[0099] コンピュータ実行可能命令は、1つまたは複数のコンピュータもしくは他のデバイスによって実行される、プログラムモジュールなどの多くの形態であってよい。一般的に、プログラムモジュールは、特定のタスクを行うまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。典型的には、プログラムモジュールの機能性は、さまざまな実施形態において必要に応じて組み合わせまたは分散可能である。
【0094】
[00100] また、データ構造は、コンピュータ可読媒体内に任意の適した形態で記憶されてよい。説明を簡単にするために、データ構造は、データ構造における場所を通して関係付けられるフィールドを有するように示される場合がある。同様に、このような関係は、フィールド間の関係を伝えるコンピュータ可読媒体における場所にフィールドの記憶を割り当てることによって実現可能である。しかしながら、任意の適した機構が、ポインタ、タグ、またはデータ要素間の関係を確立する他の機構の使用によることを含めて、データ構造のフィールドにおける情報間の関係を確立するために使用可能である。
【0095】
[00101] 本発明のさまざまな態様は、単独で使用されてよいし、組み合わせて使用されてよいし、前述の内容で説明された実施形態では具体的に論じられていないさまざまな配置構成で使用されてよく、従って、その応用において、前述の説明に記載されたまたは図面に示された構成要素の詳細および配置構成に限定されない。例えば、1つの実施形態において説明される態様は、他の実施形態で説明される態様と任意のやり方で組み合わせ可能である。
【0096】
[00102] また、本発明は、その一例が提供されている方法として具現化可能である。その方法の一部分として行われる行為は、任意の適したやり方で順序付けられてよい。それに従って、示されたものとは異なる順序で行為が行われる実施形態が構築されてよく、これは、例示的な実施形態では連続的な行為として示されていても、いくつかの行為を同時には行うことを含むことができる。
【0097】
[00103] さらに、「ユーザ」によって取られるいくつかのアクションが説明される。「ユーザ」は1人の個人である必要はなく、いくつかの実施形態では、「ユーザ」によるアクションは、個人から成るチーム、および/またはコンピュータ支援ツールまたは他の機構と組み合わせた個人によって行われてよいことは理解されるべきである。
【0098】
[00104] 請求項の要素を修正するための特許請求の範囲における「第1の」、「第2の」、「第3の」などの順序を表す用語の使用は、これらの用語自体が、一方の請求項の要素の他方に対する優先順位、上下関係、もしくは順序、または方法の行為が行われる時間的順序のいずれも暗示せず、単にある特定の名称を有する一方の請求項の要素を、同じ名称を有する(序数用語の使用を別にすれば)別の要素から区別して、これらの請求項の要素を区別するための標識として使用されるに過ぎない。
【0099】
[00105] また、本明細書で使用される術語および専門用語は、説明の目的のためのものであり、限定するものとみなされるべきではない。本明細書における「含む」、「備える」、または「有する」、「収める」、「伴う」、およびその変形の使用は、その後に列挙される項目およびその等価物ならびに追加の項目を包含することを意味する。以下削除した請求項を付記する。
[14]
1つまたは複数のパラメータによってパラメータ化される少なくとも1つの汎用コンピュータプログラムのインスタンスをユーザが構成できるようにするインターフェースを少なくとも部分的に定義する構成テンプレートを作成する方法であって、前記方法は、
コンピューティングシステムによって、少なくとも部分的にユーザ入力に基づいて、
第1の構成コントロールを前記インターフェースに関連付けることであって、前記第1の構成コントロールは、少なくとも動作部と、第1のユーザインターフェースを定義するユーザインターフェース部とを備え、前記第1の構成コントロールは、前記第1のユーザインターフェースを通して受信されるユーザ入力に少なくとも部分的に基づいて前記少なくとも1つの汎用プログラムに対して前記1つまたは複数のパラメータのうちの少なくとも1つのパラメータの値を定義するように構成されることと、
第2の構成コントロールを前記インターフェースに関連付けることであって、前記第2の構成コントロールは、少なくとも動作部と、第2のユーザインターフェースを定義するユーザインターフェース部とを備え、前記第2の構成コントロールは、前記第2のユーザインターフェースを通して受信されるユーザ入力に少なくとも部分的に基づいて前記少なくとも1つの汎用プログラムに対して前記1つまたは複数のパラメータのうちの少なくとも1つのパラメータの値を定義するように構成されることと、
前記第1のユーザインターフェースを通して受信される前記ユーザ入力が前記第2のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも1つのインスタンスと、前記第1のユーザインターフェースを通して受信される前記ユーザ入力が前記第2のユーザインターフェースとは異なる第3のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも1つのインスタンスとを、少なくとも部分的に実行時データに基づいて定義するデータを記録することと、を含む、方法。
[15]
前記少なくとも1つの汎用プログラムはデータフローグラフを含む、上記14に記載の方法。
[16]
ユーザ入力に基づいて、前記データフローグラフの第1のパラメータの値を前記第1のユーザ入力に関連付けることと、前記データフローグラフの第2のパラメータの値を前記第2のユーザ入力に関連付けることと、をさらに含む、上記15に記載の方法。
[17]
前記1つまたは複数のパラメータは、前記データフローグラフの1つまたは複数の構成要素に関連付けられる、上記15に記載の方法。
[18]
前記少なくとも1つの汎用プログラムはデータ処理言語によって定義される、上記14に記載の方法。
[19]
前記少なくとも1つの汎用プログラムはデータフローグラフの部分グラフを含む、上記14に記載の方法。
[20]
前記第1のユーザインターフェースを通して受信された前記ユーザ入力が前記第2のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも1つのインスタンスを定義するデータを記録することは、少なくとも1つのルックアップファイルを定義することを含む、上記14に記載の方法。
[21]
前記第1のユーザインターフェースを通して受信された前記ユーザ入力が前記第2のユーザインターフェースのレンダリングを引き起こすためのものである、少なくとも1つのインスタンスを定義するデータを記録することは、前記第1の構成コントロールの前記動作部内のデータを記録することを含む、上記14に記載の方法。
[22]
前記第1の構成コントロールの前記動作部の少なくとも一部分は、前記第1のユーザインターフェースを通して提供されるユーザ入力に応じて値が求められるように構成される、上記14に記載の方法。
[23]
実行される時、コンピュータに、1つまたは複数の構成パラメータによってパラメータ化される汎用コンピュータプログラムを構成する方法を行わせる命令を含む、少なくとも1つのコンピュータ可読媒体であって、前記方法は、
第1のユーザインターフェースを通して受信される情報に基づいて前記汎用プログラムを記録することであって、前記汎用プログラムは前記1つまたは複数の構成パラメータを受け入れることと、
前記1つまたは複数の構成パラメータの値を指定することによってユーザが前記汎用プログラムのインスタンスを構成できるようにするインターフェースを少なくとも部分的に定義する構成テンプレートを記録することと、
ユーザが前記汎用プログラムのインスタンスを構成できるように構成ユーザインターフェースを動的に生成することと、
を含み、
前記構成テンプレートを記録することは、第2のユーザインターフェースを通して受信される情報に基づいており、
それぞれがユーザインターフェース要素を含む複数の構成コントロールを選択すること、
選択された前記構成コントロールの前記ユーザインターフェース要素と、前記1つまたは複数の構成パラメータの構成パラメータとの間のマッピングを記録すること、および、
前記複数の構成コントロールの少なくとも一部の前記ユーザインターフェース要素のレンダリングの条件付き順序を記録すること、
によって行われ、
前記構成ユーザインターフェースを動的に生成することは、
前記複数の構成コントロールの第1の構成コントロールに関連付けられた前記構成ユーザインターフェースにおいてユーザインターフェース要素をレンダリングすること、
前記第1の構成コントロールの前記ユーザインターフェース要素を介してユーザ入力を受信すること、および、
少なくとも部分的に前記ユーザ入力および前記マッピングに基づいて少なくとも1つの構成パラメータの値を記憶し、前記複数の構成コントロールの第2の構成コントロールのユーザインターフェース要素に基づいて前記構成ユーザインターフェースを修正することであって、前記第2の構成コントロールは、前記条件付き順序に従って、および少なくとも部分的に前記ユーザ入力に基づいて選択されること、
によって、動的に生成する、コンピュータ可読媒体。
[24]
前記少なくとも1つの汎用プログラムはデータフローグラフを含む、上記23に記載のコンピュータ可読媒体。
[25]
前記複数の構成コントロールの少なくとも一部の前記ユーザインターフェース要素のレンダリングの前記条件付き順序を記録することは、1つまたは複数のルックアップファイルを定義することを含む、上記23に記載のコンピュータ可読媒体。
[26]
前記条件付き順序は、前記複数の構成コントロールの少なくとも1つのユーザインターフェース要素を介して受信されるユーザ入力に基づいている、上記23に記載のコンピュータ可読媒体。
図1
図2
図3A
図3B
図4
図5
図6
図7