(57)【要約】  複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのコンピュータ実装方法であって、制御フローが、複数の機能モジュールの間の遷移として表される、コンピュータ実装方法であり、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、所定の機能モジュールへの遷移、所定の機能モジュールのコンテンツが実行される状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定の機能モジュールが実行されている実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む、コンピュータ実装方法。
2021520587.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのコンピュータ実装方法であって、前記制御フローが、前記複数の機能モジュールの間の遷移として表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、コンピュータ実装方法であり、
前記実行可能な制御フローグラフの実行が中断されることになる前記実行可能な制御フローグラフにおける位置を指定するステップであって、
前記指定された位置が、所定の機能モジュールへの遷移、前記所定の機能モジュールのコンテンツが実行される状態への遷移又は前記所定の機能モジュールからの遷移を表す、ステップと、
実行環境において前記実行可能な制御フローグラフの実行を開始するステップと、
前記指定された位置を表す実行の時点において、
前記実行可能な制御フローグラフの実行を中断するステップと、
前記所定の機能モジュールが実行されている前記実行環境の１つ又は複数の属性を表すデータを提供するステップと
を含む、コンピュータ実装方法。
【請求項２】
前記実行可能な制御フローグラフが、複数の階層レベルとして表され、前記実行可能な制御フローグラフ自体が、前記階層レベルの第１のレベルで表され、各機能モジュールが、前記実行可能な制御フローグラフを含む前記階層レベルの前記第１のレベルとは異なる前記階層レベルの第２のレベルで表される、請求項１に記載のコンピュータ実装方法。
【請求項３】
機能モジュールが、前記機能モジュールの前記１つ又は複数のアクションを実施するメソッドを実施するように構成され、実施されるように構成された前記メソッドの各々が、前記階層レベルの前記第１のレベル及び前記階層レベルの前記第２のレベルの各々とは異なる前記階層レベルの第３のレベルで表される、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記指定された位置が、第１の指定位置であり、前記実行可能な制御フローグラフが、実施されるように構成された前記メソッドの間の遷移を含む、請求項３に記載のコンピュータ実装方法であって、
所定のメソッドのコンテンツの実行又は前記所定のメソッドからの遷移の前に、前記機能モジュールの前記所定のメソッドへの遷移を表す第２の指定位置で前記実行可能な制御フローグラフの実行を中断するように前記実行可能な制御フローグラフを構成するステップと、
前記第２の指定位置を表す実行の時点において、
前記実行可能な制御フローグラフの実行を中断するステップと、前記所定のメソッドが実行されるランタイム環境の１つ又は複数の属性を表すデータを提供するステップと
をさらに含む、コンピュータ実装方法。
【請求項５】
前記所定のメソッドの属性が、前記所定のメソッドを実行するシステムのローカル環境を含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
第１のコンピュータシステムが、前記実行可能な制御フローグラフを実行し、第２のコンピュータシステムが、前記所定の機能モジュールの生み出されたプロセスを実行し、前記第１のコンピュータシステムが、前記第２のコンピュータシステムとは異なる、請求項１に記載のコンピュータ実装方法であって、
前記中断に応答して、前記第２のコンピュータシステムのランタイム環境の１つ又は複数の属性の１つ又は複数の視覚的表現をレンダリングするユーザインタフェースを表示させるステップを
さらに含む、コンピュータ実装方法。
【請求項７】
表示デバイス上にレンダリングされる際に前記実行可能な制御フローグラフの中断を構成するための１つ又は複数の制御を表示するグラフィカルユーザインタフェースを提供するステップを
さらに含む、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記位置を指定するステップが、前記指定された位置において前記実行可能な制御フローグラフにブレークポイントを挿入するステップを含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記所定の機能モジュールが、第１の機能モジュールである、請求項１に記載のコンピュータ実装方法であって、
前記実行可能な制御フローグラフが中断されている間に、前記第１の機能モジュールの１つ又は複数の属性の１つ又は複数の値を修正するステップであって、それらの１つ又は複数の属性の前記１つ又は複数の値が、前記第１の機能モジュールから１つ又は複数の第２の機能モジュールによってアクセスされる、ステップと、
前記実行可能な制御フローグラフの実行を再開するステップと、
前記１つ又は複数の属性の前記１つ又は複数の修正値での実行を前記１つ又は複数の第２の機能モジュールに行わせることによって、前記実行可能な制御フローグラフの挙動を修正するステップと
をさらに含む、コンピュータ実装方法。
【請求項１０】
属性がパラメータである、請求項９に記載のコンピュータ実装方法。
【請求項１１】
前記所定の機能モジュールが、条件が満たされた時点で１つ又は複数の第１のアクションを実施し、前記条件が満たされなかった時点で１つ又は複数の第２のアクションを実施するように構成された条件付き機能モジュールである、請求項１に記載のコンピュータ実装方法であって、
前記条件付き機能モジュールの成功又は失敗状態を変更することによって、前記実行可能な制御フローグラフの制御フローを修正するステップ
をさらに含む、コンピュータ実装方法。
【請求項１２】
前記実行可能な制御フローグラフが、ループを経るように構成される、請求項１に記載のコンピュータ実装方法であって、
前記実行可能な制御フローグラフの実行前、実行中又は実行後に、前記ループの各反復又は前記ループの特定の反復が中断されるように前記実行可能な制御フローグラフを構成するステップをさらに含む、コンピュータ実装方法。
【請求項１３】
前記実行可能な制御フローグラフが、ループを経るように構成された下位の実行可能な制御フローグラフを含む、請求項１に記載のコンピュータ実装方法であって、
前記ループの各反復又は前記ループの特定の反復が中断されるように前記下位の実行可能な制御フローグラフを構成するステップ
をさらに含む、コンピュータ実装方法。
【請求項１４】
特定の条件が満たされた際に前記指定された位置において前記実行可能な制御フローグラフの実行が中断されるように前記実行可能な制御フローグラフを構成するステップ
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１５】
いずれかの機能モジュールが失敗した時点で、前記実行可能な制御フローグラフの実行を中断するように前記実行可能な制御フローグラフを構成するステップ
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１６】
前記所定の機能モジュールが、第２の機能モジュールを開始するように構成された第１の機能モジュールである、請求項１に記載のコンピュータ実装方法であって、
前記第２の機能モジュールの実行の開始時に実行を一時停止するように前記実行可能な制御フローグラフを構成するステップ
をさらに含む、コンピュータ実装方法。
【請求項１７】
前記実行可能な制御フローグラフが、グラフィック層及び制御処理層を含み、前記グラフィック層が、グラフィカルユーザインタフェース用の視覚的要素と、前記視覚的要素でプログラムされたビジュアルプログラミング言語での視覚的プログラムとを含み、前記ビジュアルプログラミング言語が、前記制御フローを指定するためのものであり、前記制御処理層が、前記ビジュアルプログラミング言語によって指定された前記制御フローを実施するために、機能モジュールと、メソッドと、前記メソッドを実行する際に使用される基本的なデータ構造と、前記基本的なデータ構造を使用して前記メソッドを実行するコードとを含む、請求項１に記載の方法。
【請求項１８】
前記グラフィカルユーザインタフェースを前記視覚的要素でレンダリングすることによって前記グラフィック層を実行するステップと、
前記グラフィカルユーザインタフェースを通じて、前記グラフィカルユーザインタフェースに表示された１つ又は複数の前記視覚的要素のユーザ操作を表すデータを受信するステップであって、前記受信されたデータが、前記ビジュアルプログラミング言語での前記視覚的プログラムを表す、ステップと、
前記グラフィック層で作成された前記視覚的プログラムに従って前記制御処理層を実行するステップであって、前記視覚的プログラムによって指定された１つ又は複数の機能モジュールを実行するサブステップを含む、前記制御処理層を実行するステップであり、機能モジュールを実行するサブステップが、前記ビジュアルプログラミング言語によって指定された前記制御フローを実施するために前記メソッドの１つ又は複数のデータ構造を使用してコードを実行することによってその機能モジュールのメソッドを実行させる、前記制御処理層を実行するステップと
をさらに含む、請求項１７に記載の方法。
【請求項１９】
特定の機能モジュールが、データ処理層に含まれる制御アプリケーションを表す、請求項１８に記載の方法であって、
前記特定の機能モジュールの特定のメソッドを実行するステップと、
前記特定のメソッドを実行するステップに応答して、前記制御アプリケーションを立ち上げるステップと
をさらに含む、方法。
【請求項２０】
複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのコンピュータ実装方法であって、前記複数の機能モジュールが、グラフィカルプログラム要素によって表され、前記制御フローが、前記グラフィカルプログラム要素間の遷移によって表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、コンピュータ実装方法であり、
前記実行可能な制御フローグラフの実行が中断されることになる前記実行可能な制御フローグラフにおける位置を指定するステップであって、
前記指定された位置が、前記複数の機能モジュールの所定の機能モジュールへの遷移、前記所定の機能モジュールの前記１つ又は複数のアクションのいくつかが実行を開始する状態への遷移又は前記所定の機能モジュールからの遷移を表す、ステップと、
実行環境において前記実行可能な制御フローグラフの実行を開始するステップであって、前記実行環境が、１つ又は複数のコンピュータをホストとし、前記複数の機能モジュールを実行するように構成される、ステップと、
前記指定された位置を表す前記実行の時点において、
前記実行可能な制御フローグラフの前記実行を中断するステップと、
前記時点で主流である前記実行環境の１つ又は複数の属性を表すデータを提供するステップと
を含む、コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本説明は、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするための方法、システム及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
デバッガ又はデバッグ用ツールは、他のコンピュータプログラムのテスト及びデバッグのために使用されるコンピュータプログラムである。
【発明の概要】
【課題を解決するための手段】
【０００３】
一般態様１では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのコンピュータ実装方法であって、制御フローが、複数の機能モジュールの間の遷移として表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、コンピュータ実装方法であり、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、所定の機能モジュールへの遷移、所定の機能モジュールのコンテンツが実行される状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定の機能モジュールが実行されている実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む、コンピュータ実装方法が本明細書で説明される。
【０００４】
態様１による態様２では、実行可能な制御フローグラフは、複数の階層レベルとして表され、実行可能な制御フローグラフ自体は、階層レベルの第１のレベルで表され、各機能モジュールは、実行可能な制御フローグラフを含む階層レベルの第１のレベルとは異なる階層レベルの第２のレベルで表される。
【０００５】
態様１又は２による態様３では、機能モジュールは、機能モジュールの１つ又は複数のアクションを実施するメソッドを実施するように構成され、実施されるように構成されたメソッドの各々は、階層レベルの第１のレベル及び階層レベルの第２のレベルの各々とは異なる階層レベルの第３のレベルで表される。
【０００６】
態様１〜３のいずれか１つによる態様４では、指定位置は、第１の指定位置であり、実行可能な制御フローグラフは、実施されるように構成されたメソッドの間の遷移を含み、方法は、所定のメソッドのコンテンツの実行又は所定のメソッドからの遷移の前に、機能モジュールの所定のメソッドへの遷移を表す第２の指定位置で実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップと、第２の指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定のメソッドが実行されるランタイム環境の１つ又は複数の属性を表すデータを提供するステップとをさらに含む。
【０００７】
態様１〜４のいずれか１つによる態様５では、所定のメソッドの属性は、所定のメソッドを実行するシステムのローカル環境を含む。
【０００８】
態様１〜５のいずれか１つによる態様６では、第１のコンピュータシステムは、実行可能な制御フローグラフを実行し、第２のコンピュータシステムは、所定の機能モジュールの生み出されたプロセスを実行し、第１のコンピュータシステムは、第２のコンピュータシステムとは異なり、方法は、中断に応答して、第２のコンピュータシステムのランタイム環境の１つ又は複数の属性の１つ又は複数の視覚的表現をレンダリングするユーザインタフェースを表示させるステップをさらに含む。
【０００９】
態様１〜６のいずれか１つによる態様７では、方法は、表示デバイス上にレンダリングされる際に実行可能な制御フローグラフの中断を構成するための１つ又は複数の制御を表示するグラフィカルユーザインタフェースを提供するステップをさらに含む。
【００１０】
態様１〜７のいずれか１つによる態様８では、位置を指定するステップは、指定位置において実行可能な制御フローグラフにブレークポイントを挿入するステップを含む。
【００１１】
態様１〜８のいずれか１つによる態様９では、所定の機能モジュールは、第１の機能モジュールであり、方法は、実行可能な制御フローグラフが中断されている間に、第１の機能モジュールの１つ又は複数の属性の１つ又は複数の値を修正するステップであって、それらの１つ又は複数の属性の１つ又は複数の値が、第１の機能モジュールから１つ又は複数の第２の機能モジュールによってアクセスされる、ステップと、実行可能な制御フローグラフの実行を再開するステップと、１つ又は複数の属性の１つ又は複数の修正値での実行を１つ又は複数の第２の機能モジュールに行わせることによって、実行可能な制御フローグラフの挙動を修正するステップとをさらに含む。
【００１２】
態様１〜９のいずれか１つによる態様１０では、属性はパラメータである。
【００１３】
態様１〜１０のいずれか１つによる態様１１では、所定の機能モジュールは、条件が満たされた時点で１つ又は複数の第１のアクションを実施し、条件が満たされなかった時点で１つ又は複数の第２のアクションを実施するように構成された条件付き機能モジュールであり、方法は、条件付き機能モジュールの成功又は失敗状態を変更することによって、実行可能な制御フローグラフの制御フローを修正するステップをさらに含む。
【００１４】
態様１〜１１のいずれか１つによる態様１２では、実行可能な制御フローグラフは、ループを経るように構成され、方法は、実行可能な制御フローグラフの実行前、実行中又は実行後に、ループの各反復又はループの特定の反復が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００１５】
態様１〜１２のいずれか１つによる態様１３では、実行可能な制御フローグラフは、ループを経るように構成された下位の実行可能な制御フローグラフを含み、方法は、ループの各反復又はループの特定の反復が中断されるように下位の実行可能な制御フローグラフを構成するステップをさらに含む。
【００１６】
態様１〜１３のいずれか１つによる態様１４では、方法は、特定の条件が満たされた際に指定位置において実行可能な制御フローグラフの実行が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００１７】
態様１〜１４のいずれか１つによる態様１５では、方法は、いずれかの機能モジュールが失敗した時点で、実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００１８】
態様１〜１５のいずれか１つによる態様１６では、所定の機能モジュールは、第２の機能モジュールを開始するように構成された第１の機能モジュールであり、方法は、第２の機能モジュールの実行の開始時に実行を一時停止するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００１９】
態様１〜１６のいずれか１つによる態様１７では、実行可能な制御フローグラフは、グラフィック層及び制御処理層を含み、グラフィック層は、グラフィカルユーザインタフェース用の視覚的要素と、視覚的要素でプログラムされたビジュアルプログラミング言語での視覚的プログラムとを含み、ビジュアルプログラミング言語は、制御フローを指定するためのものであり、制御処理層は、ビジュアルプログラミング言語によって指定された制御フローを実施するために、機能モジュールと、メソッドと、メソッドを実行する際に使用される基本的なデータ構造と、基本的なデータ構造を使用してメソッドを実行するコードとを含む。
【００２０】
態様１〜１７のいずれか１つによる態様１８では、方法は、グラフィカルユーザインタフェースを視覚的要素でレンダリングすることによってグラフィック層を実行するステップと、グラフィカルユーザインタフェースを通じて、グラフィカルユーザインタフェースに表示された１つ又は複数の視覚的要素のユーザ操作を表すデータを受信するステップであって、受信データが、ビジュアルプログラミング言語での視覚的プログラムを表す、ステップと、グラフィック層で作成された視覚的プログラムに従って制御処理層を実行するステップであって、視覚的プログラムによって指定された１つ又は複数の機能モジュールを実行するサブステップを含む、制御処理層を実行するステップであり、機能モジュールを実行するサブステップが、ビジュアルプログラミング言語によって指定された制御フローを実施するためにメソッドの１つ又は複数のデータ構造を使用してコードを実行することによってその機能モジュールのメソッドを実行させる、制御処理層を実行するステップとをさらに含む。
【００２１】
態様１〜１８のいずれか１つによる態様１９では、特定の機能モジュールは、データ処理層に含まれる制御アプリケーションを表し、方法は、特定の機能モジュールの特定のメソッドを実行するステップと、特定のメソッドを実行するステップに応答して、制御アプリケーションを立ち上げるステップとをさらに含む。
【００２２】
一般態様２０では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのコンピュータ実装方法であって、複数の機能モジュールが、グラフィカルプログラム要素によって表され、制御フローが、グラフィカルプログラム要素間の遷移によって表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、コンピュータ実装方法であり、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、複数の機能モジュールの所定の機能モジュールへの遷移、所定の機能モジュールの１つ若しくは複数のアクションのいくつかが実行を開始する状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップであって、実行環境が、１つ又は複数のコンピュータをホストとし、複数の機能モジュールを実行するように構成される、ステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、その時点で主流である実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む、コンピュータ実装方法。
【００２３】
一般態様２１では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするための１つ又は複数の命令を格納する１つ又は複数の機械可読ハードウェア記憶装置であって、制御フローが、複数の機能モジュールの間の遷移として表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成され、１つ又は複数の命令が、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、所定の機能モジュールへの遷移、所定の機能モジュールのコンテンツが実行される状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定の機能モジュールが実行されている実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む動作を実施するために１つ又は複数の処理デバイスによって実行可能である、１つ又は複数の機械可読ハードウェア記憶装置が本明細書で説明される。
【００２４】
態様２１による態様２２では、実行可能な制御フローグラフは、複数の階層レベルとして表され、実行可能な制御フローグラフ自体は、階層レベルの第１のレベルで表され、各機能モジュールは、実行可能な制御フローグラフを含む階層レベルの第１のレベルとは異なる階層レベルの第２のレベルで表される。
【００２５】
態様２１又は２２による態様２３では、機能モジュールは、機能モジュールの１つ又は複数のアクションを実施するメソッドを実施するように構成され、実施されるように構成されたメソッドの各々は、階層レベルの第１のレベル及び階層レベルの第２のレベルの各々とは異なる階層レベルの第３のレベルで表される。
【００２６】
態様２１〜２３のいずれか１つによる態様２４では、指定位置は、第１の指定位置であり、実行可能な制御フローグラフは、実施されるように構成されたメソッドの間の遷移を含み、１つ又は複数の動作は、所定のメソッドのコンテンツの実行又は所定のメソッドからの遷移の前に、機能モジュールの所定のメソッドへの遷移を表す第２の指定位置で実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップと、第２の指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定のメソッドが実行されるランタイム環境の１つ又は複数の属性を表すデータを提供するステップとをさらに含む。
【００２７】
態様２１〜２４のいずれか１つによる態様２５では、所定のメソッドの属性は、所定のメソッドを実行するシステムのローカル環境を含む。
【００２８】
態様２１〜２５のいずれか１つによる態様２６では、第１のコンピュータシステムは、実行可能な制御フローグラフを実行し、第２のコンピュータシステムは、所定の機能モジュールの生み出されたプロセスを実行し、第１のコンピュータシステムは、第２のコンピュータシステムとは異なり、１つ又は複数の動作は、中断に応答して、第２のコンピュータシステムのランタイム環境の１つ又は複数の属性の１つ又は複数の視覚的表現をレンダリングするユーザインタフェースを表示させるステップをさらに含む。
【００２９】
態様２１〜２６のいずれか１つによる態様２７では、１つ又は複数の動作は、表示デバイス上にレンダリングされる際に実行可能な制御フローグラフの中断を構成するための１つ又は複数の制御を表示するグラフィカルユーザインタフェースを提供するステップをさらに含む。
【００３０】
態様２１〜２７のいずれか１つによる態様２８では、位置を指定するステップは、指定位置において実行可能な制御フローグラフにブレークポイントを挿入するステップを含む。
【００３１】
態様２１〜２８のいずれか１つによる態様２９では、所定の機能モジュールは、第１の機能モジュールであり、１つ又は複数の動作は、実行可能な制御フローグラフが中断されている間に、第１の機能モジュールの１つ又は複数の属性の１つ又は複数の値を修正するステップであって、それらの１つ又は複数の属性の１つ又は複数の値が、第１の機能モジュールから１つ又は複数の第２の機能モジュールによってアクセスされる、ステップと、実行可能な制御フローグラフの実行を再開するステップと、１つ又は複数の属性の１つ又は複数の修正値での実行を１つ又は複数の第２の機能モジュールに行わせることによって、実行可能な制御フローグラフの挙動を修正するステップとをさらに含む。
【００３２】
態様２１〜２９のいずれか１つによる態様３０では、属性はパラメータである。
【００３３】
態様２１〜３０のいずれか１つによる態様３１では、所定の機能モジュールは、条件が満たされた時点で１つ又は複数の第１のアクションを実施し、条件が満たされなかった時点で１つ又は複数の第２のアクションを実施するように構成された条件付き機能モジュールであり、１つ又は複数の動作は、条件付き機能モジュールの成功又は失敗状態を変更することによって、実行可能な制御フローグラフの制御フローを修正するステップをさらに含む。
【００３４】
態様２１〜３１のいずれか１つによる態様３２では、実行可能な制御フローグラフは、ループを経るように構成され、１つ又は複数の動作は、実行可能な制御フローグラフの実行前、実行中又は実行後に、ループの各反復又はループの特定の反復が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００３５】
態様２１〜３２のいずれか１つによる態様３３では、実行可能な制御フローグラフは、ループを経るように構成された下位の実行可能な制御フローグラフを含み、１つ又は複数の動作は、ループの各反復又はループの特定の反復が中断されるように下位の実行可能な制御フローグラフを構成するステップをさらに含む。
【００３６】
態様２１〜３３のいずれか１つによる態様３４では、１つ又は複数の動作は、特定の条件が満たされた際に指定位置において実行可能な制御フローグラフの実行が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００３７】
態様２１〜３４のいずれか１つによる態様３５では、１つ又は複数の動作は、いずれかの機能モジュールが失敗した時点で、実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００３８】
態様２１〜３５のいずれか１つによる態様３６では、所定の機能モジュールは、第２の機能モジュールを開始するように構成された第１の機能モジュールであり、１つ又は複数の動作は、第２の機能モジュールの実行の開始時に実行を一時停止するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００３９】
態様２１〜３６のいずれか１つによる態様３７では、実行可能な制御フローグラフは、グラフィック層及び制御処理層を含み、グラフィック層は、グラフィカルユーザインタフェース用の視覚的要素と、視覚的要素でプログラムされたビジュアルプログラミング言語での視覚的プログラムとを含み、ビジュアルプログラミング言語は、制御フローを指定するためのものであり、制御処理層は、ビジュアルプログラミング言語によって指定された制御フローを実施するために、機能モジュールと、メソッドと、メソッドを実行する際に使用される基本的なデータ構造と、基本的なデータ構造を使用してメソッドを実行するコードとを含む。
【００４０】
態様２１〜３７のいずれか１つによる態様３８では、１つ又は複数の動作は、グラフィカルユーザインタフェースを視覚的要素でレンダリングすることによってグラフィック層を実行するステップと、グラフィカルユーザインタフェースを通じて、グラフィカルユーザインタフェースに表示された１つ又は複数の視覚的要素のユーザ操作を表すデータを受信するステップであって、受信データが、ビジュアルプログラミング言語での視覚的プログラムを表す、ステップと、グラフィック層で作成された視覚的プログラムに従って制御処理層を実行するステップであって、視覚的プログラムによって指定された１つ又は複数の機能モジュールを実行するサブステップを含む、制御処理層を実行するステップであり、機能モジュールを実行するサブステップが、ビジュアルプログラミング言語によって指定された制御フローを実施するためにメソッドの１つ又は複数のデータ構造を使用してコードを実行することによってその機能モジュールのメソッドを実行させる、制御処理層を実行するステップとをさらに含む。
【００４１】
態様２１〜３８のいずれか１つによる態様３９では、特定の機能モジュールは、データ処理層に含まれる制御アプリケーションを表し、１つ又は複数の動作は、特定の機能モジュールの特定のメソッドを実行するステップと、特定のメソッドを実行するステップに応答して、制御アプリケーションを立ち上げるステップとをさらに含む。
【００４２】
一般態様４０では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするための１つ又は複数の命令を格納する１つ又は複数の機械可読であって、複数の機能モジュールが、グラフィカルプログラム要素によって表され、制御フローが、グラフィカルプログラム要素間の遷移によって表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成され、１つ又は複数の命令が、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、複数の機能モジュールの所定の機能モジュールへの遷移、所定の機能モジュールの１つ若しくは複数のアクションのいくつかが実行を開始する状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップであって、実行環境が、１つ又は複数のコンピュータをホストとし、複数の機能モジュールを実行するように構成される、ステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、その時点で主流である実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む動作を実施するために１つ又は複数の処理デバイスによって実行可能である、１つ又は複数の機械可読。
【００４３】
一般態様４１では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのデータ処理システムであって、制御フローが、複数の機能モジュールの間の遷移として表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、データ処理システムであり、１つ又は複数の処理デバイスと、１つ又は複数の命令を格納する１つ又は複数の機械可読ハードウェア記憶装置とを含む、データ処理システムであり、１つ又は複数の命令が、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、所定の機能モジュールへの遷移、所定の機能モジュールのコンテンツが実行される状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定の機能モジュールが実行されている実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む動作を実施するために１つ又は複数の処理デバイスによって実行可能である、データ処理システムが本明細書で説明される。
【００４４】
態様４１による態様４２では、実行可能な制御フローグラフは、複数の階層レベルとして表され、実行可能な制御フローグラフ自体は、階層レベルの第１のレベルで表され、各機能モジュールは、実行可能な制御フローグラフを含む階層レベルの第１のレベルとは異なる階層レベルの第２のレベルで表される。
【００４５】
態様４１又は４２による態様４３では、機能モジュールは、機能モジュールの１つ又は複数のアクションを実施するメソッドを実施するように構成され、実施されるように構成されたメソッドの各々は、階層レベルの第１のレベル及び階層レベルの第２のレベルの各々とは異なる階層レベルの第３のレベルで表される。
【００４６】
態様４１〜４３のいずれか１つによる態様４４では、指定位置は、第１の指定位置であり、実行可能な制御フローグラフは、実施されるように構成されたメソッドの間の遷移を含み、１つ又は複数の動作は、所定のメソッドのコンテンツの実行又は所定のメソッドからの遷移の前に、機能モジュールの所定のメソッドへの遷移を表す第２の指定位置で実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップと、第２の指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、所定のメソッドが実行されるランタイム環境の１つ又は複数の属性を表すデータを提供するステップとをさらに含む。
【００４７】
態様４１〜４４のいずれか１つによる態様４５では、所定のメソッドの属性は、所定のメソッドを実行するシステムのローカル環境を含む。
【００４８】
態様４１〜４５のいずれか１つによる態様４６では、第１のコンピュータシステムは、実行可能な制御フローグラフを実行し、第２のコンピュータシステムは、所定の機能モジュールの生み出されたプロセスを実行し、第１のコンピュータシステムは、第２のコンピュータシステムとは異なり、１つ又は複数の動作は、中断に応答して、第２のコンピュータシステムのランタイム環境の１つ又は複数の属性の１つ又は複数の視覚的表現をレンダリングするユーザインタフェースを表示させるステップをさらに含む。
【００４９】
態様４１〜４６のいずれか１つによる態様４７では、１つ又は複数の動作は、表示デバイス上にレンダリングされる際に実行可能な制御フローグラフの中断を構成するための１つ又は複数の制御を表示するグラフィカルユーザインタフェースを提供するステップをさらに含む。
【００５０】
態様４１〜４７のいずれか１つによる態様４８では、位置を指定するステップは、指定位置において実行可能な制御フローグラフにブレークポイントを挿入するステップを含む。
【００５１】
態様４１〜４８のいずれか１つによる態様４９では、所定の機能モジュールは、第１の機能モジュールであり、１つ又は複数の動作は、実行可能な制御フローグラフが中断されている間に、第１の機能モジュールの１つ又は複数の属性の１つ又は複数の値を修正するステップであって、それらの１つ又は複数の属性の１つ又は複数の値が、第１の機能モジュールから１つ又は複数の第２の機能モジュールによってアクセスされる、ステップと、実行可能な制御フローグラフの実行を再開するステップと、１つ又は複数の属性の１つ又は複数の修正値での実行を１つ又は複数の第２の機能モジュールに行わせることによって、実行可能な制御フローグラフの挙動を修正するステップとをさらに含む。
【００５２】
態様４１〜４９のいずれか１つによる態様５０では、属性はパラメータである。
【００５３】
態様４１〜５０のいずれか１つによる態様５１では、所定の機能モジュールは、条件が満たされた時点で１つ又は複数の第１のアクションを実施し、条件が満たされなかった時点で１つ又は複数の第２のアクションを実施するように構成された条件付き機能モジュールであり、１つ又は複数の動作は、条件付き機能モジュールの成功又は失敗状態を変更することによって、実行可能な制御フローグラフの制御フローを修正するステップをさらに含む。
【００５４】
態様４１〜５１のいずれか１つによる態様５２では、実行可能な制御フローグラフは、ループを経るように構成され、１つ又は複数の動作は、実行可能な制御フローグラフの実行前、実行中又は実行後に、ループの各反復又はループの特定の反復が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００５５】
態様４１〜５２のいずれか１つによる態様５３では、実行可能な制御フローグラフは、ループを経るように構成された下位の実行可能な制御フローグラフを含み、１つ又は複数の動作は、ループの各反復又はループの特定の反復が中断されるように下位の実行可能な制御フローグラフを構成するステップをさらに含む。
【００５６】
態様４１〜５３のいずれか１つによる態様５４では、１つ又は複数の動作は、特定の条件が満たされた際に指定位置において実行可能な制御フローグラフの実行が中断されるように実行可能な制御フローグラフを構成するステップをさらに含む。
【００５７】
態様４１〜５４のいずれか１つによる態様５５では、１つ又は複数の動作は、いずれかの機能モジュールが失敗した時点で、実行可能な制御フローグラフの実行を中断するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００５８】
態様４１〜５５のいずれか１つによる態様５６では、所定の機能モジュールは、第２の機能モジュールを開始するように構成された第１の機能モジュールであり、１つ又は複数の動作は、第２の機能モジュールの実行の開始時に実行を一時停止するように実行可能な制御フローグラフを構成するステップをさらに含む。
【００５９】
態様４１〜５６のいずれか１つによる態様５７では、実行可能な制御フローグラフは、グラフィック層及び制御処理層を含み、グラフィック層は、グラフィカルユーザインタフェース用の視覚的要素と、視覚的要素でプログラムされたビジュアルプログラミング言語での視覚的プログラムとを含み、ビジュアルプログラミング言語は、制御フローを指定するためのものであり、制御処理層は、ビジュアルプログラミング言語によって指定された制御フローを実施するために、機能モジュールと、メソッドと、メソッドを実行する際に使用される基本的なデータ構造と、基本的なデータ構造を使用してメソッドを実行するコードとを含む。
【００６０】
態様４１〜５７のいずれか１つによる態様５８では、１つ又は複数の動作は、グラフィカルユーザインタフェースを視覚的要素でレンダリングすることによってグラフィック層を実行するステップと、グラフィカルユーザインタフェースを通じて、グラフィカルユーザインタフェースに表示された１つ又は複数の視覚的要素のユーザ操作を表すデータを受信するステップであって、受信データが、ビジュアルプログラミング言語での視覚的プログラムを表す、ステップと、グラフィック層で作成された視覚的プログラムに従って制御処理層を実行するステップであって、視覚的プログラムによって指定された１つ又は複数の機能モジュールを実行するサブステップを含む、制御処理層を実行するステップであり、機能モジュールを実行するサブステップが、ビジュアルプログラミング言語によって指定された制御フローを実施するためにメソッドの１つ又は複数のデータ構造を使用してコードを実行することによってその機能モジュールのメソッドを実行させる、制御処理層を実行するステップとをさらに含む。
【００６１】
態様４１〜５８のいずれか１つによる態様５９では、特定の機能モジュールは、データ処理層に含まれる制御アプリケーションを表し、１つ又は複数の動作は、特定の機能モジュールの特定のメソッドを実行するステップと、特定のメソッドを実行するステップに応答して、制御アプリケーションを立ち上げるステップとをさらに含む。
【００６２】
一般態様６０では、複数の機能モジュールの間の制御フローを指定する実行可能な制御フローグラフをデバッグするためのデータ処理システムであって、複数の機能モジュールが、グラフィカルプログラム要素によって表され、制御フローが、グラフィカルプログラム要素間の遷移によって表され、各機能モジュールが、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される、データ処理システムであり、１つ又は複数の処理デバイスと、１つ又は複数の命令を格納する１つ又は複数の機械可読とを含む、データ処理システムであり、１つ又は複数の命令が、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定するステップであって、指定位置が、複数の機能モジュールの所定の機能モジュールへの遷移、所定の機能モジュールの１つ若しくは複数のアクションのいくつかが実行を開始する状態への遷移又は所定の機能モジュールからの遷移を表す、ステップと、実行環境において実行可能な制御フローグラフの実行を開始するステップであって、実行環境が、１つ又は複数のコンピュータをホストとし、複数の機能モジュールを実行するように構成される、ステップと、指定位置を表す実行の時点において、実行可能な制御フローグラフの実行を中断するステップと、その時点で主流である実行環境の１つ又は複数の属性を表すデータを提供するステップとを含む動作を実施するために１つ又は複数の処理デバイスによって実行可能である、データ処理システム。
【００６３】
本発明の他の特徴及び利点は、以下の説明から及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００６４】
【図１Ａ】プランの図である。
【図１Ｂ】プランの図である。
【図１Ｃ】プランの図である。
【図１Ｄ】プランの図である。
【図１Ｅ】プランの図である。
【図１Ｆ】プランの図である。
【図１Ｇ】プランの図である。
【図２】プランの図である。
【図３】タスク、そのメソッド、並びに、タスク及びそのメソッドに関連するブレークポイントの挿入の図である。
【図４】グラフィカル開発環境において定義されたプランの様々な側面のユーザインタフェースの例である。
【図５】プランデバッガの制御の例である。
【図６】プランデバッガの制御の例である。
【図７Ａ】グラフィカル開発環境において定義されたプランの様々な側面のユーザインタフェースの例である。
【図７Ｂ】グラフィカル開発環境において定義されたプランの様々な側面のユーザインタフェースの例である。
【図８】プランの要素の属性を閲覧して編集するためのブレークポイントインスペクタの図である。
【図９Ａ】プランの要素の属性を閲覧して編集するためのブレークポイントインスペクタの図である。
【図９Ｂ】プランデバッガの制御の例である。
【図９Ｃ】プランデバッガの制御の例である。
【図１０】プランの実行環境の図である。
【図１１】プランの図である。
【図１２】タスクの図である。
【図１３】グラフィカル制御フローアプリケーションの実行を中断するためのプロセスの例である。
【図１４Ａ】継承メソッドの図である。
【図１４Ｂ】継承メソッドにおいてブレークポイントを設定する図である。
【図１５】データ処理システムのブロック図である。
【発明を実施するための形態】
【００６５】
図１Ａを参照すると、略図２は、プランのグラフィック部分１を示している。便宜上、限定はしないが、以下では、プラン全体（グラフィック部分１を含むもの）は、プラン１と呼ばれる。一般に、「プラン」（本明細書では、「実行可能な制御フローグラフ」又は「グラフィカル制御フローアプリケーション」とも呼ばれる）は、本明細書で使用される場合は、グラフィカルプログラム要素（各々は機能モジュールを表す）を有する視覚的プログラムを含む。次に、各機能モジュールは、制御アプリケーションを表す。
【００６６】
プランは、機能モジュールの間の制御フローを指定する。制御フローを指定することにより、プランは、プランの様々な機能モジュールの実行の視覚的組織を提供する。一般に、プランによって指定された制御フローは、プランのグラフィカルプログラム要素間の遷移又は接続によって表される。プランは、起動又は実行することができ、実行される様々な制御アプリケーション用の機能モジュールを通じて情報をカプセル化する。
【００６７】
一般に、制御アプリケーションは、プランの外部のものであり且つプランによって起動されるプログラムを含む。制御アプリケーションの例は、コンピュータプログラム、スクリプト、データフローグラフ、別のプランなどを含む。一般に、グラフィカルプログラム要素は、テキストというよりむしろ図表を用いて操作することができるビジュアルプログラミング言語（ＶＰＬ）での視覚的プログラムの要素を含む。一般に、機能モジュールは、プランのデータ構造、プランのメソッド及びデータ構造でメソッドを実装するためのコードを含む。例では、機能モジュールのタイプは、実行される一連のアクション（制御アプリケーションというよりむしろ、プラン内の）を含むタスクである。便宜上、機能モジュールは、本明細書では、限定はしないが、「タスク」と呼ぶこともできる。この例では、制御フローは、プランの機能モジュールの実行の順序についての論理を表現する。一般に、機能モジュールは、条件付き論理、プログラム、ユーザスクリプト、プロセスなどを表す。機能モジュールは、データフローグラフを使用して実装するか、又は、別の実行可能な制御フローグラフ（「サブプラン」若しくは下位の実行可能な制御フローグラフと呼ばれる）を表すことができる。例えば、サブプランは、より大きなプランに埋め込まれたプランであり、組織上の便宜のためにプランにおいて使用され、様々な機能（例えば、ループ機能）を含み得る。サブプランは、多くの異なるタスク及びさらなる入れ子サブプランを表し得る。プランは、タスクをどのように接続するか並びにメソッド及びパラメータをどのように指定するかによって、タスク間の順序、関係及び通信を制御する。プランでは、タスク、起動順序、条件付き論理及びタスク間の関係は、図表を用いて表される。
【００６８】
この例では、プランは、グラフィック層（以前にグラフィック部分と呼ばれたもの）及び制御処理層を含み、各層は、データ処理層（例えば、制御アプリケーション）とは異なる。グラフィック層は、グラフィカルユーザインタフェースの視覚的要素と、ＶＰＬの視覚的プログラムとを含む。制御処理層は、ビジュアルプログラミング言語によって指定された制御フローを実施するために、タスクと、メソッドと、基本的なデータ構造（メソッドを実行する際に使用される）と、基本的なデータ構造を使用してメソッドを実行するコードとを含む。
【００６９】
プラン、サブプラン及びグラフィカルプログラム要素は、視覚的プログラムの一部であるグラフィカルエンティティを含み、プランのタスク及び他の機能モジュールは、グラフィカルエンティティによって表され、「実行可能な制御フローグラフ」と呼ばれる視覚的プログラムによって制御される。すなわち、実行可能な制御フローグラフは、グラフィカルアイコンの間の制御フローを指定することはないが、実際のデータ処理の実行順番を制御する。
【００７０】
例では、実行可能な制御フローグラフ（又はプラン）は、機能モジュール（例えば、タスク、サブプランなど）を表すノードを有する有向グラフを含む。ノードは、機能モジュールの間の制御フローを表す有向リンク（本明細書では「遷移」とも呼ばれる）によって接続される。具体的には、有向リンクの各々は、機能モジュールの間の制御フローを指定するデータ構造によって指定される。この例では、プラン自体の実行により、プランによって指定された制御フローに従ってプランのノードによって表される基本的な制御処理層が実行される。プランは、例えば、各グラフィカルプログラム要素が異なる演算ノード上で起動されるような分散様式で、１つ又は複数の演算ノード（例えば、中央処理装置（ＣＰＵ））上で起動することができ、異なる演算ノードは、ネットワーク接続によって通信可能に相互接続される。
【００７１】
実行可能な制御フローグラフの構築は、いくつかの事例では、本質的に高度に技術的なものであり得る。実行可能な制御フローグラフは、様々なサブプランやタスクの間のグラフベースの制御フローを実装することができる。実行可能な制御フローグラフは、データ記憶装置内のデータ構造によって指定され、実行可能な制御フローグラフは、複数のノードを有し、複数のノードは、データ構造によって指定され、１つ又は複数のリンクによって接続されたサブプラン及び／又はタスクを表すものであり、リンクは、データ構造によって指定され、ノード間のデータフローを表すものである。データ記憶装置に結合され、１つ又は複数のコンピュータをホストとするランタイム環境（又は実行環境）を使用することができる。ランタイム環境は、事前実行モジュールを含み、事前実行モジュールは、実行可能な制御フローグラフを指定する格納されたデータ構造を読み取り、事前実行モジュールによって実行可能な制御フローグラフに割り当てられたタスク及びサブプランの演算を実施するためのプロセスなどのコンピューティング資源を割り当てる及び構成するように構成される。ランタイム環境は、実行モジュールを含み、実行モジュールは、本明細書で説明されるメソッドのいずれか１つが実行されるように割り当てられたプロセスの実行をスケジュール及び制御するためのものである。
【００７２】
異なるタイプのタスクが存在し、例えば、プログラムタスク（例えば、指定されたプログラムを表すタスクであり、プランを起動しているプロセスとは異なるプロセス及び／又はプランの実行可能コードの自動組込みを可能にするプロセスである）、プランタスク（例えば、子プランを表すタスクであり、プランを起動しているプロセスとは異なるプロセス（別のプランの実行のためのもの）である）、グラフタスク（例えば、データフローグラフを表すタスクであり、プランを起動しているプロセスとは異なるプロセス及び／又はプラン内のものとは異なる実行可能なデータフローグラフを起動するように構成されたプロセスでもある）並びにプランの条件付き論理を実装する条件付きタスクを含む。この例では、各タスクは、コンピュータシステム上で実行される順番付けられた一連のアクションを表す。
【００７３】
タスクの主なアクションは、その実施メソッドと呼ばれる。例えば、実施メソッドは、タスクの主な機能を実施するために実装することができる。実施メソッドに加えて、各タスクは、任意選択により、以下でさらに詳細に説明されるように、特定の時間に又は特定の条件に応答して他のアクションを実行することができる。実施メソッドは、タスクにそのアイデンティティを与える。残りのタスクは、実施メソッドをサポートする。様々なオプションのアクションは、実施メソッドの実行、その結果についての報告及びその後処理に備えるか又はセットアップする。いくつかの例では、プランは、様々なタスク及びサブプラン並びにこれらの様々なタスク及びサブプランの間の関係を表す論理を格納する基本的なデータ構造を含む。
【００７４】
この例では、プランの実行により、プランの様々なタスク及びメソッドに対する適切なオブジェクトをインスタンス化することによって、基本的なデータ構造の実行又は起動が行われる。例えば、システムは、プランの階層的表現を含むファイルにプランのコンテンツを格納する。階層的表現は、ノードを含み、各ノードは、プランの要素（例えば、タスク、メソッド又はサブプラン）に対応する。システムは、階層的表現のノードを走査することによってプランをインスタンス化する。各ノードに対し、システムは、そのノードによって表される要素に対するオブジェクトをインスタンス化する。例えば、ノードがタスクを表す際、システムは、そのノードに対するタスクオブジェクトをインスタンス化する。それに加えて、そのタスクのメソッドを起動することをプランが指定する際、システムは、そのメソッドに対するメソッドオブジェクトをインスタンス化する。
【００７５】
図１Ａの例では、プラン１は、データ記録を処理して、例えば、それらのデータ記録の処理に基づいて、どのアクション（例えば、イントラデイプロセスを起動するか又は１日の終わりのポジションを計算するか）の実行が適切かを決定するためのプランである。この例では、システムは、金融サービス設定において、例えば、特定のプロセス（すなわち、イントラデイプロセス）を起動するか又は１日の終わりのポジションを決定する特定の計算を実施するかを判断することによって、イントラデイ取引価格を決定するか又はその日の取引を終了するための手順の一部としてプラン１を実行する。プラン１は、グラフィカルプログラム要素１ａ、１ｂ、１ｃ、１ｄ、１ｅ、１ｆ、１ｇ、１ｈ及び遷移１ｉ、１ｊ、１ｋ、１ｌ、１ｍ、１ｏを含む。グラフィカルプログラム要素１ａ、１ｂ、１ｃ、１ｄ、１ｅ、１ｆ、１ｇ、１ｈは、上記で紹介されるようなそれぞれのタスクを表し、遷移１ｉ、１ｊ、１ｋ、１ｌ、１ｍ、１ｏは、上記で紹介されるようなプラン１によって指定された制御フローを表す。読者の便宜上、対応する図について説明する際、グラフィカルプログラム要素又は遷移を示す参照符号への言及が行われる際は常に、それぞれのタスク及び制御フローのそれぞれへの言及が直接行われる。従って、プラン１は、プログラムタスク１ａ及び１ｈ、グラフタスク１ｂ及び１ｄ、条件付きタスク１ｃ、プランタスク１ｅ及び１ｆ、並びに、サブプラン１ｇを含む。プログラムタスク１ａ及び１ｈ、グラフタスク１ｂ及び１ｄ、条件付きタスク１ｃ、並びに、プランタスク１ｅ及び１ｆの各々は、本明細書では、便宜上、「タスク」と呼ぶことができる。
【００７６】
この例では、タスク１ｂは、タスク１ａが完了した後にのみ実行することができる。タスク１ｆは、タスク１ｅが完了した後にのみ実行することができる。また、プラン１は、その後、条件付きタスク１ｃにおいて指定される条件が評価され（「イントラデイプロセスを起動すべきか？」）、「いいえ」であると考えられる場合は、システムによって、サブプラン１ｇを反復することによって各オフィスに対して１日の終わりのポジションが計算されることも示す。「はい」の場合は、システムは、タスク１ｄを実行して、イントラデイ起動を実施する。この例では、他のタスクが失敗した時点で、様々なタスクをトリガすることもでき、これについては、プラン１において「エラーアクション」タスク（すなわち、タスク１ｈ）によって示されており、このタスクは、タスク２（すなわち、タスク１ｆ）が何らかの理由で失敗した場合に起動される。
【００７７】
この例では、プログラムタスク１ａ及び１ｈの各々は、外部のプログラム又は外部の若しくは埋め込みスクリプトに注目する（又は参照する）。グラフタスク１ｂ及び１ｄの各々は、実行可能なデータフローグラフ（例えば、記憶装置に格納されたもの）に注目する（又は参照する）。一般に、実行可能なデータフローグラフ（また、実行可能なグラフとも呼ばれる）は、有向データフローグラフを含み、グラフの頂点は、成分（データファイル又はプロセス）を表し、グラフのリンク又は「辺」は、成分間のデータのフローを示す。そのようなグラフベースの演算を実行するためのシステムについては、参照により本明細書に組み込まれる「ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ」と称する先行する米国特許第５，９６６，０７２号明細書において説明されている。
【００７８】
データフローグラフの構築は、いくつかの事例では、本質的に高度に技術的なものであり得る。データフローグラフは、１つ又は複数の入力データセットから処理グラフ成分のグラフを通じて１つ又は複数の出力データセットに流れるデータにおいて実施されるグラフベースの演算を実装することができ、データフローグラフは、データ記憶装置内のデータ構造によって指定され、データフローグラフは、複数のノードを有し、複数のノードは、データ構造によって指定され、１つ又は複数のリンクによって接続されたグラフ成分を表すものであり、リンクは、データ構造によって指定され、グラフ成分間のデータフローを表すものである。データ記憶装置に結合され、１つ又は複数のコンピュータをホストとするランタイム環境（又は実行環境）を使用することができる。ランタイム環境は、事前実行モジュールを含み、事前実行モジュールは、データフローグラフを指定する格納されたデータ構造を読み取り、事前実行モジュールによってデータフローグラフに割り当てられたグラフ成分の演算を実施するためのプロセスなどのコンピューティング資源を割り当てる及び構成するように構成される。ランタイム環境は、実行モジュールを含み、実行モジュールは、本明細書で説明されるメソッドのいずれか１つが実行されるように割り当てられたプロセスの実行をスケジュール及び制御するためのものである。
【００７９】
特定のビジネス目的を達成するために記載しているが、グラフの基本的な構造及び構築は、技術的な考慮事項に基づいて決定される。例えば、グラフ成分は、再利用性を最大化するため又は並列処理をサポートするために選択することができる。他方では、グラフをどのように及びどこで使用するかは、ビジネス上の決定であるところが大きい。パラメータ化されたデータフローグラフと関連付けられたパラメータのいくつかは、ビジネスユーザがその実装の背後にある技術上の複雑性を理解する必要なく、そのユーザがデータフローグラフをカスタマイズできるようにするために使用することができる。パラメータ化されたデータフローグラフは、カスタマイズを簡素化し、再利用を容易にする。
【００８０】
プランタスク１ｅ及び１ｆの各々は、外部のファイルに位置するプランに注目する。条件付きタスク１ｃは、指定された式又はプログラムに基づいて、プラン１の決定論理を実装する。サブプラン１ｇは、プランの一部としてタスク（サブプラン１ｇに含まれる）をまとめ、これらのタスクを反復して起動できるようにする。また、プラン１は、遷移１ｉ−１ｏも含み、遷移１ｉ−１ｏは、例えば、タスクの間の依存性を示し、従って、タスクの間の実行順番を制御する。すなわち、遷移１ｉ−１ｏは、これらのタスクの間の接続を表し、従って、実行依存性を指定する。
【００８１】
例えば、タスクがどの制御アプリケーションを実行するかを指定し、制御アプリケーションについての情報（例えば、場所、論証など）をカプセル化することによって、タスクは、メソッドを実行するためのフレームワークを提供する。制御アプリケーション用のプログラミングコードは、記憶装置に格納することができ、タスクによって参照することができる。これらのメソッドは、タスクのアクションを実施する。すなわち、プランは、基本的なコードソースの視覚化ではない。むしろ、プラン自体は、起動又は実行することができ、且つ、実行される様々な実行可能プログラムに対する情報又は実行される様々な実行可能プログラムを表す情報をカプセル化する視覚的プログラムである。また、プランは、タスクの間で値を渡すための属性（例えば、パラメータ）も含む。例では、パラメータの変化は、サブプラン、メソッド、及び、パラメータ値が変化したタスクと同じ（又は異なる）階層レベルの他のタスクに影響を及ぼし得る。また、プランは、タスクが起動される順番を管理する関係も指定済みである。プランは、タスクの間の接続並びにメソッド及びパラメータの仕様に従って、タスクの間の順序、関係及び通信を制御する。
【００８２】
図１Ｂを参照すると、略図１ｐは、プラン１にブレークポイントを挿入できる様々な場所があることを示している。一般に、ブレークポイントは、実行環境においてプランの実行を一時停止又は停止するという命令（例えば、表示、指示又は仕様）を含む。実行中のプランがブレークポイントに遭遇すると、プランは、プランの内部属性（例えば、プランの動作パラメータ及び関連値、プランが使用している動的パラメータ及び関連値、そして、グラフ又はプランを立ち上げる前にブレークポイントが位置する場合は、そのグラフ又はプランに送信されることになる入力値など）の評価（例えば、自動評価又はユーザ評価）並びに／或いはプランの外部の属性（プランを実行している実行環境若しくはシステムの属性及び／又は外部の状態や資源（例えば、プランを実行している際に実行環境によって使用されるデータベースとリポジトリの状態）など）の評価を行えるように一時停止する。これらのブレークポイントは、属性のモニタリングを可能にし、それにより、実行中のプランがブレークポイントに遭遇した時点で主流である基本的なシステム（例えば、プラン及び／又は実行環境）の内部の状態のモニタリングを可能にする。例えば、ユーザは、タスクに対して使用されるパラメータ値を閲覧することが可能になり、また、例えば、パラメータの値を変更することによって、そのタスク（及びそのタスクの下流の又はそのタスクに依存する他のタスク）の機能を変更することも可能になる。その代替として又はそれに加えて、ユーザは、プランを実行している間且つプランがブレークポイントに遭遇する前の実行環境の性能（例えば、ＣＰＵ使用量、主メモリの使用量、利用可能な又は占有されたデータ記憶容量、消費された又は利用可能なネットワーク帯域幅など）を示す実行環境の動作パラメータの値などのプランの外部の側面を閲覧することが可能になる。
【００８３】
この例では、ブレークポイントは、所定の機能モジュール（すなわち、タスク１ｂ）への遷移を表す位置１ｑに挿入することができる。また、ブレークポイントは、タスク１ｂの起動中の位置１ｒに挿入することもできる。位置１ｒにおけるブレークポイントの設定は、タスク１ｂが、プログラムを起動する、表されているプロセス（若しくはタスク）を生み出す準備をする直前又は他の機能若しくはアクションの前に、タスク１ｂの実行を中断する。一般に、本明細書で説明されるシステムによるブレークポイントの設定又は挿入は、システムによるブレークポイントの記録を指す。すなわち、位置１ｒは、タスク１ｂ若しくはそのアクションのいくつかの実行が開始する直前の時刻又は開始する時刻を表す。また、ブレークポイントは、タスク１ｂからの遷移を表す位置１ｓに挿入することもできる（例えば、位置１ｓは、タスク１ｂの実行が完了した後の時刻を表す）。
【００８４】
図１Ｃを参照すると、略図３は、ブレークポイントインジケータ２ａを含み、ブレークポイントインジケータ２ａは、ブレークポイントがプラン１においてタスク１ｂに対して記録されたことを示している。ブレークポイントインジケータ２ａは、１つ又は複数のブレークポイントがタスク１ｂにおいて記録された（すなわち、ブレークポイントはタスク１ｂと関連付けられる）ことを指定するが、タスク１ｂの開始前、起動中又は完了後のようなブレークポイントの位置は指定しない。この例では、１つ又は複数のブレークポイントが設定された位置の詳細は、「オンデマンド」で（例えば、ブレークポイントインジケータ２ａを選択するか又はブレークポイントインジケータ２ａにマウスオーバーすることによって）利用可能である。一般に、ブレークポイントインジケータは、１つ又は複数のブレークポイントの存在の表示又は視覚的表現である。この例では、システムがブレークポイントインジケータ２ａによって表されるブレークポイントを実行すると、プラン１の実行が一時停止され、インスペクタユーザインタフェース（例えば、「ブレークポイントインスペクタ」と呼ばれる）が提示される。ブレークポイントインスペクタは、プラン実行が一時停止される際は常に提示される（例えば、以下で説明される失敗時休止（ｂｒｅａｋ−ｏｎ−ｆａｉｌｕｒｅ）モードがオンの状態で失敗が起こることによって、又は、プラン実行の過程においてユーザが設定したブレークポイントに遭遇することによって）。
【００８５】
図１Ｄを参照すると、略図４は、タスク１ｂの周りの点線によって示されるように、プラン１がブレークポイントインジケータ２ａによって表されるブレークポイントに遭遇したことを示している。すなわち、タスク１ｂは、ブレークポイントインジケータ２ａによって表されるブレークポイントに達したために停止されるが、プラン１の残りは、起動を継続する。この例では、矢印１ｉ、１ｊ、１ｌは、プラン１がタスク１ａ、１ｅ、１ｆを実行したことを表すために、極太線（例えば、図１Ｄに示される他の矢印の厚さと比べて）で示されている。この例では、タスク１ａ、１ｅ、１ｆが実行され（例えば、並列で、又は、直列に順番に実行されるタスク１ｅ及び１ｆと並列にタスク１ａが実行される）、プラン１は、プラン実行がタスク１ｂで一時停止することを考慮して、できる限り先に進行する。ブレークポイントインジケータ２ａによって表されるブレークポイントがプラン１に対して記録されているため、以下で図１Ｅを参照して説明されるように、タスク１ｂを実行する前にユーザがタスク１ｂの属性を検査するために、グラフィカルユーザインタフェース（例えば、ブレークポイントインスペクタ）が表示される。グラフィカルユーザインタフェースの表示は、プラン１がブレークポイントインジケータ２ａに遭遇することに応答して、トリガするか又は着手することができる。グラフィカルユーザインタフェースは、プラン１の残り（例えば、タスク１ｅ及び１ｆ）の起動を継続する間、表示することができる。この例では、タスク１ｃは、タスク１ｂが完了及び成功するまで起動されず、タスク１ｂは、ブレークポイントインジケータ２ａによって表されるブレークポイントにおいて実行が停止している間は完了しない。
【００８６】
図１Ｅを参照すると、例えば、ブレークポイントインジケータ２ａ（図１Ｄ）によって表されるブレークポイントの指定位置を表す実行の時点（図１Ｄのプラン１の又はプラン１を表す基本的なデータ構造の）に達した際のグラフィカルユーザインタフェース５ｃが表示されている。この例では、グラフィカルユーザインタフェース５ｃは、タイトル欄のタスク名（すなわち、「主要な日常のプロセスを起動する」）の後に実行の一時停止の理由（すなわち、「ブレークポイント」）を表示している。また、グラフィカルユーザインタフェース５ｃは、プラン１のタスク１ｂ（図１Ｄ）に対するデータソースを指定するデータソース部分４ａも含む。この例では、データソースは、例えば、「／ｉｎｐｕｔｓｒｃ＃ｄａｔ」として解決されているため、正しく解決されていない。入力部分４ａを通じて、正しいデータソース経路を指定することができる。データソースは、本明細書では、タスクの実行の間にグラフィカルプログラム要素１ｂによって表されるタスクによって使用されるパラメータの例として使用され、データソース経路は、グラフィカルユーザインタフェースの入力部分４ａを通じてユーザが修正又は補正することができるそのようなパラメータの値の例である。図１Ｆを参照すると、グラフィカルユーザインタフェース５ｄは、正しいデータソースが部分５ａ（又は図１Ｅの部分４ａ）に入力された後のグラフィカルユーザインタフェース５ｃのバージョンである。この例では、新しい情報（例えば、修正されたパラメータ値）が部分５ａに入力された時点で、グラフィカルユーザインタフェース５ｄは、継続制御５ｂを表示し、その選択により、タスク１ｂ（図１Ｄ）の実行が継続され、任意選択により、グラフィカルユーザインタフェース５ｃ及び５ｄの各々の表示が停止する。これは、プランの起動を継続しながらタスクに対する変更がどのように行われるかを示す例である。この例では、継続制御５ｂが選択される。変形形態では、タスクが失敗すると、タスクによって使用される様々な値（例えば、タスクによってその実行の間に使用されるパラメータの値）及び／又は入力の修正を可能にするためのグラフィカルユーザインタフェースが表示される。修正された時点で、グラフィカルユーザインタフェースは、例えば、プランの残りの起動を依然として継続しながら、その失敗したタスクを再スタートするための制御を表示する。
【００８７】
さらなる別の変形形態では、タスクが失敗した後、ユーザは、タスク１ｂの開始時にブレークポイント（例えば、ブレークポイントインジケータ２ａによって表されるブレークポイント）を設定することができる。その後、ユーザは、タスク１ｂを再スタートするために、コマンドラインにおいてコマンド（例えば、「ｐｌａｎ−ａｄｍｉｎ  ｒｅｓｔａｒｔ  ＜ｔａｓｋ＞」コマンド）を実行する。次いで、上記で説明されるように、タスク１ｂが開始時に一時停止すると、データソースパラメータの値を変更することができ、その結果、タスク１ｂが再スタートすると、その補正値が使用される。この例では、新しい値は、プラン１のその起動に対してのみ有効である。パラメータの値を永久的に変更するには、プラン自体が編集される。
【００８８】
図１Ｇを参照すると、略図６は、タスク１ｂの再実行（例えば、図１Ｆの継続制御５ｂの選択に続いて、又は、コマンド（例えば、上記で説明されるような「ｐｌａｎ−ａｄｍｉｎ  ｒｅｓｔａｒｔ  ＜ｔａｓｋ＞」コマンドの実行に続いて）を示している。この例では、タスク１ｂは、データソースパラメータの正しい値を使用する（ブレークポイントインジケータ２ａによって表されるブレークポイントによってタスク１ｂが開始時に一時停止し、データソースパラメータの値を補正値に変更することに基づいて）。従って、プラン１は、矢印１ｍ、１ｌの厚さで示されるように、タスク１ｂを通じて条件付きタスク１ｃに進行する。
【００８９】
図２を参照すると、制御フロー図１０（プラン１０とも呼ばれる）は、グラフィカルプログラム要素１２、１４、１６と、遷移１８、２０とを含む。グラフィカルプログラム要素は、それぞれのタスク１２、１４、１６を表す。遷移１８、２０は、プラン１０によって指定された制御フローを表す。読者の便宜上、対応する図について説明する際、グラフィカルプログラム要素又は遷移を示す参照符号への言及が行われる際は常に、それぞれのタスク及び制御フローのそれぞれへの言及が直接行われる。すなわち、グラフィカルプログラム要素１２、１４、１６はそれぞれ、タスク１２、１４、１６と呼ばれ、遷移１８、２０はそれぞれ、接続１８、２０と呼ばれる。この例では、プラン１０は、接続１８、２０を含み、接続１８、２０は、タスク１２が最初に実行され、それに続いて、タスク１４が実行され、次いで、タスク１６が実行されることを指定する。この例では、プラン１０の挙動は、プラン１０の実行を停止又は一時停止させる１つ又は複数のブレークポイントを含むように修正することができ、それにより、プラン、タスク、サブプラン及び／又はパラメータの見直し及び／又は修正が可能になる。
【００９０】
このプランデバッグ機能は、例えば、様々な階層レベルでのブレークポイントの設定を可能にすることによって、ブレークポイントの設定位置に関する柔軟性を提供する。例えば、システムは、プラン全体のレベルで、サブプランのレベルで、タスクのレベルで又はタスクのメソッドのレベルでさえ、ブレークポイントを設定することができる。それに加えて、ブレークポイントは、以下の３つの位置、すなわち、プラン、サブプラン、タスク又はメソッドの開始前、プラン、サブプラン、タスク又はメソッドの起動中、及び、プラン、サブプラン、タスク又はメソッドの完了後に設定することができ、その各々については、以下でさらに詳細に説明する。
【００９１】
この例では、ブレークポイントは、タスク１４の開始前の位置２２で記録することができる。位置２２におけるブレークポイントは、タスク１４が開始する前に、タスク１４の実行を停止する。プログラム、プラン及びグラフタスクの場合、この実行の停止は、資源（例えば、指定数の利用可能トークンなどの制約要素）が取得される前に起こる。また、グラフタスクの場合、この実行の停止は、実行のためにグラフがコンパイルされる前に起こる。ブレークポイントは、タスク１４の起動中の位置２４で記録することができる。この例では、タスク１４は、コンピュータプログラム２８を起動するように構成される。従って、位置２４におけるブレークポイントは、タスク１４がその実施メソッドを実行する前にタスク１４の実行を中断する。位置２４におけるブレークポイントは、プラン１０の環境変数の修正並びにプログラム２８において使用される入力値（例えば、入力パラメータに対する式）の閲覧及び編集を提供する。ブレークポイントは、タスク１４が終了した後にタスク１４の実行を停止するために、タスク１４の完了後の位置２６で記録することができる。
【００９２】
この例では、ブレークポイントが起こり得る場所は、ブレークポイントが要求されたかどうかをチェックするのに非常に効率的な場所である。従って、ブレークポイントのチェックに起因するコンピューティング資源の消費（ＣＰＵ消費など）において測定できるほどの増加はない（又は最低限しかない）。この理由は、ブレークポイントをチェックするためにプランにおいて使用されるプログラミングコードは最低限であり、従って、演算コストが高くなることはないためである。例では、プログラムは、ブレークポイントが挿入され得る場所（例えば、プラン、サブプラン、タスク又はメソッドの開始前、起動中又は完了後を表す各場所）にプログラムが進行する度に、ブレークポイントの発生に対してハッシュ表をチェックするように構成される。例では、第１のプラン（「プランＡ」）は、第１のタスク（「タスクＡ」）の前にブレークポイントを含む。この例では、ハッシュ表は、タスクＡの前にブレークポイントがあることを示すために、次のエントリ、すなわち、「／ｐｌａｎＡ／ｔａｓｋＡ／ｂｅｆｏｒｅ」を含み、そのエントリは、プランＡに含まれる。従って、システムがタスクＡの実行前の場所に対応するプログラムの部分を実行する際、システムは、タスクＡの実行前のその場所を表すエントリが存在するかどうかを識別するために、ルックアップ（例えば、ストリングルックアップ）を実施する。この例では、そのエントリには、「／ｐｌａｎＡ／ｔａｓｋＡ／ｂｅｆｏｒｅ」というストリングが投入される。従って、システムは、タスクＡの前にブレークポイントを実行する。別の例では、ハッシュ表は空である。この例では、システムは、ブレークポイントを指定するエントリのチェックは行わない。
【００９３】
図３を参照すると、略図４０は、タスクを表すグラフィカルプログラム要素４２を表示している。読者の便宜上、この図について説明する際、グラフィカルプログラム要素を示す参照符号への言及が行われる際は常に、それぞれのタスクへの言及が直接行われる。従って、グラフィカルプログラム要素４２は、タスク４２とも呼ばれる。この例では、以前に説明されるように、ブレークポイントは、タスク４２の開始前の位置４４で記録することができ、別のブレークポイントは、タスク４２の起動中の位置４６で記録することができ、さらなる別のブレークポイントは、タスク４２の完了後の位置４８で記録することができる。この例では、タスク４２は、スクリプトを含むか又は参照し、コンピュータシステム上で（例えば、本明細書で説明されるシステムのオペレーティングシステムにおいて）実行することができるいくつかのメソッド（以前に説明されるように、各メソッドは１つ又は複数のアクションを含む）をさらに含む。これらのメソッドは、本明細書で説明されるシステムによって提供される既存のメソッドである。この例では、タスク４２は、「トリガ」メソッド４９、「開始時」メソッド５０、「実施」メソッド５２、「成功時」メソッド５４、「失敗時」メソッド５６及び「ロールバック時」メソッド５９を有するように構成され、各メソッドは、タスク４２の１つ若しくは複数のアクションを実行するか、又は、タスク４２の１つ若しくは複数の状態を表す。この例では、トリガメソッド４９は、タスク４２の開始時点を表すために実装することができる。トリガメソッド４９は、実行を開始するための条件を含み得る。例えば、特定のファイルが存在するかどうか、フラグが真に設定されたかどうかなどを含む様々な条件が存在し得る。開始時メソッド５０は、タスク４２のアクションを実施するために実行をセットアップする。例えば、開始時メソッド５０は、実施メソッドに向けてシステムを準備するメソッド（環境変数を所望の値に設定するか又はランタイム情報を記録するためにログファイルをセットアップするなど）として実装することができる。実施メソッド５２は、例えば、タスク４２によって表される実行可能プログラムを起動することによって、タスクの指定されたアクションを実施する。例えば、実施メソッド５２は、タスク４２の主要な機能を実施するために実装することができる。実施メソッド５２がその実行の間に成功した場合は、タスク４２を閉じるために成功時メソッド５４が実行される。実施メソッド５２がその実行の間に失敗した場合は、タスク４２を閉じるために失敗時メソッド５６が実行される。この例では、失敗時メソッド５６の後にロールバック時メソッド５９が実行される。この例では、実施メソッドの前後のメソッドは、「フレームワークメソッド」と呼ばれる。実施メソッドの前のフレームワークメソッドは、制御アプリケーションを起動するための環境（及び／又は状況）をセットアップするが、制御アプリケーションの一部ではない。また、実施メソッドの後のフレームワークメソッド（すなわち、失敗時、成功時及びロールバック時メソッド）は、プランの一部であり、制御アプリケーションの起動の結果に基づいて実行する。フレームワークメソッドは、制御アプリケーションのアクションを実施しない。これらのフレームワークメソッドは、プランの制御処理層の一部である。
【００９４】
この例では、ブレークポイントは、ブレークポイント４９ａ、４９ｂ、４９ｃによって指定されるように、トリガメソッド４９の開始前、起動中及び完了後に設定することができる。この例では、ブレークポイントは、位置５０ａ、５０ｂ、５０ｃによってそれぞれ指定されるように、開始時メソッド５０の開始前、起動中及び完了後に設定することができる。この例では、位置５０ａにおけるブレークポイントは、開始時メソッド５０が開始する前にタスク４２の実行が一時停止又は中断されることを指定する。位置５０ｂにおけるブレークポイントは、開始時メソッド５０の開始時にタスク４２の実行が一時停止又は中断されることを指定する。位置５０ｃにおけるブレークポイントは、開始時メソッド５０の完了時にタスク４２の実行が一時停止又は中断されることを指定する。ブレークポイントは、位置５２ａ、５２ｂ、５２ｃによって指定されるように、実施メソッド５２の開始前、起動中及び完了後に記録することができる。この例では、タスク４２の位置４６におけるブレークポイントの記録は、実施メソッド５２の実行前の位置５２ａにおけるブレークポイントの記録と同じである。
【００９５】
それに加えて、ブレークポイントは、成功時メソッド５４のアクションを実施する前、成功時メソッド５４のアクションを実施している間及び成功時メソッド５４のアクションを実施した後のそれぞれにおいて成功時メソッド５４を中断するために、成功時メソッド５４に対する位置５４ａ、５４ｂ、５４ｃで記録することができる。例では、ブレークポイントは、失敗時メソッド５６の開始前、起動中又は完了後の（それぞれの）位置５６ａ、５６ｂ、５６ｃで記録することができる。例えば、ブレークポイントは、失敗時メソッド５６を起動する前にタスク４２の属性のセットアップを決定するために、失敗時メソッド５６に対する位置５６ａで記録することができる。この例では、ロールバック時メソッド５９は、例えば、これまで行われたものを失敗時点から始めて逆の実行順番でロールバックすることによって、失敗したタスクをロールバックする。例えば、本明細書で説明されるシステムは、グラフ又はプラン用の回復ファイルを格納することができる。システムは、必要に応じて、その回復ファイルを使用して（ロールバック時メソッドと共に）後処理する。例では、ブレークポイントは、ロールバック時メソッド５９の開始前、起動中又は完了後（のそれぞれ）を表す位置５９ａ、５９ｂ、５９ｃで記録することができる。位置５９ａにおけるブレークポイントは、ロールバック時メソッド５９が開始する前にタスク４２の実行が一時停止又は中断されることを指定する。位置５９ｂにおけるブレークポイントは、ロールバック時メソッド５９の開始時にタスク４２の実行が一時停止又は中断されることを指定する。位置５９ｃにおけるブレークポイントは、ロールバック時メソッド５９の完了時にタスク４２の実行が一時停止又は中断されることを指定する。変形形態では、成功時、失敗時及びロールバック時メソッドは、オプションである。従って、それらのメソッドがタスクに含まれない場合は、それらのメソッドに対してブレークポイントを設定することができなくなる。
【００９６】
ブレークポイントを設定することに加えて又はブレークポイントを設定するというよりむしろ、プランは、失敗時休止モードで起動することもでき、それにより、プランが失敗に遭遇した際に、プランの実行が中断される。例えば、起動したグラフ、子プラン又はプログラムが失敗したためにグラフ、プラン又はプログラムタスクに対する実施メソッドが失敗した場合は、実施メソッドが終了した後にプランの実行は一時停止する。プランが失敗時休止モードで起動している最中に失敗に遭遇した際は、ユーザが失敗の原因及び失敗が起こった機能モジュールの属性を閲覧できるように、ブレークポイントインスペクタが表示される。
【００９７】
いくつかの例では、ユーザは、失敗時休止を設定し、タスクの失敗（実施メソッドの後のブレークポイントにおけるもの）を待ち、問題を診断し、問題を解決し、次いで、プランを再起動して失敗を回避することができる。この例では、システムは、タスクを再スタートする（例えば、タスクの存続期間の任意の時点において）というコマンドを実行することができる。すなわち、その「開始前」のブレークポイントにおいてタスクが停止されたとしても依然としてコマンドをうまく発行することができる。次いで、最終的にタスクが失敗して終了すると、タスクは、以下の通り自動的に再スタートする。
【００９８】
システムは、失敗時休止モードでプランを実行する（又は実施メソッドの後にブレークポイントを設定する）。ブレークポイントが設定済みの事例では、システムは、プラン実行の間、ブレークポイントとの遭遇を待つ。プランの実行が一時停止した後、ユーザ又はシステムは、失敗の理由を診断するために状態を検討する。診断に続いて、ユーザは、タスク又は実施メソッドの「開始前」のブレークポイントを設定する（又はシステムが記録する）。ユーザ又はシステムは、タスクを再スタートするというコマンドを発行し、システムは、「開始前」のブレークポイントとの遭遇を待つ（タスクが自動的に再スタートされた際）。ユーザ又はシステムは、失敗の原因を補正し（例えば、パラメータ値をオーバーライドすること、ファイルを変更することなどによって）、タスクが成功するように「開始前」のブレークポイントから継続する。
【００９９】
特定のプラン要素（例えば、プラン、サブプラン、タスク又はメソッド）に関して実行を一時停止する特定の位置（例えば、開始前、起動中又は完了後）を指定するブレークポイントとは異なり、失敗時休止モードは、このタイプの特定のプラン要素及び位置を指定しない。むしろ、失敗時休止モードは、プランを実行する（及び失敗した時点で実行を一時停止する）ためのモードであり、特定のプラン要素を指定しない。代わりに、実行は、タスクの失敗時に自動的に一時停止する。いくつかの例では、失敗時休止モードは常に、失敗したタスクの実施メソッドの後の位置で実行を一時停止させる。
【０１００】
図４を参照すると、グラフィカルユーザインタフェース１００は、プラン（便宜上、限定はしないが、本明細書では集合的に「プラン１０２」と呼ばれる）のグラフィック層１０２を表示しており、それぞれのタスクを表すグラフィカルプログラム要素１０４、１０６、１０８、１１０を含み、また、サブプランを表すグラフィカルプログラム要素１１２も含む。読者の便宜上、以下の図５〜７について説明する際、グラフィカルプログラム要素を示す参照符号への言及が行われる際は常に、それぞれのタスク及びサブプランへの言及が直接行われる。従って、グラフィカルプログラム要素１０４、１０６、１０８、１１０はそれぞれ、本明細書では、タスク１０４、１０６、１０８、１１０と呼ばれ、グラフィカルプログラム要素１１２は、本明細書では、サブプラン１１２と呼ばれる。
【０１０１】
この例では、タスク１０６は、グラフの移動及び再フォーマットタスクである（以下では、「グラフの移動及び再フォーマットタスク１０６」とも呼ばれる）。グラフの移動及び再フォーマットタスク１０６は、実行可能なデータフローグラフ（例えば、グラフの移動及び再フォーマット）を含むか又は参照する機能モジュールである。実行されるデータフローグラフは、データ処理層の一部であるのに対して、グラフの移動及び再フォーマットタスク１０６は、グラフィック層の一部であり、データフローグラフをどのように実行するかについての情報をカプセル化する。この例では、タスク１０８は、子プランであり、以下では、「簡単な依存性プラン１０８」とも呼ばれる。一般に、子プランは、子プランを実行するプランを起動しているプロセスとは異なる新しいプロセス（すなわち、「子プロセス」）として実行されるプランである。データフローグラフ（例えば、グラフの移動及び再フォーマット）は、プランを起動しているプロセスとは異なるプロセスにおいて実行される。
【０１０２】
それに加えて、この例では、タスク１０４は、条件付きタスクであり、例えば、条件が満たされた時点で、１つ又は複数の第１のアクションを実施し（例えば、１つ若しくは複数のメソッドを実行することによって）、条件が満たされなかった時点で１つ又は複数の第２のアクションを実施する（例えば、１つ若しくは複数の他のメソッドを実行することによって）ように構成されたタスクを含む。例では、すべてのタスクを条件付きタスクとして構成することができる。それに加えて、条件付きタスクは、成功又は失敗以外の条件（例えば、特定の値など）を指定することができる。この例では、タスク１０４は、ファイルが存在するかどうかをチェックする。また、タスク１０４は、以下では、「ファイルが存在するかどうかをチェックするタスク１０４」とも呼ばれる。ファイルが存在するかどうかをチェックするタスク１０４は、条件付き論理の実装形態であり、特定のファイルを閉じたかどうかに応じて、その制御をグラフの移動及び再フォーマット１０６又は簡単な依存性プラン１０８に誘導する。サブプラン１１２は、それ自体が制御フロー図であり、プラン１０２を起動しているプロセスと同じプロセスにおいて実行する。
【０１０３】
図５を参照すると、グラフィカルユーザインタフェース１２０は、ブレークポイントを設定するための制御１２２、１２４、１２６、１２８、１３０を含む。この例では、制御１２２は、ユーザがブレークポイントを設定できるようにし（一般に、プランに対して）、制御１２４は、プランが開始する前にユーザがブレークポイントを設定できるようにする。制御１２６は、プランにおいてプランコンテンツが起動する前にユーザがブレークポイントを設定できるようにする。制御１２８は、プランを閉じる前にユーザがブレークポイントを設定できるようにする。制御１３０は、ユーザが様々なメソッド及び条件に対してブレークポイントを設定できるようにする。
【０１０４】
図６を参照すると、グラフィカルユーザインタフェース１４０は、タスクにおいてブレークポイントを設定するための制御を提供している。この例では、ユーザは、ファイルが存在するかどうかをチェックするタスク１０４（図４）を選択し、デバッグメニュー１４４から「ブレークポイントを設定する」オプション１４２を選択している。この選択に続いて、グラフィカルユーザインタフェース１４０は、タスク１０４が開始する前又はタスク１０４が終了した後にそれぞれブレークポイントを設定できるように、制御１４６、１４８を表示する。この例では、ユーザは、タスク１０４が開始する前にブレークポイントを設定するように制御１４６を選択している。
【０１０５】
図７Ａを参照すると、グラフィカルユーザインタフェース１６０は、タスク１０４においてブレークポイントが記録された（ブレークポイントインジケータ１６４ａによって示されるように）プラン１０２を表示している。この例では、ブレークポイントインジケータ１６４ａは、１つ又は複数のブレークポイントがタスク１０４において設定されたことを指定するが、タスク１０４の開始前、起動中又は完了後のようなブレークポイントの位置は指定しない。それに加えて、サブプラン１１２においてブレークポイントが記録されており（ブレークポイントインジケータ１６４ｂによって示されるように）、この記録は、例えば、サブプラン１１２を選択し、次いで、「ブレークポイントを設定する」オプション１４２（図６）を選択することによって行われ、それにより、ユーザは、サブプラン１１２が開始する前にブレークポイントを設定するか又はサブプラン１１２が終了した後にブレークポイントを設定するかを指定することができる。この例では、ブレークポイントは、サブプラン１１２において、サブプラン１１２が開始する前に設定されている。同時に複数のブレークポイントに遭遇することができ、それにより、例えば、プランの異なる場所で同時にプランの実行を一時停止させることができる。この例では、ブレークポイントインジケータ１６４ａ、１６４ｂによって表されるブレークポイントに同時に遭遇することができる。例では、ブレークポイントが設定された時点で、デバッグメニューは、「すべてのブレークポイントを示す」という制御を提供することができ、その選択により、プランにおいて設定済みのブレークポイントのリストを有するブレークポイントエディタダイアログが表示される。このブレークポイントエディタダイアログを通じて、ユーザは、定義済みのブレークポイントのセットの追加、除去、編集及び作業を行うことができる。ブレークポイントインジケータ１６４ａ、１６４ｂによって表されるブレークポイントのうちの１つ又は複数に達した時点で、様々なブレークポイントの実行によって現在一時停止されているプラン１０２の場所をリストするオーバーレイ又はインタフェース（「達したブレークポイント」ペインと呼ばれる）を提示するために、グラフィカルユーザインタフェース１６０が更新される。
【０１０６】
図７Ｂを参照すると、例えば、ブレークポイントインジケータ１６４ａ、１６４ｂによって表されるブレークポイントのうちの１つ又は複数に遭遇した時点での、達したブレークポイントというユーザインタフェース１７０が表示されている（例えば、図７Ａのグラフィカルユーザインタフェース１６０に近接して又は並置して）。この例では、ブレークポイントインジケータ１６４ａ、１６４ｂによって表されるブレークポイントの両方に、例えば、同時に、遭遇している。達したブレークポイントというユーザインタフェースは現在一時停止されているプランの場所をリストするという理由により、達したブレークポイントというユーザインタフェース１７０は、ブレークポイントインジケータ１６４ａによって指定されるような「タスクが開始する前」のブレークポイント（部分１７１ａのエリア１７２ａにおいて表される）によって特定の機能モジュールにおいて（すなわち、タスク１０４において）プラン１０２が現在一時停止されていることを指定する部分１７１ａを含む。また、達したブレークポイントというユーザインタフェース１７０は、ブレークポイントインジケータ１６４ｂによって指定されるような「サブプランが開始する前」のブレークポイント（部分１７１ｂのエリア１７２ｂにおいて表される）によって別の機能モジュールにおいて（すなわち、サブプラン１１２において）プラン１０２が現在一時停止されていることを指定する部分１７１ｂも含む。この例では、部分１７１ａ、１７１ｂ（又は遭遇したブレークポイントのタイプを指定する部分１７１ａ、１７１ｂのそれぞれのエリア１７２ａ、１７２ｂ）のうちの１つが選択された時点で、ブレークポイントインスペクタユーザインタフェースが表示され、選択部分において表される機能モジュールに対するパラメータ、環境変数などが提示される。
【０１０７】
図８を参照すると、ブレークポイントに達した時点でのグラフィカルユーザインタフェース１８０が表示されており、ブレークポイントインスペクタユーザインタフェースの例である。この例では、グラフィカルユーザインタフェース１８０は、ブレークポイントインジケータ１６４ａ（図７Ａ）によって表されるブレークポイントに達し、その後に、図７Ｂの達したブレークポイントというユーザインタフェース１７０の部分１７１ａを選択した時点で表示される。この例では、グラフィカルユーザインタフェース１８０は、タスク（この事例では、図７Ａのタスク１０４である）のパラメータ及び関連パラメータ値を表示するためのパラメータタブ１７２を表示している。この例では、制御１８２、１８４は、様々なパラメータ値の編集を提供する。この例では、制御１８４の選択は、式に対する値を指定するパラメータ値の編集を提供する（すなわち、式が「０」の値を有するか又は「１」の値を有するかを指定する）。
【０１０８】
グラフィカルユーザインタフェース１８０は、タスク１０４に対する入力値を表示する入力値タブ１７４と、プラン１０２（図４及び図７Ａ）に対する実行環境変数又はパラメータ及び関連値を表示する環境タブ１７６と、プランの実行の状態及び現在一時停止されている場所に対して評価される式を記載するための制御及び／又は入力ボックスを提供する評価タブ１７８とを含む。
【０１０９】
タブ１７２、１７４、１７６、１７８の各々は、適切な値（例えば、変数、パラメータ、入力値、及び、環境変数又はパラメータの値）を編集するための制御を提供する。ユーザがタブ１７２、１７４、１７６、１７８のうちの１つ又は複数における値の編集を終えた時点で、ユーザは、例えば、達した可能性のあるすべてのブレークポイント場所から、プランの起動の継続を指定することができる（例えば、制御の選択を介して）。変形形態では、ユーザは、特定のブレークポイント場所を選択し、単にそのブレークポイント場所から継続することができる。
【０１１０】
図９Ａを参照すると、制御１８４（図８）の選択後のグラフィカルユーザインタフェース１９０が表示されている。グラフィカルユーザインタフェース１９０は、パラメータ又は変数の値を修正するための（例えば、式を指定するパラメータの値を修正するための）入力部分１９２を含む。この例では、入力部分１９２は、式が真（「１」の値）に評価するか又は偽（「０」の値）に評価するかを指定するパラメータ値のエントリ及び修正を可能にする。この例では、ブレークポイントインジケータ１６４ａによって表されるブレークポイントを使用して、例えば、タスク１０４によって表されるプロセス（若しくはタスク）からタスク１０６によって表されるプロセス（若しくはタスク）への走査を強制することによって（例えば、パラメータ式が「１」の値に設定される際）又はタスク１０４からタスク１０８への走査を強制することによって（例えば、パラメータ式が「０」の値に設定される際）、制御フローを修正することができる。
【０１１１】
図９Ｂを参照すると、例えば、図８及び９Ａにおける編集の完了後のグラフィカルユーザインタフェース１９１が表示されている。この例では、グラフィカルユーザインタフェース１９１は、継続制御１９１ａを表示しており、その選択により、遭遇したブレークポイント場所（すなわち、ブレークポイントインジケータ１６４ａ、１６４ｂによって表される）からプラン１０２の実行を継続する。
【０１１２】
図９Ｃを参照すると、グラフィカルユーザインタフェース１９２もまた、ユーザが特定のブレークポイント場所からプランの実行を継続するために選択することができる制御（又はユーザインタフェースの選択可能な部分）を表示している。この例では、グラフィカルユーザインタフェース１９２は、オーバーレイ１９３付きの達したブレークポイントというユーザインタフェース１７０（図７Ｂで以前に示されている）を含む。達したブレークポイントというユーザインタフェース１７０の部分１７１ａのエリア１７２ａの選択により、オーバーレイ１９３が提示される。オーバーレイ１９３は、制御１９３ａを含み、その選択により、エリア１７２ａにおいて表されるブレークポイント（すなわち、図７Ａのブレークポイントインジケータ１６４ａによって表されるブレークポイント）からプラン１０２を継続するという指示がシステムに出される。
【０１１３】
図１０を参照すると、実行環境２００は、１つ又は複数のコンピュータをホストとしている。実行環境２００内の各要素（例えば、プラン２０２、並びに、プラン２０２に含まれるサブプラン２０４及びグラフィカルプログラム要素２０６（タスクを表すもの））は、パラメータが実行スコープに入るとそれらのパラメータを評価する。読者の便宜上、以下の図１０〜１２について説明する際、グラフィカルプログラム要素を示す参照符号への言及が行われる際は常に、それぞれのタスクへの言及が直接行われる。従って、グラフィカルプログラム要素２０６は、以下では、タスク２０６と呼ばれる。本明細書で説明されるように、ブレークポイントは、プランの様々なレベルでこれらのパラメータ値の閲覧及び編集を提供するために設定することができる。一般に、プラン環境は、プランの実行及び定義のためのコンピュータ化環境を含む。一般に、パラメータが実行スコープに入る順番は、以下の通りである。実行環境２００は、実行環境パラメータ２０８（例えば、恐らくはプランのサンドボックス又はプロジェクトを通じて、プランの環境において定義されるパラメータを含む）を含む。実行環境パラメータ２０８は、プラン２０２が起動を開始する前に、プラン２０２で利用可能である。プラン２０２は、プランレベルパラメータ２１０（例えば、プランレベルで宣言され、プラン２０２が起動を開始する際に評価されるパラメータを含む）を含むか又はプランレベルパラメータ２１０にアクセスする。また、プラン２０２は、その実行環境（すなわち、実行環境２００）からのパラメータ（すなわち、実行環境パラメータ２０８）を参照することもでき、これらの値もまた、プラン２０２が起動を開始する際に解決される。
【０１１４】
この例では、プラン２０２は、サブプランレベルパラメータ２１２を有するサブプラン２０４を含み、サブプランレベルパラメータ２１２は、サブプラン２０４が起動を開始する際に、システムによって解決される。この例では、サブプラン２０４は、ループシンボル２１４によって示されるように、ループ状のサブプランである。一般に、ループ状のサブプランは、指定回数分又は条件が満たされるまでループを経るように構成されたサブプランを含む。この例では、ループ状のサブプランは、ループを経て繰り返すことができる機能モジュールである。従って、各ループに対し、そのループの開始前、起動中又は完了後にブレークポイントを設定することができる。また、システム（又はシステム上で起動しているエンジン）は、サブプラン２０４が新しいループを開始する度に、サブプランレベルパラメータ２１２の再評価も行う。サブプラン２０４がループを経る際、そのパラメータの値は、動的なものになり、ループからループへと渡され得る。サブプラン２０４に対するブレークポイントを使用することにより、次のループでの使用のためのそれらのパラメータの値の閲覧及び修正が可能になる。しかし、サブプラン２０４が並列ループを成すように構成される場合は、パラメータ値は、各反復に対してプライベートな状態を保つ。
【０１１５】
この例では、サブプラン２０４は、タスク２１６（タスクレベル資源２１８を有する）を含み、プラン２０２は、タスク２０６（タスクレベル資源２２０を有する）を含む。プランの制御のフローが特定のタスクの入力ポートに達すると、そのタスクは、実行スコープに入る。システムがタスクのメソッドを起動することができる前、システムは、そのタスクの資源を位置付けて取得する。この例では、資源へのアクセスが必要とされる隠れパラメータは別として、システムは、タスクレベルではパラメータを解決しない。従って、タスクに対して閲覧可能及び編集可能な（例えば、図８のタブ１７２を通じて）パラメータは、タスクに対する実施メソッドが開始する際に評価される。
【０１１６】
この例では、タスク２０６は、トリガメソッド２２２、開始時メソッド２２４、実施メソッド２２６及び成功時メソッド２２８を含む。この例では、トリガメソッド２２２及び開始時メソッド２２４は、制御アプリケーションを起動するための環境（及び／又は状況）をセットアップする。実施メソッド２２６は、制御アプリケーションを起動させる。成功時メソッド２２８は、制御アプリケーションの実行の結果が制御アプリケーションの起動の成功を示すと起動する。
【０１１７】
トリガメソッド２２２は、タスク２０６の開始時点を表すために実装することができる。トリガメソッド２２２は、実行を開始するための様々な条件を含み得る。これらの様々な条件は、例えば、特定のファイルが存在するかどうか、フラグが真に設定されたかどうかなどを含む。この例では、タスク２０６は、メソッドレベルパラメータ２３０、２３２、２３４、２３６を含む。資源が取得された後、タスクのメソッドは、実行スコープに入り始める。この例では、システムは、既定の順番でメソッドを実行する。従って、本明細書で説明されるシステムは、同じ順番でメソッドレベルパラメータを解決する。
【０１１８】
実行スコープに入る最初のタスクのメソッドは、トリガメソッド２２２である。これが起こると、システムは、トリガメソッド２２２上で宣言されるか又はトリガメソッド２２２によって参照されるメソッドレベルパラメータ２３０を解決する。この例では、トリガメソッド２２２においてシステムによって設定されるパラメータ値は、それに続くメソッドに渡すことができる（例えば、動的パラメータとしてそれらのパラメータを宣言することによって）。トリガメソッド２２２が成功したと想定すると、実行スコープに入る次のメソッドは、開始時メソッド２２４であり、開始時メソッド２２４は、メソッドレベルパラメータ２３２（例えば、トリガメソッド２２２において設定された動的パラメータ値）を含む。
【０１１９】
この例では、実施メソッド２２６のメソッドレベルパラメータ２３４は、ユーザインタフェースにおいて（例えば、タスク特性ダイアログパラメータタブにおいて）設定される。システムは、実施メソッド２２６が実行スコープに入ると（トリガメソッド２２２及び開始時メソッド２２４のそれぞれが起動した後）、これらのパラメータを評価する。先行メソッドと同様に、ブレークポイントは、パラメータ値の修正を可能にしてそれらの修正値を後続のメソッド（例えば、失敗時メソッド（図示せず）及び成功時メソッド２２８）に渡すために、実施メソッド２２６の前に設定することができる。成功時メソッド２２８のメソッドレベルパラメータ２３６は、実施メソッド２２６によって設定されたパラメータ値へのアクセスを有する。この例では、タスクのメソッドが起動を終えた際、それらのローカルパラメータ値は保存されない。しかし、次のタスクは、プランパラメータ及び実行環境にエクスポートされた任意の値へのアクセスを有する。また、タスクは、動的なものであると宣言された任意のパラメータの変更値も置いていく。これらの値は、後継タスクで見ることができる。システムは、図１１及び１２において説明されるように、パラメータが解決されるところに対してブレークポイントを設定するように構成することができる。
【０１２０】
図１１を参照すると、略図３００は、プラン３０８又はサブプラン３１０に対するブレークポイントを様々な位置に設定できる（例えば、上記で説明されるように、システムによって記録できる）ことを示しており、各位置は、上記で説明されるものを含む様々なタイプのパラメータ値をモニタリング又は編集する能力を提供する。この例では、実行環境パラメータ３０２は、プラン３０８が起動する前に設定される。プラン３０８は、プランレベルパラメータ３０４を含むか又はプランレベルパラメータ３０４にアクセスする。サブプラン３１０は、サブプランレベルパラメータ３０６を含むか又はサブプランレベルパラメータ３０６にアクセスする。この例では、システムは、プラン３０８が開始する前にプラン３０８の実行を停止するために、ブレークポイントを位置３１２に設定することができる。位置３１２におけるブレークポイントの設定は、プランレベルパラメータ３０４の修正を提供する。システムは、プラン３０８がそのコンテンツを開始する直前にプラン３０８の実行を停止するために、ブレークポイントを位置３１４（プラン３０８内）に設定することができる。また、システムは、プラン３０８が終了した後且つプラン３０８を閉じる前にプラン３０８の実行を停止するために、ブレークポイントを位置３１６に設定することもできる。システムは、サブプラン３１０が開始する前にサブプラン３１０の実行を停止するために、ブレークポイントを位置３１８に設定することができる。位置３１８におけるブレークポイントの設定は、サブプランレベルパラメータ３０６の修正を提供する。システムは、サブプラン３１０がそのコンテンツを開始する直前にサブプラン３１０の実行を停止するために、ブレークポイントを位置３２０（サブプラン３１０内）に設定することができる。また、システム（及び／又はユーザ）は、サブプラン３１０が終了した後且つサブプラン３１０を閉じる前にサブプラン３１０の実行を停止するために、ブレークポイントを位置３２２に設定することもできる。
【０１２１】
図１２を参照すると、略図３４０は、タスク３４２に対するブレークポイントを５つの別個の位置３４４、３４５、３４６、３４８、３５０に設定できることを示している。この例では、タスク３４２は、メソッド３４９（例えば、トリガ及び開始時メソッド、各々は、オプションであり得、フレームワークメソッドである）、実施メソッド３５６並びにメソッド３５２（成功時メソッド、失敗時メソッド及び／又はロールバック時メソッド、各々は、オプションであり得、フレームワークメソッドでもある）を含む。
【０１２２】
また、タスク３４２は、タスクレベル資源３５８及びメソッドレベルパラメータ３６０も含む。この例では、位置３４４におけるブレークポイントは、タスク３４２が開始する前にタスク３４２の実行を停止する。タスク３４２がプログラム、プラン又はグラフタスクである際は、このブレークポイントは、タスクレベル資源３５８が取得される前である。また、グラフタスクの場合は、このブレークポイントは、グラフがコンパイルされる前である。位置３４４におけるブレークポイントの設定は、メソッドパラメータ３６０の修正を可能にする。
【０１２３】
この例では、位置３４５は、タスク３４２の「起動中」のブレークポイント位置である（例えば、実施メソッド５２（図３）の「開始前」の位置５２ａ（図３）と同じである）。すなわち、位置３４５におけるブレークポイントの設定は、その実施メソッドが開始する前（実施メソッドがそのスクリプト又は実行可能プログラムを起動する直前ではない）に実施メソッド（タスク３４２）の実行を停止する。グラフ及びプランタスクの場合、このブレークポイント位置３４５により、ブレークポイントインスペクタが立ち上がり、ブレークポイントインスペクタを通じて、入力式（グラフ及びプランタスクによって使用又は実行される）の編集が可能になる。従って、これらの新しい式が評価され、立ち上げたグラフ又はプランに送信される。
【０１２４】
また、システムは、実施メソッド３５６における位置３４６にブレークポイントを設定することもできる。すなわち、位置３４６は、実施メソッド３５６の「起動中」の位置である（例えば、図３の位置５２ｂと同じ）。ブレークポイントが位置３４６に設定されると、システムは、その実施メソッドがそのスクリプト又は実行可能プログラムを起動する直前にプログラムタスクの実行を停止するか、その実施メソッドがその子プランを起動する直前にプランタスクの実行を停止するか、又は、その実施メソッドがそのグラフを起動する直前にグラフタスクの実行を停止する。プラン、グラフ及びプログラムタスクの場合、位置３４６におけるブレークポイントは、環境変数の修正（例えば、プラン、グラフ及びプログラムタスクのために生み出されるそれらのプロセスに対する環境変数の変更）を可能にする。グラフ及びプランタスクの場合、位置３４６におけるブレークポイントは、グラフ３５４に対して使用される入力値の閲覧を可能にする。
【０１２５】
この例では、実施メソッド３５６は、グラフ３５４に着手するか又はグラフ３５４を生み出すように構成される（変形形態では、実施メソッド３５６は、グラフ３５４というよりむしろ、子プランに着手するように構成することができる）。この例では、ブレークポイントは、グラフ３５４の開始時に実行を停止するために、位置３４８に設定することができ、そのグラフ３５４を新しいタブ（例えば、グラフ３５４のコンテンツを示すウィンドウ３７０）で開くことができる。ウィンドウ３７０は、グラフ３５４（この例ではグラフ３７４）のコンテンツを表示し、実行が一時停止されていることを示す（例えば、視覚化３７２を通じて）。開いたグラフ又は子プランから、ユーザは、現在の状態を検査するか、追加のブレークポイントを設定するか、又は、グラフ若しくは子プランの実行を再開するために「継続制御」を使用することができる。このタイプのブレークポイントは、「グラフ／子プラン内の休止」又は「内部のブレークポイント」と呼ばれる。これにより、プランがグラフ又は子プランを開始し、そのグラフ又は子プランに対してデバッガが自動的に開始される（次いで、デバッガは、まさにその実行が始まる時にグラフ又は子プランを停止する）状況が作られる。例えば、この能力は、プランが起動するにつれて、実行するグラフ又は子プランが動的に決定される際（すなわち、プランの起動前の編集時にどのグラフ又は子プランを実行するか事前に決定されていない際、従って、そのプランに対してブレークポイントを明示的に決定することができない）に役立つ。この例では、内部のブレークポイントは、実際に起動されたグラフ又は子プランの実行の停止をもたらすことになる。
【０１２６】
内部のブレークポイントの場合、立ち上げたプロセス用のデバッガは、自動的に開始され、ＧＤＥは、２つの別個の個々のプロセスであるものの間の関係を本質的に表す。この理由は、１台のマシンが親プランのプロセスと親プラン用のデバッガのプロセスとを有するためである。第２のマシンは、立ち上げたグラフ又は子プランのプロセスを有する。また、この第２のマシンは、立ち上げたグラフ又は子プラン用のデバッガのプロセスも有する。従って、あるプランのグラフは、本明細書で説明されるシステム上で起動している可能性があり、別のグラフは、別のマシン上で起動している可能性があり、ユーザは、そのマシン上のローカル環境を調査するためにグラフデバッガを使用することができる。
【０１２７】
別の例では、グラフ内の休止は、親タスク（例えば、タスク３４２）の側面を閲覧するというよりむしろ、グラフ（例えば、グラフ３７４）の側面及び属性を閲覧するために、切り替え（デバッガの）をＧＤＥに行わせる。それに加えて、グラフ又は子プラン（タスク３４２とは別個のプロセスとして実行されているとしても）は、タスク３４２と同じユーザインタフェース及び同じグラフィカル開発環境（ＧＤＥ）においてデバッグすることができる。この例では、システムは、タスク３４２が終了した後にタスク３４２の実行を停止するために、ブレークポイントを位置３５０に設定することができる。
【０１２８】
いくつかの例では、タスク３４２が停止した時点で、ユーザは、あたかも成功したかのように又はあたかも失敗したかのようにタスク３４２を継続すべきかどうかを指定することができる。システムは、これらのユーザ変更及び仕様を記録し、それらに基づいて行動し（例えば、ユーザ変更に従ってタスク（又はメソッド）の状態を修正することによって）、そうすることによって、次にどのタスク又はメソッドを実行するかを制御する。システムは、成功から失敗へ（その逆も同様）メソッドの状態を変更することによって、制御フローを実装する。
【０１２９】
それに加えて、いくつかの例では、タスクが成功したか又は失敗したか（制御が次にどこに行くかに影響を及ぼす）についての記録の修正を可能にするグラフィカルユーザインタフェースが提示される（「完了後」のブレークポイント、例えば、タスク３４２の位置３５０におけるブレークポイントにおいて）。いくつかの例では、ユーザインタフェースは、特定タイプのタスク又はメソッド（例えば、条件付きタスク）の実行後や、グラフタスク又はプランタスクの実施メソッドの後に、記録の修正を可能にする。
【０１３０】
それに加えて、本明細書で説明されるシステムは、特殊な位置におけるブレークポイントの設定を提供する。例えば、プラン又はサブプランは、ループ状のプラン又はループ状のサブプラン（例えば、直列ループ又は並列ループ用に構成されたもの）であり得る。一般に、ループ状のプランは、指定回数分又は条件が満たされるまでループを経るように構成されたプランを含む。ループ状のプラン又はサブプランの場合、ループの各反復において一時停止するためにブレークポイントを設定するか、又は、指定された反復においてのみ一時停止する反復特有のブレークポイント（「反復ブレークポイント」）を設定することができる。例えば、ブレークポイントを記録する際、システムは、実行の一時停止が、そのループの特定の反復に対応するプラン／サブプラン／タスク／メソッドのインスタンスに対してのみ起こることを指定することができる（例えば、それにより、プラン／サブプラン／タスク／メソッドがループ内にあり、それが理由で、実行されるその多くの別個のインスタンスが存在することを考慮して、プラン／サブプラン／タスク／メソッドのどのインスタンスにブレークポイントが適用されるか指定される）。それに加えて、システムは、条件付きブレークポイント（例えば、特定の条件が満たされた際にのみ、プラン、サブプラン又はタスクの実行を中断するように構成されたブレークポイントを含む）を設定するように構成することができる。この例では、ブレークポイントは、式を含むか又は式と関連付けられ、システムは、式が指定された値（「１」又は「０」など）を満たしている場合にのみ、ブレークポイントを実行するように構成される。システムは、指定された条件が真である場合にのみブレークポイントを停止させるために、本明細書で説明される様々なタイプのブレークポイントのいずれかに対する条件を設定するか又は指定することができる（従って、様々なタイプのブレークポイントの各々を条件付きブレークポイントにする）。例えば、反復ブレークポイントは、それに対して指定された条件を有し得る。すなわち、例えば、第２のループ実行の一部であるタスクのインスタンスにおいて設定されたブレークポイントは、条件（ループを経ることとは無関係である）が満たされた際にのみ、実行が一時停止すべきであることを指定することもできる。
【０１３１】
グラフィカルプランデバッガに加えて、システムは、コマンドラインバージョンを提供する。システムは、コマンドラインデバッガを起動中のプランに接続し、図表を用いて実施することができる様々なタイプのデバッグを提供することができる。
【０１３２】
図１３を参照すると、複数の機能モジュールの間の制御フローを指定するグラフィカル制御フローアプリケーションをデバッグする際のシステムによるプロセス４００が実装されており、制御フローは、複数の機能モジュールの間の遷移として表され、各機能モジュールは、１つ又は複数のアクションを実行するように構成される。動作の際、システムは、実行可能な制御フローグラフの実行が中断されることになる実行可能な制御フローグラフにおける位置を指定する（４０２）。指定位置は、所定の機能モジュールへの遷移、所定の機能モジュールのコンテンツが実行される状態への遷移又は所定の機能モジュールからの遷移を表す。また、システムは、実行環境において実行可能な制御フローグラフの実行を開始する（４０４）。一般に、実行環境は、オペレーティングシステムによってプラン又はソフトウェアに提供される（例えば、ランタイム時に）環境である。この例では、指定位置を表す実行の時点において、システムは、実行可能な制御フローグラフの実行を中断し（４０６）、所定の機能モジュールが実行されている実行又はランタイム環境の１つ又は複数の属性を表すデータを提供し（４０８）、例えば、プランを起動している実行又はランタイム環境の内部属性（例えば、パラメータ及び関連値、プランが使用している動的パラメータ及び関連値など）、並びに、プランを起動している実行又はランタイム環境の外部属性（プランを実行しているローカル環境若しくはシステム及び外部の状態や資源（例えば、データベース、リポジトリ）など）が挙げられる。
【０１３３】
いくつかの例では、実行可能な制御フローグラフは、グラフィック層及び制御処理層を含み、グラフィック層は、グラフィカルユーザインタフェース用の視覚的要素と、視覚的要素でプログラムされたビジュアルプログラミング言語での視覚的プログラムとを含み、ビジュアルプログラミング言語は、制御フローを指定するためのものであり、制御処理層は、ビジュアルプログラミング言語によって指定された制御フローを実施するために、機能モジュールと、メソッドと、メソッドを実行する際に使用される基本的なデータ構造と、基本的なデータ構造を使用してメソッドを実行するコードとを含む。この例では、方法は、グラフィカルユーザインタフェースを視覚的要素でレンダリングすることによってグラフィック層を実行するステップと、グラフィカルユーザインタフェースを通じて、グラフィカルユーザインタフェースに表示された１つ又は複数の視覚的要素のユーザ操作を表すデータを受信するステップであって、受信データが、ビジュアルプログラミング言語での視覚的プログラムを表す、ステップと、グラフィック層で作成された視覚的プログラムに従って制御処理層を実行するステップであって、視覚的プログラムによって指定された１つ又は複数の機能モジュールを実行するサブステップを含む、制御処理層を実行するステップであり、機能モジュールを実行するサブステップが、ビジュアルプログラミング言語によって指定された制御フローを実施するためにメソッドの１つ又は複数のデータ構造を使用してコードを実行することによってその機能モジュールのメソッドを実行させる、制御処理層を実行するステップとも含む。この例では、特定の機能モジュールは、データ処理層に含まれる制御アプリケーションを表し、方法は、特定の機能モジュールの特定のメソッドを実行するステップと、特定のメソッドを実行するステップに応答して、制御アプリケーションを立ち上げるステップとをさらに含む。
【０１３４】
図１３の変形形態では、グラフィカル制御フローアプリケーションを実行する前にブレークポイントを構成することに加えて又はグラフィカル制御フローアプリケーションを実行する前にブレークポイントを構成するというよりむしろ、ブレークポイントの構成（例えば、設定）は、グラフィカル制御フローアプリケーションを実行している間に起こり得る。
【０１３５】
例では、本明細書で説明されるシステムは、ブレークポイントを通じてシングルステップで実行するように構成することができる。シングルステップは、ブレークポイントに到ると、そこにブレークポイントを明示的に設定する必要なく、プラン実行を中断することができる次の場所に行くようにシステムに指示する制御又は他のコマンドである。この例では、ユーザは、プランを通じてシングルステップで実行するようにシステムに指示する。この例では、システム（又はユーザ）は、シングルステップで実行する所定のレベル（例えば、タスクレベル又はメソッドレベル）を指定することになる。この例では、プランは、制御フローの複数の経路を有し得、その結果、複数の「次」の場所が生じる。従って、システムは、それらのすべての場所で実行を停止することになる。
【０１３６】
図１４Ａを参照すると、略図４５０は、プラン４５２を示しており、両方とも、部分４６１ａにおいて定義され、部分４６１ｂにおいて実行される。この例では、プラン４５２は、それぞれのタスクを表すグラフィカルプログラム要素４５４ａ…４５４ｎを含む。読者の便宜上、対応する図１４Ａ、１４Ｂについて説明する際、グラフィカルプログラム要素又は遷移を示す参照符号への言及が行われる際は常に、それぞれのタスク及び制御フローのそれぞれへの言及が直接行われる。従って、グラフィカルプログラム要素４５４ａ…４５４ｎは、以下では、タスク４５４ａ…４５４ｎと呼ばれる。
【０１３７】
タスク４５４ａ…４５４ｎの各々は、１つ又は複数のメソッドを含み、各メソッドは、コンピュータシステム上で実行される１つ又は複数のアクションを含む。例えば、タスク４５４ａはメソッド４５６を含み、タスク４５４ｎはメソッド４５８を含む。メソッド４５６は、メソッド４５８と同じメソッドでも、異なるメソッドでもよい。この例では、タスク４５４ａ…４５４ｎの各々は、プラン４５２から継承メソッド４６０を継承する。一般に、継承メソッドは、プランレベルで１回定義されてプラン内のタスクに適用される（プラン内のタスクによって継承される）メソッドを含む。すなわち、継承メソッドは、プラン（又はサブプラン）レベルで定義されたアクションであり、そのレベルより低いタスクに適用される。継承メソッドの使用を通じて、システムは、プランのタスクに同じメソッドを適用することができる。継承メソッドは、タスクごとに別々にというよりむしろ、プラン全体に対して１回定義され、それにより、多くのタスクに一度に同じアクションを割り当てることが可能になる。略図４５０の部分４６１ｂに示されるように、システムがプラン４５２を実行すると、継承メソッド４６０は、プラン４５２内のすべてのタスク（すなわち、プラン４５２のタスク４５４ａ…４５４ｎの各々）において実行する。いくつかの例では、タスクが継承メソッドと非継承メソッドの両方を含む際、システムは、メソッドがタスクの実施メソッドの前に起こるか又は後に起こるかに応じて、異なる順番でメソッドを実行する。タスクの実施メソッドの前には、システムは、最初に継承メソッドを実行し、それに続いて、その特定のタスクに対して類似した非継承メソッドを実行する。タスクの実施メソッドの後には、システムは、最初に非継承メソッドを実行し、それに続いて、類似した継承メソッドを実行する。
【０１３８】
図１４Ｂを参照すると、略図４７０は、プランデバッガが継承メソッド上のブレークポイントの設定を可能にすることを示している。具体的には、略図４７０は、プラン４５２を示しており、両方とも、部分４７１ａにおいて定義され、部分４７１ｂにおいて実行される。継承メソッド４６０は、プランレベルで１回定義される（部分４７１ａに示される）。実行（部分４７１ｂに示される）の間、プラン４５２内の各要素（すなわち、タスク４５４ａ…４５４ｎの各々）は、その特定の要素に対する継承メソッド４６０の特定のインスタンス（すなわち、インスタンス４６０ａ…４６０ｎ）を作成することによって、そのメソッド定義を継承する。この例では、ブレークポイント（継承メソッド４６０のインスタンスに対するもの）は、タスク（例えば、タスク４５４ａ…４５４ｎの１つ又は複数）ごとに設定又は記録される。すなわち、ブレークポイントは、継承メソッドの特定のインスタンス上でのみ設定することができる。この例では、システムは、位置４６１ａ、４６１ｂ、４６１ｃのうちの１つにおけるブレークポイントをそれぞれ記録することによって、タスク４５４ａの継承メソッド４６０のインスタンス４６０ａの開始前、起動中又は完了後にブレークポイントを記録する。この例では、システムは、位置４６１ａ、４６１ｂ、４６１ｃのうちの１つ又は複数においてブレークポイントを記録することができる（完全性の目的のために、位置４６１ａ、４６１ｂ、４６１ｃのすべてが図１４Ｂに示されているとしても）。
【０１３９】
図１５を参照すると、アプリケーション開発及び実行システム５００のブロック図が示されている。本明細書で説明されるデバッグ技法は、システム５００内で実装することができる。システム５００は、２つのグラフィカル開発環境、すなわち、データフローグラフ開発に対して使用されるＧＤＥ  ５１２と、制御フロー図開発に対して使用されるＧＤＥ  ５１４とを含む。或いは、データフローグラフと制御フロー図の両方の開発に対して、１つのグラフィカル開発環境を使用することができる。或いは、制御フロー図を開発するためにグラフィカル開発環境を使用し、データフローグラフに対してコマンドラインユーザインタフェースを使用することができ、その逆も同様である。
【０１４０】
ＧＤＥ  ５１２を使用することにより、データフローグラフ５８０を含むデータ処理アプリケーション５１８が構築される。ＧＤＥ  ５１４を使用することにより、制御フロー図５５０を含むタスク管理アプリケーション５１６が構築される。
【０１４１】
また、システム５００は、データベース５２０も含む。データベース５２０は、システム５００の様々な種類の情報（例えば、メタデータ）の格納を提供するスケーラブルなオブジェクト指向型データベースシステムであり得る。データベース５２０は、例えば、企業メタデータデータベースであり得、グラフベースのアプリケーションの開発及び実行や、グラフベースのアプリケーションと他のシステム（例えば、オペレーティングシステム）との間のデータの交換をサポートすることができる。
【０１４２】
システム５００は、オペレーティングシステム５２４をさらに含む。オペレーティングシステム５２４は、例えば、並列動作環境であり得る。オペレーティングシステム５２４は、アプリケーション開発環境（ＧＤＥ  ５１２及びＧＤＥ  ５１４など）の起動に対するサポートを提供し、開発されたアプリケーションのスケーラブルな並列及び分散実行を提供する。
【０１４３】
図１５では、入力データ５３０のストリームは、データがデータ処理アプリケーション５１８によって処理されている際は、データフローグラフ５８０を通過する。データフローグラフ５８０は、再フォーマットコンポーネント５８４である演算コンポーネントを含む。データフローグラフ５８０では、データは、入力データセット５８２から出力データセット５８６に流れる。
【０１４４】
再フォーマットした後、データは、データ処理アプリケーション５１８から流出してタスク管理アプリケーション５１６に流入し、タスク管理アプリケーション５１６を駆動するために使用され、その駆動を受けて、制御フロー図５５０が駆動される。例では、データ処理アプリケーション５１８が成功した場合は、タスクスケジューリングアプリケーション５１６は、制御フロー図５５０を立ち上げる。制御フロー図５５０は、２つのタスク（タスク５５２及びタスク５５４）を示しており、各タスクは、本明細書で説明されるように、ブレークポイント（タスクの開始前、起動中又は完了後）を有するようにプログラムすることができる。タスクは、例えば、データフローグラフ又はスクリプト（Ｐｅｒｌスクリプトなど）を実行することによって実施される演算であり得る。時間系列５５６は、制御フロー図５５０において指定されたタスクの起動順序を示す。この事例では、タスク５５２は、タスク５５４の前に実行される。
【０１４５】
図１５に示されるように、制御フロー図５５０のタスク５５２は、Ｐｅｒｌスクリプトであり、タスク５５４は、本明細書で説明されるシステムのオペレーティングシステム５２４において実行することができるいくつかのメソッドを含む。これらのメソッドは、本明細書で説明されるシステムによって提供される既存のメソッドであり得る。ユーザは、メソッドを構成する様々なパラメータ及びスクリプトに対するそれら自体のコンテンツを指定することによって、これらのメソッドの挙動をカスタマイズすることができる。ブレークポイントは、本明細書で説明されるように、これらのメソッドの各々の開始前、起動中又は完了後に挿入することができる。図１５に例として示されるように、タスク５５４は、５つのメソッド（すなわち、トリガ、開始時、実施、失敗時及び成功時）を含む。
【０１４６】
いくつかの例では、上記の５つのメソッドは、次の通り実装することができる。
【０１４７】
トリガメソッドは、タスク５５４の開始時点を表すために実装することができる。トリガメソッドは、例えば、特定のファイルが存在するかどうか、フラグが真に設定されたかどうかなどを含む、実行を開始するための様々な条件を含み得る。
【０１４８】
開始時メソッドは、実施メソッドに向けてシステムを準備するメソッド（環境変数を所望の値に設定するか又はランタイム情報を記録するためにログファイルをセットアップするなど）として実装することができる。
【０１４９】
実施メソッドは、タスク５５４の主要な機能を実施するために実装することができる。また、タスク５５４は、実施メソッドの後に起こることに対処するための条件付き論理を含み得る。実施メソッドがその実行の間に成功した場合は、ゼロの戻りコードでタスク５５４を閉じるために成功時メソッドが実行される。実施メソッドがその実行の間に失敗した場合は、非ゼロの戻りコードでタスク５５４を閉じるために失敗時メソッドが実行される。任意選択により、ロールバック、エラー処理及び回復に対して追加のメソッドを追加することができる。例えば、ロールバックのメソッドは、これまで行われたものを失敗時点から始めて逆の実行順番でロールバックするために追加することができる。或いは、後処理のメソッドは、フラグ、レジスタなどをリセットすることによって、失敗した条件を後処理するために追加することができる。
【０１５０】
本明細書で説明されるように、機能モジュールは、制御アプリケーションに対する情報又は制御アプリケーションを表す情報をカプセル化し、制御アプリケーションは、実行可能なコンピュータプログラム又はコンピュータプログラムの実行可能な部分のインスタンスであり、機能モジュールは、コンピュータシステム上の１つ又は複数のアクションを実行するように構成される。制御フローは、個々の機能モジュールが実行又は評価される順番である。
【０１５１】
本明細書で説明される技法を使用することにより、システム及び方法は、プラン及びサブプランをデバッグする。例えば、プランデバッガは、本明細書では、これらのプランをトラブルシュートするために説明され、デバッガは、コマンドラインとグラフィカルインタフェースの両方を有する。プランデバッガは、これらのプラン内の多くのキーポイントでのプランの実行の一時停止（又は「休止」）を可能にする。このプランは、異機種環境のマシン及び技術上において分散様式で動作する。デバッガは、条件付きブレークポイント、ループの特定の反復の休止又は失敗時休止などのデバッグ及びデバッガ機能を提供する。デバッガは、プランの異なるレベル（すなわち、プラン、サブプラン、タスク又はメソッド）での休止を可能にする。休止は、本明細書で記述されている場合を除いて、上記のいずれかの実行の（ａ）開始前、（ｂ）完了後、又は、（ｃ）起動中（タスクとメソッドの事例）及び内部（グラフと子プランである制御アプリケーションの事例）に設定することができる。本明細書で説明されるように、ブレークポイントを伴う設定及び起動は、プランを減速しない。それに加えて、プランは、デバッガを使用するために「デバッグモード」にする必要はない。ユーザは、プランが開始する前又はプランが起動している間にブレークポイントを設定することができる。
【０１５２】
本明細書で説明される技法は、多くの演算及び資源配分効率を提供する。例えば、タスクの開始前、起動中及び完了後に、また、タスクのメソッドの各々の開始前、起動中及び完了後に、ブレークポイントの設定が可能であることにより、システムは、タスク及び／又はそのメソッドをデバッグするために必要なタスクの実行回数を低減することができる。この理由は、失敗を識別するためにタスク又はプランの起動の完了を待つというよりむしろ、本明細書で説明される技法は、失敗が起こった際に失敗の識別を提供し、失敗の原因であり得る変数及び／又はパラメータ値を修正する能力を提供する。値が修正された時点で、プラン又はタスクは、以前に失敗した時点から実行を再開することができる。すなわち、「下流」のタスク及び／又はメソッド（別のタスク及び／又はメソッドに依存するタスク及び／又はメソッド）は、失敗の直後に実行され、次いで、失敗がデバッグされるにつれて繰り返し実行されるというよりむしろ、失敗が識別され、その対処が行われた時点で実行される。これにより、プランが完了するまで起動し、次いで、完了後にデバッグし、次いで、再び起動して失敗がうまく対処されたかどうかを評価することが認められている際に必要とされる処理能力量と比べて、処理能力の消費が減少する（プランをデバッグするために必要なプランの実行がより少なくなるため）。また、これにより、プランをデバッグするためにプランを複数回起動する必要があるメモリ量と比べて、メモリの消費が減少する（プランは１回しか起動されず、その単一の起動の間にうまくデバッグされ得るため）。
【０１５３】
それに加えて、タスクのメソッドの各々の開始前、起動中及び完了後にブレークポイントの設定が可能であることによって提供される粒度レベルは、タスクのメソッドを表すデータ構造を定義する際の柔軟性の増加や、実行挙動の調査及び制御の際の柔軟性の増加を提供する。これらのデータ構造を事前に定義し、プランが実行された後にのみその値を変更する必要があるというよりむしろ、パラメータの値及び／又はこれらのデータ構造に対する値は、プランが実行されるにつれて「オンザフライ」で修正することができる。これらのオンザフライ修正は、これらの変更の影響を評価するためにプランを複数回実行する必要がないため、メモリ必要量は小さくて済む。
【０１５４】
上記で説明される技法は、コンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えば、ソフトウェアは、１つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム（分散型、クライアント／サーバ又はグリッドなどの様々なアーキテクチャのものであり得る）上で実行する１つ又は複数のコンピュータプログラムのプロシージャを形成し、コンピュータシステムの各々は、少なくとも１つのプロセッサと、少なくとも１つのデータ記憶システム（揮発性及び不揮発性のメモリ及び／又は記憶素子を含む）と、少なくとも１つの入力デバイス又はポートと、少なくとも１つの出力デバイス又はポートとを含む。ソフトウェアは、より大きなプログラムの１つ又は複数のモジュール（例えば、チャート及びフローチャートの設計及び構成に関連する他のサービスを提供するもの）を形成することができる。チャートのノード、リンク及び要素は、コンピュータ可読媒体に格納されたデータ構造又はデータリポジトリに格納されたデータモデルに適合する他の組織化データとして実装することができる。
【０１５５】
本明細書で説明される技法は、デジタル電子回路において、コンピュータハードウェア、ファームウェア、ソフトウェアにおいて、又は、それらの組合せにおいて実装することができる。装置は、プログラマブルプロセッサによる実行のために有形に具体化されるか又は機械可読記憶装置（例えば、非一時的な機械可読記憶装置、機械可読ハードウェア記憶装置など）に格納されるコンピュータプログラム製品において実装することができ、方法アクションは、入力データに基づいて動作し且つ出力を生成することによって機能を実施するために命令のプログラムを実行するプログラマブルプロセッサによって実施することができる。本明細書で説明される実施形態並びに特許請求の範囲及び本明細書で説明される技法の他の実施形態は、データ記憶システムからデータ及び命令を受信するため及びデータ記憶システムにデータ及び命令を送信するために結合された少なくとも１つのプログラマブルプロセッサと、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含むプログラマブルシステム上で実行可能な１つ又は複数のコンピュータプログラムにおいて有利に実装することができる。各コンピュータプログラムは、高レベルの手続き型若しくはオブジェクト指向型プログラミング言語で、又は、必要に応じてアセンブリ若しくは機械語で実装することができ、いかなる事例においても、言語は、コンパイラ型又はインタープリタ型言語であり得る。
【０１５６】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方や、任意の種類のデジタルコンピュータのいずれか１つ又は複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの必須要素は、命令を実行するためのプロセッサと、命令及びデータを格納するための１つ又は複数のメモリデバイスである。また、一般に、コンピュータは、データ受信のため、データ送信のため又はその両方のために、データ格納用の１つ又は複数の大容量記憶装置（例えば、磁気ディスク、光磁気ディスク若しくは光ディスク）も含むか、或いは、データ格納用の１つ若しくは複数の大容量記憶装置に動作可能に結合される。コンピュータプログラム命令及びデータを具体化するためのコンピュータ可読媒体は、例として、半導体メモリデバイス（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイス）、磁気ディスク（例えば、内部ハードディスク又はリムーバブルディスク）、光磁気ディスク並びにＣＤ  ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含む、不揮発性メモリのすべての形態を含む。プロセッサ及びメモリは、専用論理回路によって補充することも、専用論理回路に組み込むこともできる。前述のいずれも、ＡＳＩＣ（特定用途向け集積回路）によって補充することも、ＡＳＩＣ（特定用途向け集積回路）に組み込むこともできる。
【０１５７】
ユーザとの対話を提供するため、実施形態は、ユーザに情報を表示するための表示デバイス（例えば、ＬＣＤ（液晶ディスプレイ）モニタ）や、ユーザがコンピュータに入力を提供することができるキーボード及びポインティングデバイス（例えば、マウス又はトラックボール）を有するコンピュータ上で実装することができる。他の種類のデバイスを使用してユーザとの対話を提供することもでき、例えば、ユーザに提供されるフィードバックは、いかなる形態の感覚フィードバック（例えば、視覚フィードバック、聴覚フィードバック又は触覚フィードバック）でもよく、ユーザからの入力は、いかなる形態でも（音響、音声又は触覚入力を含む）受信することができる。
【０１５８】
実施形態は、バックエンドコンポーネント（例えば、データサーバとして）を含むか、ミドルウェアコンポーネント（例えば、アプリケーションサーバ）を含むか、フロントエンドコンポーネント（例えば、ユーザが実施形態の実装形態と対話できるようにするためのグラフィカルユーザインタフェース若しくはウェブブラウザを有するクライアントコンピュータ）を含むか、そのようなバックエンド、ミドルウェア又はフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態又は媒体（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）及び広域ネットワーク（ＷＡＮ）（例えば、インターネット）を含む。
【０１５９】
システム及び方法又はそれらの一部は、「ワールドワイドウェブ」（ウェブ又はＷＷＷ）を使用することができ、「ワールドワイドウェブ」は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を利用するインターネット上のサーバの集合体である。ＨＴＴＰは、テキスト、グラフィックス、画像、音声、映像、ハイパーテキストマークアップ言語（ＨＴＭＬ）などの異なるフォーマットの情報であり得る資源やプログラムへのアクセスをユーザに提供する公知のアプリケーションプロトコルである。ユーザによってリンクが指定され次第、クライアントコンピュータは、ウェブサーバへのＴＣＰ／ＩＰ要求を行い、情報（ＨＴＭＬに従ってフォーマットされた別のウェブページであり得る）を受信する。また、ユーザは、画面上の命令に従ってあるデータを入力するか又は選択したアイコンをクリックすることによって、同じ又は他のサーバ上の他のページにもアクセスすることができる。また、ユーザが所定のコンポーネントに対するオプションを選択できるようにするため、ウェブページを使用する実施形態に対して、当業者に知られているいかなるタイプの選択デバイス（チェックボックス、ドロップダウンボックス及び同様のものなど）も使用できることにも留意されたい。サーバは、ＵＮＩＸ(登録商標)マシンを含む様々なプラットフォーム上で起動するが、Ｗｉｎｄｏｗｓ(登録商標)  ２０００／２００３、Ｗｉｎｄｏｗｓ(登録商標)  ＮＴ、Ｓｕｎ、Ｌｉｎｕｘ(登録商標)、及び、Ｍａｃｉｎｔｏｓｈなどの他のプラットフォームを使用することもできる。コンピュータユーザは、Ｆｉｒｅｆｏｘ、Ｎｅｔｓｃａｐｅ  Ｎａｖｉｇａｔｏｒ、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ又はＭｏｓａｉｃブラウザなどの閲覧ソフトの使用を通じて、ウェブ上のサーバ又はネットワーク上で利用可能な情報を閲覧することができる。コンピューティングシステムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般に、互いにリモート設置され、典型的には、通信ネットワークを通じて対話する。クライアントとサーバとの関係は、コンピュータプログラムによって生じ、コンピュータプログラムは、それぞれのコンピュータ上で起動しており、互いにクライアント・サーバ関係を有するものである。
【０１６０】
他の実施形態は、説明及び請求項の範囲及び精神内である。例えば、ソフトウェアの本質により、上記で説明される機能は、ソフトウェア、ハードウェア、ファームウェア、配線又はこれらの任意の組合せを使用して実装することができる。機能を実装する特徴もまた、様々な位置に物理的に位置し得、機能の一部が異なる物理的場所で実装されるように分散されることを含む。本明細書における及び本出願全体を通じる「１つの（「ａ」）」という用語の使用は、制限する形では使用されず、従って、「１つの（「ａ」）」という用語に対して複数の意味或いは「１つ又は複数の」という意味を除外することを意図しない。それに加えて、仮特許出願に対して優先権が主張される範囲で、仮特許出願は制限するものではなく、本明細書で説明される技法をどのように実装できるかについての例を含むものであることを理解されたい。
【０１６１】
本発明の多くの実施形態について説明してきた。それにもかかわらず、当業者であれば、特許請求の範囲及び本明細書で説明される技法の精神及び範囲から逸脱することなく、様々な変更を行えることが理解されよう。
【図１Ａ】
2021520587.tif 000003
【図１Ｂ】
2021520587.tif 000004
【図１Ｃ】
2021520587.tif 000005
【図１Ｄ】
2021520587.tif 000006
【図１Ｅ】
2021520587.tif 000007
【図１Ｆ】
2021520587.tif 000008
【図１Ｇ】
2021520587.tif 000009
【図２】
2021520587.tif 000010
【図３】
2021520587.tif 000011
【図４】
2021520587.tif 000012
【図５】
2021520587.tif 000013
【図６】
2021520587.tif 000014
【図７Ａ】
2021520587.tif 000015
【図７Ｂ】
2021520587.tif 000016
【図８】
2021520587.tif 000017
【図９Ａ】
2021520587.tif 000018
【図９Ｂ】
2021520587.tif 000019
【図９Ｃ】
2021520587.tif 000020
【図１０】
2021520587.tif 000021
【図１１】
2021520587.tif 000022
【図１２】
2021520587.tif 000023
【図１３】
2021520587.tif 000024
【図１４Ａ】
2021520587.tif 000025
【図１４Ｂ】
2021520587.tif 000026
【図１５】
2021520587.tif 000027
【国際調査報告】
2021520587.tif 000028
2021520587.tif 000029
2021520587.tif 000030