(57)【要約】【課題】  ビジネスプロセス定義からデータ保存とビジネスプロセスの処理性能のバランスを考慮した実行可能なプログラムを生成する。【解決手段】  ビジネスプロセス定義解析手段２１は入力装置１から入力されたビジネスプロセス定義を解析し、中間コード生成手段２２は中間コードを生成する。Ｊａｖａ（登録商標）コード生成手段２３は中間コード生成手段２２が生成した中間コードからＪ２ＥＥのＥＪＢに対応するＪａｖａ（登録商標）コードを生成する。Ｊａｖａ（登録商標）コードコンパイル手段２４はＪａｖａ（登録商標）コード生成手段２３によって生成されたＪａｖａ（登録商標）コードをコンパイルし、実行可能なプロセス実行プログラムを生成する。生成されたプロセス実行プログラムは、ロングタスクに分類されるイベントの場合に、イベントの開始処理とイベントの終了処理の間で処理が一時中断され実行時のデータが保存される。【選択図】      図１
2006031173.tif 000002
【特許請求の範囲】
【請求項１】
ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル装置であって、
前記ビジネスプロセス定義に記述された要素群を解析する手段と、
前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成する手段と、
前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には処理の実行時にデータの保存を行うことを表す中間コードを生成する手段と、
前記生成した中間コードをコンパイルして実行可能なプログラムを生成する手段と、を備える、
ことを特徴とするコンパイル装置。
【請求項２】
前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成する手段を備える、
ことを特徴とする請求項１記載のコンパイル装置。
【請求項３】
前記生成した中間コードからＪａｖａ（登録商標）コードを生成する手段と、
前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成する手段と、を備える、
ことを特徴とする請求項１または２記載のコンパイル装置。
【請求項４】
前記ビジネスプロセス定義は、
Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＢＰＥＬ４ＷＳ）で記述される、
ことを特徴とする請求項１，２または３記載のコンパイル装置。
【請求項５】
前記Ｊａｖａ（登録商標）コードは、
実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みに対応したＪａｖａ（登録商標）コードである、
ことを特徴とする請求項３または４記載のコンパイル装置。
【請求項６】
前記実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みは、
Ｊａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＥＪＢ）である、
ことを特徴とする請求項３，４または５記載のコンパイル装置。
【請求項７】
ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル方法であって、
前記ビジネスプロセス定義に記述された要素群を解析するステップと、
前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成するステップと、
前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には前記ロングタスクイベントの実行時にデータの保存を行うことを表す中間コードを生成するステップと、
前記生成した中間コードをコンパイルして実行可能なプログラムを生成するステップと、を含む、
ことを特徴とするコンパイル方法。
【請求項８】
前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成するステップを含む、
ことを特徴とする請求項７記載のコンパイル方法。
【請求項９】
前記生成した中間コードからＪａｖａ（登録商標）コードを生成するステップと、
前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成するステップと、を含む、
ことを特徴とする請求項７または８記載のコンパイル方法。
【請求項１０】
前記ビジネスプロセス定義は、
Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＢＰＥＬ４ＷＳ）で記述される、
ことを特徴とする請求項７，８または９記載のコンパイル方法。
【請求項１１】
前記Ｊａｖａ（登録商標）コードは、
実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みに対応したＪａｖａ（登録商標）コードである、
ことを特徴とする請求項９または１０記載のコンパイル方法。
【請求項１２】
前記実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みは、
Ｊａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＥＪＢ）である、
ことを特徴とする請求項９，１０または１１記載のコンパイル方法。
【請求項１３】
ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル装置のプログラムであって、
コンパイラ装置に、
前記ビジネスプロセス定義に記述された要素群を解析する機能、
前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成する機能、
前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には処理の実行時にデータの保存を行うことを表す中間コードを生成する機能、
前記生成した中間コードをコンパイルして実行可能なプログラムを生成する機能、
を実現させるためのプログラム。
【請求項１４】
前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成する機能、
を実現させるための請求項１３記載のプログラム。
【請求項１５】
前記生成した中間コードからＪａｖａ（登録商標）コードを生成する機能、
前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成する機能、
を実現させるための請求項１３または１４記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンパイル装置，方法およびプログラムに関し、特に、ビジネスプロセス定義を解析して中間コードを生成し実行可能プログラムを生成するコンパイル装置，方法およびプログラムに関する。
【背景技術】
【０００２】
従来、障害の発生に備えて、プログラムの実行途中で、処理中のデータをデータベースや記憶装置等に保存することが行われている。
【０００３】
例えば、特許文献１では、状態を保持するためのコードを自動生成し、自動生成された状態管理のためのコードを当該メソッドの実行において処理することが記載されている。すなわち、状態変更管理手段は、オリジナルプログラムに基づいて、各メソッド中で変更される可能性のある状態を静的に解析し、解析結果を状態管理コード生成手段に渡す。状態管理コード生成手段は、あらかじめ作成されているオブジェクトのインタフェース定義情報とそのインタフェースが提供する処理を記述したオリジナルプログラムに基づいて、状態を保持するためのコードを自動生成する。プログラムは、プログラム実行手段によって実行される。状態管理コード生成手段によって自動生成された状態管理のためのコードも、当該メソッドの実行において処理される。
【０００４】
【特許文献１】特開平１０−３２０２０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した背景技術には、以下のような問題点がある。
【０００６】
すなわち、特許文献１では、オブジェクトの状態が変化したとき、オブジェクトの状態である属性値を自動的に外部の記憶装置に記録・保持するため、障害時に損失する情報は少なくなるが、処理速度が低下するということである。
【０００７】
このように、保存処理を重視すれば処理の実行速度が犠牲となり、処理の実行速度を重視すれば、障害発生時に再実行する処理が増える。障害時に失われる情報を最小限にすることと実行性能の間にはトレードオフの関係があり、その最適なバランス点を見つけ出すことが課題であった。
【０００８】
本発明の目的は、上記の問題点を解決し、実行制御を記述したビジネスプロセス定義から、データ保存とビジネスプロセスの処理性能のバランスを考慮した実行可能なプログラムを生成するコンパイル装置，方法およびそのプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本願第１の発明のコンパイル装置は、ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル装置であって、前記ビジネスプロセス定義に記述された要素群を解析する手段と、前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成する手段と、前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には処理の実行時にデータの保存を行うことを表す中間コードを生成する手段と、前記生成した中間コードをコンパイルして実行可能なプログラムを生成する手段と、を備える。
【００１０】
本願第２の発明のコンパイル装置は、第１の発明において前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成する手段を備える。
【００１１】
本願第３の発明のコンパイル装置は、第１または第２の発明において前記生成した中間コードからＪａｖａ（登録商標）コードを生成する手段と、前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成する手段と、を備える。
【００１２】
本願第４の発明のコンパイル装置は、第１，第２または第３の発明において前記ビジネスプロセス定義は、Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＢＰＥＬ４ＷＳ）で記述される、ことを特徴とする。
【００１３】
本願第５の発明のコンパイル装置は、第３または第４の発明において前記Ｊａｖａ（登録商標）コードは、実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みに対応したＪａｖａ（登録商標）コードである、ことを特徴とする。
【００１４】
本願第６の発明のコンパイル装置は、第３，第４または第５の発明において前記実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みは、Ｊａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＥＪＢ）である、ことを特徴とする。
【００１５】
本願第７の発明のコンパイル方法は、ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル方法であって、前記ビジネスプロセス定義に記述された要素群を解析するステップと、前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成するステップと、前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には前記ロングタスクイベントの実行時にデータの保存を行うことを表す中間コードを生成するステップと、前記生成した中間コードをコンパイルして実行可能なプログラムを生成するステップと、を含む、ことを特徴とする。
【００１６】
本願第８の発明のコンパイル方法は、第７の発明において前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成するステップを含む、ことを特徴とする。
【００１７】
本願第９の発明のコンパイル方法は、第７または第８の発明において前記生成した中間コードからＪａｖａ（登録商標）コードを生成するステップと、前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成するステップと、を含む、ことを特徴とする。
【００１８】
本願第１０の発明のコンパイル方法は、第７，第８または第９の発明において前記ビジネスプロセス定義は、Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＢＰＥＬ４ＷＳ）で記述される、ことを特徴とする。
【００１９】
本願第１１の発明のコンパイル方法は、第９または第１０の発明において前記Ｊａｖａ（登録商標）コードは、実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みに対応したＪａｖａ（登録商標）コードである、ことを特徴とする。
【００２０】
本願第１２の発明のコンパイル方法は、第９，第１０または第１１の発明において前記実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みはＪａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＥＪＢ）である、ことを特徴とする。
【００２１】
本願第１３の発明のプログラムは、ビジネスプロセス定義を入力して実行可能なプログラムを生成するコンパイル装置のプログラムであって、コンパイラ装置に、前記ビジネスプロセス定義に記述された要素群を解析する機能、前記要素が短時間で完了する処理（ショートタスクイベント）の場合には連続して実行することを表す中間コードを生成する機能、前記要素が長い待ち時間が発生し得る処理（ロングタスクイベント）の場合には処理の実行時にデータの保存を行うことを表す中間コードを生成する機能、前記生成した中間コードをコンパイルして実行可能なプログラムを生成する機能、を実現させる。
【００２２】
本願第１４の発明のプログラムは、第１３の発明において前記ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードおよび前記イベント開始処理と前記イベント終了処理との間でデータの保存を行うことを表す中間コードを生成する機能、を実現させる。
【００２３】
本願第１５の発明のプログラムは、第１３または第１４の発明において前記生成した中間コードからＪａｖａ（登録商標）コードを生成する機能、前記生成したＪａｖａ（登録商標）コードをコンパイルして実行可能なプログラムを生成する機能、を実現させる。
【発明の効果】
【００２４】
本発明の効果は、データ保存とビジネスプロセスの処理性能のバランスを考慮した実行可能なプログラムを生成することができることである。
【００２５】
その理由は、短時間で処理が完了するイベントは連続実行し、長い待ち時間が発生し得るイベントはその実行タイミングに合わせてデータの保存を行うことを表す中間コードを生成するようにしたからである。
【発明を実施するための最良の形態】
【００２６】
企業内でのナレッジマネジメントや情報の共有化が進む中で、業務効率の向上や新しいサービスを立案するために、既存システムやパートナ企業のシステムとの連携が図られている。近年、このようなシステム連携を行うために、既存のシステムやサービスを利用するためのＷｅｂサービスが提供されるようになり、これらのＷｅｂサービスを組み合わせて、新たなサービスを記述するビジネスプロセス定義とそれを解釈し、処理を実行するシステムが求められている。
【００２７】
ビジネスプロセス定義は、利用するＷｅｂサービスと交換するデータの処理や実行制御を記述し、プロセス実行制御部は、ビジネスプロセス定義に基づいた処理を実行する。特に、プロセス実行制御部には、サービスの信頼性を向上させるために、異常や障害時の処理およびそのリカバリが速やかに行えることへの要求が高まっている。そこで、長期間にわたるビジネスプロセスの実行を実現するために、ビジネスプロセスの実行途中でプロセス実行プログラムの実行時のデータをデータベースや記憶装置に保存することが行われている。
【００２８】
本発明は、ビジネスプロセス定義を解析して中間コードを生成し、中間コードからＪａｖａ（登録商標）コードを生成してコンパイルし、実行可能プログラムを生成する。このとき、ビジネスプロセス定義を解析して障害発生により失われる情報量と実行速度との最適なバランス点を見つけ出し、それを反映した中間コードを生成することを特徴としている。
【００２９】
このように、障害発生により失われる情報を最小限にし、実行速度を確保する実行可能なプログラムを生成するので、生成したプログラム実行時のデータ保存の最適化が行える。
【００３０】
なお、本発明で取り扱うビジネスプロセス定義は、短時間で終了する処理（ショートタスク）と長い待ち時間が発生し得る処理（ロングタスク）とを表現できる言語であるものとする。その１例がＢｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＢＰＥＬ４ＷＳ）である。ＢＰＥＬ４ＷＳについては後述する。また、生成するＪａｖａ（登録商標）コードは、実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みに対応したＪａｖａ（登録商標）コードであるものとする。実行時にオブジェクトの永続化を行うことができるＪａｖａ（登録商標）の仕組みの１例として、Ｊａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（ＥＪＢ）が挙げられる。
【００３１】
次に、本発明を実施するための最良の形態について、図面を用いて詳細に説明する。
図１は本発明の構成を示す図である。
図２はＢＰＥＬ４ＷＳに従って記述されたビジネスプロセス定義の例を示す図である。
【００３２】
本実施例のコンパイル装置の構成を説明する前に、先ず、本コンパイル装置が扱うビジネスプロセス定義について説明する。ビジネスプロセス定義にはＷｅｂサービスの呼び出しやデータのコピーなどのイベントが記述される。その書式は特に指定はないが、本実施例が取り扱うビジネスプロセス定義の書式として、ＯＡＳＩＳ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ＴＣで標準化が進められているＢｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（以降、ＢＰＥＬ４ＷＳと称す）を用いる。図２に、ＢＰＥＬ４ＷＳに従って記述されたビジネスプロセス定義の例を示す。
【００３３】
ＢＰＥＬ４ＷＳでは、ビジネスプロセス定義のルート要素としてｐｒｏｃｅｓｓ要素が定義され、その中にイベントや変数を表す要素を記述していく。
【００３４】
本実施例では、ＢＰＥＬ４ＷＳで定義されるｖａｒｉａｂｌｅ要素，ｐａｒｔｎｅｒＬｉｎｋ要素およびｃｏｒｒｅｌａｔｉｏｎＳｅｔ要素を永続対象変数として扱うこととする。また、アクティビティとして定義されている要素をイベントとして扱うこととする。
【００３５】
以降の説明では、ＢＰＥＬ４ＷＳのアクティビティのうち、以下のものをショートタスクのイベントとして扱う。
・ｓｅｑｕｅｎｃｅ要素（子要素に定義されたアクティビティを記述された順番に実行する）。
・ｆｌｏｗ要素（子要素に定義されたアクティビティを並列実行する）。
・ｗｈｉｌｅ要素（指定された条件の間、子要素に定義されたアクティビティを繰り返し実行する）。
・ｓｗｉｔｃｈ要素（指定された条件により分岐されたアクティビティを実行する）。
・ａｓｓｉｇｎ要素（指定されたデータを一方から他方へコピーする）。
・ｒｅｐｌｙ要素（指定されたメッセージをｒｅｃｅｉｖｅ要素で受信したメッセージの送信元へ返信する）。
・ｅｍｐｔｙ要素（何もしない）。
・ｔｅｒｍｉｎａｔｅ要素（ビジネスプロセスを終了する）。
【００３６】
また、以下のものをロングタスクのイベントとして扱う。
・ｒｅｃｅｉｖｅ要素（指定されたメッセージを受信する）。
・ｉｎｖｏｋｅ要素（指定されたメッセージを送信し、応答を受信する）。
・ｗａｉｔ要素（指定された時間、期間待機する）。
【００３７】
また、中間コードから生成されるＪａｖａ（登録商標）コードは、Ｊａｖａ（登録商標）  ２  Ｐｌａｒｔｆｏｒｍ，  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（以降、Ｊ２ＥＥと称す）のＥｎｔｅｒｐｒｉｓｅ  Ｊａｖａ（登録商標）Ｂｅａｎｓ（以降、ＥＪＢと称す）に対応するＪａｖａ（登録商標）コードであるものとする。
【００３８】
続いて、図１を用いて、本実施例のコンパイル装置の構成を説明する。
【００３９】
図１を参照すると、本発明のコンパイル装置の一実施例は、キーボード等の入力装置１と、実行可能なプログラムを生成するコンパイル手段２と、ディスプレイ装置や印刷装置等の出力装置３と、情報を記憶する記憶装置４とを備えている。また、コンパイル装置は、全体を制御するＣＰＵ（中央処理装置、図示せず）と、ＣＰＵによって実行されるプログラムや各種データ等を格納する主記憶装置（図示せず）とを備え、プログラム制御により動作する。また、コンパイル装置は、生成した実行可能なプログラムを実行するプログラム実行手段（図示せず）を備えるようにしてもよい。
【００４０】
入力装置１は、ビジネスプロセス定義を入力する装置で、キーボード装置等である。
【００４１】
コンパイル手段２は、入力されたビジネスプロセス定義から中間コード、Ｊａｖａ（登録商標）コードを生成し、実行可能なプロセス実行プログラムを生成する。コンパイル手段２は、ビジネスプロセス定義解析手段２１と、中間コード生成手段２２と、Ｊａｖａ（登録商標）コード生成手段２３と、Ｊａｖａ（登録商標）コードコンパイル手段２４とを有している。なお、本実施例では、ビジネスプロセス定義の書式として、ＢＰＥＬ４ＷＳを用いる。
【００４２】
ビジネスプロセス定義解析手段２１は、入力装置１から入力されたビジネスプロセス定義を解析し、中間コード生成手段２２が使用するデータ（ビジネスプロセス定義変換データ）に変換して記憶装置４に格納する。図２に示すＢＰＥＬ４ＷＳに従って記述されたビジネスプロセス定義の例では、先頭データとしてｐｒｏｃｅｓｓ要素の情報があり、そのｐｒｏｃｅｓｓ要素は、ｐｒｏｃｅｓｓ要素の属性の値と、その子要素にｐａｒｔｎｅｒＬｉｎｋｓ要素，ｖａｒｉａｂｌｅｓ要素およびｓｅｑｕｅｎｃｅ要素を保持することを示している。ビジネスプロセス定義変換データは、記述されたビジネスプロセス定義を内部で処理しやすい形に変換したものである（例えば、記号化などの処置を施したものである）。ビジネスプロセス定義解析手段２１は、図２に示すＢＰＥＬ４ＷＳで表現されたビジネスプロセス定義から、ルート要素のｐｒｏｃｅｓｓ要素を先頭に、ｐａｒｔｎｅｒＬｉｎｋやｖａｒｉａｂｌｅなどの変数要素ならびにｒｅｃｅｉｖｅやａｓｓｇｉｎなどのイベント要素がビジネスプロセス定義に記述された入れ子構造と同じ関係を保持したデータ（ビジネスプロセス定義変換データ）を生成する。また、ビジネスプロセス定義解析手段２１は、解析中にビジネスプロセス定義の文法ミスなどを検出した場合、出力装置３にメッセージを表示する。
【００４３】
中間コード生成手段２２は、ビジネスプロセス定義変換データを記憶装置４から読み出し、ビジネスプロセス定義変換データに基づいて、Ｊａｖａ（登録商標）コード生成手段２３が使用する中間コードを生成する。生成した中間コードを記憶装置４に格納する。例えば、図２に示すビジネスプロセス定義から生成されたビジネスプロセス定義変換データを入力して、先頭データとしてｐｒｏｃｅｓｓ要素の情報を取得し、先頭データに対する子要素のデータを取得することで、ｐａｒｔｎｅｒＬｉｎｋｓやｖａｒｉａｂｌｅｓならびにｓｅｑｕｅｎｃｅ要素の情報を取得する。子要素がなくなるまで中間コード生成処理を行う。また、中間コード生成手段２２は、中間コード生成中に、必要なデータの欠落やミスを検出した場合、出力装置３にメッセージを表示する。中間コード生成手段２２は、要素判別手段２２１と、クラス宣言中間コード生成手段２２２と、永続対象変数定義中間コード生成手段２２３と、ショートタスク中間コード生成手段２２４と、ロングタスク中間コード生成手段２２５とを有している。
【００４４】
要素判別手段２２１は、ビジネスプロセス定義に記述される要素を、以下のように分類する。なお、ショートタスクとロングタスクの分類の方針は、メッセージの送受信に関係する処理とタイマ処理に着目している。
（１）ルート要素。
（２）永続対象変数要素。
（３）ネットワークを介したメッセージの交換やタイマの起動待ちなどの長期にわたって実行されるイベント（ロングタスクイベント）。
（４）データのコピーやデータの値の評価など短時間で処理が完了するイベント（ショートタスクイベント）。
【００４５】
クラス宣言中間コード生成手段２２２は、要素判別手段２２１がルート要素と判別した要素から、Ｊａｖａ（登録商標）のクラス宣言に相当するコードを出力する中間コードを生成する。
【００４６】
永続対象変数定義中間コード生成手段２２３は、要素判別手段２２１が永続対象変数要素と判別した要素から、永続すべきデータの宣言を行う中間コードを生成する。
【００４７】
ショートタスク中間コード生成手段２２４は、要素判別手段２２１がショートタスクであると判別したイベント要素から、イベント要素が処理すべき内容に対応する中間コードを生成し、更に連続して実行する意味を表す中間コードを生成する。
【００４８】
ロングタスク中間コード生成手段２２５は、要素判別手段２２１がロングタスクであると判別したイベント要素から、イベント要素が処理すべき内容に対応する中間コードをイベント開始処理とイベント終了処理とに分割して実行することを表す中間コードを生成する。
【００４９】
Ｊａｖａ（登録商標）コード生成手段２３は、中間コード生成手段２２が処理すべき要素がなくなったら、中間コード生成手段２２によって生成された中間コードを記憶装置４から入力し、中間コードからＪａｖａ（登録商標）コードを生成する。生成したＪａｖａ（登録商標）コードを記憶装置４に格納する。Ｊａｖａ（登録商標）コード生成中に、必要なデータの欠落やミスを検出した場合、出力装置３にメッセージを表示する。Ｊａｖａ（登録商標）コード生成手段２３は、Ｊ２ＥＥのＥＪＢに対応するＪａｖａ（登録商標）コードを生成する。
【００５０】
Ｊａｖａ（登録商標）コードコンパイル手段２４は、Ｊａｖａ（登録商標）コード生成手段２３によって生成されたＪａｖａ（登録商標）コードを記憶装置４から入力してコンパイルし、実行可能なプロセス実行プログラムを生成する。生成した実行可能なプロセス実行プログラムを記憶装置４に格納する。コンパイル時にエラーが発生した場合、出力装置３にメッセージを表示する。なお、生成されたプロセス実行プログラムが実行される場合、生成されたプロセス実行プログラムは、ショートタスクに分類されるイベントの終了時には、実行時のデータの保存処理を行わないで次のイベントを連続して実行するように動作する。また、ロングタスクに分類されるイベントの場合には、イベントの開始処理とイベントの終了処理の間で処理が一時中断され、このタイミングで実行時のデータの保存が行われるように動作する。
【００５１】
出力装置３は、コンパイル手段２がメッセージを出力する装置で、例えばプリンタ装置やディスプレイ装置等である。
【００５２】
記憶装置４は、コンパイル手段２に含まれる各手段が各種データを格納する装置で、例えば磁気ディスク装置等である。Ｊａｖａ（登録商標）コードコンパイル手段２４がコンパイルして生成した実行可能なプロセス実行プログラムも格納される。
【００５３】
次に、本発明を実施するための最良の形態の動作について、図１〜図１２を参照して詳細に説明する。
【００５４】
先ず、コンパイル手段２の動作概要について、図１および図３を用いて説明する。
図３はコンパイル手段２のフローを示す図である。
【００５５】
ステップＡ１において、ビジネスプロセス定義解析手段２１は、入力装置１から供給されたビジネスプロセス定義を解析し、中間コード生成手段２２が処理するデータに変換する。
【００５６】
ステップＡ２において、ビジネスプロセス定義解析手段２１は、ステップＡ１で解析した結果を評価する。供給されたビジネスプロセス定義の書式や文法が誤っている場合、出力装置３にその誤り内容を表示し（ステップＡ１０）、以後の処理を実行しない。
【００５７】
ステップＡ３において、中間コード生成手段２２は、ビジネスプロセス定義解析手段２１から供給されたビジネスプロセス定義を表す解析済みデータを用いて、Ｊａｖａ（登録商標）コード生成手段２３が扱う中間コードを生成する。
【００５８】
ステップＡ４において、中間コード生成手段２２が中間コードの生成に成功したかを評価する。失敗した場合は、出力装置３にその内容を表示し（ステップＡ１０）、以後の処理を実行しない。
【００５９】
ステップＡ５において、Ｊａｖａ（登録商標）コード生成手段２３は、中間コード生成手段２２が生成した中間コードから、Ｊ２ＥＥのＥＪＢに対応するＪａｖａ（登録商標）コードを生成する。
【００６０】
ステップＡ６において、Ｊａｖａ（登録商標）コード生成手段２３がＪａｖａ（登録商標）コードの生成に成功したかを評価する。失敗した場合は、出力装置３にその内容を表示し（ステップＡ１０）、以後の処理を実行しない。
【００６１】
ステップＡ７において、Ｊａｖａ（登録商標）コードコンパイル手段２４は、Ｊａｖａ（登録商標）コード生成手段２３が生成したＪａｖａ（登録商標）コードをコンパイルし、実行可能プログラムを生成する。
【００６２】
ステップＡ８において、Ｊａｖａ（登録商標）コードコンパイル手段２４が実行可能プログラムの生成に成功したかを評価する。失敗した場合は、出力装置３にその内容を表示し（ステップＡ１０）、以後の処理を実行しない。
【００６３】
ステップＡ９において、Ｊａｖａ（登録商標）コードコンパイル手段２４は、生成した実行可能プログラムを記憶装置４に保存する。
【００６４】
次に、中間コード生成手段２２が中間コードを生成する動作について、図１，図４および図１０を用いて説明する。
図４は中間コード生成手段２２が中間コードを生成するフローを示す図である。
図１０は中間コードの構成例を示す図である。
【００６５】
中間コードは、１つのクラス宣言メソッドと複数のタスクメソッドからなり、クラス宣言メソッドおよびタスクメソッドにはフラグメントが格納されている構成をとる。図１０に中間コードの構成例を示す。
【００６６】
図４のステップＢ１で、中間コード生成手段２２は、ビジネスプロセス定義解析手段２１が生成したデータ（ビジネスプロセス定義変換データ）を取得する。
【００６７】
ステップＢ２，ステップＢ４およびステップＢ６で、要素判別手段２２１は、取得したデータからビジネスプロセス定義の要素を取り出し、ＢＰＥＬ４ＷＳのｐｒｏｃｅｓｓ要素，永続対象変数要素，ショートタスクイベントあるいはロングタスクイベントのいずれかであるかを評価する。
【００６８】
取り出した要素がｐｒｏｃｅｓｓ要素であった場合、ステップＢ３へ遷移する。
【００６９】
取り出した要素が永続対象変数要素であった場合、ステップＢ５へ遷移する。
【００７０】
取り出した要素がロングタスクイベント（例えば、ＢＰＥ４ＷＳのｒｅｃｅｉｖｅ要素）であった場合、ステップＢ７へ処理が遷移する。
【００７１】
取り出した要素がショートタスクイベント（例えば、ＢＰＥＬ４ＷＳのａｓｓｉｇｎ要素）であった場合、ステップＢ８へ処理が遷移する。
【００７２】
ステップＢ３では、クラス宣言中間コード生成手段２２２による処理を行う。すなわち、Ｊａｖａ（登録商標）のクラス宣言に相当するコードを出力する中間コードを生成する（図１０に示す中間コードのクラス宣言メソッドを参照）。
【００７３】
ステップＢ５では、永続対象変数定義中間コード生成手段２２３による処理を行う。すなわち、永続すべきデータの宣言を行う中間コードを生成する（図１０に示す中間コードのＨ２，Ｈ３を参照）。
【００７４】
ステップＢ７では、ロングタスク中間コード生成手段２２５による処理を行う。すなわち、ロングタスクイベントをイベント開始処理とイベント終了処理に分割して実行することを表す中間コードを生成する（図１０に示す中間コードのＨ４〜Ｈ５，Ｈ６〜Ｈ７等を参照）。
【００７５】
ステップＢ８では、ショートタスク中間コード生成手段２２４による処理を行う。すなわち、ショートタスクイベントを連続して実行する意味を表す中間コードを生成する（図１０に示す中間コードのＨ１４〜Ｈ１５，Ｈ１６〜Ｈ１７等を参照）。
【００７６】
ステップＢ３，ステップＢ５，ステップＢ７あるいはステップＢ８の処理終了後、ステップＢ９で、取得したデータに未処理のデータが存在するかを評価する。未処理のデータが存在した場合はステップＢ４に戻り、同様の処理を繰り返す。未処理のデータが存在しなくなった場合に処理を終了する。
【００７７】
次に、クラス宣言中間コード生成手段２２２の処理について、図５を用いて説明する。
図５はクラス宣言中間コード生成手段２２２の処理フローを示す図である。
【００７８】
図５のステップＣ１で、クラス宣言中間コード生成手段２２Ｂは、中間コードにクラス宣言メソッドを生成する。
【００７９】
ステップＣ２で、メソッド選択フラグメントを生成する。このメソッド選択フラグメントは、イベント要素によって生成されるタスクメソッドの選択処理を行うものである。
【００８０】
ステップＣ３で、ステップＣ１で生成したクラス宣言メソッドにステップＣ２で生成したメソッド選択フラグメントを追加する。
【００８１】
ステップＣ４で、中間コードに新規タスクメソッドを生成する。
【００８２】
ステップＣ５で、中間コードが持つ編集中メソッドとして、ステップＣ４で生成したタスクメソッドを指定し、処理を終了する。
【００８３】
次に、永続対象変数定義中間コード生成手段２２３の処理について、図６を用いて説明する。
図６は永続対象変数定義中間コード生成手段２２３の処理フローを示す図である。
【００８４】
図６のステップＤ１で、永続対象変数定義中間コード生成手段２２３は、永続対象変数定義フラグメントを生成する。この永続対象変数定義フラグメントは、ロングタスクイベントのイベント開始処理とイベント終了処理の間に永続化されるデータを表すものである。
【００８５】
ステップＤ２で、ステップＤ１で生成した永続対象変数定義フラグメントをクラス宣言メソッドの最後に追加し、処理を終了する。
【００８６】
次に、ショートタスク中間コード生成手段２２４の処理について、図７を用いて説明する。
図７はショートタスク中間コード生成手段２２４がショートタスクイベント実行中間コードを生成するフローを示す図である。
【００８７】
図７のステップＥ１で、ショートタスクイベントのうち、ＢＰＥＬ４ＷＳのｓｗｉｔｃｈ要素のように条件分岐するイベントであるかを判別する。
【００８８】
ステップＥ１で条件分岐イベントと評価した場合、ステップＥ２へ遷移する。
【００８９】
ステップＥ１で条件分岐でないイベントであると判別した場合、ステップＥ３へ遷移する。
【００９０】
ステップＥ３では、対応するイベントの処理を表すイベント実行フラグメントを生成する。例えば、ＢＰＥＬ４ＷＳのａｓｓｉｇｎ要素が指定された場合、データのコピーを行うフラグメントが生成される。
【００９１】
ステップＥ４では、ステップＥ３で生成したイベント実行フラグメントを中間コードが持つ編集中メソッドの最後に追加して、処理を終了する。
【００９２】
ステップＥ２では、条件分岐イベント実行フラグメントの生成を行う。
【００９３】
次に、ステップＥ２で行う条件分岐イベント実行フラグメントの生成処理について、図８を用いて説明する。
図８は条件分岐イベント実行フラグメントの生成処理フローを示す図である。
【００９４】
図８のステップＦ１で、中間コードが持つ編集中メソッドを記憶しておく。
【００９５】
ステップＦ２で、新規タスクメソッドを生成する。ここで生成したタスクメソッドは、この条件評価イベントが成立した場合、その子要素のイベント実行後に連続して実行されるものである。
【００９６】
ステップＦ３で、ステップＦ２で生成したタスクメソッドを呼ぶノーウェイトロングタスクフラグメントを生成する。このノーウェイトロングタスクフラグメントは、タスクメソッドが分割されていても、永続対象変数の永続処理を行わずに、続けて指定されたタスクメソッドを実行し、イベント連続実行することをあらわす中間コードである。
【００９７】
ステップＦ４で、条件評価を開始する条件評価開始フラグメントを生成する。
【００９８】
ステップＦ５で、ステップＦ４で生成した条件評価開始フラグメントをステップＦ１で記憶したタスクメソッドの最後に追加する。
【００９９】
ステップＦ６で、新規タスクメソッドを生成する。ここで生成したタスクメソッドは、この条件評価イベントが成立した場合、その子要素のイベントのフラグメントが格納されるもので、条件評価成立後、連続して実行される。
【０１００】
ステップＦ７で、ステップＦ６で生成したタスクメソッドを中間コードが持つ編集中メソッドに指定する。
【０１０１】
ステップＦ８で、条件評価イベントの子要素のフラグメント生成を行う。ステップＦ８の処理は、図４のステップＢ６以降の処理と同じものとなる（入れ子処理を行う）。
【０１０２】
ステップＦ９で、ステップＦ３で生成したノーウェイトロングタスクフラグメントを中間コードが持つ編集中メソッドの最後に追加する。
【０１０３】
ステップＦ１０で条件評価の終了を表す条件評価終了フラグメントを生成する。
【０１０４】
ステップＦ１１で、ステップＦ１０で生成した条件評価終了フラグメントをステップＦ１で記憶したタスクメソッドの最後に追加する。
【０１０５】
ステップＦ１２で、条件分岐イベントがその他の条件分岐を保持しているかを評価する。その他の条件分岐が存在した場合、ステップＦ４からの処理を繰り返す。その他の条件分岐が存在しない場合は処理を終了する。
【０１０６】
次に、ロングタスク中間コード生成手段２２５の処理について、図９を用い説明する。
図９はロングタスク中間コード生成手段２２５がロングタスクイベント実行中間コードを生成するフローを示す図である。
【０１０７】
図９のステップＧ１で、イベント開始処理実行フラグメントを生成する。イベント開始処理実行フラグメントは、例えば、ＢＰＥＬ４ＷＳのｒｅｃｅｉｖｅ要素が指定された場合、指定された宛先のメッセージが到着するまで待機する処理を表すものである。
【０１０８】
ステップＧ２で、ステップＧ１で生成したイベント開始処理実行フラグメントを中間コードが持つ編集中メソッドの最後に追加する。
【０１０９】
ステップＧ３で、中間コードの編集中メソッドを終了させる。コンパイルされたコードの実行時、このメソッドの終了とともに、永続対象変数の内容が永続化される。
【０１１０】
ステップＧ４で、新規タスクメソッドを生成する。このタスクメソッドは、ロングタスクイベントのイベント終了処理に相当するフラグメントが格納されるものである。
【０１１１】
ステップＧ５で、中間コードが持つ編集中メソッドにステップＧ４で生成したタスクメソッドを指定する。
【０１１２】
ステップＧ６で、ロングタスクイベントのイベント終了処理フラグメントを生成する。例えば、ＢＰＥＬ４ＷＳのｒｅｃｅｉｖｅ要素に対して生成されたイベント終了処理フラグメントは、受信したメッセージを永続対象変数に格納する。
【０１１３】
ステップＧ７で、ステップＧ６で生成したイベント終了処理フラグメントを中間コードが持つ編集中メソッドの最後に追加して処理を終了する。
【０１１４】
次に、中間コードについて、図１０を用いて説明する。
【０１１５】
中間コード生成手段２２が、図２で示されるＢＰＥＬ４ＷＳで記述したビジネスプロセス定義から生成した中間コードの模式図は、図１０のようになる。
【０１１６】
中間コード生成手段２２がロングタスクイベントを見つけ、処理をイベント開始と終了に分けて中間コードを生成する処理について、図２のｒｅｃｅｉｖｅ要素を例に図１０を参照して説明する。イベント開始処理実行フラグメント（図１０のＨ４）とイベント終了処理フラグメント（図１０のＨ５）に分割され、それぞれタスクメソッド０とタスクメソッド１に格納されている部分で表現されている。
【０１１７】
ノーウェイトロングタスクフラグメント（図１０のＨ９，Ｈ１２，Ｈ１５およびＨ１７）は、それが実行されると、指定されたタスクメソッドのフラグメントを続けて実行することを表している。例えば、Ｈ１５のノーウェイトロングタスクが実行されると、タスクメソッド３に引き続いて、タスクメソッド５のＨ１８のイベント実行フラグメントが実行されることを表している。
【０１１８】
次に、Ｊａｖａ（登録商標）コード生成手段２３が、中間コード生成手段２２が生成した図１０の中間コードからＪａｖａ（登録商標）コードを生成する動作について、図１０，図１１および図１２を用いて説明する。
図１１は生成したＪａｖａ（登録商標）コードの例を示す図である。
図１２は生成したＪａｖａ（登録商標）コードの例を示す図である。
【０１１９】
Ｊａｖａ（登録商標）コード生成手段２３が、中間コード生成手段２２が生成した図１０の中間コードからＪａｖａ（登録商標）コードを生成した例を図１１と図１２に示す。
【０１２０】
まず、Ｊａｖａ（登録商標）コード生成手段２３は、中間コード生成手段２２が生成した中間コードを受け取ると、図１１のＪａｖａ（登録商標）コードを生成する。生成内容は中間コードによらずほぼ同じで、異なる箇所は、図１１のＩ１中ＪｏｂＦｌｏｗＣｏｒｅというＪａｖａ（登録商標）クラス名のところだけである。このＪｏｂＦｌｏｗＣｏｒｅというＪａｖａ（登録商標）クラスは、Ｊａｖａ（登録商標）コード生成手段２３が生成する図１２のＪａｖａ（登録商標）コードを示すものであり、Ｊａｖａ（登録商標）コード生成手段２３によって、図１１と図１２はペアで生成される。そのほか、Ｊａｖａ（登録商標）コード生成手段２３は、Ｊ２ＥＥのフレームワークに則ったＪａｖａ（登録商標）コードをいくつか生成するが、Ｊａｖａ（登録商標）コード生成手段２３の本質ではないので、ここでは説明を割愛する。
【０１２１】
次に、Ｊａｖａ（登録商標）コード生成手段２３は、中間コード生成手段２２が生成した中間コードに基づいて、図１２のＪａｖａ（登録商標）コードを生成する。Ｊａｖａ（登録商標）コード生成手段２３は、図１０のクラス宣言メソッドから図１２のクラス名であるＪｏｂＦｌｏｗＣｏｒｅの宣言を出力し、図１２のＪ１のコンストラクタのメソッド宣言を出力する。
【０１２２】
次に、図１０のクラス宣言メソッドに格納されるＨ１〜Ｈ３のフラグメントを処理する。Ｈ１のフラグメントから、図１２のＪ２のｏｎＭｅｓｓａｇｅメソッド、ｉｎｉｖｏｋｅメソッド、ｓｅｌｅｃｔＡｎｄＩｎｖｏｋｅメソッドを出力する。ｓｅｌｅｃｔＡｎｄＩｎｖｏｋｅメソッド内のｃａｓｅ文は、図１０のタスクメソッドの数に合わせて出力される。図１０のＨ２とＨ３のフラグメントからは、図１２のＪ１の永続対象変数の定義を出力する。ここで、図１０のクラス宣言メソッド内でのＨ２とＨ３の並びは図２のビジネスプロセス定義でのｐａｒｔｎｅｒＬｉｎｋ、ｖａｒｉａｂｌｅの出現順序には依存しないものである。
【０１２３】
次に、図１０のタスクメソッド０〜タスクメソッド５にあわせて、図１２のＪ３で示されるメソッドｔａｓｋＭｅｔｈｏｄ０〜ｔａｓｋＭｅｔｈｏｄ５を出力する。図１２のＪ３のそれぞれのメソッドの内容は、図１０のタスクメソッドに格納されているフラグメントにより決まる。例えば、図１０のタスクメソッド０のＨ４のフラグメントからは、図１２のＪ３のｔａｓｋＭｅｔｈｏｄ０のｒｅｃｅｉｖｅ要素で指定されたメッセージの受信要求処理に該当するＪａｖａ（登録商標）コードが出力される。
【０１２４】
図１１のＪａｖａ（登録商標）コードは、図１２のＪａｖａ（登録商標）コードで表されるクラスのインスタンスを永続対象としており、図１２のＪａｖａ（登録商標）コードで表されるクラスのインスタンス変数が永続対象となる。つまり、図１２のＪ１で示される変数が永続データとなる。データが永続されるは、図１１のＩ１のｏｎＭｅｓｓａｇｅメソッドが呼ばれて正常に終了したとき、つまり、図１２のＪ２のｏｎＭｅｓｓａｇｅメソッドが正常に終了したときである。図１２のＪ２のｏｎＭｅｓｓａｇｅメソッドが終了する部分は、ビジネスプロセス定義のロングタスクイベントのイベント開始処理を実行の終了相当し、このタイミングで永続対象に指定されたデータが保存される。また、ショートタスクイベントを実行するとき、条件分岐イベントなどでタスクメソッドが分割される場合があるが、図１２のＪ２のｏｎＭｅｓｓａｇｅメソッドは、図１２のＪ１のｍＮｏＷａｉｔＬｏｎｇＴａｓｋＱｕｅｕｅにデータが残っている限り、図１２のＪ２のｓｅｌｅｃｔＭｅｔｈｏｄＡｎｄＩｎｖｏｋｅメソッドでタスクメソッドを１つ選択して実行する処理を繰り返す。
【０１２５】
このようにして、タスクメソッドを連続して実行することができる。これは、中間コードでは、ノーウェイトロングタスクフラグメントによって表現される部分である。
【０１２６】
生成されたプロセス実行プログラムは、ショートタスクに分類されるイベントの終了時には、実行時のデータの保存処理をしないで連続実行し、ロングタスクに分類されるイベントの開始処理とイベントの終了処理の間で処理が一時中断され、このタイミングで実行時のデータの保存を行う。
【０１２７】
このようにして、ロングタスクの実行に着目したデータの永続化のバランス点を検出することで、ビジネスプロセスの実行途中で発生した障害によって失われる情報を少なくし、プロセス実行プログラムの実行速度を確保することが可能となる。より詳細には、コンパイル装置によって生成されたプロセス実行プログラムが、データのコピーや値の評価などの短時間で処理が完了するイベントは連続実行することができることである。また、タイマ処理あるいは外部Ｗｅｂサービスを利用する処理におけるメッセージの送受信などの長い待ち時間が発生し得るイベントは、その実行タイミングに合わせて、データの保存が行えることにある。この結果、プロセス実行プログラムは、データの保存処理の実行数を抑えて実行されるので、保存に費やされる時間がビジネスプロセスの実行に与える影響を抑えることができ、実行速度も向上する効果を奏する。その理由は、一連の処理を記述したビジネスプロセス定義をビジネスプロセス定義の解析手段が解析した後、中間コード生成手段が短時間で終わる処理と長い待ち時間が発生し得る処理を判別して中間コードを生成することができ、この中間コードからＪａｖａ（登録商標）コード生成手段が長い待ち時間が発生し得る処理を行う箇所でデータの保存を行うＪａｖａ（登録商標）コードを生成することができることにある。
【０１２８】
本発明による上述した実施の形態において、コンパイル装置の処理動作を実行するためのプログラム等を、データとしてコンパイル装置の磁気ディスクやＲＯＭ等の記録媒体（図示せず）に記録するようにし、記録されたデータを読み出してコンパイル装置を動作させるために用いる。このように、本発明によるコンパイル装置を動作させるデータを記録媒体に記録させ、この記録媒体をインストールすることによりコンパイル装置の機能が実現できるようになる。
【産業上の利用可能性】
【０１２９】
本発明によれば、Ｗｅｂサービスを用いたシステム連携装置や、複数のＷｅｂサービスを組み合わせて新規のサービスを提供する装置上で動作するプログラムの生成といった用途に適用できる。
【図面の簡単な説明】
【０１３０】
【図１】本発明の構成を示す図
【図２】ＢＰＥＬ４ＷＳに従って記述されたビジネスプロセス定義の例を示す図
【図３】コンパイラのフローを示す図
【図４】中間コード生成手段が中間コードを生成するフローを示す図
【図５】クラス宣言中間コード生成手段の処理フローを示す図
【図６】永続対象変数定義中間コード生成手段の処理フローを示す図
【図７】ショートタスク中間コード生成手段がショートタスクイベント実行中間コードを生成するフローを示す図
【図８】条件分岐イベント実行フラグメントの生成処理フローを示す図
【図９】ロングタスク中間コード生成手段がロングタスクイベント実行中間コードを生成するフローを示す図
【図１０】中間コードの構成例を示す図
【図１１】生成したＪａｖａ（登録商標）コードの例を示す図
【図１２】生成したＪａｖａ（登録商標）コードの例を示す図
【符号の説明】
【０１３１】
１    入力装置
２    コンパイル手段
３    出力装置
４    記憶装置
２１    ビジネスプロセス定義解析手段
２２    中間コード生成手段
２３    Ｊａｖａ（登録商標）コード生成手段
２４    Ｊａｖａ（登録商標）コードコンパイル手段
２２１    要素判別手段
２２２    クラス宣言中間コード生成手段
２２３    永続対象変数定義中間コード生成手段
２２４    ショートタスク中間コード生成手段
２２５    ロングタスク中間コード生成手段
【図１】
2006031173.tif 000003
【図２】
2006031173.tif 000004
【図３】
2006031173.tif 000005
【図４】
2006031173.tif 000006
【図５】
2006031173.tif 000007
【図６】
2006031173.tif 000008
【図７】
2006031173.tif 000009
【図８】
2006031173.tif 000010
【図９】
2006031173.tif 000011
【図１０】
2006031173.tif 000012
【図１１】
2006031173.tif 000013
【図１２】
2006031173.tif 000014