(57)【要約】【課題】柔軟に内容を変更可能な拡張機能を開発して利用する。【解決手段】ビジネスプロセス定義３０１では、複数の業務処理を実行する順序が定義される。拡張機能起動フィルタリング定義５０１では、起動条件式５０１３が定義される。メッセージングフック装置６０は、複数の業務サービス２０１の間で送受信されるメッセージを取得する。拡張機能起動フィルタ装置７１は、メッセージングフック装置６０により取得されたメッセージとビジネスプロセスメタ情報取得装置９１により取得されたビジネスプロセス定義３０１と拡張機能起動フィルタリング定義５０１とに基づき、上記複数の業務処理のうち、特定の業務処理が実行されるタイミングを検出する。そして、拡張機能起動フィルタ装置７１は、検出したタイミングに合わせて拡張サービス４０２に拡張処理を実行させる。【選択図】図１
2012014506.tif 000002
【特許請求の範囲】
【請求項１】
複数の業務処理を実行する順序を定義するプロセス定義を記憶装置で格納するプロセス定義格納部と、
前記プロセス定義格納部に格納されたプロセス定義で定義された順序に従って、それぞれ前記複数の業務処理の１つを処理装置で実行する複数の業務処理実行部であり、実行する業務処理で利用する情報を他の業務処理実行部から受信する処理と他の業務処理実行部により実行される業務処理で利用される情報を他の業務処理実行部へ送信する処理との少なくともいずれかを処理装置で実行する複数の業務処理実行部と、
前記複数の業務処理以外の所定の処理を拡張処理として処理装置で実行する拡張処理実行部と、
前記複数の業務処理実行部の間で送受信される情報を取得する情報取得部と、
前記情報取得部により取得された情報と前記プロセス定義格納部に格納されたプロセス定義とに基づき、前記複数の業務処理のうち、特定の業務処理が実行されるタイミングを処理装置で検出し、検出したタイミングに合わせて前記拡張処理実行部に前記拡張処理を実行させる拡張処理制御部と、
を備えることを特徴とするプロセス実行装置。
【請求項２】
所定の条件を定義するフィルタリング定義を記憶装置で格納するフィルタリング定義格納部をさらに備え、
前記拡張処理制御部は、前記情報取得部により取得された情報が前記フィルタリング定義格納部に格納されたフィルタリング定義で定義された条件を満たすかどうかを処理装置で判断し、満たすと判断した場合、当該情報を送信した業務処理実行部により実行される業務処理が前記特定の業務処理であると処理装置で判断する、請求項１のプロセス実行装置。
【請求項３】
前記フィルタリング定義格納部は、前記フィルタリング定義として、複数の条件を定義するフィルタリング定義を格納し、
前記拡張処理制御部は、前記情報取得部により取得された情報が前記フィルタリング定義格納部に格納されたフィルタリング定義で定義された１つの条件を満たし、かつ、当該情報を送信した業務処理実行部により実行される業務処理が当該フィルタリング定義で定義された他の条件を満たすかどうかを判断し、満たすと判断した場合、当該業務処理が前記特定の業務処理であると判断する、請求項２のプロセス実行装置。
【請求項４】
前記フィルタリング定義格納部は、前記フィルタリング定義として、前記複数の条件を階層化して定義するフィルタリング定義を格納し、
前記拡張処理制御部は、前記情報取得部により取得された情報と当該情報を送信した業務処理実行部により実行される業務処理とのうち、一方が前記フィルタリング定義格納部に格納されたフィルタリング定義で定義された１つの条件を満たすかどうかを判断し、満たすと判断した場合、他方が当該フィルタリング定義で当該１つの条件の下位層に定義された条件を満たすかどうかを判断する、請求項３のプロセス実行装置。
【請求項５】
前記拡張処理制御部は、検出したタイミングの前と後との少なくともいずれかで前記拡張処理実行部に前記拡張処理を実行させる、請求項１から４いずれかのプロセス実行装置。
【請求項６】
請求項１から５いずれかのプロセス実行装置を複数備え、当該プロセス実行装置間で前記プロセス定義を共有する、プロセス実行システム。
【請求項７】
複数の業務処理を実行する順序を定義するプロセス定義を記憶装置で格納するプロセス定義格納部と、前記プロセス定義格納部に格納されたプロセス定義で定義された順序に従って、それぞれ前記複数の業務処理の１つを処理装置で実行する複数の業務処理実行部であり、実行する業務処理で利用する情報を他の業務処理実行部から受信する処理と他の業務処理実行部により実行される業務処理で利用される情報を他の業務処理実行部へ送信する処理との少なくともいずれかを処理装置で実行する複数の業務処理実行部と、前記複数の業務処理以外の所定の処理を拡張処理として処理装置で実行する拡張処理実行部と、を備えるコンピュータが、前記複数の業務処理実行部の間で送受信される情報を取得し、
前記コンピュータが、取得した情報と前記プロセス定義格納部に格納されたプロセス定義とに基づき、前記複数の業務処理のうち、特定の業務処理が実行されるタイミングを処理装置で検出し、
前記コンピュータが、検出したタイミングに合わせて前記拡張処理実行部に前記拡張処理を実行させる、プロセス実行方法。
【請求項８】
複数の業務処理を実行する順序を定義するプロセス定義を記憶装置で格納するプロセス定義格納部と、前記プロセス定義格納部に格納されたプロセス定義で定義された順序に従って、それぞれ前記複数の業務処理の１つを処理装置で実行する複数の業務処理実行部であり、実行する業務処理で利用する情報を他の業務処理実行部から受信する処理と他の業務処理実行部により実行される業務処理で利用される情報を他の業務処理実行部へ送信する処理との少なくともいずれかを処理装置で実行する複数の業務処理実行部と、前記複数の業務処理以外の所定の処理を拡張処理として処理装置で実行する拡張処理実行部と、を備えるコンピュータにより実行されるプログラムであって、
前記複数の業務処理実行部の間で送受信される情報を取得する情報取得手順と、
前記情報取得手順により取得された情報と前記プロセス定義格納部に格納されたプロセス定義とに基づき、前記複数の業務処理のうち、特定の業務処理が実行されるタイミングを処理装置で検出し、検出したタイミングに合わせて前記拡張処理実行部に前記拡張処理を実行させる拡張処理制御手順と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス実行装置及びプロセス実行システム及びプロセス実行方法及びプログラムに関するものである。本発明は、特に、サービス実装に影響を与えないサービス基盤機能拡張装置に関するものである。
【背景技術】
【０００２】
プログラム言語処理実行系に備わるリフレクション機能を用いて、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ・Ｐｒｏｇｒａｍ・Ｉｎｔｅｒｆａｃｅ）を変更せずにプログラムの機能拡張を行う方法が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２４６７８９号公報
【非特許文献】
【０００４】
【非特許文献１】Ｒｏｎ  Ｔｅｎ−Ｈｏｖｅ、Ｐｅｔｅｒ  Ｗａｌｋｅｒ著、「Ｊａｖａ  Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｇｒａｔｉｏｎ  （ＪＢＩ）  １．０」、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ．、２００５年８月１７日発行
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の方法では、メタレベルにおいて旧メソッドの実行を横取りし、旧メソッドに対応する新メソッドを当該旧メソッドに代えて実行するため、柔軟に内容を変更可能な拡張機能を開発して利用することができないという課題があった。
【０００６】
本発明は、例えば、柔軟に内容を変更可能な拡張機能を開発して利用することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一の態様に係るプロセス実行装置は、
複数の業務処理を実行する順序を定義するプロセス定義を記憶装置で格納するプロセス定義格納部と、
前記プロセス定義格納部に格納されたプロセス定義で定義された順序に従って、それぞれ前記複数の業務処理の１つを処理装置で実行する複数の業務処理実行部であり、実行する業務処理で利用する情報を他の業務処理実行部から受信する処理と他の業務処理実行部により実行される業務処理で利用される情報を他の業務処理実行部へ送信する処理との少なくともいずれかを処理装置で実行する複数の業務処理実行部と、
前記複数の業務処理以外の所定の処理を拡張処理として処理装置で実行する拡張処理実行部と、
前記複数の業務処理実行部の間で送受信される情報を取得する情報取得部と、
前記情報取得部により取得された情報と前記プロセス定義格納部に格納されたプロセス定義とに基づき、前記複数の業務処理のうち、特定の業務処理が実行されるタイミングを処理装置で検出し、検出したタイミングに合わせて前記拡張処理実行部に前記拡張処理を実行させる拡張処理制御部と、
を備えることを特徴とする。
【発明の効果】
【０００８】
本発明の一の態様によれば、柔軟に内容を変更可能な拡張機能を開発して利用することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るプロセス実行装置の構成を示すブロック図。
【図２】実施の形態１に係る拡張機能起動フィルタリング定義の起動条件式の条件変数を示す表。
【図３】実施の形態１に係る起動条件式の文法を示す表。
【図４】実施の形態１に係るプロセス実行装置のハードウェア構成の一例を示す図。
【図５】実施の形態１及び２に係るプロセス実行装置の動作を示すフローチャート。
【図６】実施の形態１に係るメッセージングフック共通処理を示すフローチャート。
【図７】実施の形態２に係るプロセス実行装置の構成を示すブロック図。
【図８】実施の形態２に係る拡張機能起動フィルタリング定義の例を示す表。
【図９】実施の形態２に係るフィルタアクションの書式を示す表。
【図１０】実施の形態２に係るメッセージングフック共通処理を示すフローチャート。
【図１１】実施の形態２に係るフィルタグループ共通処理を示すフローチャート。
【図１２】実施の形態３に係るプロセス実行システムの構成を示すブロック図。
【図１３】実施の形態３に係る拡張機能起動フィルタリング定義の例を示す表。
【図１４】実施の形態３に係るフィルタアクションの書式を示す表。
【図１５】実施の形態３に係る拡張機能起動フィルタリング定義の起動条件式の条件変数を示す表。
【図１６】実施の形態３に係る起動条件式の文法を示す表。
【図１７】サービス基盤を使用した業務システム例を示すブロック図。
【図１８】アプリケーションと同じ枠組みで拡張機能を開発する方法の例を示すブロック図。
【図１９】業務サービスのコード自体に拡張機能を埋め込む方法の例を示すブロック図。
【発明を実施するための形態】
【００１０】
図１７は、サービス基盤１０（ＥＳＢ（Ｅｎｔｅｒｐｒｉｓｅ・Ｓｅｒｖｉｃｅ・Ｂｕｓ））を使用した業務システム例を示すブロック図である。
【００１１】
サービス基盤１０は、ＳＯＡ（Ｓｅｒｖｉｃｅ・Ｏｒｉｅｎｔｅｄ・Ａｒｃｈｉｔｅｃｔｕｒｅ）における基本ミドルウェアである。サービス基盤１０を使用した業務システムは、図１７に示すように、サービス基盤１０、業務システムを構成する部品である業務サービス２０１、業務サービス２０１を組み合わせて開発者が意図したフローで実行するためのビジネスプロセス定義３０１で構成される。
【００１２】
業務サービス２０１“ｔａｓｋ１”、“ｔａｓｋ２”、“ｔａｓｋ３”はメッセージＡＰＩ５１によりサービス基盤１０を介して互いにメッセージの送受信を行う。ビジネスプロセス定義３０１では、業務サービス２０１“ｔａｓｋ１”、“ｔａｓｋ２”、“ｔａｓｋ３”を順番に実行するビジネスプロセス“Ｐｒｏｃｅｓｓ１”が定義されている。
【００１３】
アプリケーションの詳細を検討するアプリケーション開発者チームと、アプリケーションを支えるハードウェアやソフトウェアといったシステムの観点で検討を行うアーキテクチャ開発者チームという、２つのチームに分けて開発が行われる。サービス基盤１０を使用した業務システムの開発では、図１７に示すように、業務サービス２０１とビジネスプロセス定義３０１の検討をアプリケーション開発者が、サービス基盤１０の検討をアーキテクチャ開発者が行う。
【００１４】
サービス基盤１０には、非特許文献１が示すＳＯＡとして標準化されたさまざまな機能が備わっているが、業務システムによっては、標準機能だけでは顧客が要求する性能・信頼性・セキュリティ等、非機能要件を満たせないことがある。このような場合、サービス基盤１０をカスタマイズしたり、サービス基盤１０に対する拡張機能４０１を開発したりする必要がある。サービス基盤１０は、通常ＩＳＶ（Ｉｎｄｅｐｅｎｄｅｎｔ・Ｓｏｆｔｗａｒｅ・Ｖｅｎｄｏｒ）のソフトウェアやＯＳＳ（Ｏｐｅｎ・Ｓｏｕｒｃｅ・Ｓｏｆｔｗａｒｅ）が利用され、開発プロジェクトの中で開発されたものではないため、サービス基盤１０自体の拡張を業務システム開発の中で行うことは難しい。そこで、アプリケーションと同じ枠組みで拡張機能４０１を開発する方法や、業務サービス２０１のコード自体に拡張機能４０１を埋め込む（業務サービス２０１のプログラムで拡張機能４０１を実装する）方法が用いられる。
【００１５】
図１８は、アプリケーションと同じ枠組みで拡張機能４０１を開発する方法の例を示すブロック図である。
【００１６】
この例は、性能監視という非機能要件に相当する拡張機能４０１を、各業務サービス２０１実行前に行うように拡張する例である。拡張機能４０１を、業務サービス２０１のようにサービスである拡張サービス４０２“性能監視”として実装して、ビジネスプロセス定義３０１の各業務サービス２０１の手前の位置に、拡張サービス４０２を配置する（この例のビジネスプロセス定義３０１では、各業務サービス２０１の直前に拡張サービス４０２が実行されるように定義されている）。
【００１７】
図１９は、業務サービス２０１のコード自体に拡張機能４０１を埋め込む方法を、特許文献１に用いられている方法を用いて実現する例を示すブロック図である。
【００１８】
特許文献１自体は、ＳＯＡに関するものでなく、Ｊａｖａ（登録商標）のリフレクション機構を利用したフックを用いて、既存コードを変更せずに機能を変更するための方法である。サービス基盤１０を用いた業務システムに適用すると、図１９に示すように業務サービス２０１の内部実装が、特許文献１の方法に対応する。業務サービス２０１の実装の中で、図１９に示すように代替処理オブジェクトに拡張機能４０１“性能監視”を実装し、代替処理定義を行うと、既存の業務サービス２０１のコードを変更せずに、サービス基盤１０の拡張が可能となる。
【００１９】
（課題１）図１８の例では、ビジネスプロセス定義３０１の中に拡張機能４０１を配置している（ビジネスプロセス定義３０１で拡張サービス４０２が実行されるタイミングを設定している）。アプリケーション開発者の開発する業務サービス２０１と、アーキテクチャ開発者の開発する拡張サービス４０２が、１つのビジネスプロセス定義３０１の中に現れるため、ビジネスプロセス定義３０１は、アプリケーション開発者とアーキテクチャ開発者の両方の知識がないと開発することができず難易度が高いという課題がある。
【００２０】
（課題２）図１９の例では、業務サービス２０１のインタフェースに対して、拡張機能４０１である代替処理オブジェクトが固定されてしまうという課題がある。このため、ビジネスプロセス定義３０１ごとに、異なった拡張機能４０１を使用することができない。また、最初のタスクでは１つの拡張機能４０１、中間のタスクでは別の拡張機能４０１、最後のタスクではさらに別の拡張機能４０１というように、ビジネスプロセス定義３０１上のタスク位置により拡張機能４０１を変更することができない。
【００２１】
図１８の方法では課題１は発生せず、図１９の方法では課題２は発生しないが、従来技術では、両方の課題を同時に解くことができない。
【００２２】
本発明の実施の形態では、これらの課題を同時に解き、サービス基盤１０を使用したシステム開発における、アプリケーション開発者とアーキテクチャ開発者の役割分担を明確化し、ビジネスプロセス定義３０１の条件により柔軟に内容を変更可能な拡張機能４０１を開発できるようになる。
【００２３】
以下、本発明の実施の形態について、図を用いて説明する。
【００２４】
実施の形態１．
図１は、本実施の形態に係るプロセス実行装置１００の構成を示すブロック図である。図２は、拡張機能起動フィルタリング定義５０１の起動条件式５０１３の条件変数を示す表である。図３は、起動条件式５０１３の文法を示す表である。
【００２５】
図１において、サービス基盤１０、業務システムを構築する部品である業務サービス２０１、業務サービス２０１を組み合わせて意図したフローで実行するためのビジネスプロセス定義３０１という基本的なサービス基盤１０を使用した業務システムに対して、サービス基盤１０に対して拡張サービス４０２により機能拡張を行うための仕組みが構成される。
【００２６】
プロセス実行装置１００は、メッセージングフック装置６０、サービス定義情報取得装置８１、ビジネスプロセスメタ情報取得装置９１、拡張機能起動フィルタ装置７１、拡張メッセージＡＰＩ５２を備える。メッセージングフック装置６０は、サービス基盤１０と業務サービス２０１の間の通信を横取りして処理する。サービス定義情報取得装置８１は、業務サービス２０１を解析して実行中の業務サービス２０１の情報（サービス情報）を取得する。ビジネスプロセスメタ情報取得装置９１は、ビジネスプロセス定義３０１から実行中のビジネスプロセスのメタ情報（ビジネスプロセス実行情報）を取得する。拡張機能起動フィルタ装置７１は、各装置から得られる情報を基に判断して意図したタイミングで、拡張機能４０１が実装された拡張サービス４０２を起動する。拡張メッセージＡＰＩ５２は、業務サービス２０１のメッセージを処理する。
【００２７】
図示していないが、プロセス実行装置１００は、処理装置、記憶装置、入力装置、出力装置等のハードウェアを備える。ハードウェアはプロセス実行装置１００の各部によって利用される。例えば、処理装置は、プロセス実行装置１００の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置は、そのデータや情報を記憶するために利用される。また、入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
【００２８】
記憶装置において、ビジネスプロセス定義３０１を格納するプロセス定義格納部と、拡張機能起動フィルタリング定義５０１を記憶装置で格納するフィルタリング定義格納部とが実装される。ビジネスプロセス定義３０１は、複数の業務処理（例えば“ｔａｓｋ１”、“ｔａｓｋ２”、“ｔａｓｋ３”）を実行する順序を定義するデータ（例えばファイル）である。拡張機能起動フィルタリング定義５０１は、フィルタリング定義の一例であり、所定の条件を定義するデータ（例えばファイル）である。本実施の形態では、拡張機能起動フィルタリング定義５０１に複数の条件（起動条件式５０１３）が定義されている。
【００２９】
業務サービス２０１は、業務処理実行部の一例であり、上記プロセス定義格納部に格納されたビジネスプロセス定義３０１で定義された順序に従って、それぞれ上記複数の業務処理の１つ（例えば“ｔａｓｋ１”）を処理装置で実行する。業務サービス２０１は、業務処理を実行する前に、その業務処理で利用する情報（メッセージ）を他の業務サービス２０１から受信する処理を処理装置で実行する。あるいは、業務サービス２０１は、業務処理を実行した後に、他の業務サービス２０１により実行される業務処理（例えば“ｔａｓｋ２”）で利用される情報（メッセージ）を他の業務サービス２０１へ送信する処理を処理装置で実行する。
【００３０】
拡張サービス４０２は、拡張処理実行部の一例であり、上記複数の業務処理以外の所定の処理（例えば業務サービス２０１の性能を測定する処理、業務処理の実行時間を測定する処理）を拡張処理として処理装置で実行する。
【００３１】
メッセージングフック装置６０は、情報取得部の一例であり、複数の業務サービス２０１の間で送受信される情報（メッセージ）を取得する。
【００３２】
拡張機能起動フィルタ装置７１は、拡張処理制御部の一例であり、メッセージングフック装置６０により取得された情報と上記プロセス定義格納部に格納されたビジネスプロセス定義３０１（ビジネスプロセスメタ情報取得装置９１により取得される）とに基づき、上記複数の業務処理のうち、特定の業務処理（例えば“ｔａｓｋ１”）が実行されるタイミングを処理装置で検出する。このとき、拡張機能起動フィルタ装置７１は、メッセージングフック装置６０により取得された情報が上記フィルタリング定義格納部に格納された拡張機能起動フィルタリング定義５０１で定義された条件を満たすかどうかを処理装置で判断する。また、本実施の形態では、拡張機能起動フィルタ装置７１は、当該情報を送信した業務サービス２０１により実行される業務処理がその拡張機能起動フィルタリング定義５０１で定義された他の条件を満たすかどうかを処理装置で判断する。当該情報が１つの条件を満たし、かつ、当該業務処理が他の条件を満たすと判断した場合、拡張機能起動フィルタ装置７１は、当該業務処理が上記特定の業務処理であると処理装置で判断する。そして、拡張機能起動フィルタ装置７１は、上記プロセス定義格納部に格納されたビジネスプロセス定義３０１に基づき、上記特定の業務処理が実行されるタイミングを処理装置で検出する。
【００３３】
拡張機能起動フィルタ装置７１は、上記特定の業務処理が実行されるタイミングを検出すると、検出したタイミングに合わせて拡張サービス４０２に拡張処理を実行させる。例えば、拡張機能起動フィルタ装置７１は、上記特定の業務処理が実行される前に拡張サービス４０２に拡張処理（例えばその業務処理の実行時間の測定を開始する処理）を実行させる。あるいは、拡張機能起動フィルタ装置７１は、上記特定の業務処理が実行された後に拡張サービス４０２に拡張処理（例えばその業務処理の実行時間の測定を終了する処理）を実行させる。
【００３４】
以下、さらにプロセス実行装置１００の各部について説明する。
【００３５】
拡張メッセージＡＰＩ５２は、前述したメッセージＡＰＩ５１に代わって、サービス基盤１０に対して、業務サービス２０１を通したメッセージ通信を行うＡＰＩである。
【００３６】
メッセージングフック装置６０は、業務サービス２０１に対する受信の通信内容を拡張メッセージＡＰＩ５１から受け取ることにより横取りして、拡張機能起動フィルタ装置７１に送る。メッセージングフック装置６０には、送信メッセージングフック部６０１と受信メッセージングフック部６０２が含まれる。受信メッセージングフック部６０２は、サービス基盤１０から業務サービス２０１の方向の通信、即ち、業務サービス２０１の受信方向の通信を処理する。送信メッセージングフック部６０１は、業務サービス２０１からサービス基盤１０への方向の通信、即ち、業務サービス２０１の送信方向の通信を処理する。
【００３７】
サービス定義情報取得装置８１は、メッセージングフック装置６０から得られるメッセージや実行情報と、業務サービス２０１のインタフェースを解析して、実行中の業務サービス２０１の情報を得るための装置である。図２の条件変数のうち、ｓｅｒｖｉｃｅ（実行される業務サービス２０１の情報）を得るために使用される。
【００３８】
ビジネスプロセスメタ情報取得装置９１は、メッセージングフック装置６０から得られるメッセージや実行情報と、ビジネスプロセス定義３０１を解析して、実行中のビジネスプロセス定義３０１の情報を得るための装置である。図２の条件変数のうち、ｐｒｏｃｅｓｓ（実行中のビジネスプロセスの名称）、ｔａｓｋ（ビジネスプロセスの実行中のタスク（業務サービス２０１）に関する条件）、ｔａｓｋｐ（実行中のタスク（業務サービス２０１）に定義されているパラメータ）を得るために使用される。
【００３９】
拡張機能起動フィルタ装置７１は、メッセージングフック装置６０から得られるメッセージや実行情報、ビジネスプロセスメタ情報取得装置９１から得られる実行中のビジネスプロセスのメタ情報、サービス定義情報取得装置８１から得られる実行中の業務サービス２０１の情報を基に、拡張サービス４０２を起動するかどうかが記述された拡張機能起動フィルタリング定義５０１を評価して、起動すると判断された拡張サービス４０２を起動する装置である。
【００４０】
拡張機能起動フィルタ装置７１には、実行情報解析部７１１と条件変数コンテキスト生成部７１２と拡張サービス実行部７１４と起動条件評価部７１３が含まれる。
【００４１】
実行情報解析部７１１は、送信メッセージングフック部６０１や受信メッセージングフック部６０２から得られたメッセージと実行情報を解析する。実行情報解析部７１１は、解析した結果を、条件変数コンテキスト生成部７１２に渡し、拡張機能起動フィルタリング定義５０１で使用する起動条件式５０１３で使われる条件変数を作成し、拡張サービス実行部７１４にその結果を渡して拡張サービス４０２の起動を依頼する。
【００４２】
条件変数コンテキスト生成部７１２は、実行情報解析部７１１から得たメッセージや実行情報を基に、拡張機能起動フィルタリング定義５０１の起動条件式５０１３の評価に必要な、図２に示す条件変数の値を求める。条件変数コンテキスト生成部７１２は、ビジネスプロセスメタ情報取得装置９１に依頼して条件変数ｐｒｏｃｅｓｓ，ｔａｓｋ，ｔａｓｋｐを求め、サービス定義情報取得装置８１に依頼して条件変数ｓｅｒｖｉｃｅを求め、実行情報解析部７１１から得られた情報を基に条件変数ｍｅｓｓａｇｉｎｇを求める。
【００４３】
起動条件評価部７１３は、拡張機能起動フィルタリング定義５０１の起動条件式５０１３を解析して評価する。起動条件式５０１３は全体としてｔｒｕｅ（真）かｆａｌｓｅ（偽）が結果として得られる論理式である。起動条件式５０１３の文法では、図３に示すように、等値比較、大小比較、四則演算、ａｎｄ／ｏｒ、正規表現マッチ等が可能である。
【００４４】
拡張サービス実行部７１４は、拡張機能起動フィルタリング定義５０１を評価して、評価の結果から実行すると判断した拡張サービス４０２を実行する。拡張サービス実行部７１４は、拡張機能起動フィルタリング定義５０１において、定義されている順番に（フィルタ定義ＩＤ５０１１ごとに）起動条件式５０１３を評価し、ｔｒｕｅになるフィルタ定義の拡張サービス４０２（起動サービス５０１２）を全て起動する。
【００４５】
図４は、プロセス実行装置１００のハードウェア構成の一例を示す図である。
【００４６】
図４において、プロセス実行装置１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００４７】
プロセス実行装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
【００４８】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００４９】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００５０】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００５１】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００５２】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００５３】
次に、プロセス実行装置１００の動作（本実施の形態に係るプロセス実行方法、本実施の形態に係るプログラムの処理手順）について説明する。
【００５４】
図５は、プロセス実行装置１００の動作を示すフローチャートである。図６は、メッセージングフック共通処理を示すフローチャートである。
【００５５】
業務サービス２０１“ｔａｓｋ１”から業務サービス２０１“ｔａｓｋ２”に、業務フローが遷移する場合、図５の上に示すように、“ｔａｓｋ１”を送信元（Ｓｏｕｒｃｅ）とし、“ｔａｓｋ２”を宛先（Ｄｅｓｉｔｉｎａｔｉｏｎ）としてメッセージが送信されるが、その際、メッセージ通信をサービス基盤１０が通信路として仲介する。
【００５６】
図５は、この通信における“ｔａｓｋ１”からサービス基盤１０への送信の処理の流れ（ｓｔ１）と、サービス基盤１０から“ｔａｓｋ２”への受信の処理の流れ（ｓｔ２）を示したものである。メッセージングフック処理は共通のため図６の別フローチャートに示す。
【００５７】
図５の左のサービスの送信の流れ（ｓｔ１）の動作の説明を行う。
【００５８】
（ｓｔ１１）“ｔａｓｋ１”が、業務処理における送信を行う箇所にて、宛先を“ｔａｓｋ２”として、メッセージを処理装置で作成する。
【００５９】
（ｓｔ１２）“ｔａｓｋ１”が、拡張メッセージＡＰＩ５２に備わっている送信メソッドを使用して、メッセージ送信要求を処理装置で指示する。以降は拡張メッセージＡＰＩ５２で行われる処理である。
【００６０】
（ｓｔ１３）拡張メッセージＡＰＩ５２が、送信前のメッセージ横取り処理として、メッセージとメッセージに伴う実行情報（宛先やビジネスプロセス実行情報）と、タイミングとして送信前“ｐｒｅＳｅｎｄ”を、メッセージングフック装置６０の送信メッセージングフック部６０１に送る。
【００６１】
（ｓｔ１４）図６のメッセージングフック共通処理が行われる。
【００６２】
（ｓｔ１５）拡張メッセージＡＰＩ５２が、サービス基盤１０にメッセージを送信する。これはフックされない場合にも行われる本来の処理である。
【００６３】
（ｓｔ１６）拡張メッセージＡＰＩ５２が、送信後のメッセージ横取り処理として、メッセージとメッセージに伴う実行情報（宛先やビジネスプロセス実行情報）と、タイミングとして送信後“ｐｏｓｔＳｅｎｄ”を、メッセージングフック装置６０の送信メッセージングフック部６０１に送る。
【００６４】
（ｓｔ１７）図６のメッセージングフック共通処理が行われる。
【００６５】
図５の右のサービスの受信の流れ（ｓｔ２）の動作の説明を行う。
【００６６】
（ｓｔ２１）サービス基盤１０が、“ｔａｓｋ２”の拡張メッセージＡＰＩ５２における受信処理に、“ｔａｓｋ１”から受信したメッセージを渡して処理装置で呼び出す。
【００６７】
（ｓｔ２２）拡張メッセージＡＰＩ５２が、受信処理前のメッセージ横取り処理として、メッセージとメッセージに伴う実行情報（宛先やビジネスプロセス実行情報）と、タイミングとして受信前“ｐｒｅＰｒｏｃｅｓｓ”を、メッセージングフック装置６０の受信メッセージングフック部６０２に送る。
【００６８】
（ｓｔ２３）図６のメッセージングフック共通処理が行われる。
【００６９】
（ｓｔ２４）拡張メッセージＡＰＩ５２が、“ｔａｓｋ２”の受信処理を処理装置で起動する。これはフックされない場合にも行われる本来の受信処理である。
【００７０】
（ｓｔ２５）拡張メッセージＡＰＩ５２が、受信処理後のメッセージ横取り処理として、メッセージとメッセージに伴う実行情報（宛先やビジネスプロセス実行情報）と、タイミングとして受信後“ｐｏｓｔＰｒｏｃｅｓｓ”を、メッセージングフック装置６０の受信メッセージングフック部６０２に送る。
【００７１】
（ｓｔ２６）図６のメッセージングフック共通処理が行われる。
【００７２】
図６のメッセージングフック共通処理について説明する。この処理は、メッセージングフック装置６０により横取りしたメッセージを基に、拡張機能起動フィルタ装置７１が、拡張機能起動フィルタリング定義５０１を解釈して、拡張サービス４０２を起動するまでの流れを示している。
【００７３】
この処理には、図５のメッセージ通信の送信メッセージングフック部６０１や受信メッセージングフック部６０２から、メッセージと実行情報とフックしたタイミングが渡される。
【００７４】
（ｓｔ３０１）メッセージングフック装置６０がメッセージと実行情報とタイミングを拡張機能起動フィルタ装置７１の実行情報解析部７１１に送信する。以降は、拡張機能起動フィルタ装置７１上で行われる処理である。
【００７５】
（ｓｔ３０２）実行情報解析部７１１が条件変数コンテキスト生成部７１２に、メッセージングフック装置６０から渡されたメッセージと実行情報とタイミングを渡して、起動条件式５０１３のコンテキスト生成を処理装置で依頼する。
【００７６】
（ｓｔ３０３）条件変数コンテキスト生成部７１２が、メッセージと実行情報とタイミングを渡して、ビジネスプロセスメタ情報取得装置９１に、ビジネスプロセスメタ情報の生成を処理装置で依頼する。
【００７７】
（ｓｔ３０４）ビジネスプロセスメタ情報取得装置９１が、ビジネスプロセス定義３０１から実行中のビジネスプロセス情報を解析して、条件変数ｐｒｏｃｅｓｓ，ｔａｓｋ，ｔａｓｋｐを処理装置で生成する。
【００７８】
（ｓｔ３０５）条件変数コンテキスト生成部７１２が、メッセージと実行情報とタイミングを渡して、サービス定義情報取得装置８１に、サービス定義情報の生成を処理装置で依頼する。
【００７９】
（ｓｔ３０６）サービス定義情報取得装置８１が、業務サービス２０１のインタフェースを基に実行中の業務サービス２０１の内容を解析して条件変数ｓｅｒｖｉｃｅを処理装置で生成する。
【００８０】
（ｓｔ３０７）条件変数コンテキスト生成部７１２が、メッセージとタイミングと実行情報から条件変数ｍｅｓｓａｇｉｎｇを処理装置で生成する。
【００８１】
（ｓｔ３０８）実行情報解析部７１１が、条件変数コンテキスト生成部７１２により作成された条件変数ｐｒｏｃｅｓｓ，ｔａｓｋ，ｔａｓｋｐ，ｓｅｒｖｉｃｅ，ｍｅｓｓａｇｉｎｇをパラメータとして、拡張サービス実行部７１４に、拡張サービス４０２の実行依頼を処理装置で行う。
【００８２】
（ｓｔ３０９）拡張機能起動フィルタ装置７１が、拡張機能起動フィルタリング定義５０１を上から順番に読み込みながら、フィルタ定義を取得しながらｓｔ３０９〜ｓｔ３１３をループする。
【００８３】
（ｓｔ３１０）拡張サービス実行部７１４が、起動条件評価部７１３に条件変数を渡して、現在のループ行におけるフィルタ定義の（フィルタ定義ＩＤ５０１１に対応する）起動条件式５０１３の評価を処理装置で依頼する。結果をｔｒｕｅ／ｆａｌｓｅで得る。
【００８４】
（ｓｔ３１１）ｓｔ３１０の結果がｔｒｕｅならばｓｔ３１２を実行し、ｆａｌｓｅならばｓｔ３１３を実行する。
【００８５】
（ｓｔ３１２）拡張サービス実行部７１４が、現在のループ行におけるフィルタ定義に対応する起動サービス５０１２に記述された拡張サービス４０２を処理装置で起動する。
【００８６】
（ｓｔ３１３）ループにより、フィルタリング定義の最後の行に達していなければ、ｓｔ３０９に戻る。
【００８７】
実施の形態１の効果について述べる。
【００８８】
図１に示すように、アーキテクチャ開発者が行う拡張サービス４０２を追加するために必要となる開発物は拡張サービス４０２と拡張機能起動フィルタリング定義５０１、アプリケーション開発者が行うために必要となる開発物は業務サービス２０１とビジネスプロセス定義３０１と、明確に分けることができる。アーキテクチャ開発者とアプリケーション開発者の開発対象が重なることはなく、役割分担を明確に分けることができるため、課題１を解決することができる。
【００８９】
また、拡張機能起動フィルタリング定義５０１において、条件変数ｐｒｏｃｅｓｓ，ｔａｓｋ，ｔａｓｋｐを使用することにより拡張サービス４０２の起動条件を実行中のビジネスプロセスにより制御したり、条件変数ｍｅｓｓａｇｉｎｇを用いることによりサービス基盤１０と業務サービス２０１のメッセージ通信のどの段階で拡張サービス４０２を起動するか制御したりすることができる。
【００９０】
図１の例では、“ｔａｓｋ１”を実行する前に拡張サービスＡと拡張サービスＢ、“ｔａｓｋ２”を実行する前に拡張サービスＡ、“ｔａｓｋ３”を実行する前に拡張サービスＡと拡張サービスＣというように、ビジネスプロセス上の位置（ビジネスプロセス定義３０１において、どのタイミングで実行されるように定義されているか）により、起動する拡張サービス４０２を変更することができる。
【００９１】
業務サービス２０１のインタフェースに対して拡張サービス４０２が固定されないため、課題２が解決される。
【００９２】
以上説明したように、本実施の形態に係るプロセス実行装置１００は、以下の（ａ）の業務システムに対して、（ｂ）〜（ｆ）を備えたＥＳＢサービス基盤拡張装置である。
（ａ）業務システムを構築する部品である業務サービス２０１、業務サービス２０１を組み合わせて意図したフローで実行するためのビジネスプロセス定義３０１、サービス基盤１０というサービス基盤１０を使用した業務システム。
（ｂ）送信メッセージングフック部６０１と受信メッセージングフック部６０２を備えており、サービス基盤１０と業務サービス２０１の間の通信を横取りして処理するメッセージングフック装置６０。
（ｃ）業務サービス２０１を解析して実行中の業務サービス２０１の情報を取得するサービス定義情報取得装置８１。
（ｄ）ビジネスプロセス定義３０１から実行中のビジネスプロセスのメタ情報を取得するビジネスプロセスメタ情報取得装置９１。
（ｅ）実行情報解析部７１１、条件変数コンテキスト生成部７１２、起動条件評価部７１３、拡張サービス実行部７１４を備えており、（ｂ）のメッセージングフック装置６０、（ｃ）のサービス定義情報取得装置８１、（ｄ）のビジネスプロセスメタ情報取得装置９１から得られる情報を基に、拡張機能起動フィルタリング定義５０１を評価することにより判断して意図したタイミングで拡張サービス４０２を起動する拡張機能起動フィルタ装置７１。
（ｆ）サービス基盤１０と業務サービス２０１の間のメッセージをメッセージングフック装置６０にルーティングしながら処理する拡張メッセージＡＰＩ５２。
【００９３】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００９４】
図７は、本実施の形態に係るプロセス実行装置１００の構成を示すブロック図である。図８は、拡張機能起動フィルタリング定義５０１の例を示す表である。図９は、フィルタアクション５０１５の書式を示す表である。
【００９５】
本実施の形態では、拡張機能起動フィルタリング定義５０２が、実施の形態１における拡張機能起動フィルタリング定義５０１に比べて、図８に示すように、フィルタグループＩＤ５０１４により階層化されており、フィルタグループごとに優先順位５０１６が付けられている。フィルタの起動条件式５０１３が真になった場合の動作がフィルタアクション５０１５になっている。また、図７において、拡張機能起動フィルタ装置７１の中に、フィルタグループ処理部７１５とフィルタアクション実行部７１６が追加されている。さらに、本実施の形態では、実行情報解析部７１１の処理の一部が実施の形態１と異なっている。
【００９６】
上記のように、本実施の形態では、拡張機能起動フィルタリング定義５０２に複数の条件（起動条件式５０１３）が階層化して定義されている。
【００９７】
拡張機能起動フィルタ装置７１は、メッセージングフック装置６０により取得された情報（メッセージ）と当該情報を送信した業務サービス２０１により実行される業務処理とのうち、一方が拡張機能起動フィルタリング定義５０１で定義された１つの条件を満たすかどうかを判断する。満たすと判断した場合、拡張機能起動フィルタ装置７１は、他方が拡張機能起動フィルタリング定義５０１で当該１つの条件の下位層に定義された条件を満たすかどうかを判断する。満たすと判断した場合、拡張機能起動フィルタ装置７１は、当該業務処理が上記特定の業務処理であると処理装置で判断する。そして、拡張機能起動フィルタ装置７１は、上記プロセス定義格納部に格納されたビジネスプロセス定義３０１に基づき、上記特定の業務処理が実行されるタイミングを処理装置で検出する。
【００９８】
実施の形態１と同様に、拡張機能起動フィルタ装置７１は、上記特定の業務処理が実行されるタイミングを検出すると、検出したタイミングに合わせて拡張サービス４０２に拡張処理を実行させる。
【００９９】
拡張機能起動フィルタ装置７１の各部における実施の形態１との違いを述べる。
【０１００】
条件変数コンテキスト生成部７１２、起動条件評価部７１３、拡張サービス実行部７１４は、実施の形態１と同じである。
【０１０１】
実行情報解析部７１１は、実施の形態１と同様に条件変数を作成するが、最後にフィルタグループ処理部７１５に、拡張機能起動フィルタリング定義５０２に従った拡張サービス４０２の実行処理を依頼する。
【０１０２】
フィルタグループ処理部７１５は、拡張機能起動フィルタリング定義５０２をフィルタグループＩＤ５０１４ごとにグループ化して、条件に一致する拡張サービス４０２を起動できるようにする。
【０１０３】
フィルタアクション実行部７１６は、拡張機能起動フィルタリング定義５０２のフィルタアクション５０１５を解析して実行する。フィルタアクション５０１５は図９に示すように、他のフィルタグループを処理するｅｖａｌアクションと、拡張サービス４０２を実行するｅｘｅｃアクションがある。
【０１０４】
次に、プロセス実行装置１００の動作（本実施の形態に係るプロセス実行方法、本実施の形態に係るプログラムの処理手順）について、実施の形態１との違いを中心に説明する。
【０１０５】
本実施の形態における、メッセージ通信における拡張メッセージＡＰＩ５２の処理は、実施の形態１と同じであり、図５に示す通りである。
【０１０６】
図１０は、メッセージングフック共通処理を示すフローチャートである。図１１は、フィルタグループ共通処理を示すフローチャートである。
【０１０７】
本実施の形態におけるメッセージングフック共通処理は、図１０に示すようにｓｔ３０１〜ｓｔ３０７は実施の形態１と同じである。ｓｔ３０７の後でｓｔ３０８〜ｓｔ３１３は、フィルタグループ共通処理に置き換わっており、以下のｓｔ３１４によりフィルタグループ共通処理が呼び出される。
【０１０８】
（ｓｔ３１４）実行情報解析部７１１が、拡張機能起動フィルタリング定義５０２のフィルタグループＩＤ５０１４が“ＴＯＰ”となっているグループを処理するために、フィルタグループＩＤ５０１４＝”ＴＯＰ”としてフィルタグループ共通処理を処理装置で呼び出す。
【０１０９】
実施の形態２で追加された、図１１のフィルタグループ共通処理の説明を行う。
【０１１０】
この処理にはパラメータとして、フィルタグループＩＤ５０１４（ｆｇｒｏｕｐｉｄ）、図２の各条件変数（ｐｒｏｃｅｓｓ，ｔａｓｋ，ｔａｓｋｐ，ｓｅｒｖｉｃｅ，ｍｅｓｓａｇｉｎｇ）、メッセージ（ｍｅｓｓａｇｅ）、実行情報（ｅｘｅｃＩｎｆｏ）、タイミング（ｔｉｍｉｎｇ）が渡されている。
【０１１１】
（ｓｔ４０１）フィルタグループ処理部７１５が、拡張機能起動フィルタリング定義５０２より、フィルタグループＩＤ５０１４＝ｆｇｒｏｕｐｉｄに合致する拡張機能起動フィルタリング定義５０２の行列を全て処理装置で取得する。
【０１１２】
（ｓｔ４０２）フィルタグループ処理部７１５が、取得した拡張機能起動フィルタリング定義５０２の、各行をｆ＿ｉｔｅｍとして取得しながら、ｓｔ４０３〜ｓｔ４１０をループする。
【０１１３】
（ｓｔ４０３）フィルタグループ処理部７１５が、起動条件評価部７１３に条件変数を渡して、現在のループ行におけるフィルタ定義の起動条件式５０１３の評価を処理装置で依頼する。結果をｔｒｕｅ／ｆａｌｓｅで得る。
【０１１４】
（ｓｔ４０４）ｓｔ４０３の結果がｔｒｕｅならばｓｔ４０５、ｆａｌｓｅならばｓｔ４１０に進む。
【０１１５】
（ｓｔ４０５）フィルタグループ処理部７１５が、フィルタアクション実行部７１６に、現在のループにおけるフィルタ定義ｆ＿ｉｔｅｍのフィルタアクション５０１５の実行を処理装置で依頼する。
【０１１６】
（ｓｔ４０６）フィルタアクション実行部７１６が、図９に従ってフィルタアクション５０１５を処理装置で解析して、メソッド５０１５１とパラメータ５０１５２を得る。メソッド５０１５１をｆＭｅｔｈｏｄ、パラメータ５０１５２をｆＰａｒａｍと置く。
【０１１７】
（ｓｔ４０７）ｆＭｅｔｈｏｄが“ｅｖａｌ”ならばｓｔ４０８、ｆＭｅｔｈｏｄが“ｅｘｅｃ”ならばｓｔ４０９に進む。
【０１１８】
（ｓｔ４０８）フィルタアクション実行部７１６が、拡張機能起動フィルタリング定義５０２のフィルタグループＩＤ５０１４がｆＰａｒａｍのグループを処理するために、フィルタグループＩＤ５０１４＝ｆＰａｒａｍとしてフィルタグループ共通処理を処理装置で呼び出す。
【０１１９】
（ｓｔ４０９）フィルタアクション実行部７１６が、ｆＰａｒａｍに対応する拡張サービス４０２を処理装置で起動する。
【０１２０】
（ｓｔ４１０）取得したフィルタリングの最後に達していなければｓｔ４０２からループ処理を継続する。
【０１２１】
実施の形態２の効果としては、実施の形態１と同じ効果に加えて以下の効果が得られる。
【０１２２】
実施の形態１では、メッセージングフック処理ごとに拡張機能起動フィルタリング定義５０１の全ての行の起動条件式５０１３が全て評価されていており、拡張機能起動フィルタリング定義５０１の行が多い場合には処理時間が長くなる。一方、本実施の形態では、メッセージングフックごとに必ず評価される拡張機能起動フィルタリング定義５０２の起動条件式５０１３はフィルタグループＩＤ５０１４が“ＴＯＰ”となっている行のみであり、そこから階層的に評価が必要な行のみ評価されるため、起動条件式５０１３を最小限に抑えることにより性能が改善されるというメリットがある。
【０１２３】
また、フィルタアクション５０１５のメソッドｅｖａｌを利用すると、フィルタ定義の中から、別のフィルタグループを再利用できるため、拡張機能起動フィルタリング定義５０２における開発工数を削減することができる。例えば、図８の例では、フィルタ定義ＩＤ５０１１＝“プロセス１用フィルタ”と、フィルタ定義ＩＤ５０１１＝“プロセス３用フィルタ”から、フィルタグループＩＤ５０１４＝“サービス実行時間フィルタ”のフィルタグループを再利用している。
【０１２４】
以上説明したように、本実施の形態に係るプロセス実行装置１００は、実施の形態１と同様の（ａ）の業務システムに対して、（ｅ）の拡張機能起動フィルタ装置７１が以下のようになっていて、その他は実施の形態１と同様の（ｂ）〜（ｄ）、（ｆ）を備えたＥＳＢサービス基盤拡張装置である。
（ｅ）実施の形態１と同じく実行情報解析部７１１、条件変数コンテキスト生成部７１２、起動条件評価部７１３、拡張サービス実行部７１４を備えており、さらに、フィルタグループ処理部７１５とフィルタアクション実行部７１６が追加されており、（ｂ）のメッセージングフック装置６０、（ｃ）のサービス定義情報取得装置８１、（ｄ）のビジネスプロセスメタ情報取得装置９１から得られる情報を基に、拡張機能起動フィルタリング定義５０２をフィルタグループＩＤによりグループ化した優先順位ごとに評価することにより判断して意図したタイミングで拡張サービス４０２を起動する拡張機能起動フィルタ装置７１。
【０１２５】
実施の形態３．
本実施の形態について、主に実施の形態２との差異を説明する。
【０１２６】
図１２は、本実施の形態に係るプロセス実行システム１１０の構成を示すブロック図である。図１３は、拡張機能起動フィルタリング定義５０３の例を示す表である。図１４は、フィルタアクション５０３５の書式を示す表である。図１５は、拡張機能起動フィルタリング定義５０３の起動条件式５０１３の条件変数を示す表である。図１６は、起動条件式５０１３の文法を示す表である。
【０１２７】
図１２において、プロセス実行システム１１０は、プロセス実行装置１００に相当するサーバを複数備え、サーバ間でビジネスプロセス定義３０１と拡張機能起動フィルタリング定義５０３とを共有する。
【０１２８】
本実施の形態では、複数のサーバでサービス基盤１０を通して垂直分散している構成を採用しており、実施の形態２に対して、垂直分散している複数のサーバ間で、同期しながら使用できるサーバ間共有変数１０２を保持している。サーバ間共有変数１０２は、拡張機能起動フィルタリング定義５０３のフィルタアクション５０３５や起動条件式５０１３から使用可能である。構成としては、連携装置１０１が追加されている。
【０１２９】
拡張機能起動フィルタ装置７１の各部における実施の形態２との違いを述べる。
【０１３０】
フィルタアクション実行部７１６には、サーバ間共有変数１０２を扱う機能が追加されている。図１４に示すように、フィルタアクション５０３５のメソッド５０３５１として、サーバ間共有変数１０２を更新するｖ＿ｗｒｉｔｅ、削除するｖ＿ｄｅｌｅｔｅ、取得するｖ＿ｇｅｔが追加されている。また、セミコロンで区切ることにより、複数のメソッド５０３５１を実行できる機能が追加されている。ｖ＿ｗｒｉｔｅのパラメータ５０３５２の値には、変数、数値、ｖ＿ｇｅｔの戻り値５０３５３をそのまま指定したり、図３の書式で指定したりすることができる。
【０１３１】
条件変数コンテキスト生成部７１２には、サーバ間共有変数１０２をコンテキストとして使用できる機能が追加されている。
【０１３２】
起動条件評価部７１３には、サーバ間共有変数１０２の値を取得（ｖ＿ｇｅｔ）・存在チェック（ｖ＿ｅｘｉｓｔ）する関数が追加されている。
【０１３３】
拡張サービス実行部７１４には、実施の形態２と同様の機能に加えて、連携装置１０１の拡張サービス連携部１０１２に対して、リモートで拡張サービス４０２を実行する機能を備えている。拡張機能起動フィルタリング定義５０３における実行サーバ５０３６の列が＃ｌｏｃａｌ＃ならばローカルでフィルタアクション５０３５を実行し、それ以外はサーバ名として拡張サービス連携部１０１２に送る。
【０１３４】
連携装置１０１は、拡張機能起動フィルタリング定義５０３で使用する情報や要求を、垂直分散しているサーバ間で連携させる装置である。連携装置１０１は、変数保持部１０１３、拡張サービス連携部１０１２、通信部１０１１を備える。
【０１３５】
変数保持部１０１３は、サーバ間共有変数１０２の生成・取得・更新と、通信部１０１１を通したサーバ間の同期を制御する。変数保持部１０１３は、サーバ間共有変数１０２の生成・更新を行う際には、垂直分散しているサーバとの間でサーバ間共有変数１０２の排他制御、同期、生成、更新を行う。
【０１３６】
拡張サービス連携部１０１２は、拡張サービス実行部７１４からの要求を受けて、指定されたサーバの拡張サービス実行部７１４に対して、リモートでの拡張サービス４０２の実行を要求する。
【０１３７】
通信部１０１１は、変数保持部１０１３と拡張サービス連携部１０１２で使用され、通信を行う。
【０１３８】
本実施の形態では、実施の形態２と同じ効果に加えて以下の効果が得られる。
【０１３９】
サーバ間共有変数１０２を通して、リモートの拡張サービス４０２と連携が可能となり、垂直分散しているサーバ間で、拡張サービス４０２を連携させる機能の開発が容易になる。
【０１４０】
以上説明したように、本実施の形態に係るプロセス実行装置１００は、実施の形態１と同様の（ａ）の業務システムに対して、以下の（ｇ）が追加されていて、その他は実施の形態１と同様の（ｂ）〜（ｆ）を備えたＥＳＢサービス基盤拡張装置である。
（ｇ）連携しているサーバ（プロセス実行装置１００）間で共有できる、フィルタアクションから共有できるサーバ間共有変数１０２を操作・管理・サーバ間で同期させる変数保持部１０１３と、他のサーバ上の拡張サービス４０２を実行できるようにする拡張サービス連携部１０１２と、変数保持部１０１３と拡張サービス連携部１０１２から使用される通信部１０１１を備える連携装置１０１。
【０１４１】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【符号の説明】
【０１４２】
１０  サービス基盤、５１  メッセージＡＰＩ、５２  拡張メッセージＡＰＩ、６０  メッセージングフック装置、７１  拡張機能起動フィルタ装置、８１  サービス定義情報取得装置、９１  ビジネスプロセスメタ情報取得装置、１００  プロセス実行装置、１０１  連携装置、１０２  サーバ間共有変数、１１０  プロセス実行システム、２０１  業務サービス、３０１  ビジネスプロセス定義、４０１  拡張機能、４０２  拡張サービス、５０１，５０２，５０３  拡張機能起動フィルタリング定義、６０１  送信メッセージングフック部、６０２  受信メッセージングフック部、７１１  実行情報解析部、７１２  条件変数コンテキスト生成部、７１３  起動条件評価部、７１４  拡張サービス実行部、７１５  フィルタグループ処理部、７１６  フィルタアクション実行部、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、１０１１  通信部、１０１２  拡張サービス連携部、１０１３  変数保持部、５０１１  フィルタ定義ＩＤ、５０１２  起動サービス、５０１３  起動条件式、５０１４  フィルタグループＩＤ、５０１５，５０３５  フィルタアクション、５０１６  優先順位、５０３６  実行サーバ、５０１５１，５０３５１  メソッド、５０１５２，５０３５２  パラメータ、５０３５３  戻り値。
【図１】
2012014506.tif 000003
【図２】
2012014506.tif 000004
【図３】
2012014506.tif 000005
【図４】
2012014506.tif 000006
【図５】
2012014506.tif 000007
【図６】
2012014506.tif 000008
【図７】
2012014506.tif 000009
【図８】
2012014506.tif 000010
【図９】
2012014506.tif 000011
【図１０】
2012014506.tif 000012
【図１１】
2012014506.tif 000013
【図１２】
2012014506.tif 000014
【図１３】
2012014506.tif 000015
【図１４】
2012014506.tif 000016
【図１５】
2012014506.tif 000017
【図１６】
2012014506.tif 000018
【図１７】
2012014506.tif 000019
【図１８】
2012014506.tif 000020
【図１９】
2012014506.tif 000021