(57)【特許請求の範囲】
【請求項１】
サービス実行装置と、前記サービス実行装置に接続されるビジネスプロセス管理装置とを含むビジネスプロセス管理システムにおいて、前記ビジネスプロセス管理装置から前記サービス実行装置にメッセージを送信する方法であって、
前記サービス実行装置は、前記ビジネスプロセス管理装置から送信されたメッセージに基づいて、所定のサービスを提供し、
前記ビジネスプロセス管理装置は、
プロセッサと、前記プロセッサによってアクセス可能な記憶部と、前記サービス実行装置に接続するインターフェイスと、を備え、
前記ビジネスプロセス管理装置は、前記所定のサービスの組み合わせの定義、前記サービス実行装置に送信されるメッセージの定義、及び、前記所定のサービスを呼出す処理の実行順序を含むビジネスプロセスを管理し、前記ビジネスプロセスに基づいて前記サービス実行装置に前記メッセージを送信することによって、前記サービス実行装置に前記所定のサービスを提供させ、
前記ビジネスプロセス管理装置は、前記所定のサービスを呼び出す前に、分割して送信可能なメッセージの一部又は全部である先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定する情報と、を含む先行送信部分管理情報を含み、
前記メッセージ送信方法は、
前記ビジネスプロセス管理装置が、前記先行送信部分管理情報に基づいて、前記先行送信部分の内容が決定可能となる処理が実行された後、前記先行送信部分を含むメッセージが送信されるサービスを呼び出す前に、当該サービスを提供するサービス実行装置に前記先行送信部分を送信するステップを含むことを特徴とするメッセージ送信方法。
【請求項２】
前記ビジネスプロセスには、メッセージを格納する変数の宣言と、前記サービス実行装置に送信するメッセージを格納する変数の指定と、前記サービス実行装置から受信するメッセージを格納する変数の指定と、が含まれ、
前記ビジネスプロセス管理装置は、前記メッセージを格納する変数の値を含む変数管理情報を含み、
前記先行送信部分の内容が決定可能となる処理を特定する情報は、前記サービス実行装置に送信するメッセージを格納する変数の値が決定される処理を特定する情報であり、
前記先行送信部分を送信するステップでは、
前記ビジネスプロセス管理装置は、前記サービス実行装置に送信するメッセージを格納する変数の値が決定された後、前記ビジネスプロセスと前記先行送信部分管理情報に基づいて、前記変数管理情報を更新し、
前記更新された変数管理情報と前記先行送信部分管理情報に基づいて、当該サービスを提供するサービス実行装置に前記先行送信部分を送信することを特徴とする請求項１に記載のメッセージ送信方法。
【請求項３】
前記メッセージ送信方法は、さらに、
前記ビジネスプロセス装置が、前記サービス実行装置に送信されるメッセージの定義及び前記所定のサービスを呼び出す処理の実行順序に基づいて、前記先行送信部分を特定し、
前記先行送信部分の内容が決定可能となる処理を特定し、
前記特定された先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定する情報と、を前記先行送信部分管理情報に記録するステップを含むことを特徴とする請求項１に記載のメッセージ送信方法。
【請求項４】
前記ビジネスプロセス管理システムは、前記所定のサービスに送信するメッセージの一部又は全部を格納する共有データベースを備え、
前記先行送信部分を送信するステップでは、
前記ビジネスプロセス管理装置は、前記先行送信部分を前記共有データベースに送信し、
前記サービス実行装置は、前記共有データベースから前記先行送信部分を取得することを特徴とする請求項１に記載のメッセージ送信方法。
【請求項５】
前記先行送信部分を送信するステップでは、
前記ビジネスプロセス管理装置は、前記先行送信部分のデータ量が所定の閾値よりも大きい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項１に記載のメッセージ送信方法。
【請求項６】
前記先行送信部分を送信するステップでは、
前記ビジネスプロセス管理装置は、前記サービス実行装置と前記ビジネスプロセス管理装置とを接続する経路のトラフィックが所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項１に記載のメッセージ送信方法。
【請求項７】
前記先行送信部分を送信するステップでは、
前記ビジネスプロセス管理装置は、前記ビジネスプロセス管理装置で実行されているビジネスプロセスの数が所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項１に記載のメッセージ送信方法。
【請求項８】
所定のサービスを提供するサービス実行装置に接続されるビジネスプロセス管理装置であって、
前記ビジネスプロセス管理装置は、
プロセッサと、前記プロセッサによってアクセス可能な記憶部と、前記サービス実行装置に接続するインターフェイスと、を備え、
前記ビジネスプロセス管理装置は、前記所定のサービスの組み合わせの定義、前記サービス実行装置に送信されるメッセージの定義、及び、前記所定のサービスを呼出す処理の実行順序を含むビジネスプロセスを管理し、前記ビジネスプロセスに従って前記サービス実行装置に前記メッセージを送信することによって、前記サービス実行装置に前記所定のサービスを提供させ、
前記記憶部は、前記所定のサービスを呼び出す前に、分割して送信可能なメッセージの一部又は全部である先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定するための情報と、を含む先行送信部分管理情報を記憶し、
前記プロセッサは、
前記先行送信部分管理情報に基づいて、前記先行送信部分の内容が決定可能となる処理が実行された後、前記先行送信部分を含むメッセージが送信されるサービスを呼び出す前に、当該サービスを提供するサービス実行装置に前記先行送信部分を送信することを特徴とするビジネスプロセス管理装置。
【請求項９】
前記ビジネスプロセスには、メッセージを格納する変数の宣言と、前記サービス実行装置に送信するメッセージを格納する変数の指定と、前記サービス実行装置から受信するメッセージを格納する変数の指定と、が含まれ、
前記記憶部は、前記メッセージを格納する変数の値を含む変数管理情報を含み、
前記先行送信部分管理情報に含まれる、前記先行送信部分の内容が決定可能となる処理を特定する情報は、前記サービス実行装置に送信するメッセージを格納する変数の値が決定される処理を特定する情報であり、
前記プロセッサは、
前記サービス実行装置に送信するメッセージを格納する変数の値が決定された後、前記ビジネスプロセスと前記先行送信部分管理情報に基づいて、前記変数管理情報を更新し、
前記更新された変数管理情報と前記先行送信部分管理情報に基づいて、当該サービスを提供するサービス実行装置に前記先行送信部分を送信することを特徴とする請求項８に記載のビジネスプロセス管理装置。
【請求項１０】
前記プロセッサは、
前記サービス実行装置に送信されるメッセージの定義及び前記所定のサービスを呼び出す処理の実行順序に基づいて、前記先行送信部分を特定し、
前記先行送信部分の内容が決定可能となる処理を特定し、
前記特定された先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定する情報と、を前記先行送信部分管理情報に記録することを特徴とする請求項８に記載のビジネスプロセス管理装置。
【請求項１１】
前記プロセッサは、前記先行送信部分のデータ量が所定の閾値よりも大きい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項８に記載のビジネスプロセス管理装置。
【請求項１２】
前記プロセッサは、前記サービス実行装置と前記ビジネスプロセス管理装置とを接続する経路のトラフィックが所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項８に記載のビジネスプロセス管理装置。
【請求項１３】
前記プロセッサは、前記ビジネスプロセス管理装置で実行されているビジネスプロセスの数が所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信することを特徴とする請求項８に記載のビジネスプロセス管理装置。
【請求項１４】
所定のサービスを提供するサービス実行装置に接続され、前記所定のサービスの組み合わせの定義、前記サービス実行装置に送信されるメッセージの定義、及び、前記所定のサービスを呼出す処理の実行順序を含むビジネスプロセスを管理し、前記ビジネスプロセスに従って前記サービス実行装置に前記メッセージを送信することによって、前記サービス実行装置に前記所定のサービスを提供させるビジネスプロセス管理装置で実行されるメッセージ送信プログラムであって、
前記ビジネスプロセス管理装置は、前記所定のサービスを呼び出す前に、分割して送信可能なメッセージの一部又は全部である先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定する情報と、を含む先行送信部分管理情報を含み、
前記メッセージ送信プログラムは、
前記先行送信部分管理情報に基づいて、前記先行送信部分の内容が決定可能となる処理が実行された後、前記先行送信部分を含むメッセージが送信されるサービスを呼び出す前に、当該サービスを提供するサービス実行装置に前記先行送信部分を送信する手順を前記ビジネスプロセス管理装置に実行させることを特徴とするメッセージ送信プログラム。
【請求項１５】
前記ビジネスプロセスには、メッセージを格納する変数の宣言と、前記サービス実行装置に送信するメッセージを格納する変数の指定と、前記サービス実行装置から受信するメッセージを格納する変数の指定と、が含まれ、
前記ビジネスプロセス管理装置は、前記メッセージを格納する変数の値を含む変数管理情報を含み、
前記先行送信部分管理情報に含まれる、前記先行送信部分の内容が決定可能となる処理を特定する情報は、前記サービス実行装置に送信するメッセージを格納する変数の値が決定される処理を特定する情報であり、
前記メッセージ送信プログラムは、
前記サービス実行装置に送信するメッセージを格納する変数の値が決定された後、前記ビジネスプロセスと前記先行送信部分管理情報に基づいて、前記変数管理情報を更新する手順と、
前記更新された変数管理情報と前記先行送信部分管理情報に基づいて、当該サービスを提供するサービス実行装置に前記先行送信部分を送信する手順と、を前記ビジネスプロセス管理装置に実行させることを特徴とする請求項１４に記載のメッセージ送信プログラム。
【請求項１６】
前記メッセージ送信プログラムは、
前記サービス実行装置に送信されるメッセージの定義及び前記所定のサービスを呼び出す処理の実行順序に基づいて、前記先行送信部分を特定する手順と、
前記先行送信部分の内容が決定可能となる処理を特定する手順と、
前記特定された先行送信部分と、前記特定された先行送信部分の内容が決定可能な処理を特定する情報と、を前記先行送信部分管理情報に記録する手順と、をさらに前記ビジネスプロセス管理装置に実行させることを特徴とする請求項１４に記載のメッセージ送信プログラム。
【請求項１７】
前記メッセージ送信プログラムは、前記先行送信部分のデータ量が所定の閾値よりも大きい場合に、前記先行送信部分を前記サービス実行装置に先行して送信する手順を、前記ビジネスプロセス管理装置に実行させることを特徴とする請求項１４に記載のメッセージ送信プログラム。
【請求項１８】
前記メッセージ送信プログラムは、前記サービス実行装置と前記ビジネスプロセス管理装置とを接続する経路のトラフィックが所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信する手順を前記ビジネスプロセス管理装置に実行させることを特徴とする請求項１４に記載のメッセージ送信プログラム。
【請求項１９】
前記メッセージ送信プログラムは、前記ビジネスプロセス管理装置で実行されているビジネスプロセスの数が所定の閾値よりも小さい場合に、前記先行送信部分を前記サービス実行装置に先行して送信する手順を前記ビジネスプロセス管理装置に実行させることを特徴とする請求項１４に記載のメッセージ送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビジネスプロセスの実行時間を短縮する技術に関し、特に、サービスにメッセージを送信する技術に関する。
【背景技術】
【０００２】
近年のシステム開発においては、ビジネスの変化に迅速に対応するため、システムが既に提供しているサービスを組み合わせて、ビジネスプロセスと呼ばれる新たなサービスを迅速に構築するビジネスプロセス管理システムが広く知られている。例えば特許文献１では、ビジネスプロセス管理システムに関連する発明として、複数のビジネスプロセスへのリクエスト（メッセージ）を振り分ける技術が開示されている。
【０００３】
サービスとは、計算機の主記憶装置上に記憶され、ＣＰＵによって実行されるプログラムである。サービスは、クライアントから受信した送信メッセージに従って返信メッセージを作成し、作成された返信メッセージをクライアントに返信する。サービスに対して送信メッセージを送ることを、サービスの呼び出しと呼ぶ。なお、クライアントも、計算機の主記憶装置に記憶されたプログラムであり、ＣＰＵによって実行される。
【０００４】
ビジネスプロセスは、サービスと同様に、計算機の主記憶装置上に記憶され、ＣＰＵによって実行されるプログラムである。ビジネスプロセスは、クライアントからの送信メッセージを受信し、ビジネスプロセス定義に基づいてサービスを呼び出し、当該サービスからの返信メッセージなどを利用して返信メッセージを作成し、当該返信メッセージをクライアントに返信する。
【０００５】
このようなビジネスプロセスを記述するビジネスプロセス定義言語で代表的なものとして、ＢＰＥＬ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ）が知られている。また、サービスと送受信するメッセージ構成など、サービスのインターフェイスを定義する言語で代表的なものとして、ＷＳＤＬ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）が知られている。
【０００６】
さらに、サービス及び送受信するメッセージの通信プロトコルで代表的なものとして、ＳＯＡＰが知られており、例えば、サービスの通信プロトコルにＳＯＡＰを使用することなどが、ＷＳＤＬによるサービスインターフェイス定義に記述される。
【０００７】
ＳＯＡＰは、文字ベースのＸＭＬに基づく通信プロトコルであるため、送信メッセージに含まれるバイナリデータは、ｂａｓｅ６４と呼ばれる方式などを用いて、英数字によって構成される文字列に変換される。しかし、変換後の文字列は、元のバイナリデータよりもサイズが大きくなるため、サイズの大きいバイナリデータを含むメッセージを扱うと、通信効率が悪い。そこで、ＳｗＡ（ＳＯＡＰ  Ｍｅｓｓｓａｇｅｓ  ｗｉｔｈ  Ａｔｔａｃｈｍｅｎｔｓ）、又は、ＭＴＯＭ（ＳＯＡＰ  Ｍｅｓｓａｇｅ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍ）といった、通信効率を向上させるための技術が知られている。
【０００８】
ＳｗＡ及びＭＴＯＭは、さまざまな種類のデータを通信するためのメッセージ構造を定めたＭＩＭＥを利用している。ＭＩＭＥによるメッセージ構造は、ＭＩＭＥバウンダリと呼ばれる特殊な区切り文字列によって分割された複数のデータ、及び、ＭＩＭＥバウンダリ及びデータの種類に関する制御情報が記述されたＭＩＭＥヘッダによって構成されている。また、ＭＩＭＥバウンダリによって分割された個々のデータに相当する部分をＭＩＭＥパートと呼ぶ。
【０００９】
ＳｗＡ及びＭＴＯＭでは、送信メッセージを文字ベースのＸＭＬ部分とバイナリデータ部分に分割して、それぞれを異なるＭＩＭＥパートに格納し、バイナリデータを文字列に変換せずにバイナリデータのままで送信する。受信側では、異なるＭＩＭＥパートに格納されたデータを集約して元の送信メッセージを復元する。これによってバイナリデータ部分を効率良く送信することができる。
【特許文献１】特開２００７−４４１４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ビジネスプロセス管理システムでは、サービスに送信するメッセージに含まれるデータのサイズが大きくなると、当該メッセージの送信に必要な時間が性能上のボトルネックになりやすくなる。また、複数のサービスを順番に呼び出すビジネスプロセスでは、呼び出されたサービスの処理時間及びサービスからの返信メッセージを受信するまでの待機時間が、ビジネスプロセス全体の所要時間に含まれる。
【００１１】
一方、ビジネスプロセス管理システムでは、サービス呼び出しを並行に実行することにより、呼び出したサービスからの返信を待機することと並行して、別のサービスにメッセージを送信することができる。このようにサービスを並行して実行することによって、ビジネスプロセス全体の所要時間を減らすことができる。
【００１２】
しかし、サービスを並行して実行するためには、ビジネスプロセス定義又はサービスを変更する必要があるが変更できない場合がある。例えば、ビジネスプロセスの変更に関しては、以下の理由により変更できない場合がある。
（１）サービス間に処理上の依存関係があり、サービスを変更しないと、サービス呼び出しを並行に実行できない。
（２）ビジネスプロセス又はサービスが、利用者の業務の内容と強く関連しており、業務上の理由によって、サービスの呼び出しを並行に実行できない。
（３）利用者の業務の変更に合わせてビジネスプロセス定義も迅速に変更したいため、ビジネスプロセスの処理フローと業務のフローを同じ形にしておき、業務フローの変化に合わせて、ビジネスプロセス定義の処理フローも変更しやすくしている。
【００１３】
また、サービスの変更に関しては、以下の理由により変更できない場合がある。
（４）サービスが別組織又はパッケージアプリケーションなどによって所有されている場合がある。
（５）サービスが他のビジネスプロセスからも利用されているため、他のビジネスプロセスに影響を与えてしまう可能性がある。
（６）サービスの変更コストが高い場合がある。例えば、古いシステムで実装されたサービスでは、サービスを変更することができる技術者が不在の場合がある。
【００１４】
以上の理由によって、ビジネスプロセス定義又はサービスの変更が困難な場合が多い。したがって、従来のビジネスプロセス管理システムでは、サービス呼び出しを並行に実行することによってビジネスプロセス全体の所要時間を減らすことが難しかった。
【００１５】
本発明の目的は、ビジネスプロセス定義で記述されたサービスの呼び出し処理ステップよりも先に送信可能な、送信メッセージ部分があったときに、ビジネスプロセス定義及びサービスを変更することなく、当該サービス呼び出し処理ステップより先に、当該メッセージ部分を送信する方法及び装置を提供することである。
【課題を解決するための手段】
【００１６】
本発明の代表的な一形態では、サービス実行装置と、前記サービス実行装置に接続されるビジネスプロセス管理装置とを含むビジネスプロセス管理システムにおいて、前記ビジネスプロセス管理装置から前記サービス実行装置にメッセージを送信する方法であって、前記サービス実行装置は、前記ビジネスプロセス管理装置から送信されたメッセージに基づいて、所定のサービスを提供し、前記ビジネスプロセス管理装置は、プロセッサと、前記プロセッサによってアクセス可能な記憶部と、前記サービス実行装置に接続するインターフェイスと、を備え、前記ビジネスプロセス管理装置は、前記所定のサービスの組み合わせの定義、前記サービス実行装置に送信されるメッセージの定義、及び、前記所定のサービスを呼出す処理の実行順序を含むビジネスプロセスを管理し、前記ビジネスプロセスに基づいて前記サービス実行装置に前記メッセージを送信することによって、前記サービス実行装置に前記所定のサービスを提供させ、前記ビジネスプロセス管理装置は、前記所定のサービスを呼び出す前に、分割して送信可能なメッセージの一部又は全部である先行送信部分と、前記先行送信部分の内容が決定可能となる処理を特定する情報と、を含む先行送信部分管理情報を含み、前記メッセージ送信方法は、前記ビジネスプロセス管理装置が、前記先行送信部分管理情報に基づいて、前記先行送信部分の内容が決定可能となる処理が実行された後、前記先行送信部分を含むメッセージが送信されるサービスを呼び出す前に、当該サービスを提供するサービス実行装置に前記先行送信部分を送信するステップを含む。
【発明の効果】
【００１７】
本発明の一形態によれば、ビジネスプロセスの定義又はサービスを変更せずに、サービスを呼び出すためのメッセージの一部又は全部を先行してサービス実行装置に送信することによって、ビジネスプロセス全体の所要時間を短縮することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００１９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【００２０】
本発明の第１の実施の形態のビジネスプロセス管理システムには、ビジネスプロセス管理装置２００、クライアント実行装置１００及びサービス実行装置（３００、３１０、３２０）を含む。ビジネスプロセス管理装置２００、クライアント実行装置１００及びサービス実行装置（３００、３１０、３２０）は、ネットワーク２２０を介して相互に接続される。
【００２１】
クライアント実行装置１００は、ビジネスプロセスを利用するための装置である。クライアント実行装置１００は、ビジネスプロセス管理装置２００とメッセージをやりとりするクライアント１０１を含む。
【００２２】
クライアント１０１は、ビジネスプロセスを利用して、業務処理を遂行するために実行されるプログラムである。クライアント実行装置１００は、クライアント１０１を実行することによって、ネットワーク２２０を介して、ビジネスプロセス管理装置２００と通信する。
【００２３】
ビジネスプロセス管理装置２００は、ビジネスプロセスを管理するための装置である。ビジネスプロセス管理装置２００は、ビジネスプロセス管理部２０１、先行送信部分発見部２０２、先行送信部２０３、及び記憶装置２１０を含む。
【００２４】
記憶装置２１０には、ビジネスプロセス定義２１１、ビジネスプロセス実行状態の管理情報２１２、先行送信部分の管理表２１３、先行送信の状態管理表２１４、ビジネスプロセスの変数値管理表２１５、及びサービスインターフェイス定義２１６が記憶されている。
【００２５】
ビジネスプロセス定義２１１には、ＢＰＥＬなどによって記述されたビジネスプロセス定義に関連する情報が格納されている。
【００２６】
ビジネスプロセス実行状態の管理情報２１２には、ビジネスプロセスの実行状態を管理するための情報が格納されている。ビジネスプロセスの実行状態を管理するための情報には、現在実行中のビジネスプロセスの識別子、当該ビジネスプロセスで現在処理中の処理ステップ、さらに、ビジネスプロセスが送受信するメッセージを格納するために使用される変数の値などの情報が含まれる。
【００２７】
ビジネスプロセス管理部２０１は、ビジネスプロセス定義２１１及びビジネスプロセス実行状態の管理情報２１２に基づいて、ビジネスプロセスの処理ステップの実行及びビジネスプロセスの実行状態を管理する。
【００２８】
サービス実行装置３００は、ビジネスプロセス管理装置２００から要求された処理を実行するサービス３０１を提供する。サービス実行装置３００は、ネットワーク２２０を介して、ビジネスプロセス管理装置２００と通信する。同様に、サービス実行装置３１０はサービス３１１を提供し、サービス実行装置３２０はサービス３２１を提供する。
【００２９】
図２は、本発明の第１の実施の形態のビジネスプロセス管理システムのハードウェアを含む構成を示す図である。
【００３０】
ビジネスプロセス管理システムは、前述したように、ビジネスプロセス管理装置２００、クライアント実行装置１００及びサービス実行装置３００を含む。
【００３１】
ビジネスプロセス管理装置２００は、ＣＰＵ１４０１、主記憶装置１４０２、二次記憶装置１４０４、及び通信インターフェイス１４０５を含む。ＣＰＵ１４０１、主記憶装置１４０２、二次記憶装置１４０４、及び通信インターフェイス１４０５は、バス１４０６によって接続される。
【００３２】
主記憶装置１４０２は、ＣＰＵ１４０１によって実行されるビジネスプロセス管理プログラム１４０３を記憶する。ビジネスプロセス管理プログラム１４０３は、ビジネスプロセス管理部２０１、先行送信部分発見部２０２、及び先行送信部２０３を含む。
【００３３】
また、主記憶装置１４０２は、先行送信の状態管理表２１４及びＢＰの変数値管理表２１５を記憶する。先行送信の状態管理表２１４及びＢＰの変数値管理表２１５は、二次記憶装置１４０４が記憶してもよい。
【００３４】
二次記憶装置１４０４は、ビジネスプロセス定義２１１、ビジネスプロセス実行状態の管理情報２１２、先行送信部分の管理表２１３、及びサービスインターフェイス定義２１６を含む。ビジネスプロセス定義２１１、ビジネスプロセス実行状態の管理情報２１２、先行送信部分の管理表２１３、及びサービスインターフェイス定義２１６は、主記憶装置１４０２によって記憶されてもよい。
【００３５】
通信インターフェイス１４０５は、ネットワーク２２０に接続する。
【００３６】
クライアント実行装置１００は、ＣＰＵ１４１１、主記憶装置１４１２、二次記憶装置１４１４、及び通信インターフェイス１４１５を含む。ＣＰＵ１４１１、主記憶装置１４１２、二次記憶装置１４１４、及び通信インターフェイス１４１５は、バス１４１６によって接続される。
【００３７】
主記憶装置１４１２は、ＣＰＵ１４１１によって実行されるクライアント１０１を記憶する。通信インターフェイス１４１５は、ネットワーク２２０に接続する。
【００３８】
サービス実行装置３００は、ＣＰＵ１４２１、主記憶装置１４２２、二次記憶装置１４２４、及び通信インターフェイス１４２５を含む。ＣＰＵ１４２１、主記憶装置１４２２、二次記憶装置１４２４、及び通信インターフェイス１４２５は、バス１４２６によって接続される。
【００３９】
主記憶装置１４２２は、ＣＰＵ１４２１によって実行されるサービス３０１を記憶する。通信インターフェイス１４２５は、ネットワーク２２０に接続する。
【００４０】
ここで、具体的なビジネスプロセスの一例を示しながら、本発明の第１の実施の形態を説明する。
【００４１】
図３は、本発明の第１の実施の形態のビジネスプロセスの一例を示す図である。
【００４２】
ビジネスプロセスは、前述したように、あらかじめ作成されたサービスを組み合わせて実行することによって、業務を遂行する。
【００４３】
開始５００は、ビジネスプロセスの開始を示す。受付５０１は、クライアントからのメッセージを受信し、ビジネスプロセスを開始する処理ステップである。長大データＡ５２０は、サイズの大きいデータがクライアントからのメッセージに含まれることを示している。長大データＡ５２０を含む受信メッセージは、変数ｂｐＲｅｑ５６０に格納される。
【００４４】
Ｓｅｒｖｉｃｅ１呼び出し５０２は、Ｓｅｒｖｉｃｅ１を呼び出す処理ステップである。ここで、「Ｓｅｒｖｉｃｅ１」とは、「Ｓｅｒｖｉｃｅ１」という名前が付けられたサービスを示す。以降、「Ｓｅｒｖｉｃｅ２」から「Ｓｅｒｖｉｃｅ７」も同様である。
【００４５】
代入Ａ５５０は、変数ｂｐＲｅｑ５６０に含まれる長大データＡ５２０を変数ｓｖ２Ｒｅｑ５６１に代入する。
【００４６】
Ｓｅｒｖｉｃｅ２呼び出し５０３は、Ｓｅｒｖｉｃｅ２を呼び出す処理ステップである。また、Ｓｅｒｖｉｃｅ２に送信するメッセージには、受付５０１で受信し、代入Ａ５５０で変数ｓｖ２Ｒｅｑ５６１に代入された長大データＡ５２０が含まれる。
【００４７】
分岐Ａ５０４は、条件によってＳｅｒｖｉｃｅ３呼び出し５０５又はＳｅｒｖｉｃｅ５呼び出し５０７が実行される分岐である。
【００４８】
Ｓｅｒｖｉｃｅ３呼び出し５０５は、Ｓｅｒｖｉｃｅ３を呼び出す処理ステップであり、Ｓｅｒｖｉｃｅ３からの受信メッセージに長大データＢ５２１が含まれる。長大データＢ５２１を含む受信メッセージは、変数ｓｖ３Ｒｅｓ５６１に格納される。代入Ｂ５５１は、変数ｓｖ３Ｒｅｓ５６１に含まれる長大データＢ５２１を、変数ｓｖ７Ｒｅｑのメッセージ部分ｉｍａｇｅ１（図３の５６２）に格納する。代入Ｃ５５２は、変数ｂｐＲｅｑ５６０に含まれる長大データＡ５２０を、変数ｓｖ４Ｒｅｑ５６３に格納する。変数Ｓｅｒｖｉｃｅ４呼び出し５０６は、Ｓｅｒｖｉｃｅ４を呼び出す処理ステップであり、Ｓｅｒｖｉｃｅ４への送信メッセージに、変数ｓｖ４Ｒｅｑ５６３に含まれる長大データＡ５２０を含む。
【００４９】
Ｓｅｒｖｉｃｅ５呼び出し５０７は、Ｓｅｒｖｉｃｅ５を呼び出す処理ステップであり、Ｓｅｒｖｉｃｅ５からの受信メッセージに長大データＢ５２２が含まれる。長大データＢ５２２を含む受信メッセージは、変数ｓｖ５Ｒｅｓ５６４に格納される。代入Ｄ５５３は、変数ｓｖ５Ｒｅｓ５６４に含まれる長大データＢ５２２を変数ｓｖ７Ｒｅｑのメッセージ部分ｉｍａｇｅ１（図３の５６２）に格納する。
【００５０】
分岐Ａ終了５０８は、分岐Ａ５０４から開始された分岐の終了を示す。
【００５１】
Ｓｅｒｖｉｃｅ６呼び出し５０９は、Ｓｅｒｖｉｃｅ６を呼び出す処理ステップである。代入Ｅ５５４は、変数ｂｐＲｅｑ５６０に含まれる長大データＡ５２０を、変数ｓｖ７Ｒｅｑのメッセージ部分ｉｍａｇｅ２（図３の５６５）に格納する。Ｓｅｒｖｉｃｅ７呼び出し５１０は、Ｓｅｒｖｉｃｅ７を呼び出す処理ステップである。Ｓｅｒｖｉｃｅ７呼び出し５１０では、Ｓｅｒｖｉｃｅ７に送信するメッセージには、変数ｓｖ７Ｒｅｑ５６６に格納されていた長大データＡ５２０及び長大データＢ５２３が含まれる。長大データＢ５２３の内容は、分岐Ａ５０４における分岐先によって異なり、Ｓｅｒｖｉｃｅ３呼び出し５０５で受信した長大データＢ５２１の内容、又はＳｅｒｖｉｃｅ５呼び出し５０７で受信した長大データＢ５２２の内容となる。
【００５２】
返信５１１は、クライアントに返信メッセージを送信し、ビジネスプロセスを終了する処理ステップである。終了５１２は、ビジネスプロセスの終了を示す。
【００５３】
図４は、本発明の第１の実施の形態のビジネスプロセスの一例を示すビジネスプロセス定義２１１の記述例を示す図である。
【００５４】
ビジネスプロセス定義２１１はＢＰＥＬによって記述され、二次記憶装置１４０４に格納される。ＢＰＥＬには、基本的な処理を規定するアクティビティが定義されている。サービスを呼び出すときの送受信するメッセージを格納する変数の宣言、サービスを呼び出すアクティビティの記述、サービスを呼び出すときに送信するメッセージを格納する変数の指定、サービスを呼び出して受信するメッセージを格納する変数の指定などを、ＢＰＥＬによって記述することができる。
【００５５】
図３と図４の対応を簡単に説明すると、行１２の＜ｒｅｃｅｉｖｅ  ｖａｒｉａｂｌｅ＝“ｂｐＲｅｑ”／＞でビジネスプロセスが開始され、受付５０１に対応する。サービスの実行は、ｉｎｖｏｋｅアクティビティによって記述され、Ｓｅｒｖｉｃｅ１呼び出し５０２に対応する記述は、行１３の＜ｉｎｖｏｋｅ  ｐｏｒｔＴｙｐｅ＝“Ｓｅｒｖｉｃｅ１”  ｏｐｅｒａｔｉｏｎ＝“ｏｐｅｒａｔｉｏｎ１”／＞となる。
【００５６】
送受信されるメッセージに含まれるデータは、各アクティビティに記述される変数によって指定される。例えば、行１９のｉｎｖｏｋｅアクティビティでは、「ｉｎｐｕｔＶａｒｉａｂｌｅ＝“ｓｖ２Ｒｅｑ”」の記述によって、変数“ｓｖ２Ｒｅｑ”に含まれるメッセージを送信することを示している。また、行２３のｉｎｖｏｋｅアクティビティでは、「ｏｕｔｐｕｔＶａｒｉａｂｌｅ＝“ｓｖ３Ｒｅｓ”」の記述によって、サービスから受信したメッセージを変数“ｓｖ２Ｒｅｓ”に格納することを示している。
【００５７】
また、メッセージを格納する変数の名前や型は、変数の宣言で指定される。例えば、行３〜１０に変数の宣言が記述されており、行４の＜ｖａｒｉａｂｌｅ  ｍｅｓｓａｇｅＴｙｐｅ＝“ｂｐ：ｂｐＲｅｑｕｅｓｔＭｅｓｓａｇｅ”  ｎａｍｅ＝“ｂｐＲｅｑ”／＞では、名前が「ｂｐＲｅｑ」で、型が「ｂｐ：ｂｐＲｅｑｕｅｓｔＭｅｓｓａｇｅ」である変数を宣言している。なお、型「ｂｐ：ｂｐＲｅｑｕｅｓｔＭｅｓｓａｇｅ」の詳細は、サービスインターフェイス定義２１６で定義される。
【００５８】
受信したデータは、ａｓｓｉｇｎアクティビティによって、別の変数に代入され、他のサービスに送信されたり、クライアントに送信されたりする。具体的には、受付５０１で受信したメッセージは変数“ｂｐＲｅｑ”に格納されているが、そのメッセージの一部であるメッセージ部分“ｉｍａｇｅ”は、行１４から行１８までの処理で、変数“ｓｖ２Ｒｅｑ”のメッセージ部分 “ｉｍａｇｅ”に代入される。
【００５９】
なお“ｓｖ２Ｒｅｑ”のメッセージ部分“ｉｍａｇｅ”以外のメッセージ部分にも、何らかの値を代入する処理がありうる。図４のＢＰＥＬ記述では、このような代入処理の記述を一部省略し、長大データに関するメッセージ部分の代入処理のみ示している。
【００６０】
そして行１９では、Ｓｅｒｖｉｃｅ２呼び出し５０３が実行され、“ｓｖ２Ｒｅｑ”がＳｅｒｖｉｃｅ２を実行するサービス実行装置３００に送信される。
【００６１】
また、分岐は、ｓｗｉｔｃｈアクティビティによって記述される。図４の分岐Ａ５０４では行２０に記述され、分岐の終了は行４６に記述されている。最後に、ｒｅｐｌｙによってクライアントに処理結果を送信する。図４では、行５４の＜ｒｅｐｌｙ／＞が対応する。
【００６２】
図５は、本発明の第１の実施の形態のビジネスプロセスの一例において、サービスを呼び出すインターフェイスをＷＳＤＬによって記述した例を示す図である。
【００６３】
サービスインターフェイス定義２１６は、図５に示したようなＷＳＤＬで記述され、二次記憶装置１４０４に格納される。
【００６４】
図５には、図３に示したビジネスプロセスで呼び出すＳｅｒｖｉｃｅ２のインターフェイス定義をＷＳＤＬで記述した例が示されている。
【００６５】
行４から行９は、サービスＳｅｒｖｉｃｅ２のインターフェイスを示しており、行６はメッセージｓｖ２ＲｅｑｕｅｓｔＭｅｓｓａｇｅを受信することを示している。
【００６６】
また、行１０から行１３は、メッセージｓｖ２ＲｅｑｕｅｓｔＭｅｓｓａｇｅの構造を示している。メッセージの構造は、メッセージ部分ｂｏｄｙ（行１１）とメッセージ部分ｉｍａｇｅ（行１２）によって構成されていることを示している。行１２は、メッセージ部分ｉｍａｇｅの型（ｔｙｐｅ）が“ｘｓｄ：ｈｅｘＢｉｎａｒｙ”、すなわち、バイナリデータであることを示している。
【００６７】
図６Ａは、本発明の第１の実施の形態の先行送信部分の管理表２１３の一例を示す図である。
【００６８】
先行送信部分の管理表２１３は、先行送信部分に関連する情報を保持するための表である。先行送信部分の管理表２１３は、ＢＰ名４０１、サービス呼び出し４０２、先行送信部分４０３、先行送信可能処理ステップ４０４及び分岐確定ステップ４０５を含む。
【００６９】
ＢＰ名４０１は、ビジネスプロセスの名前である。サービス呼び出し４０２は、呼び出されるサービスである。先行送信部分４０３は、サービスに送信されるメッセージの中で、先行送信可能な部分である。
【００７０】
先行送信可能処理ステップ４０４は、先行送信可能なメッセージ部分が送信可能となる処理ステップを示す。言い換えると、先行送信可能処理ステップ４０４は、先行送信部分４０３の内容が決定可能となる処理ステップを示している。つまり、ビジネスプロセスがこの処理ステップまで進むと、先行送信部分４０３の内容を決定し、先行送信部分４０３を先行送信することができることを示している。
【００７１】
分岐確定ステップ４０５は、サービス呼び出し４０２に対応する処理ステップを含む分岐を示す。
【００７２】
具体的に説明すると、先行送信部分の管理表２１３の行４１２には、「Ｓｅｒｖｉｃｅ４」に送信するメッセージの一部（メッセージ部分ｉｍａｇｅに格納されるデータ）が、ビジネスプロセスの受信処理の時点で先行送信可能となることを示している。さらに、サービス呼び出し「Ｓｅｒｖｉｃｅ４」は、分岐Ａによる分岐に含まれることを示している。なお、分岐確定ステップが「ｎｕｌｌ」の場合は、対応するサービス呼び出しが分岐に含まれていないことを示している。
【００７３】
先行送信部分の管理表２１３の行４１４は、「Ｓｅｒｖｉｃｅ７」に送信するメッセージの一部（ｉｍａｇｅ２）が、「Ｓｅｒｖｉｃｅ３呼び出し」の時点で先行送信可能となることを示している。同様に、行４１５は、「Ｓｅｒｖｉｃｅ５呼び出し」の時点で先行送信可能となることを示している。「Ｓｅｒｖｉｃｅ３呼び出し」及び「Ｓｅｒｖｉｃｅ５呼び出し」は、分岐Ａに含まれる処理であるため、いずれか一方の処理が完了すれば、先行送信が可能となる。
【００７４】
図６Ｂは、本発明の第１の実施の形態の先行送信の状態管理表２１４の一例を示す図である。
【００７５】
先行送信の状態管理表２１４は、先行送信部２０３が先行送信の状態を管理するために使用される表である。先行送信の状態管理表２１４は、サービス呼び出し４２１、先行送信部分４２２、先行送信可能処理ステップ４２３、分岐確定ステップ４２４及び実行状態４２５を含む。
【００７６】
サービス呼び出し４２１は、先行送信される対象のサービスである。先行送信部分４２２は、先行送信可能なメッセージ部分である。
【００７７】
先行送信可能処理ステップ４２３は、先行送信可能なメッセージ部分が送信可能となる処理ステップである。分岐確定ステップ４２４は、サービス呼び出し４２１に格納されたサービスが呼び出される処理ステップを含む分岐である。実行状態４２５は、サービス呼び出し４２１に格納されたサービスに先行送信されたか否かなどを示す実行状態である。
【００７８】
図６Ｃは、本発明の第１の実施の形態のビジネスプロセスの変数値管理表２１５の一例を示す図である。
【００７９】
ＢＰの変数値管理表２１５は、先行送信部２０３によって送信されるメッセージに含まれる変数を管理するための表である。ＢＰの変数値管理表２１５は、変数４４１及び値４４２を含む。変数４４１は、変数名である。値４４２は、変数に格納される値である。値４４２には、まだ変数に値が格納されていない場合、変数の値が未定義であることを示す値「（未定義）」が格納される（図６Ｃの行４５３の値４４２）。
【００８０】
図７Ａは、本発明の第１の実施の形態のビジネスプロセス定義２１１の一例を示す図である。
【００８１】
ビジネスプロセス定義２１１は、ビジネスプロセス管理装置２００で実行するビジネスプロセスの定義を格納する。ビジネスプロセス定義２１１は、ＢＰ名１５０１及び定義１５０２を含む。ＢＰ名１５０１は、ビジネスプロセスの名前である。定義１５０２は、ＢＰＥＬによって記述されたビジネスプロセスの定義である。
【００８２】
ビジネスプロセス管理部２０１は、クライアント１０１からのメッセージを受信すると、要求されたビジネスプロセスに対応する定義１５０２を参照する。そして、参照された定義１５０２に格納されたビジネスプロセス記述に基づいて、後述するビジネスプロセス実行状態の管理情報２１２を更新しながら、サービスの呼び出しなどを実行する。
【００８３】
図７Ｂは、本発明の第１の実施の形態のビジネスプロセス実行状態の管理情報２１２の一例を示す図である。
【００８４】
ビジネスプロセス実行状態の管理情報２１２は、ビジネスプロセス管理装置２００で実行中のビジネスプロセスの状態を管理するために使用される表である。ビジネスプロセス実行状態の管理情報２１２は、識別子１５２１、ＢＰ名１５２２、処理ステップ１５２３、及び変数値１５２４を含む。さらに、変数値１５２４は、変数１５２５及び値１５２６を含む。値１５２６には、まだ変数に値が格納されていない場合、変数の値が未定義であることを示す値「（未定義）」が格納される（図７Ｂの行１５３３の値１５２６）。
【００８５】
識別子１５２１は、ビジネスプロセスを一意に識別するための識別子である。ＢＰ名１５２２は、ビジネスプロセスの名前である。処理ステップ１５２３は、現在実行中の処理ステップを示す。変数値１５２４は、現在の変数の状態を示す。変数１５２５は変数の名前を示す。値１５２６は、変数に格納されている値を示す。
【００８６】
ビジネスプロセス管理部２０１は、クライアント１０１からのメッセージを受信すると、ビジネスプロセス実行状態の管理情報２１２に新しく行を追加し、ビジネスプロセス定義２１１の定義１５０２に格納されたビジネスプロセス記述に基づいて、処理ステップ１５２３を更新しながら、サービス呼び出し及び変数値１５２４を更新する。
【００８７】
図７Ｃは、本発明の第１の実施の形態のサービスインターフェイス定義２１６の一例を示す図である。
【００８８】
サービスインターフェイス定義２１６は、ビジネスプロセスが呼び出すサービスのインターフェイス定義を格納する。サービスインターフェイス定義２１６は、サービス名１５４１及び定義１５４２を含む。サービス名１５４１は、サービスの名前である。定義１５４２は、ＷＳＤＬによって記述されたサービスインターフェイス定義を示す。
【００８９】
ビジネスプロセス管理部２０１は、定義１５４２に記述されたサービスインターフェイス定義を利用して、サービスを呼び出す際の通信処理を実行する。
【００９０】
次に、先行送信部分発見部２０２の処理の流れを、図８を用いて説明する。先行送信部分発見部２０２は、ビジネスプロセス定義２１１及びサービスインターフェイス定義２１６を入力として、先行送信部分に関連する情報を含む行を先行送信部分の管理表２１３に追加する。
【００９１】
図８は、本発明の第１の実施の形態の先行送信部分発見部２０２の処理の手順を示すフローチャートである。
【００９２】
ＣＰＵ１４０１は、まず、ビジネスプロセス定義２１１の定義１５０２に格納されているビジネスプロセスの定義（ＢＰＥＬ）を参照し、すべてのサービス呼び出しＣを抽出する。そして、抽出されたサービス呼び出しＣごとに、ステップ６０２からステップ６１３までの処理を繰り返す（ステップ６０１）。サービス呼び出しＣは、前述したように、ＢＰＥＬで記述されたビジネスプロセス定義ではｉｎｖｏｋｅアクティビティに対応する。したがって、定義１５０２から＜ｉｎｖｏｋｅ＞の記述を抽出することによって、サービス呼び出しＣを抽出できる。
【００９３】
ＣＰＵ１４０１は、ビジネスプロセス定義２１１のサービス呼び出しの記述（ｉｎｖｏｋｅアクティビティ）を抽出し、サービス呼び出しＣにおいて送信されるメッセージを格納する変数Ｖを特定する（ステップ６０２）。変数Ｖは、例えば、ｉｎｖｏｋｅアクティビティに含まれる「ｉｎｐｕｔＶａｒｉａｂｌｅ」に設定された属性である。
【００９４】
さらに、図３に示すビジネスプロセスにおいて、Ｓｅｒｖｉｃｅ２を呼び出す場合について具体的に説明すると、図３のＳｅｒｖｉｃｅ２呼び出し５０３は、図４に示すビジネスプロセス定義の行１９に対応する。行１９に記述されたｉｎｖｏｋｅアクティビティを参照すると、「ｉｎｐｕｔＶａｒｉａｂｌｅ＝“ｓｖ２Ｒｅｑ”」と記述されており、変数Ｖは“ｓｖ２Ｒｅｑ”となる。
【００９５】
ＣＰＵ１４０１は、ビジネスプロセス定義２１１内の変数Ｖの変数定義部分（＜ｖａｒｉａｂｌｅ＞）を参照し、メッセージの型（ｍｅｓｓｓａｇｅＴｙｐｅ）を特定する。次に、サービスインターフェイス定義２１６から、呼び出すサービスに対応する定義１５４２を取得する。さらに、取得された定義１５４２に記述されたサービスインターフェイス定義（ＷＳＤＬ）から、メッセージの型に対応するメッセージ定義部分（＜ｍｅｓｓａｇｅ＞）を特定する。最後に、特定されたメッセージ定義に含まれるメッセージ部分（＜ｐａｒｔ＞）を参照し、送信するメッセージのすべてのメッセージ部分Ｐを特定する（ステップ６０３）。
【００９６】
例えば、変数Ｖが"ｓｖ２Ｒｅｑ"の場合、図４に示すビジネスプロセス定義の行５が"ｓｖ２Ｒｅｑ"のメッセージ型が記述されており、メッセージの型が"ｓｖ２：ｓｖ２ＲｅｑｕｅｓｔＭｅｓｓａｇｅ"であることが分かる。
【００９７】
さらに、図５に示すＳｅｒｖｉｃｅ２のインターフェイス定義を参照すると、行１０にメッセージ型“ｂｐ２：ｓｖ２ＲｅｑｕｅｓｔＭｅｓｓａｇｅ”が定義されており、メッセージ部分Ｐとして“ｂｏｄｙ”と“ｉｍａｇｅ”を特定することができる。
【００９８】
続いて、ＣＰＵ１４０１は、すべてのメッセージ部分Ｐについて、ステップ６０５からステップ６１２までの処理を繰り返す（ステップ６０４）。
【００９９】
ＣＰＵ１４０１は、サービスインターフェイス定義２１６（ＷＳＤＬ）を参照し、メッセージ部分Ｐの型（ｔｙｐｅ）がバイナリデータ（“ｘｓｄ：ｈｅｘＢｉｎａｒｙ”又は“ｘｓｄ：ｂａｓｅ６４Ｂｉｎａｒｙ”）であるか否かを判定する（ステップ６０５）。本発明の第１の実施の形態では、バイナリデータであればメッセージ部分Ｐは先行送信部分であると判定する。他の型のデータについても先行送信可能な部分とする場合など、先行送信可能な部分であるか否かを判定する条件を別の判定条件としてもよい。処理対象のメッセージ部分Ｐの型がバイナリデータでない場合には（ステップ６０５の結果が「Ｎｏ」）、他のメッセージ部分Ｐについてステップ６０５の処理を実行する。
【０１００】
例えば、図５に示すＳｅｒｖｉｃｅ２のインターフェイス定義の行１２では、メッセージ部分"ｉｍａｇｅ"のｔｙｐｅが"ｘｓｄ：ｈｅｘＢｉｎａｒｙ"であることから、型がバイナリデータであることがわかる。したがって、メッセージ部分"ｉｍａｇｅ"が先行送信部分に該当する。
【０１０１】
ＣＰＵ１４０１は、処理対象のメッセージ部分Ｐがバイナリデータであった場合には（ステップ６０５の結果が「Ｙｅｓ」）、処理対象のメッセージ部分Ｐが先行送信可能と判定し、先行送信部分の管理表２１３にメッセージ部分Ｐに対応するレコードを作成する。
【０１０２】
ＣＰＵ１４０１は、まず、変数Ｖ’＝Ｖ、メッセージ部分Ｐ’＝Ｐ、処理ステップＳ＝Ｃ、分岐Ｂ＝ｎｕｌｌに設定する（ステップ６０６）。
【０１０３】
ＣＰＵ１４０１は、次に、ビジネスプロセス定義２１１（ＢＰＥＬ）内の処理ステップＳの１つ前に実行する処理ステップをＳとする（ステップ６０７）。
【０１０４】
ＣＰＵ１４０１は、処理ステップＳの種類に基づいて、以下の（ａ）から（ｄ）の処理に分岐させる（ステップ６０８）。
【０１０５】
ＣＰＵ１４０１は、処理ステップＳがビジネスプロセスの開始に該当し、処理ステップＳ以前に処理ステップが存在しない場合には（分岐先が（ａ）の場合）、他のメッセージ部分Ｐについて、処理を実行する。
【０１０６】
ＣＰＵ１４０１は、処理ステップＳがサービス呼び出し（＜ｉｎｖｏｋｅ＞）又は受付（＜ｒｅｃｅｉｖｅ＞）であって、受信メッセージの代入先がＶ’である場合には（分岐先が（ｂ）の場合）、先行送信部分の管理表２１３にレコードを新たに追加する（ステップ６１２）。
【０１０７】
分岐先が（ｂ）の場合には、処理ステップＳにおいて、最終的には先行送信部分となるメッセージ部分Ｐに代入されるデータを受信しているため、処理ステップＳが終了した時点から先行送信が可能となる。したがって、処理ステップＳが先行送信可能処理ステップとなる。そこで、ステップ６１２の処理では、先行送信部分の管理表２１３に先行送信部分Ｐと先行送信可能処理ステップＳを含む行を追加する。ステップ６１２の処理の詳細については後述する。
【０１０８】
ＣＰＵ１４０１は、処理ステップＳが代入（＜ａｓｓｉｇｎ＞）であって、代入先（＜ｔｏ＞）の変数（＜ｖａｒｉａｂｌｅ＞）がＶ’、かつ、メッセージ部分（＜ｐａｒｔ＞）がＰ’の場合には（分岐先が（ｃ）の場合）、変数Ｖ’及びメッセージ部分Ｐ’の値を更新する（ステップ６１０）。
【０１０９】
分岐先が（ｃ）の場合には、処理ステップＳにおいて、代入元（＜ｆｒｏｍ＞）の変数（＜ｖａｒｉａｂｌｅ＞）のメッセージ部分（＜ｐａｒｔ＞）の値が変数Ｖ’のメッセージ部分Ｐ’に代入される。したがって、変数Ｖ’＝代入元の変数（＜ｖａｒｉａｂｌｅ＞）、メッセージ部分Ｐ’＝代入元のメッセージ部分（＜ｐａｒｔ＞）に設定し（ステップ６１０）、処理を継続することによって、先行送信可能な処理ステップを抽出することができる。
【０１１０】
ＣＰＵ１４０１は、処理ステップＳが分岐（＜ｓｗｉｔｃｈ＞）又は繰り返し（＜ｗｈｉｌｅ＞）の場合には（分岐先が（ｄ）の場合）、サービス呼び出しＣが分岐された処理であることが分かる。そこで、分岐先が（ｄ）であって、分岐Ｂの値がｎｕｌｌの場合には、分岐Ｂ＝Ｓに設定する（ステップ６１１）。分岐Ｂが設定済みの場合には、分岐Ｂにはサービス呼び出しＣに最も近い分岐を設定するため、何もしない。
【０１１１】
なお、処理ステップＳが（ａ）から（ｄ）の条件に合致しない場合には（分岐先が（ｅ）の場合）、ステップ６０７の処理を戻り、さらに１つ前のステップについてステップ６０８の判定を実行する。
【０１１２】
ここで、ステップ６１２の処理について詳細に説明する。ステップ６１２の処理は、前述のように、先行送信部分Ｐと先行送信可能処理ステップＳが判明した場合に（ステップ６０８の分岐が（ｂ））、実行される処理である。処理の概要としては、先行送信部分の管理表２１３に、先行送信部分Ｐと先行送信可能処理ステップＳを含むレコードを追加する。具体的には、ＢＰ名４０１にビジネスプロセスの名前、サービス呼び出し４０２にサービス呼び出しＣ、先行送信部分４０３にメッセージ部分Ｐ、先行送信可能処理ステップ４０４に処理ステップＳ、分岐確定ステップ４０５に分岐Ｂを設定した行を追加する。
【０１１３】
例えば、サービス呼び出しＣ＝Ｓｅｒｖｉｃｅ２、変数Ｖ＝ｓｖ２Ｒｅｑ、メッセージ部分Ｐ＝ｉｍａｇｅについて、ステップ６０４からステップ６１３までの処理を実行した場合について検討する。処理ステップＳが受付（図４のビジネスプロセス定義における行１２の＜ｒｅｃｅｉｖｅ＞）、変数Ｖ'＝ｂｐＲｅｑの場合に、ステップ６１２の処理が実行される。すなわち、Ｓｅｒｖｉｃｅ２に送信するメッセージを格納する変数ｓｖ２Ｒｅｑのメッセージ部分ｉｍａｇｅに代入されるデータは、受付（＜ｒｅｃｅｉｖｅ＞）の処理ステップにて受信され、変数ｂｐＲｅｑに格納される。したがって、受付（＜ｒｅｃｅｉｖｅ＞）の処理ステップが終了した時点で、Ｓｅｒｖｉｃｅ２への送信メッセージのメッセージ部分ｉｍａｇｅが先行送信可能であることが分かる。そこで、図６Ａに示した先行送信部分の管理表２１３には、サービス呼び出し４０２がＳｅｒｖｉｃｅ２、先行送信部分４０３がｉｍａｇｅ、先行送信可能処理ステップ４０４が受付であるレコード４１１が追加される。
【０１１４】
ここで、先行送信部２０３の処理について、図９から図１１を用いて説明する。先行送信部２０３の処理は、ビジネスプロセス管理部２０１がビジネスプロセスを開始した場合に、ビジネスプロセス管理部２０１の処理と並行して実行される。したがって、先行送信部２０３で複数のビジネスプロセスが同時に実行される場合は、実行されるビジネスプロセスの数だけ、先行送信部２０３の処理が並行して実行されることになる。
【０１１５】
図９は、本発明の第１の実施の形態の先行送信処理の手順を示すフローチャートである。
【０１１６】
ＣＰＵ１４０１は、まず、変数ｂｐに、ビジネスプロセス管理部２０１によって開始されたビジネスプロセスを設定する（ステップ７０１）。
【０１１７】
ＣＰＵ１４０１は、先行送信の状態管理表２１４を記憶装置２１０に作成する（ステップ７０２）。なお、先行送信部２０３の処理は、同時に実行しているビジネスプロセスの数だけ並行して実行されるため、先行送信の状態管理表２１４も複数作成される場合がある。以降、先行送信の状態管理表２１４は、ステップ７０２の処理で作成された先行送信の状態管理表２１４を指す。
【０１１８】
ＣＰＵ１４０１は、ｂｐの処理ステップがすべて終了したか否かを判定する（ステップ７０３）。ｂｐの処理ステップがすべて終了している場合には（ステップ７０３の結果が「Ｙｅｓ」）、ステップ７０２の処理で作成された先行送信の状態管理表２１４を破棄する（ステップ７１３）。
【０１１９】
ＣＰＵ１４０１は、ｂｐの処理ステップがすべて終了していない場合には（ステップ７０３の結果が「Ｎｏ」）、先行送信部分の管理表２１３から、ｂｐと同じビジネスプロセス名がＢＰ名４０１に設定されているすべてのレコードＬについて、ステップ７０５からステップ７１０までの処理を繰り返す（ステップ７０４）。
【０１２０】
ＣＰＵ１４０１は、レコードＬの先行送信可能処理ステップ４０４が、ｂｐの現在の処理ステップよりも前であるか否かを判定する（ステップ７０５）。レコードＬの先行送信可能処理ステップ４０４が、ｂｐの現在の処理ステップよりも前でない場合には（ステップ７０５の結果が「Ｎｏ」）、次のレコードＬについて処理を実行する。
【０１２１】
ＣＰＵ１４０１は、レコードＬの先行送信可能処理ステップ４０４が、ｂｐの現在の処理ステップよりも前である場合には（ステップ７０５の結果が「Ｙｅｓ」）、レコードＬとサービス呼び出し４２１が等しい行が先行送信の状態管理表２１４に存在するか否かを判定する（ステップ７０６）。レコードＬとサービス呼び出し４２１が等しい行が先行送信の状態管理表２１４に存在する場合には（ステップ７０６の結果が「Ｙｅｓ」）、既にステップ７０７以降の処理が実行されているため、次のレコードＬについて処理を実行する。
【０１２２】
ＣＰＵ１４０１は、レコードＬとサービス呼び出し４２１が等しい行が先行送信の状態管理表２１４に存在しない場合には（ステップ７０６の結果が「Ｎｏ」）、先行送信部分の管理表２１３から、レコードＬとサービス呼び出し４０２が等しいすべてのレコードＬＬについて、ステップ７０８の処理を繰り返す（ステップ７０７）。
【０１２３】
ＣＰＵ１４０１は、先行送信の状態管理表２１４に、新しいレコードを追加する（ステップ７０８）。追加されるレコードのサービス呼び出し４２１には、レコードＬのサービス呼び出し４０２が設定される。先行送信部分４２２には、レコードＬの先行送信部分４０３が設定される。先行送信可能処理ステップ４２３には、レコードＬの先行送信可能処理ステップ４０４が設定される。分岐確定ステップ４２４には、レコードＬの分岐確定ステップ４０５が設定される。実行状態４２５には「先行送信前」が設定される。
【０１２４】
ＣＰＵ１４０１は、レコードＬのサービス呼び出し４０２に指定されたサービスに対して先行送信を実行するため、図１０にて後述するサービス呼び出し部分の先行送信処理を並行して実行する（ステップ７１０）。
【０１２５】
ＣＰＵ１４０１は、ステップ７０４からステップ７１１までの処理が終了すると、ビジネスプロセス管理部２０１の処理によってｂｐに設定された現在の処理ステップが他の処理ステップに遷移するまで待機した後、ステップ７０３の処理を実行する（ステップ７１２）。
【０１２６】
図１０は、本発明の第１の実施の形態の先行送信処理のサービス呼び出し部分の手順を示すフローチャートである。
【０１２７】
ＣＰＵ１４０１は、まず、変数ｂｐに現在実行中のビジネスプロセスを設定し、変数Ｓに先行送信の対象であるサービスを設定する（ステップ８０１）。
【０１２８】
ＣＰＵ１４０１は、続いて、サービスＳへの通信接続を開く（ステップ８０２）。
【０１２９】
ＣＰＵ１４０１は、ビジネスプロセス管理部２０１の処理によって、変数ｂｐに設定された現在実行中のビジネスプロセスがエラーなどにより終了しているか否かを判定する（ステップ８０３）。当該ビジネスプロセスがエラーなどにより終了している場合には（ステップ８０３の結果が「Ｙｅｓ」）、サービスＳへの通信接続を閉じ（ステップ８１０）、本処理を終了する。
【０１３０】
ＣＰＵ１４０１は、変数ｂｐに設定された現在実行中のビジネスプロセスが終了していない場合には（ステップ８０３の結果が「Ｎｏ」）、当該ビジネスプロセスがサービスＳに到達したか否かを判定する（ステップ８０４）。
【０１３１】
ＣＰＵ１４０１は、変数ｂｐに設定された現在実行中のビジネスプロセスがサービスＳに到達している場合には（ステップ８０４の結果が「Ｙｅｓ」）、送信されていないＭＩＭＥメッセージ部分を作成し、サービスＳに送信する（ステップ８０９）。
【０１３２】
ＣＰＵ１４０１は、変数ｂｐに設定された現在実行中のビジネスプロセスがサービスＳに到達していない場合には（ステップ８０４の結果が「Ｎｏ」）、先行送信の状態管理表２１４から、先行送信可能な条件を満たすレコードＬを取得する（ステップ８０５）。先行送信可能な条件を満たすレコードＬとは、以下の条件Ａから条件Ｄをすべて満たすレコードである。
（条件Ａ）サービス呼び出し４２１がサービスＳと等しい。
（条件Ｂ）先行送信可能処理ステップ４２３が変数ｂｐに設定された現在実行中のビジネスプロセスの現在の処理ステップよりも前に位置する。
（条件Ｃ）分岐確定ステップ４２４が「ｎｕｌｌ」、又は、分岐確定ステップ４２４がｂｐの現在の処理ステップより前である。
（条件Ｄ）実行状態４２５が「先行送信前」である。
【０１３３】
ここで、分岐確定ステップ４２４が「ｎｕｌｌ」でない場合には、サービスＳは分岐に含まれるが、分岐条件によってはサービスＳが呼び出されない場合がある。条件Ｃは、変数ｂｐに設定された現在実行中のビジネスプロセスの現在の処理ステップが分岐確定ステップより後になったタイミング、つまり、サービスＳが呼び出される分岐に入ったタイミングで成立する。条件Ｃによって、確実に呼び出されるサービスについて先行送信されるようにしている。
【０１３４】
他の方法としては、サービスＳが呼ばれる分岐に入る前から先行送信を実行する方法もある。例えば、分岐に入る前にサービスＳに先行送信を実行し、現在実行中のビジネスプロセスの現在の処理ステップが分岐確定ステップを処理し、分岐に入らないことが確定した時点で先行送信の通信を中断する。
【０１３５】
ＣＰＵ１４０１は、ステップ８０５の処理において、該当するレコードＬが存在するか否かを判定する（ステップ８０６）。
【０１３６】
ＣＰＵ１４０１は、該当するレコードＬが存在する場合には（ステップ８０６の結果が「Ｙｅｓ」）、先行送信処理の通信部分を実行する（ステップ８０８）。なお、先行送信処理の通信部分については、図１１にて後述する。先行送信処理の通信部分の処理が終了すると、ステップ８０３の処理に戻る。
【０１３７】
ＣＰＵ１４０１は、該当するレコードＬが存在しない場合には（ステップ８０６の結果が「Ｎｏ」）、ビジネスプロセス管理部２０１の処理によって、現在の処理ステップの位置が変化するまで待機し（ステップ８０７）、現在の処理ステップの位置が変化したらステップ８０３の処理に戻る。
【０１３８】
先行送信処理のサービス呼び出し部分の処理では、現在実行中のビジネスプロセスから呼び出しされたサービス（サービスＳ以外のサービス）の処理時間又は通信時間が長いなどの理由により、現在実行中のビジネスプロセスの処理ステップの変化が遅く、ステップ８０７の処理において長時間待機しなければならない場合がある。このとき、長時間データの送信がないためにタイムアウトが発生し、ステップ８０２の処理で開いたサービスＳへの通信接続が切断されてしまう可能性がある。このような場合には、タイムアウトが発生した場合に再度先行送信を開始する、又は、タイムアウトが発生しないようにダミーデータを定期的に送信することなどによって対処することが可能である。
【０１３９】
図１１は、本発明の第１の実施の形態の先行送信処理の通信部分の手順を示すフローチャートである。
【０１４０】
本処理は、図１０の先行送信処理のサービス呼び出し部分のステップ８０８の処理で実行される処理である。
【０１４１】
ＣＰＵ１４０１は、まず、サービスＳに先行送信の対象とするサービス、先行送信部分ＰをレコードＬの先行送信部分に設定する（ステップ９０１）。
【０１４２】
ＣＰＵ１４０１は、先行送信の状態管理表２１４のレコードＬの実行状態４２５を「先行送信中」に変更する（ステップ９０２）。また、先行送信の状態管理表２１４に、レコードＬと同じサービス呼び出し４２１と先行送信部分４２２を含むレコードが存在する場合には、該当するレコードのすべての実行状態４２５を「先行送信せず」に変更する。実行状態４２５を「先行送信せず」に変更する処理は、例えば、ある先行送信部分に対応する先行送信可能処理ステップが分岐の中にある場合など、先行送信可能処理ステップが複数存在する場合に対処するための処理である。
【０１４３】
ＣＰＵ１４０１は、ビジネスプロセス実行状態の管理情報２１２からｂｐで使用される変数を取得し、ビジネスプロセスの変数値管理表２１５を作成する（ステップ９０３）。変数４４１は、ｂｐに設定されたビジネスプロセスで使用されているすべての変数となり、値４４２は、変数４４１に対応する値が設定される。
【０１４４】
ＣＰＵ１４０１は、変数ＳＳに現在実行中のＢＰの処理ステップを設定する（ステップ９０４）。
【０１４５】
ＣＰＵ１４０１は、ＳＳに設定されている処理ステップの種類に基づいて、以下の（ａ）または（ｂ）の処理に分岐させる（ステップ９０５）。
【０１４６】
ＣＰＵ１４０１は、ＳＳに設定されている処理ステップが代入（＜ａｓｓｉｇｎ＞）の場合には（分岐先が（ａ）の場合）、処理ステップＳＳの記述に従って、変数管理表２１５の変数４４１と値４４２を変更する（ステップ９０６）。ここで、処理ステップＳＳの代入（＜ａｓｓｉｇｎ＞）の代入元（＜ｆｒｏｍ＞）に指定されている変数に対応する値４４２が「（未定義）」だった場合、代入先（＜ｔｏ＞）に指定されている変数に対応する値４４２には「（未定義）」を設定する。
【０１４７】
ＣＰＵ１４０１は、ＳＳに設定されている処理ステップが（ａ）の条件に該当しない場合には（分岐先が（ｂ）の場合）、ステップ９０７の処理に進む（ステップ９０５）。
【０１４８】
ＣＰＵ１４０１は、処理ステップＳＳの次に実行する処理ステップをＳＳに設定する（ステップ９０７）。このとき、処理ステップＳＳが分岐（＜ｓｗｉｔｃｈ＞）または繰り返し（＜ｗｈｉｌｅ＞）の場合には、変数管理表２１５の変数４４１と値４４２を参照して分岐条件または繰り返し条件を判定し、次に実行する処理ステップを決定する。
【０１４９】
ＣＰＵ１４０１は、サービスＳにＭＩＭＥヘッダを送信していない場合には、ＭＩＭＥヘッダを作成し、サービスＳに送信する（ステップ９０９）。
【０１５０】
ＣＰＵ１４０１は、ビジネスプロセスの変数値管理表２１５の変数４４１と値４４２に基づいて、サービスＳへの送信メッセージを作成し、作成された送信メッセージから先行送信可能な部分Ｐのみを抽出する。そして、抽出された先行送信可能な部分Ｐを含むＭＩＭＥパートを作成する（ステップ９１０）。
【０１５１】
ＣＰＵ１４０１は、ステップ９１０の処理で作成されたＭＩＭＥパートをサービスＳに送信する。このとき、送信が終了しても、通信の接続は閉じずに維持しておく（ステップ９１１）。
【０１５２】
最後に、ＣＰＵ１４０１は、先行送信の状態管理表２１４のレコードＬの実行状態を「先行送信済み」に変更する（ステップ９１２）。
【０１５３】
以上が、本発明の第１の実施の形態の先行送信を実現するための処理である。ここで、さらに具体的に説明するために、ネットオークション出品のためのビジネスプロセスを本発明の第１の実施の形態に適用した例について説明する。このビジネスプロセスは、オークションの出品者に対してネットオークションサイトの運営者が提供するものであり、オークションの出品者はこのビジネスプロセスを利用して、オークションに出品する商品の名前、画像、及び商品説明といった商品情報をネットオークションサイトに公開する。ネットオークションサイトの運営者は、ネットークションサイトに商品を出品に対して、オークション出品者からオークション出品料金を受領する。
【０１５４】
図１２は、本発明の第１の実施の形態をネットオークション出品業務に適用したビジネスプロセスを示す図である。
【０１５５】
開始１７０１は、ビジネスプロセスの開始を示す。受付１７０２は、クライアントからのメッセージを受信する処理ステップである。受付１７０２で受信されるメッセージには、商品画像ファイル１７１０が含まれる。
【０１５６】
課金サービス呼び出し１７０３は、課金サービスを呼び出す処理ステップである。課金サービスは、オークション出品者に対してオークション出品料金をクレジットカード決済などによって課金する処理を実行する。
【０１５７】
商品情報公開サービス呼び出し１７０４は、商品情報公開サービスを呼び出す処理ステップである。商品情報公開サービスは、商品の名前及び画像といった商品情報をネットオークションサイトに公開する処理を実行する。商品情報公開サービス呼び出し１７０４に送信されるメッセージには、商品画像ファイル１７１０が含まれる。
【０１５８】
出品履歴更新サービス呼び出し１７０５は、出品履歴更新サービスを呼び出す処理ステップである。出品履歴更新サービスは、ネットオークションサイトの運営者が管理しているオークションの出品履歴を更新する処理を実行する処理ステップである。
【０１５９】
返信１７０６は、クライアントに返信メッセージを送信する処理ステップである。終了１７０７は、ビジネスプロセスの終了を示す。
【０１６０】
ネットークション出品のためのビジネスプロセスを本発明の第１の実施の形態に適用した場合のシステム構成は、図１と同様となる。ビジネスプロセス定義２１１には、ネットークション出品業務のためのビジネスプロセスが含まれ、サービス３０１が課金サービス、サービス３１１が商品情報公開サービス、サービス３２１が出品履歴更新サービスに相当するシステム構成とする。
【０１６１】
図１３は、本発明の第１の実施の形態をネットオークション出品業務に適用した場合の処理の流れを示す図である。
【０１６２】
図１３では、課金サービス１０５１、ビジネスプロセス管理部２０１、先行送信部２０３、商品情報公開サービス１０５２、出品履歴更新サービス１０５３の間でのメッセージのやりとりを矢印で示している。さらに、メッセージをやりとりするタイミングを縦軸の位置で示している。なお、破線の矢印はメッセージのやりとりではなく、処理を開始するタイミングの順序関係を示している。
【０１６３】
ビジネスプロセス管理部２０１は、課金サービス１０５１に対してメッセージ送信１００１を実行する。そして、商品出品料金の課金処理１００２が完了するまで待機し、メッセージ返信１００３を受信する。
【０１６４】
ネットオークション出品業務のビジネスプロセスでは、商品情報公開サービス１０５２への送信メッセージに含まれる商品画像ファイル１７１０に対応するメッセージ部分が先行送信部分となる。そこで、先行送信部２０３は、ビジネスプロセス管理部２０１の処理と並行して、商品情報公開サービス１０５２へ先行送信部分の送信１０１０を実行し、商品画像ファイル１７１０を含むメッセージ部分の先行送信を実行する。そして、先行送信部２０３は、ビジネスプロセス管理部２０１がメッセージ返信１００３を受信した後に、残りの部分の送信１０１１を実行する。
【０１６５】
ここで、先行送信部２０３が商品情報公開サービス１０５２に送信する送信メッセージ１０２０は、ＭＩＭＥヘッダ１０３１と、ＭＩＭＥパート１つ目１０３２と、ＭＩＭＥパート２つ目１０３４の、３つのメッセージ部分によって構成される。ＭＩＭＥパート１つ目１０３２には商品画像ファイル１７１０が含まれ、ＭＩＭＥパート２つ目１０３４にはＳＯＡＰメッセージ１０３５が含まれる。
【０１６６】
商品情報公開サービス１０５２では、先行送信部分の送信１０１０と残りの部分の送信１０１１で受信した送信メッセージ１０２０から、元のメッセージを復元する。このようなメッセージの復元方法は、ＳｗＡ、ＭＴＯＭ、又はＭＩＭＥといった従来技術によって実現されている。すなわち、商品情報公開サービス１０５２及びサービス実行装置３１０は、従来技術によって実装されたものである。
【０１６７】
ビジネスプロセス管理システムは、システムが既存のサービスを組み合わせることによって、ビジネスプロセスを迅速に構築可能であることが利点の１つであるが、本発明は、このような利点を損なわずに従来技術によって実装されたサービスを利用可能である。
【０１６８】
その後、商品情報公開サービス１０５２は、商品情報をネットオークションサイトに公開する処理１０１２を実行し、メッセージ返信１０１３を実行する。そして、ビジネスプロセス管理部２０１は、出品履歴更新サービス１０５３へメッセージ送信１０２１を実行する。出品履歴更新サービス１０５３が出品履歴の更新処理１０２２を実行した後、ビジネスプロセス管理部２０１にメッセージ返信１０２３を実行する。
【０１６９】
ここで、本発明の第１の実施の形態と従来技術を対比するために、従来技術によるビジネスプロセス管理システムにおける処理の流れについて説明する。
【０１７０】
図１４は、本発明の第１の実施の形態のネットオークション出品業務において、従来技術を適用した場合の処理の流れの一例を示す図である。
【０１７１】
図１３と比較すると、先行送信部分の送信１０１０が存在せず、メッセージ送信１０１５において、商品画像ファイル１７１０を含む送信メッセージ１０３０を送信する。また、ＭＩＭＥパート１つ目１０４２にＳＯＡＰメッセージ１０３５が含まれ、ＭＩＭＥパート２つ目に商品画像ファイル１７１０が含まれる。ＳＯＡＰメッセージは、メッセージ全体の中で先頭となるメッセージ部分であり、１つ目のＭＩＭＥパートに選ばれることが多いため、図１４では例として、１つ目のＭＩＭＥパートにＳＯＡＰメッセージを含めている。なお、図１３の送信メッセージ１０２０と同様に、２つ目のＭＩＭＥパートにＳＯＡＰメッセージが含まれることもある。ただし、この場合であっても、処理の流れは、図１４と同じである。
【０１７２】
従来技術では、メッセージ返信１００３の後に実行される送信メッセージ１０３０の送信処理の所要時間に、商品画像ファイル１７１０を含むメッセージ部分であるＭＩＭＥパート２つ目１０４３の送信処理の所要時間が含まれる。一方、本発明の第１の実施の形態では、図１３に示したように、メッセージ送信１００１と並行して商品画像ファイル１７１０を含むメッセージ部分であるＭＩＭＥパート１つ目１０３２の送信処理を実行する。そのため、メッセージ返信１００３の後に実行される残りの部分の送信１０１１の処理の所要時間に、商品画像ファイル１７１０を含むメッセージ部分であるＭＩＭＥパート１つ目１０３２の送信処理の所要時間が含まれない。したがって、本発明の第１の実施の形態では、商品画像ファイル１７１０を含むメッセージ部分の送信処理の所要時間の分だけ、ビジネスプロセス全体の所要時間を従来技術よりも短縮することが可能となる。
【０１７３】
図１５は、本発明の第１の実施の形態の商品情報公開サービス１０５２に送信するメッセージの一例を示す図である。
【０１７４】
商品情報公開サービス１０５２に送信するメッセージでは、行１から行３がＭＩＭＥヘッダ１０３１に、行４から行９がＭＩＭＥパート１つ目１０３２に、行１０から行２９がＭＩＭＥパート２つ目１０３４に相当する。
【０１７５】
図１５の行３では、識別子“＜ｒｅｇｉｓｔ００１．ｘｍｌ＞”が付与されたＭＩＭＥパートが、メッセージ全体の中で先頭となるメッセージ部分の開始位置であることを示している。行１３では、行１０から行２９のＭＩＭＥパートに識別子“＜ｒｅｇｉｓｔ００１．ｘｍｌ＞”が付与されていることを示している。行２３では、“＜ｉｍａｇｅ＞”要素の内容が、識別子“ｐｒｏｄｕｃｔ００１．ｊｐｅｇ”が付与されたＭＩＭＥパートの内容であることを示している。行７では、行４から行９のＭＩＭＥパートに識別子“ｐｒｏｄｕｃｔ００１．ｊｐｅｇ”が付与されていることを示している。
【０１７６】
本発明の第１の実施の形態によれば、ビジネスプロセス管理部２０１によるメッセージ送信１００１の処理などの実行と並行して、先行送信部２０３によって先行送信部分の送信１０１０を実行する。そのため、先行送信部分の送信１０１０で先に送信されたメッセージ部分の通信所要時間の分だけ、ビジネスプロセス全体の所要時間を短縮することが可能となる。
【０１７７】
（第２の実施の形態）
本発明の第１の実施の形態では、先行送信部分発見部２０２によって先行送信可能な部分を抽出していたが、本発明の第２の実施の形態では、先行送信可能な部分をあらかじめ利用者等によって抽出し、先行送信部分の管理表２１３を作成しておく。
【０１７８】
図１６は、本発明の第２の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【０１７９】
本発明の第２の実施の形態の構成は、本発明の第１の実施の形態のシステム構成から先行送信部分発見部２０２を取り除いた構成になっている。
【０１８０】
本発明の第２の実施の形態では、ビジネスプロセス管理システムの管理者が、先行送信部分の管理表２１３を作成する。これにより、先行送信部で通信のタイムアウトが発生しにくくなるように先行送信可能処理ステップ４２３を調整したり、通信効率を良くするために、先行送信を実行するサービス呼び出し４２１を限定したりするなど、管理者が細かい調整を行うことができる。
【０１８１】
（第３の実施の形態）
本発明の第１の実施の形態では、先行送信可能な部分が存在していれば、常に先行送信を実行するようにしていたが、本発明の第３の実施の形態では、所定の条件を満たす場合のみ、先行送信部分の先行送信を実行する。
【０１８２】
本発明の第３の実施の形態のシステム構成は、図１に示した本発明の第１の実施の形態のシステム構成と同じ構成であり、先行送信部２０３の処理の手順が一部異なる。具体的には、先行送信処理の通信部分が相違し、所定の条件を満たす場合のみ先行送信処理を実行する。
【０１８３】
図１７は、本発明の第３の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【０１８４】
本発明の第３の実施の形態の構成は、本発明の第１の実施の形態のシステム構成に、先行送信を実行するか否かを判定する先行送信判定部２０４がビジネスプロセス管理装置２００に追加された構成になっている。
【０１８５】
先行送信判定部２０４は、先行送信を実行するか否かを判定する。例えば、先行送信部分のデータ量を算出し、所定の閾値よりも大きいか否かによって、先行送信を実行するか否かを判定する。また、ビジネスプロセス管理装置２００のシステム負荷、及び、ビジネスプロセス管理装置２００とサービス実行装置との間のネットワーク負荷を測定する機能を備えることによって、測定結果と所定の閾値とを比較し、先行送信を実行するか否かを判定するようにしてもよい。
【０１８６】
図１８は、本発明の第３の実施の形態の先行送信処理の通信部分の手順を示すフローチャートである。
【０１８７】
本発明の第３の実施の形態では、図１１に示した本発明の第１の実施の形態における先行送信処理の通信部分の手順のステップ９０８とステップ９０９の間に、ステップ１２０１及びステップ１２０２が挿入されている。
【０１８８】
ＣＰＵ１４０１は、ステップ９０８において処理ステップＳＳがサービスＳに等しい場合には（ステップ９０８の結果が「Ｙｅｓ」）、ビジネスプロセスの変数値管理表２１５の変数４４１及び値４４２に基づいて、先行送信部分Ｐに含まれるデータを作成する（ステップ１２０１）。
【０１８９】
ＣＰＵ１４０１は、ステップ１２０１の処理で作成されたデータのサイズが所定の閾値（一定サイズ、例えば、１ＭＢｙｔｅ）以上であるか否かを判定する（ステップ１２０２）。ステップ１２０１の処理で作成されたデータのサイズが一定サイズ以上であれば（ステップ１２０２の結果が「Ｙｅｓ」）、本発明の第１の実施の形態と同様に、ステップ９０９以降の処理を実行する。
【０１９０】
一方、ＣＰＵ１４０１は、ステップ１２０１の処理で作成されたデータのサイズが一定サイズよりも小さい場合には（ステップ１２０２の結果が「Ｎｏ」）、ステップ９０９以降の処理を実行せずに、先行送信処理の通信部分を終了する。
【０１９１】
なお、一定サイズの具体的な数値は、ビジネスプロセス管理システムの開発者又は管理者が設定する。また、統計的な方法で決定してもよい。さらに、先行送信可能処理ステップ４０４からサービス呼び出し４０２までの平均所要時間に比例して一定サイズの値を変化させてもよい。
【０１９２】
また、ステップ１２０２の処理において判定される先行送信の実行条件は、データのサイズに関する条件には限定されない。前述したように、ネットワーク負荷を考慮し、ネットワーク２２０を流れるデータの量が所定の閾値よりも少ない場合に先行送信を実行してもよいし、ビジネスプロセス管理装置の負荷を考慮して、同時に実行されているビジネスプロセスの数が少ない場合にのみ先行送信を実行してもよい。さらに、過去の通信所要時間の統計データを参照し、平均通信所要時間が大きいサービスに対してのみ先行送信を実行してもよい。
【０１９３】
本発明の第３の実施の形態によれば、先行送信を実行する条件を設定することによって、効率よく先行送信を実行することができる。例えば、先行送信の対象データのサイズが大きく、通信処理に時間を要する場合のみ先行送信を実行する。さらに、小容量のデータに対して頻繁に先行送信を実行することによって、ビジネスプロセス管理装置の負荷を増大させたり、ネットワークのトラフィック量を増大させたりすることによって、ビジネスプロセス全体の所要時間が増大するなどの性能悪化を防ぐことができる。
【０１９４】
（第４の実施の形態）
本発明の第４の実施の形態では、ビジネスプロセス管理システムに共有データベース（共有ＤＢ）を備える。共有データベースに先行送信されるデータを格納することなどによって、ビジネスプロセス全体の所要時間を短縮させる。
【０１９５】
図１９は、本発明の第４の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【０１９６】
ビジネスプロセス管理システムには、前述したように、共有ＤＢ１３０１が含まれる。共有ＤＢ１３０１は、ネットワーク２２０に接続し、ビジネスプロセス管理装置２００及びサービス実行装置３００に接続される。
【０１９７】
ビジネスプロセス管理装置２００及びサービス実行装置３００は、共有ＤＢ１３０１にデータを格納したり、共有ＤＢ１３０１に格納されたデータを参照したりすることができる。
【０１９８】
図２０は、本発明の第４の実施の形態の共有ＤＢ１３０１の構成を示す図である。
【０１９９】
共有ＤＢ１３０１は、ＣＰＵ１６０１、主記憶装置１６０２、二次記憶装置１６０４、及び通信インターフェイス１６０５を含む。ＣＰＵ１６０１、主記憶装置１６０２、二次記憶装置１６０４、及び通信インターフェイス１６０５は、バス１６０６によって接続される。
【０２００】
主記憶装置１６０２は、ＣＰＵ１６０１によって実行される共有ＤＢ制御プログラム１６０３を記憶する。共有ＤＢ制御プログラム１６０３は、ビジネスプロセス管理装置２００又はサービス実行装置３００などからの要求に基づいて、二次記憶装置１６０４にデータを格納したり、二次記憶装置１６０４に格納されたデータを参照したりするための制御を実行する。通信インターフェイス１６０５は、ネットワーク２２０に接続している。
【０２０１】
本発明の第４の実施の形態では、ビジネスプロセス管理装置２００からサービス３０１などに送信するデータのすべてを、送信メッセージとしてサービスへ送信するのではなく、一部のデータを共有ＤＢ１３０１に格納する。例えば、ビジネスプロセス管理装置２００は、共有ＤＢ１３０１にサービス３０１に送信するデータを格納し、送信メッセージをサービス３０１に送信する。サービス３０１は、送信メッセージを受信すると、共有ＤＢ１３０１からデータを取得し、所定の処理を実行する。
【０２０２】
本発明の第４の実施の形態のように、共有ＤＢを含むシステム構成の場合でも、本発明の第１の実施の形態の先行送信と同様に、ビジネスプロセス定義で指定されたサービスの呼び出し順序に先行してデータを送信することができる。本発明の第４の実施の形態における先行送信処理は、本発明の第１の実施の形態の先行送信部２０３の一部処理を変更することによって実現可能である。具体的には、先行送信部２０３の先行送信処理の通信部分のステップ９０９の処理において、「ＭＩＭＥメッセージ部分」が共有ＤＢ１３０１に格納するデータに相当する場合、「サービスＳに送信する」のではなく、「共有ＤＢ１３０１に格納する」処理を実行すればよい。
【０２０３】
本発明の第４の実施の形態によれば、ビジネスプロセス管理部２０１がサービスの処理を待機している間に、共有ＤＢ１３０１にデータを格納する処理を実行することができるため、ビジネスプロセス全体の所要時間を減らすことができる。
【図面の簡単な説明】
【０２０４】
【図１】本発明の第１の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【図２】本発明の第１の実施の形態のビジネスプロセス管理システムの構成の詳細を示す図である。
【図３】本発明の第１の実施の形態のビジネスプロセスの一例を示す図である。
【図４】本発明の第１の実施の形態のビジネスプロセスの一例を示すビジネスプロセス定義の記述例を示す図である。
【図５】本発明の第１の実施の形態のビジネスプロセスの一例において、サービスを呼び出すインターフェイスをＷＳＤＬによって記述した例を示す図である。
【図６Ａ】本発明の第１の実施の形態の先行送信部分の管理表の一例を示す図である。
【図６Ｂ】本発明の第１の実施の形態の先行送信の状態管理表の一例を示す図である。
【図６Ｃ】本発明の第１の実施の形態のビジネスプロセスの変数値管理表の一例を示す図である。
【図７Ａ】本発明の第１の実施の形態のビジネスプロセス定義の一例を示す図である。
【図７Ｂ】本発明の第１の実施の形態のビジネスプロセス実行状態の管理情報の一例を示す図である。
【図７Ｃ】本発明の第１の実施の形態のサービスインターフェイス定義の一例を示す図である。
【図８】本発明の第１の実施の形態の先行送信部分発見部の処理の手順を示すフローチャートである。
【図９】本発明の第１の実施の形態の先行送信処理の手順を示すフローチャートである。
【図１０】本発明の第１の実施の形態の先行送信処理のサービス呼び出し部分の手順を示すフローチャートである。
【図１１】本発明の第１の実施の形態の先行送信処理の通信部分の手順を示すフローチャートである。
【図１２】本発明の第１の実施の形態をネットオークション出品業務に適用したビジネスプロセスを示す図である。
【図１３】本発明の第１の実施の形態をネットオークション出品業務に適用した場合の処理の流れを示す図である。
【図１４】本発明の第１の実施の形態のネットオークション出品業務において、従来技術を適用した場合の処理の流れの一例を示す図である。
【図１５】本発明の第１の実施の形態の商品情報公開サービスに送信するメッセージの一例を示す図である。
【図１６】本発明の第２の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【図１７】本発明の第３の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【図１８】本発明の第３の実施の形態の先行送信処理の通信部分の手順を示すフローチャートである。
【図１９】本発明の第４の実施の形態のビジネスプロセス管理システムのシステム構成図である。
【図２０】本発明の第４の実施の形態の共有ＤＢの構成を示す図である。
【符号の説明】
【０２０５】
１００    クライアント実行装置
２００    ビジネスプロセス管理装置
２０１    ビジネスプロセス管理部
２０２    先行送信部分発見部
２０３    先行送信部
２０３    先行送信判定部
２１０    記憶装置
２１１    ビジネスプロセス定義
２１２    ビジネスプロセス実行状態の管理情報
２１３    先行送信部分の管理表
２１４    先行送信の状態管理表
２１５    ビジネスプロセスの変数値管理表
２１６    サービスインターフェイス定義
２２０    ネットワーク
３００、３１０、３２０    サービス実行装置
３０１、３１１、３２１    サービス
１３０１    共有ＤＢ
１４０１、１４１１、１４２１、１６０１    ＣＰＵ
１４０２、１４１２、１４２２、１６０２    主記憶装置
１４０４、１４１４、１４２４、１６０４    二次記憶装置
１４０５、１４１５、１４２５、１６０５    通信インターフェイス
１４０６、１４１６、１４２６、１６０６    バス
１４０３    ビジネスプロセス管理プログラム
１６０３    共有ＤＢ制御プログラム
【図１】
0004516594.tif 000002
【図２】
0004516594.tif 000003
【図３】
0004516594.tif 000004
【図４】
0004516594.tif 000005
【図５】
0004516594.tif 000006
【図６Ａ】
0004516594.tif 000007
【図６Ｂ】
0004516594.tif 000008
【図６Ｃ】
0004516594.tif 000009
【図７Ａ】
0004516594.tif 000010
【図７Ｂ】
0004516594.tif 000011
【図７Ｃ】
0004516594.tif 000012
【図８】
0004516594.tif 000013
【図９】
0004516594.tif 000014
【図１０】
0004516594.tif 000015
【図１１】
0004516594.tif 000016
【図１２】
0004516594.tif 000017
【図１３】
0004516594.tif 000018
【図１４】
0004516594.tif 000019
【図１５】
0004516594.tif 000020
【図１６】
0004516594.tif 000021
【図１７】
0004516594.tif 000022
【図１８】
0004516594.tif 000023
【図１９】
0004516594.tif 000024
【図２０】
0004516594.tif 000025