(57)【特許請求の範囲】
【請求項１】
第１のコンピュータ・プログラムと、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための方法であって、
Ａ）前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する第１の表示ウィンドウを特定するステップと、
Ｂ）前記第１のコンピュータ・プログラムに与えるための前記第１の表示ウィンドウからの１つまたは複数の表示ウィンドウの出力を割り振るステップと、
Ｃ）前記第２のコンピュータ・プログラムに与えるために前記第１の表示ウィンドウに入力するための１つまたは複数のデータ入力を割り振るステップと、
Ｄ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローを開始するために前記第１の表示ウィンドウに入力するための１つまたは複数の実行コマンドを割り振るステップと、
Ｅ）前記第１の表示ウィンドウ、ならびに前記関連する表示ウィンドウの出力、前記データ入力、および前記実行コマンドによって、前記選択されたアプリケーション・ロジック・フローに関して前記第１のコンピュータ・プログラムと前記第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、
第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための方法であって、
前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定するステップと、
前記第２のコンピュータ・プログラムによる前記第１の表示ウィンドウの提供に応答して、
ａ）前記第１のコンピュータ・プログラムに提供するために前記第１の表示ウィンドウの任意の所定の出力からデータを読み出すステップと、
ｂ）前記第２のコンピュータ・プログラムに入力するために前記第１の表示ウィンドウへの任意の所定の入力にデータを書き込むステップと、
ｃ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローの処理を開始するために前記第２のコンピュータ・プログラムに任意の所定の実行コマンドを与えるステップと
を含む、方法を実行するように構成されるプログラム・インターフェース・コードを生成するステップと
を含む、方法。
【請求項２】
前記選択されたアプリケーション・ロジック・フローの前記処理に応答して前記第１の表示ウィンドウの直後に提供され得る前記第２のコンピュータ・プログラムからの所定の１組の１つまたは複数の第２の表示ウィンドウを特定するステップと、
それぞれの第２の表示ウィンドウに関して前記ステップＢ）、Ｃ）、およびＤ）を実行するステップと、
前記第１の表示ウィンドウおよび前記第２の表示ウィンドウ、ならびに前記関連する表示ウィンドウの出力、前記データ入力、および前記実行コマンドによって、前記選択されたアプリケーション・ロジック・フローに関して前記第１のコンピュータ・プログラムと前記第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、
第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための方法であって、
前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定するステップと、
前記第２のコンピュータ・プログラムによる前記第１の表示ウィンドウの提供に応答して、
ａ）前記第１のコンピュータ・プログラムに提供するために前記第１の表示ウィンドウの任意の所定の出力からデータを読み出すステップと、
ｂ）前記第２のコンピュータ・プログラムに入力するために前記第１の表示ウィンドウへの任意の所定の入力にデータを書き込むステップと、
ｃ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローの処理を開始するために前記第２のコンピュータ・プログラムに任意の所定の実行コマンドを与えるステップと
を含む、方法を実行するように構成される前記プログラム・インターフェース・コードを生成するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記プログラム・コードが、前記第２のコンピュータ・プログラムの前記選択されたアプリケーション・ロジック・フローの所定のフロー定義から少なくとも部分的に自動で生成される、請求項１に記載の方法。
【請求項４】
前記フロー定義が、ユーザによって少なくとも部分的にグラフィカルに決定される、請求項３に記載の方法。
【請求項５】
第１のコンピュータ・プログラムと、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための装置であって、
Ａ）前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する第１の表示ウィンドウを特定し、
Ｂ）前記第１のコンピュータ・プログラムに与えるための前記第１の表示ウィンドウからの１つまたは複数の表示ウィンドウの出力を割り振り、
Ｃ）前記第２のコンピュータ・プログラムに与えるために前記第１の表示ウィンドウに入力するための１つまたは複数のデータ入力を割り振り、
Ｄ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローを開始するために前記第１の表示ウィンドウに入力するための１つまたは複数の実行コマンドを割り振り、
Ｅ）前記第１の表示ウィンドウ、ならびに前記関連する表示ウィンドウの出力、前記データ入力、および前記実行コマンドによって、前記選択されたアプリケーション・ロジック・フローに関して前記第１のコンピュータ・プログラムと前記第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、
第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための装置であって、
前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定し、
前記第２のコンピュータ・プログラムによる前記第１の表示ウィンドウの提供に応答して、
ａ）前記第１のコンピュータ・プログラムに提供するために前記第１の表示ウィンドウの任意の所定の出力からデータを読み出し、
ｂ）前記第２のコンピュータ・プログラムに入力するために前記第１の表示ウィンドウへの任意の所定の入力にデータを書き込み、
ｃ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローの処理を開始するために前記第２のコンピュータ・プログラムに任意の所定の実行コマンドを与える
ように動作可能である、装置をもたらすように構成されるプログラム・インターフェース・コードを生成する
ように動作可能である、装置。
【請求項６】
前記選択されたアプリケーション・ロジック・フローの前記処理に応答して前記第１の表示ウィンドウの直後に提供され得る前記第２のコンピュータ・プログラムからの所定の１組の１つまたは複数の第２の表示ウィンドウを特定し、
それぞれの第２の表示ウィンドウに関して動作Ｂ）、Ｃ）、およびＤ）を実行し、
前記第１の表示ウィンドウおよび前記第２の表示ウィンドウ、ならびに前記関連する表示ウィンドウの出力、前記データ入力、および前記実行コマンドによって、前記選択されたアプリケーション・ロジック・フローに関して前記第１のコンピュータ・プログラムと前記第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、
第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための装置であって、
前記第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定し、
前記第２のコンピュータ・プログラムによる前記第１の表示ウィンドウの提供に応答して、
ａ）前記第１のコンピュータ・プログラムに提供するために前記第１の表示ウィンドウの任意の所定の出力からデータを読み出し、
ｂ）前記第２のコンピュータ・プログラムに入力するために前記第１の表示ウィンドウへの任意の所定の入力にデータを書き込み、
ｃ）前記第１の表示ウィンドウに関連する前記選択されたアプリケーション・ロジック・フローの処理を開始するために前記第２のコンピュータ・プログラムに任意の所定の実行コマンドを与える
ように動作可能である、装置をもたらすように構成される前記プログラム・インターフェース・コードを生成する
ようにさらに動作可能である、請求項５に記載の装置。
【請求項７】
前記プログラム・コードが、前記第２のコンピュータ・プログラムの前記選択されたアプリケーション・ロジック・フローの所定のフロー定義から少なくとも部分的に自動で生成される、請求項５に記載の装置。
【請求項８】
前記フロー定義が、ユーザによって少なくとも部分的にグラフィカルに決定される、請求項７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように前記アプリケーション・ロジックと密接に関連して前記表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするように構成されたソフトウェア・インターフェースを提供するための方法、装置、またはコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
一部のコンピュータ・プログラムは、その他のソフトウェア・システムに統合されるか、またはその他のソフトウェア・システムとインターフェースをとることが難しいような方法で設計される。これは、レガシー・プログラムと呼ばれることが多い比較的古いコンピュータ・プログラムで特に問題となり得る。プログラムは、プログラムの処理またはアプリケーション・ロジックと表現または表示ロジックとの間の密接な結びつきが原因で、統合されることが難しい可能性がある。これは、アプリケーションおよび表示ロジックが単一のプログラム・コンポーネントによって提供されることに起因する可能性がある。言い換えると、プログラムは、データまたはコマンド入力およびデータ出力をともなう表示ウィンドウの形態のユーザ・インターフェース要素を、適切な出力を与えるように入力によって駆動されるデータ処理ロジックから分離することが難しいような方法で設計される可能性がある。
【０００３】
そのようなプログラムとインターフェースをとる１つの方法は、スクリーン・スクレイピングなどの知られている方法を使用してプログラムの元のもしくは既存のユーザ・インターフェースによるか、またはプログラムのすべての入力および出力を変換して、そのプログラムをその他のソフトウェア・システムに統合することを可能にする変換システムによる。そのようなプログラムとインターフェースをとる別の方法は、プログラム・コードを、そのプログラム・コードがその他のソフトウェア・システムに統合するために組み直され得るように好適なプログラミング言語に変換することである。そのようなインターフェース技術は、時間がかかり、誤りが起こりやすく、したがって高価であるという点で問題をはらんでいる。さらに、レガシー・プログラムのユーザは、アプリケーションに関する元のコードをもはや保有していない可能性がある。通例、レガシー・プログラムは、ユーザの組織または会社の中核となっており、したがって、ユーザは、そのような重要なシステムへのいかなる変更のリスクも冒したくない可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、従来技術における課題を解決することにある。
【課題を解決するための手段】
【０００５】
本発明の第１の実施形態は、第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるようにアプリケーション・ロジックと密接に関連して表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための方法であって、第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定するステップと、第２のコンピュータ・プログラムによる第１の表示ウィンドウの提供に応答して、ａ）第１のコンピュータ・プログラムに提供するために第１の表示ウィンドウの任意の所定の出力からデータを読み出すステップと、ｂ）第２のコンピュータ・プログラムに入力するために第１の表示ウィンドウへの任意の所定の入力にデータを書き込むステップと、ｃ）第１の表示ウィンドウに関連する選択されたアプリケーション・ロジック・フローの処理を開始するために第２のコンピュータ・プログラムに任意の所定の実行コマンドを与えるステップとを含む、方法を提供する。
【０００６】
方法は、選択されたアプリケーション・ロジック・フローの処理に応答して第１の表示ウィンドウの直後に提供され得る第２のコンピュータ・プログラムからの所定の１組の１つまたは複数の第２の表示ウィンドウを特定するステップと、第２のコンピュータ・プログラムによる第２の表示ウィンドウのうちの１つの提供に応答して、第２の表示ウィンドウに関してステップａ）からｃ）までを実行するステップとをさらに含み得る。
【０００７】
方法は、第１のコンピュータ・プログラムが第２のコンピュータ・プログラムの複数の選択されたアプリケーション・ロジック・フローを実行することを可能にするように構成され得る。ステップｂ）において、データは、第１のコンピュータ・プログラムから入力され得る。実行コマンドは、シミュレーションされたユーザ・コマンドである可能性がある。選択されたアプリケーション・ロジック・フローは、表示ウィンドウの所定のシーケンスによって特定される可能性があり、シーケンス内の表示ウィンドウ間の遷移は、所与の遷移に関連する１つまたは複数の所定のアプリケーション・ロジック要素の処理の結果として起こる。
【０００８】
第２の実施形態は、第１のコンピュータ・プログラムと、アプリケーション・ロジックが表示ロジックを通じて操作可能であるようにアプリケーション・ロジックと密接に関連して表示ロジックを含む第２のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための方法であって、ａ）第２のアプリケーション・プログラムの選択されたアプリケーション・ロジック・フローに関連する第１の表示ウィンドウを特定するステップと、ｂ）第１のコンピュータ・プログラムに与えるための第１の表示ウィンドウからの１つまたは複数の表示ウィンドウの出力を割り振るステップと、ｃ）第２のコンピュータ・プログラムに与えるために第１の表示ウィンドウに入力するための１つまたは複数のデータ入力を割り振るステップと、ｄ）第１の表示ウィンドウに関連する選択されたアプリケーション・ロジック・フローを開始するために第１の表示ウィンドウに入力するための１つまたは複数の実行コマンドを割り振るステップと、ｅ）第１の表示ウィンドウ、ならびに関連する表示ウィンドウの出力、データ入力、および実行コマンドによって、選択されたアプリケーション・ロジック・フローに関して第１のコンピュータ・プログラムと第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、本発明の第１の実施形態による方法を実行するように構成されるプログラム・インターフェース・コードを生成するステップとを含む、方法を提供する。
【０００９】
方法は、選択されたアプリケーション・ロジック・フローの処理に応答して第１の表示ウィンドウの直後に提供され得る第２のコンピュータ・プログラムからの所定の１組の１つまたは複数の第２の表示ウィンドウを特定するステップと、それぞれの第２の表示ウィンドウに関してステップｂ）、ｃ）、およびｄ）を実行するステップと、第１の表示ウィンドウおよび第２の表示ウィンドウ、ならびに関連する表示ウィンドウの出力、データ入力、および実行コマンドによって、選択されたアプリケーション・ロジック・フローに関して第１のコンピュータ・プログラムと第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、本発明の第１の実施形態による方法を実行するように構成されるプログラム・インターフェース・コードを生成するステップとをさらに含み得る。
【００１０】
プログラム・コードは、第２のアプリケーション・プログラムの選択されたアプリケーション・ロジック・フローの所定のフロー定義から少なくとも部分的に自動で生成され得る。フロー定義は、ユーザによって少なくとも部分的にグラフィカルに決定され得る。
【００１１】
第３の実施形態は、第１のコンピュータ・プログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるようにアプリケーション・ロジックと密接に関連して表示ロジックを含む第２のコンピュータ・プログラムのアプリケーション・ロジックを実行することを可能にするための装置であって、第２のコンピュータ・プログラムの選択されたアプリケーション・ロジック・フローに関連する所定の第１の表示ウィンドウを特定し、第２のコンピュータ・プログラムによる第１の表示ウィンドウの提供に応答して、ａ）第１のコンピュータ・プログラムに提供するために第１の表示ウィンドウの任意の所定の出力からデータを読み出し、ｂ）第２のコンピュータ・プログラムに入力するために第１の表示ウィンドウへの任意の所定の入力にデータを書き込み、ｃ）第１の表示ウィンドウに関連する選択されたアプリケーション・ロジック・フローの処理を開始するために第２のコンピュータ・プログラムに任意の所定の実行コマンドを与えるように動作可能である、装置を提供する。
【００１２】
第４の実施形態は、第１のコンピュータ・プログラムと、アプリケーション・ロジックが表示ロジックを通じて操作可能であるようにアプリケーション・ロジックと密接に関連して表示ロジックを含む第２のコンピュータ・プログラムとのインターフェースをとるためのコンピュータ・プログラム・コードを生成するための装置であって、ａ）第２のアプリケーション・プログラムの選択されたアプリケーション・ロジック・フローに関連する第１の表示ウィンドウを特定し、ｂ）第１のコンピュータ・プログラムに与えるための第１の表示ウィンドウからの１つまたは複数の表示ウィンドウの出力を割り振り、ｃ）第２のコンピュータ・プログラムに与えるために第１の表示ウィンドウに入力するための１つまたは複数のデータ入力を割り振り、ｄ）第１の表示ウィンドウに関連する選択されたアプリケーション・ロジック・フローを開始するために第１の表示ウィンドウに入力するための１つまたは複数の実行コマンドを割り振り、ｅ）第１の表示ウィンドウ、ならびに関連する表示ウィンドウの出力、データ入力、および実行コマンドによって、選択されたアプリケーション・ロジック・フローに関して第１のコンピュータ・プログラムと第２のコンピュータ・プログラムとの間のインターフェースを提供するように構成され、本発明の第３の実施形態による装置をもたらすように構成されるプログラム・インターフェース・コードを生成するように動作可能である、装置を提供する。
【００１３】
さらなる実施形態は、コンピュータ可読媒体に記憶され、コンピュータの内部メモリにロードされ得るコンピュータ・プログラムであって、プログラムがコンピュータで実行されるときに第１の実施形態による方法を実行するように構成されたソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１４】
別の実施形態は、第１のプログラムが、アプリケーション・ロジックが表示ロジックを通じて操作可能であるように１つまたは複数のユーザ・インターフェース要素を含むアプリケーション・ロジックと密接に関連して表示ロジックを有する第２のプログラムのアプリケーション・ロジックを実行することを可能にするためのソフトウェア・インターフェースを提供するための方法であって、インターフェースが第２のプログラムの実行を引き起こすステップと、インターフェースが、第２のプログラムのアプリケーション・ロジックに対する第１のプログラムからの入力引数を受け付け、１つまたは複数のユーザ・インターフェース要素を介して第２のプログラムに入力引数を与えるステップと、インターフェースが、第２のプログラムの１つまたは複数のユーザ・インターフェース要素から抽出される第２のプログラムからの出力データを第１のプログラムに与えるステップとを含む、方法を提供する。
【００１５】
ここで、本発明の実施形態が、添付の図面を参照して単なる例として説明される。
【図面の簡単な説明】
【００１６】
【図１】第１のコンピュータ・プログラムがインターフェース・プログラムによって第２のコンピュータ・プログラムとインターフェースをとられるコンピュータ・システムの概略図である。
【図２】図１のインターフェース・プログラムを生成するためのコンピュータ・システムの概略図である。
【図３】図１の第２のコンピュータ・プログラムの選択された処理の間に提供される表示ウィンドウのフローの概略図である。
【図４】図３の表示ウィンドウのフローに対応する選択された処理フローの図式的表現の図である。
【図５】図４の選択された処理フローのインターフェースをとるための図１のインターフェース・プログラムの構造の概略図である。
【図６】第２のコンピュータ・プログラムにインターフェースを提供するときにインターフェース・プログラムによって実行される処理を示す流れ図である。
【図７】第２のコンピュータ・プログラムの所与の表示ウィンドウに応じてインターフェース・プログラムによって実行される処理を示す流れ図である。
【図８】図４の選択された処理フローの図式的表現から図５のインターフェース・プログラムを生成するときに図２のコード生成プログラムによって実行される処理を示す流れ図である。
【発明を実施するための形態】
【００１７】
図１を参照すると、コンピュータ・システム１０１が、第２のコンピュータ１０３に接続された第１のコンピュータ１０２を含む。第１のコンピュータは、ネットワーク１０４を介して第３のコンピュータ１０５にも接続されている。本実施形態において、第１のコンピュータ１０２は、ウェブ・サーバ・アプリケーション・プログラムの形態の第１のコンピュータ・プログラム１０６を搭載しており、第２のコンピュータ１０３は、第２のコンピュータ・プログラム１０７を搭載している。本実施形態において、第１のコンピュータ・プログラム１０６は、第２のコンピュータ・プログラム１０７によって提供される機能を、第３のコンピュータ１０５のユーザが第３のコンピュータ１０５にインストールされたウェブ・ブラウザ・アプリケーション・プログラム１０８を通じてネットワーク１０４経由で利用できるようにするように構成される。言い換えると、第１のコンピュータ・プログラム１０６は、第２のコンピュータ・プログラム１０７のラッパとして構成される。
【００１８】
本実施形態において、第２のコンピュータ・プログラム１０７は、第１のコンピュータ・プログラム１０６などのその他のアプリケーション・プログラムと通信するためのインターフェースなしで設計されたレガシー・アプリケーション・プログラムである。したがって、第１のコンピュータ・プログラム１０６は、第２のコンピュータ・プログラム１０７とインターフェースをとるためのインターフェース・プログラム１０９を与えられる。第２のコンピュータ・プログラム１０７は、関連するデータ処理ロジックと一体的にコーディングされ、したがって別々に再利用できない画面または表示ウィンドウなどのその第２のコンピュータ・プログラム１０７のデータ表現要素を用いて設計される。言い換えると、第２のコンピュータ・プログラム１０７の表示ロジックは、アプリケーション・ロジックに密接に関連して設けられる。インターフェース・プログラム１０９は、第１のコンピュータ・プログラム１０６が第２のコンピュータ・プログラム１０７の選択されたアプリケーション・ロジックを実行することを可能にするように、第２のコンピュータ・プログラム１０７の選択された表示画面を通じて第１のコンピュータ・プログラム１０６と第２のコンピュータ・プログラム１０７とのインターフェースをとるように構成される。
【００１９】
本実施形態において、第２のコンピュータ１０３は、ＩＢＭ（商標）ＡＳ／４００コンピュータである。第２のコンピュータ・プログラム１０７は、ＩＢＭ（商標）５２５０端末の形態の端末を介して使用するように元々設計されている。本実施形態において、インターフェース・プログラム１０９は、ＩＢＭ（商標）社から入手可能なＩＢＭ（商標）Ｈｏｓｔ  ｏｎ  Ｄｅｍａｎｄライブラリを使用して、ＩＢＭ（商標）５２５０端末を必要とせずにＩＢＭ（商標）ＡＳ／４００コンピュータ上の第２のコンピュータ・プログラム１０７の表示ロジックに直接アクセスするように構成される。
【００２０】
図２を参照すると、第４のコンピュータ２０１が、Ｅｃｌｉｐｓｅ  Ｆｏｕｎｄａｔｉｏｎ（商標），Ｉｎｃ．のＥｃｌｉｐｓｅ（商標）ＳＤＥの形態のソフトウェア開発環境（ＳＤＥ）プログラム２０２を搭載している。本実施形態において、ＳＤＥ２０２は、フロー規定プログラム２０３およびコード生成プログラム２０４を提供するように構成される。フロー規定プログラム２０３は、ユーザが第２のコンピュータ・プログラム１０７の選択された処理フローを規定することを可能にするように構成される。本実施形態において、フロー規定プログラム２０３は、図４を参照して以下でさらに説明されるように、ユーザが選択された処理フローをグラフィカルに規定することを可能にするように構成される。そのようなユーザの規定に応じて、フロー規定プログラム２０３は、コード生成プログラム２０４への入力であるフロー定義２０５を出力する。コード生成プログラム２０４は、以下でさらに説明されるように、入力されたフロー定義２０５からインターフェース・プログラム１０９のためのコードを生成するように構成される。
【００２１】
本実施形態において、第２のコンピュータ・プログラム１０７は、適切な端末の画面としてユーザに対して表示するために設計された１組の表示ウィンドウを含むユーザ・インターフェースを用いて構成される。表示ウィンドウは、入力フィールド、出力フィールドの形態の１つまたは複数のユーザ・インターフェース要素を含む可能性があり、所与の表示ウィンドウに関連する処理ロジックを実行するように第２のコンピュータ・プログラム１０７に命令するためのコマンドの形態の１つまたは複数のユーザ入力を受け付けるように構成される可能性がある。本実施形態において、インターフェース・プログラム１０９は、選択された機能が表示ウィンドウの関連するフローによって特定されるようにして、第２のコンピュータ・プログラム１０７の選択された機能または処理ロジックのフローとインターフェースをとるように構成される。図３は、第２のコンピュータ・プログラム１０７の選択されたデータ表示機能に関連する１組の表示ウィンドウ３０１、３０２、３０３の例を示す。選択されたデータ表示機能は、表示することができる利用可能なデータの範囲のメニューを提供する第１の表示ウィンドウ３０１によって開始される。第１の表示ウィンドウ３０１は、ユーザが、データの範囲、すなわち、ＡからＭまでの範囲のデータ、またはＮからＺまでの範囲のデータを選択するためのコマンドを入力することを可能にする。そのようなコマンドに応答して、第２のコンピュータ・プログラム１０７は、第１の表示ウィンドウ３０１に戻る前に、選択されたデータの範囲に応じて表示ウィンドウのうちの第２のウィンドウ３０２または第３のウィンドウ３０３のどちらかに選択された範囲内の利用可能なデータを表示する。
【００２２】
図４を参照すると、フロー規定プログラム２０３は、ユーザが、第２のコンピュータ・プログラム１０７の選択された処理ロジックを、関連する画面４０１、４０２、４０３、４０４、入力４０５、および出力４０６、４０７を特定するフロー定義２０５として規定することを可能にするように構成される。画面間の遷移４０８、４０９、４１０が規定され、データまたはコマンドが入力されるかまたはデータが出力される選択された処理内の点を表す。遷移４０８、４０９、４１０のそれぞれは、第２のコンピュータ・プログラム１０７によって処理される選択されたアプリケーション・ロジック・フローの対応する要素を表す。画面４０１、４０２、４０３、４０４のそれぞれは、それぞれの画面の一意識別子の働きをするそれぞれの画面種別（screen description）４１１、４１２、４１３、４１４を与えられる。一部の画面は、図４、および同じ画面種別「Ａ」４１１、４１４を有する画面１および３  ４０１、４０４の場合のように、所与の遷移において２回以上現れる可能性があるが、異なる結果を生じる可能性がある。図３から、表示ウィンドウのシーケンスはループと見なされる可能性があるが、処理ロジックの単一のフローの観点から見れば、画面１および３  ４０１、４０４は、それぞれ、処理の開始点および終了点を表す。インターフェース・プログラム１０９は、以下でさらに説明されるように、画面種別を、第２のコンピュータ・プログラム１０７の処理中の任意の所与の時間に現在位置を特定するために使用する。本実施形態においては、上述のようにフロー定義２０５を生成するために、Ｅｃｌｉｐｓｅ  Ｍｏｄｅｌｌｉｎｇ  Ｆｒａｍｅｗｏｒｋ（ＥＭＦ）が使用される。
【００２３】
図５を参照すると、本実施形態において、コード生成プログラム２０４は、フロー定義２０５からインターフェース・プログラム１０９のためのＪａｖａ（商標）のコードを生成するように構成される。図５は、生成されたＪａｖａ（商標）のコードの機能要素を示す。当業者に理解されるであろうように、インターフェース・プログラム１０９は、第２のコンピュータ・プログラム１０７の１組の１つまたは複数の選択された処理ロジック・フローにインターフェースを提供するように構成され得る。本実施形態において、それぞれのそのような選択された処理ロジック・フローは、フロー処理クラス５０１およびデータ処理クラス５０２の形態の対応するインターフェース・ルーチンによってインターフェースをとられる。フロー処理クラス５０１は、インターフェース・プログラム１０９への入り口点（entry point）を提供し、第２のコンピュータ・プログラム１０７とのインターフェース動作を実行する。データ処理クラス５０２は、入力および出力４０５、４０６ならびにコマンド入力４０７のための必要なデータ構造を提供する。データ処理クラス５０２は、インターフェース・プログラム１０９と第１のコンピュータ・プログラム１０６との間のインターフェースを含む。フロー処理クラス５０１は、第２のコンピュータ・プログラム１０７の状態を特定するため、例えば、第２のコンピュータ・プログラム１０７が選択された機能を実行するためのその第２のコンピュータ・プログラム１０７の処理の開始点にいるときを判定するためにフロー処理クラス５０１によって使用される１組の予想される画面種別５０３を与えられる。
【００２４】
フロー処理クラス５０１は、フロー定義２０５の画面４０１、４０２、４０３、４０４のそれぞれに対して１つずつ、１組の画面種別メソッド５０４および１組の画面識別子メソッド５０５をさらに含む。画面種別メソッド５０４は、それぞれの画面種別４１１、４１２、４１３、４１４を保持する。画面識別子メソッド５０５は、対応する画面種別メソッド５０４から得られた画面種別４１１、４１２、４１３、４１４を比較して、第２のコンピュータ・プログラム１０７の現在の画面を特定するように構成される。画面種別メソッド５０４および１組の画面識別子メソッド５０５は、予想される画面種別５０３などの１組の画面種別を入力し、もしあれば、特定された画面のうちのどれが第２のコンピュータ・プログラム１０７の現在の画面であるかを特定するように構成される画面チェッカー・メソッド５０６によって使用される。
【００２５】
フロー処理クラスは、フロー定義２０５の遷移４０８、４０９、４１０のそれぞれに対して１つずつ、１組の遷移メソッド５０７をさらに含む。各遷移メソッド５０７は、フロー定義２０５の所与の遷移に割り振られた入力、出力、またはコマンド５０８のいずれかのインターフェースをとるように構成される。したがって、遷移メソッド５０７は、データを、第２のコンピュータ・プログラム１０７の表示ウィンドウから、第１のコンピュータ・プログラム１０６に出力するためにデータ処理クラス５０２によって提供される対応するデータ構造に移すように構成され得る。同様に、遷移メソッド５０７は、データを、データ処理クラス５０２によって提供される関連するデータ構造から、第２のコンピュータ・プログラム１０７の表示ウィンドウの指定された入力フィールドに移すように構成され得る。遷移メソッド５０７は、所与の遷移に関連するレガシー・プログラムの処理を開始するために、シミュレーションされたキーの押下などのコマンドを第２のコンピュータ・プログラム１０７に入力するようにさらに構成され得る。
【００２６】
さらに、各遷移メソッド５０７は、フロー定義２０５による所与の遷移に続くあり得る遷移先画面を特定する予想される画面の組５０９を与えられ、それぞれのそのようなあり得る遷移先画面に関連する適切な遷移メソッド５０７をやはり特定する。したがって、各遷移メソッド５０７は、入力、出力、またはコマンドの割り振られた処理が完了すると、予想される画面の組５０９のうちのどの画面が第２のコンピュータ・プログラム１０７によって指示されているかを特定するようにさらに構成される。このように新しい現在の画面が特定されると、遷移メソッド５０７は、フロー定義２０５で定義されたように、新しい現在の画面に対応する次の遷移メソッド５０７を呼び出すように構成される。要約すると、各遷移メソッド５０７は、以下の機能を実行するように構成される。
１．現在のレガシー・アプリケーションの表示ウィンドウからの任意の割り振られた出力からデータを読み出すこと。
２．現在のレガシー・アプリケーションの表示ウィンドウの任意の割り振られた入力にデータを書き込むこと。
３．現在の遷移の処理の結果として生じると予想される１組の表示ウィンドウを決定すること。
４．レガシー・アプリケーションにコマンドを与えることによって現在の遷移を実行すること。および
５．結果として生じる画面を特定し、対応する遷移メソッドを実行すること。
【００２７】
第１のコンピュータ・プログラム１０６からの、第２のコンピュータ・プログラム１０７によって提供される所定の選択された機能の要求に応答してインターフェース・プログラム１０９によって実行される処理が、以降、図６の流れ図を参照してさらに詳細に説明される。処理は、第１のコンピュータ・プログラム１０６からの要求に応答してステップ６０１で開始され、ステップ６０２に移る。ステップ６０２において、第１のコンピュータ・プログラム１０６による選択された処理ロジック・フローの要求に対応するインターフェースをとるルーチンが特定され、処理はステップ６０３に移る。ステップ６０３において、第２のコンピュータ・プログラム１０７との通信が、特定されたインターフェースをとるルーチンによって開始され、処理は、ステップ６０４に移る。ステップ６０４において、インターフェースをとるルーチンに対する最初の画面が待ち受けられ、与えられると、処理はステップ６０５に移る。ステップ６０５において、関連するインターフェース・データ構造から入力およびコマンドを取得し、関連するインターフェース・データ構造に出力を与える、インターフェースをとるルーチンに対して指定された遷移のシーケンスが、処理される。遷移のシーケンスの処理が完了すると、処理はステップ６０６に移り、終了する。
【００２８】
所与の遷移メソッド５０７のインターフェース・プログラム１０９による処理が、以降、図７の流れ図を参照してさらに詳細に説明される。処理は、ステップ７０１において、フロー処理クラス５０１の入り口点からか、または別の遷移メソッド５０７によってかのいずれかで開始され、処理は、ステップ７０２に移る。ステップ７０２において、現在の画面の内容が、適切なＨｏＤ（商標）ライブラリ・ルーチンによって第２のコンピュータ・プログラム１０７から取得され、画面から任意の所定の出力、すなわち、フロー定義２０５で遷移に割り振られた任意の出力を抽出するために解析される。抽出された出力は、次に、第１のコンピュータ・プログラム１０６によるアクセスのために関連するデータ処理クラス５０２に記憶され、処理は、ステップ７０３に移る。ステップ７０３において、第２のコンピュータ・プログラム１０７に対する任意のデータ入力が、適切なＨｏＤ（商標）ライブラリ・ルーチンによって、関連するデータ処理クラス５０２から第２のコンピュータ・プログラム１０７の現在の画面に移され、処理は、ステップ７０４に移る。ステップ７０４において、第２のコンピュータ・プログラム１０７に対する任意のコマンド入力が、適切なＨｏＤ（商標）ライブラリ・ルーチンによって第２のコンピュータ・プログラム１０７に与えられ、処理は、ステップ７０５に移る。ステップ７０５において、現在の画面からのすべてのあり得る遷移先画面が、予想される画面の組５０９から特定され、処理は、ステップ７０６に移る。ステップ７０６において、第２のコンピュータ・プログラム１０７の出力が、適切なＨｏＤ（商標）ライブラリ・ルーチンによって問い合わされ、あり得る遷移先画面から新しい現在の画面が特定され、対応する遷移メソッド５０７が呼び出される。次に、処理は、ステップ７０７に進み、現在の遷移メソッド５０７に関して終了する。
【００２９】
フロー定義２０５からインターフェース・プログラム１０９を生成するためにコード生成プログラム２０４によって実行される処理が、以降、図８の流れ図を参照してさらに詳細に説明される。処理は、ステップ８０１で開始され、ステップ８０２に移り、ステップ８０２において、ＥＭＦの関連するフロー定義２０５が入力される。次に、処理はステップ８０３に移り、ステップ８０３において、インターフェース・プログラム１０９が、入力されたフロー定義２０５に対応するフロー・クラス（flow class）の形態のフロー処理クラス５０１によって初期化され、処理は、ステップ８０４に移る。ステップ８０４において、フロー定義２０５で定義された各入力および出力４０５、４０６、４０７に対応するデータ記憶要素を含むフロー入力／出力データ処理クラス５０２が生成され、処理はステップ８０５に移る。ステップ８０５において、フロー定義２０５の画面４０１、４０２、４０３、４０４のそれぞれに対する画面種別メソッド５０４および画面識別子メソッドを画面チェッカー・メソッド５０６とともに含む画面種別クラスが生成され、処理はステップ８０６に移る。ステップ８０６において、フロー定義２０５の各遷移４０８、４０９、４１０に対する遷移メソッド５０７が生成され、処理はステップ８０７に移る。ステップ８０７において、各遷移メソッド５０７が、対応する予想される画面の組５０９および対応する遷移メソッドによって補完される。次に、処理はステップ８０８に移り、ステップ８０８において、インターフェース・プログラム１０９が出力され、処理は終了する。
【００３０】
インターフェース・プログラム１０９は、第２のコンピュータ・プログラム１０７の選択された１組のフロー定義２０５のそれぞれにアクセスできるようにするために複数のフロー処理クラス５０１を与えられる可能性がある。
【００３１】
別の実施形態においては、インターフェース・プログラムは、レガシー・プログラムの誤ったまたは予期せぬ振る舞いに対処し、例えば、そのレガシー・プログラムがインターフェースをとられているアプリケーション・プログラムにエラーを報告することによってそのような振る舞いを適切に処理するためのエラー処理機能が設けられる。
【００３２】
さらなる実施形態においては、フロー定義が、インターフェースをとられているプログラムのより複雑な処理ロジックの記述を容易にするためのサブルーチン、条件、またはループを含む可能性がある。
【００３３】
本発明の実施形態は、インターフェースをとられるプログラムの表現を用いて動作するためのインターフェース・コードを生成するように構成される。ＴＮ３２７０Ｅ、ＴＮ５２５０、ＶＴ１００、ＶＴ２２０、ＶＴ４２０などのレガシー・システムを含むシステムのためのホスト・アクセス・メソッドをサポートするＩＢＭ  Ｊａｖａ  Ｈｏｓｔ−Ｏｎ−Ｄｅｍａｎｄ（商標）などのホスト・アクセス・メソッド。それによって、インターフェース・コードは、レガシー・コンポーネントとインターフェースをとるためにその表現にぴったりとはまることによって、レガシーのロジックを最新のランタイム環境で提供する。
【００３４】
当業者に理解されるであろうように、上記の教示は、Ｊａｖａ（商標）でのインターフェース・プログラムの生成に限定されず、任意の好適なソフトウェア言語で使用され得る。
【００３５】
上述のフロー定義はグラフィカルに行われるが、選択されたアプリケーション・ロジック・フローが任意のその他の好適な手段で定義され得ることは、当業者に理解されるであろう。
【００３６】
上述のように、上述のインターフェース・プログラムは、特定のレガシー・システムにアクセスするために既存のＨｏＤ（商標）ライブラリ・ルーチンを利用する。当業者に理解されるであろうように、任意の好適なシステムに関してそのようなライブラリ・ルーチンが提供され得る。そのようなシステム・アクセス・ルーチンの機能は、インターフェースをとるプログラムの実施形態の機能の一部として提供され得る。さらに、任意のそのようなライブラリが、サード・パーティの提供者から得られるか、または特に所与のアプリケーション用に、つまり、カスタム開発によって開発される可能性がある。
【００３７】
本発明の実施形態は、いわゆるレガシー・システムでの使用に限定されず、任意のコンピュータ・プログラムと、そのプログラムの選択された処理ロジックを駆動するためのそのプログラムの表示ウィンドウを通じてインターフェースをとるために提供され得る。
【００３８】
本発明の実施形態は、レガシーのソフトウェア・コンポーネントがロジックと表現との間の堅い結びつきを含む、言い換えると、表現とロジックとが１つのコンポーネントでリンクされている場合に、レガシー・コンポーネントをサービス指向アーキテクチャ（ＳＯＡ）などの最新のソフトウェア環境に統合するためのコードを生成するためのツールを提供する。
【００３９】
コンピュータ・プログラムは、使用されているソフトウェア言語と、そのようなソフトウェアが実行されるように意図されているシステムとに応じて、よくある補助的なソフトウェア要素および構造を含む。そのような要素および構造は、説明を明瞭にするために上記の説明に含まれていないが、当業者には明らかであろう。
【００４０】
本発明の一部またはすべてを具現化する装置が、本発明の実施形態の一部またはすべてを提供するように構成されたソフトウェアを有する汎用デバイスである可能性があることは、当業者に理解されるであろう。デバイスは、単一のデバイスまたはデバイスのグループである可能性があり、ソフトウェアは、単一のプログラムまたは１組のプログラムである可能性がある。さらに、本発明を実装するために使用されるソフトウェアのいずれかまたはすべては、１つまたは複数のデバイスにロードされ得るように任意の好適な送信または記憶手段を介して伝達される可能性がある。
【００４１】
本発明が本発明の実施形態の説明によって示され、実施形態が非常に詳細に説明されたが、出願人は、添付の特許請求の範囲をそのような詳細に制限するか、または何らかの形で限定することを意図していない。さらなる利点および改変が、当業者には容易に分かるであろう。したがって、本発明は、本発明のより広い態様において、代表的な装置および方法、ならびに図示され、説明された例示的な例の特定の詳細に限定されない。ゆえに、出願人の包括的な発明の概念の精神または範囲を逸脱することなく、そのような詳細から離れることができる。
【図１】
0005657183.tif 000002
【図２】
0005657183.tif 000003
【図３】
0005657183.tif 000004
【図４】
0005657183.tif 000005
【図５】
0005657183.tif 000006
【図６】
0005657183.tif 000007
【図７】
0005657183.tif 000008
【図８】
0005657183.tif 000009