(57)【要約】      （修正有）【課題】ワークフローの負荷分散処理を柔軟に行う負荷分散処理サーバ、方法及びシステムを提供する。【解決手段】ワークフローエンジン８３０−１〜８３０−ｎは、処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信する受信部２２０と、前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部２３０と、決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部２５０とを有する。【選択図】図４
2017102777.tif 000002
【特許請求の範囲】
【請求項１】
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信する受信部と、
前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部と、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部と
を有する負荷分散処理サーバ。
【請求項２】
決定された前記サーバが自サーバの場合、前記実行部は、継続して次の処理部品を実行することを特徴とする請求項１記載の負荷分散処理サーバ。
【請求項３】
前記受信部は、前記第２の実行要求を受信し、
前記実行部は、前記第２の実行要求で指定される前記次の処理部品を実行することで、前記ワークフローの途中から処理を開始する
ことを特徴とする請求項１又は２記載の負荷分散処理サーバ。
【請求項４】
自サーバを含む複数のサーバに対して、該サーバ毎に、実行可能な前記処理部品の識別子を対応付けた部品情報テーブルを記憶した記憶部を有し、
前記実行部は、
前記ワークフローに従って前記次の処理部品を特定し、前記部品情報テーブルを参照して、前記複数のサーバの中から、特定した該次の処理部品を処理可能なサーバを特定する
ことを特徴とする請求項１乃至３のいずれか一項記載の負荷分散処理サーバ。
【請求項５】
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信し、
前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定し、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する
処理をコンピュータが行う負荷分散処理方法。
【請求項６】
ワークフローを管理する管理サーバと、
前記ワークフローを遂行する複数の実行サーバとを有し、
前記管理サーバは、
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受け付けて、該ワークフローの最初の処理部品を処理可能な実行サーバに該第１の実行要求を送信する実行受付部を有し、
前記複数の実行サーバの各々は、
前記ワークフローの前記第１の実行要求を受信する受信部と、
前記第１の実行要求で指定される前記最初の処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部と、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部と
を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散処理サーバ、負荷分散処理方法、及び、システムに関する。
【背景技術】
【０００２】
近年、処理手順を規定したワークフローに従って、複数のコンピュータ（エージェント）が連携してワークを行うシステムが導入されている。エージェントの能力と負荷状態を観測し、適切なワークの実行、エージェント間の通信量を抑制する技術等が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−９６０１１号公報
【特許文献２】特開平８−１２３７４４号公報
【特許文献３】特表２００３−５２８３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ビデオ、写真、ゲーム等様々なデータを扱うアプリケーションの増加、更に、センサー、ウェアラブル端末等を用いた新しいスタイルのデータ通信の増加が、ワークフローを複雑化し、また、ワークフローの種類を増加させている。
【０００５】
上述した技術では、能力と負荷状態の観測は、全てのエージェントに対して行われるため、ワークフローに係る様々な変動に柔軟に対応することができないといった問題がある。
【０００６】
したがって、１つの側面では、本発明は、ワークフローの負荷分散処理を柔軟に行うことを目的とする。
【課題を解決するための手段】
【０００７】
一態様によれば、処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信する受信部と、前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部と、決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部とを有する負荷分散処理サーバが提供される。
【０００８】
また、上記課題を解決するための手段として、負荷分散処理方法、及びシステムとすることもできる。
【発明の効果】
【０００９】
ワークフローの負荷分散処理を柔軟に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例におけるネットワーク構成例を示す図である。
【図２】ワークフローシステム内のネットワーク構成例を示す図である。
【図３】ワークフローシステムにおけるハードウェア構成を示す図である。
【図４】ワークフローシステムの機能構成例を示す図である。
【図５】ワークフローデータの例を示す図である。
【図６】部品情報テーブルのデータ構成例を示す図である。
【図７】ワークエンジン情報テーブルのデータ構成例を示す図である。
【図８】ワークフロー管理部による処理を説明するためのフローチャート図である。
【図９】ワークフローエンジンによる処理を説明するためのフローチャート図である。
【図１０】ワークフロー例を示す図である。
【図１１】本実施例における第一の動作例を示す図である。
【図１２】本実施例における第二の動作例を示す図である。
【図１３】外部システムへのアクセス競合を防止する部品情報テーブルの設定例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて説明する。図１は、本実施例におけるネットワーク構成例を示す図である。図１において、本実施例におけるネットワーク構成１０００は、ユーザ端末３と、ゲートウェイ４と、ＷＡＮ（広域ネットワーク）５と、データデンター６と、管理者端末７と、ワークフローシステム８００とを有する。
【００１２】
ユーザ端末３は、ゲートウェイ４及びＷＡＮ５を介して接続されるデータセンター６とのデータ送受信により、業務が行われる情報処理端末である。ユーザ端末３は、デスクトップ型、ノートブック型、タブレット型、携帯型の種々の情報処理端末のいずれであってもよい、
ゲートウェイ４は、ユーザ端末３と、外部のＷＡＮ５とを接続するネットワーク機器である。外部のＷＡＮ５は、ユーザ端末３と、データセンター６との間でデータ通信を行うための複数の中継装置５ｒを有する。
【００１３】
ユーザ端末３によって行われる業務は、データセンター６とのデータ通信を含むことに限定されない。業務は、種々のサーバと連携してなされ、データセンター６は、その一例として例示したにすぎない。
【００１４】
管理者端末７は、ユーザ端末３からのパスリクエスト３ｒに応じて、パスリクエスト３ｒに従ったワークフロー７ｆの制御をワークフローシステム８００に行わせる情報処理端末であり、ワークフロー７ｆを監視する管理者によって利用される。管理者は、管理者端末７から、ワークフロー７ｆを実行した結果を、ワークフローサーバ８１０、外部システム８５０に接続して、確認できる。
【００１５】
ワークフローシステム８００は、ワークフローサーバ８１０と、ワークフローエンジン８３０−１、・・・８３０−ｎを含む複数のワークフローエンジン８３０と、外部システムＡ、外部システムＢ等を含む複数の外部システム８５０とを有する。ワークフローサーバ８１０と、複数のワークフローエンジン８３０とは、ネットワーク等により接続される。また、複数のワークフローエンジン８３０の各々は、１以上の外部システム８５０とネットワーク等により接続される。
【００１６】
本実施例では、ワークフロー７ｆを記述したワークフローデータ７ｄは、予め、管理者端末７からワークフローサーバ８１０及び複数のワークフローエンジン８３０に設定される。ワークフローサーバ８１０及び複数のワークフローエンジン８３０の各々は、ワークフローデータ７ｄを保持する。
【００１７】
ワークフローサーバ８１０は、管理者端末７からのワークフロー７ｆを識別するワークフロー名を指定した実行要求を受信すると、ワークフローデータ７ｄに基づいて、複数のワークフローエンジン８３０の中から、負荷情報に基づいて１つを選択して実行要求を送信し、ワークフローエンジン８３０に他のワークフローエンジン８３０と連携して、実行要求で示されるワークフロー７ｆの内容を行わせるサーバ装置である。
【００１８】
ワークフローエンジン８３０は、ワークフローサーバ８１０又は他のワークフローエンジン８３０からの実行要求の受信に応じて、１以上の外部システム８５０に処理を行わせる情報処理装置である。
【００１９】
各ワークフローエンジン８３０は、外部システム１以上を制御して特定の処理を行う処理部品ａ１、ａ２、・・・、ｂ１、ｂ２、・・・等の１又は複数を有するサーバである。各処理部品ａ１、・・・、ｂ１、・・・等は、外部システムＡ、Ｂ等を含む複数の外部システム８５０の１つを制御して、特定の処理を実行する。
【００２０】
外部システム８５０の例として、外部システムＡは、ユーザ端末３とデータセンター６とのデータ転送が正常に行なわれるよう、ゲートウェイ４、ＷＡＮ５、データセンター６内のＬＡＮ６ａ及びデータベース（ＤＢ）サーバ６ｃ等を含めて、ユーザ端末３とデータセンター６間のネットワーク全体を監視し、制御するコンピュータ装置である。外部システムＢは、種々の業務に係る契約（アプリケーションの使用権等）を管理し、契約に基づき業務を遂行するコンピュータ装置であってもよい。
【００２１】
図２は、ワークフローシステム内のネットワーク構成例を示す図である。図２において、ワークフローサーバ８１０は、ネットワーク２を介して、複数のワークフローエンジン８３０に接続される。
【００２２】
各ワークフローエンジン８３０は、ネットワーク２を介して外部システム８５０に接続可能である。各ワークフローエンジン８３０は、実行する処理に係る外部システム８５０を制御して、ワークフロー３ｆの内容を実現する。
【００２３】
次に、本実施例に係るハードウェア構成について説明する。図３は、ワークフローシステムにおけるハードウェア構成を示す図である。図３では、本実施例に係るハードウェア構成を示し、他を省略している。
【００２４】
図３において、ワークフローサーバ８１０は、コンピュータによって制御されるサーバ装置であって、ＣＰＵ（Central  Processing  Unit）８１１と、主記憶装置８１２と、補助記憶装置８１３と、回線Ｉ／Ｆ（インターフェース）８１４と、ドライブ装置８１８とを有し、バスＢ１に接続される。
【００２５】
ＣＰＵ８１１は、主記憶装置８１２に格納されたプログラムに従ってワークフローサーバ８１０を制御するプロセッサに相当する。主記憶装置８１２には、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）等が用いられ、ＣＰＵ８１１にて実行されるプログラム、ＣＰＵ８１１での処理に必要なデータ、ＣＰＵ８１１での処理にて得られたデータ等を記憶又は一時保存する。
【００２６】
補助記憶装置８１３には、ＨＤＤ（Hard  Disk  Drive）等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置８１３に格納されているプログラムの一部が主記憶装置８１２にロードされ、ＣＰＵ８１１に実行されることによって、各種処理が実現される。記憶部８２０は、主記憶装置８１２と、補助記憶装置８１３とに相当する。
【００２７】
回線Ｉ／Ｆ８１４は、ネットワーク２を介して、複数のワークフローエンジン８３０の各々との通信を行う。回線Ｉ／Ｆ８１４は、また、管理者端末７との通信を行う。回線Ｉ／Ｆ８１４による通信は無線又は有線に限定されるものではない。
【００２８】
ワークフローサーバ８１０によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact  Disc  Read‐Only  Memory）等の記憶媒体８１９によってワークフローサーバ８１０に提供される。
【００２９】
ドライブ装置８１８は、ドライブ装置８１８にセットされた記憶媒体８１９（例えば、ＣＤ−ＲＯＭ等）とワークフローサーバ８１０とのインターフェースを行う。
【００３０】
また、記憶媒体８１９に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体８１９に格納されたプログラムは、ドライブ装置８１８を介してワークフローサーバ８１０にインストールされる。インストールされたプログラムは、ワークフローサーバ８１０により実行可能となる。
【００３１】
尚、プログラムを格納する記憶媒体８１９はＣＤ−ＲＯＭに限定されず、コンピュータが読み取り可能な、構造（structure）を有する１つ以上の非一時的（non‐transitory）な、有形（tangible）な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００３２】
ワークフローサーバ８１０は管理者端末７から制御可能な構成とした場合のハードウェア構成を示すが、マウス、キーボード等の入力装置、各種情報を表示する表示装置等を有しても良い。
【００３３】
ワークフローサーバ８１０には、ネットワーク２を介して、ワークフローエンジン８３０−１、８３０−２等を含む複数のワークフローエンジン８３０が接続される。各ワークフローエンジン８３０は、コンピュータによって制御される情報処理装置であって、略同様のハードウェア構成を有し、ＣＰＵ８３１と、主記憶装置８３２と、補助記憶装置８３３と、回線Ｉ／Ｆ８３４ａ及び８３４ｂと、ドライブ装置８３８とを有する。
【００３４】
ＣＰＵ８３１、主記憶装置８３２に格納されたプログラムに従ってワークフローサーバ８１０を制御するプロセッサに相当する。主記憶装置８３２には、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）等が用いられ、ＣＰＵ８３１にて実行されるプログラム、ＣＰＵ８３１での処理に必要なデータ、ＣＰＵ８３１での処理にて得られたデータ等を記憶又は一時保存する。
【００３５】
補助記憶装置８３３には、ＨＤＤ（Hard  Disk  Drive）等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置８３３に格納されているプログラムの一部が主記憶装置８３２にロードされ、ＣＰＵ８３１に実行されることによって、各種処理が実現される。記憶部８４０は、主記憶装置８３２と、補助記憶装置８３３とに相当する。
【００３６】
回線Ｉ／Ｆ８３４ａは、ネットワーク２を介して、ワークフローサーバ８１０、及び他のワークフローエンジン８３０の各々との通信を行う。回線Ｉ／Ｆ８３４ｂは、１以上の外部システム８５０との通信を行う。回線Ｉ／Ｆ８３４ａ及び８３４ｂによる通信は無線又は有線に限定されるものではない。
【００３７】
ワークフローエンジン８３０によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact  Disc  Read‐Only  Memory）等の記憶媒体８３９によってワークフローエンジン８３０に提供される。
【００３８】
ドライブ装置８３８は、ドライブ装置８３８にセットされた記憶媒体８３９（例えば、ＣＤ−ＲＯＭ等）とワークフローエンジン８３０とのインターフェースを行う。
【００３９】
また、記憶媒体８３９に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体８３９に格納されたプログラムは、ドライブ装置８３８を介してワークフローエンジン８３０にインストールされる。インストールされたプログラムは、ワークフローエンジン８３０により実行可能となる。
【００４０】
尚、プログラムを格納する記憶媒体８３９はＣＤ−ＲＯＭに限定されず、コンピュータが読み取り可能な、構造（structure）を有する１つ以上の非一時的（non‐transitory）な、有形（tangible）な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００４１】
図４は、ワークフローシステムの機能構成例を示す図である。図４に示すワークフローシステム８００では、ワークフローデータ７ｄ（図１）は、予め、ワークフローサーバ８１０及び各ワークフローエンジン８３０へ提供される。ワークフローサーバ８１０では、ワークフローデータ７ｄをワークフロー情報テーブル１２１に記憶し管理する。各ワークフローエンジン８３０においても、ワークフローデータ７ｄをワークフロー情報テーブル２２１に記憶し管理する。
【００４２】
ワークフローサーバ８１０は、主に、ワークフロー管理部１１０を有する。ワークフロー管理部１１０は、回線Ｉ／Ｆ８１４を介して管理者端末７から受信した実行要求で指定されるワークフロー７ｆに従った処理を行うために、複数のワークフローエンジン８３０の負荷を管理し、負荷に応じて、ワークフローエンジン８３０を選択し、選択したワークフローエンジン８３０に実行要求を行う。
【００４３】
ワークフロー管理部１１０は、複数のワークフローエンジン８３０の一つから実行要求に対する処理結果を受信すると、管理者端末７へ通知する。
【００４４】
ワークフロー管理部１１０は、更に、ワークフロー実行受付部１２０と、ワークフローエンジン負荷監視部１３０とを有する。また、ワークフローサーバ８１０の記憶部８２０には、ワークフロー情報テーブル１２１、部品情報テーブル１３１、ワークフローエンジン情報テーブル１３２等が記憶される。
【００４５】
ワークフロー実行受付部１２０は、ワークフロー７ｆの実行要求を受け付け、ワークフローエンジン８３０を決定し、ワークフロー７ｆの実行要求を行う。先ず、ワークフロー実行受付部１２０は、ワークフロー情報テーブル１２１から、実行要求のワークフロー名のワークフローデータ７ｄを取得する。
【００４６】
次に、ワークフロー実行受付部１２０は、部品情報テーブル１３１を参照して、ワークフロー７ｆにおいて最初に実行する処理部品を確認し、その処理部品を処理できるワークフローエンジン８３０を特定する。
【００４７】
複数のワークフローエンジン８３０が候補として特定された場合、ワークフロー実行受付部１２０は、ワークフローエンジン情報テーブル１３２を参照して、負荷が最も少ないワークフローエンジン８３０を選択する。負荷は、ＣＰＵ使用率、又は稼働中のワークフロー７ｆの個数等であればよい。
【００４８】
ワークフロー情報テーブル１２１は、ワークフロー７ｆのワークフロー名とワークフローデータ７ｄとを対応付けたテーブルに相当する。
【００４９】
部品情報テーブル１３１は、各ワークフローエンジン８３０が有する外部システム８５０にアクセスするための処理部品名を示すテーブルに相当する。処理部品名は、処理部品を識別可能な名称、又は、処理部品ＩＤを示す。或いは、部品情報テーブル１３１では、処理部品の名称を管理し、別のテーブルで処理部品の名称と処理部品ＩＤとが対応付けて管理されていてもよい。
【００５０】
ワークフローエンジン情報テーブル１３２は、各ワークフローエンジン８３０にアクセスするための情報と負荷情報とを格納したテーブルに相当する。負荷情報は、ＣＰＵ使用率、実行しているワークフロー数等を示す。
【００５１】
ワークフローエンジン負荷監視部１３０は、ワークフローシステム８００内の各ワークフローエンジン８３０の業務管理部２２０から周期的に負荷情報を収集して、ワークフローエンジン情報テーブル１３２を更新する。
【００５２】
また、ワークフローエンジン負荷監視部１３０は、各ワークフローエンジン８３０のワークフローエンジン情報テーブル２３２を更新する。負荷情報では、ＣＰＵ使用率、又は稼働中のワークフロー７ｆの個数等が示される。
【００５３】
ワークフローシステム８００において、各ワークフローエンジン８３０は、主に、業務管理部２２０と、１以上のワークフロー実行部２３０と、連携ライブラリ２４０と、ワークフロー引継部２５０とを有する。
【００５４】
また、各ワークフローエンジン８３０の記憶部８４０には、ワークフロー情報テーブル２２１、部品情報テーブル２３１、ワークフローエンジン情報テーブル２３２等が記憶される。ワークフロー情報テーブル２２１、部品情報テーブル２３１、ワークフローエンジン情報テーブル２３２は、夫々、ワークフロー情報テーブル１２１、部品情報テーブル１３１、ワークフローエンジン情報テーブル１３２に相当するため、その説明を省力する。
【００５５】
業務管理部２２０は、ワークフローサーバ８１０又は他ワークフローエンジン８３０からワークフロー７ｆの実行要求を回線Ｉ／Ｆ８３４ｂにより受信すると、ワークフロー実行部２３０を起動し、ワークフロー７ｆの実行要求を行って、ワークフロー実行部２３０によるワークフロー７ｆの実行結果を管理する。業務管理部２２０は、ワークフロー７ｆの実行要求を受信する受信部を有する。
【００５６】
業務管理部２２０は、ワークフロー情報テーブル２２１を参照して、実行要求で指定されるワークフロー名に対応するフローデータ７ｄを取得して、ワークフロー実行部２３０に通知する。
【００５７】
ワークフロー実行部２３０は、業務管理部２２０からの実行要求で指定されるワークフロー７ｆ内で指定される処理内容を順次実行する。ワークフロー実行部２３０は、部品情報テーブル２３１を参照して処理可否を判断し、連携ライブラリ２４０を介して、外部システム８５０を制御して処理を実行するか、又は、ワークフロー引継部２５０に、他のワークフローエンジン８３０にワークフロー７ｆを引き継ぐ処理を行わせるかのいずれかを行う。
【００５８】
連携ライブラリ２４０は、外部システムＡ、外部システムＢ等の外部システム８５０にアクセスするためのＡＰＩ（Application  Programming  Interface）部品の集合である。
【００５９】
ワークフロー引継部２５０は、ワークフロー実行部２３０からの引継要求に応じて、他ワークフローエンジン８３０にワークフロー７ｆの途中から処理を引き継ぐ実行要求を行う。
【００６０】
図４において、ワークフローサーバ８１０が、ワークフローエンジン８３０−１を選択した場合について説明する。他のワークフローエンジン８３０−２等が選択された場合も同様である。
【００６１】
ワークフローエンジン８３０−１は、ワークフローサーバ８１０から実行要求を受信すると、業務管理部２２０が、ワークフロー情報テーブル２２１から実行要求で指定されるワークフロー名に対応付けられたワークフローデータ７ｄを取得し、ワークフロー実行部２３０を起動する。
【００６２】
ワークフロー実行部２３０は、ワークフローデータ７ｄに示される処理部品及びその実行手順に従って、自身で実行可能な処理部品による処理を行う。連携ライブラリ２４０は、処理部品からＡＰＩ呼び出しされることで、外部システムＡを制御する。
【００６３】
ワークフローデータ７ｄに示される処理部品が存在しない場合、ワークフローエンジン８３０−１のワークフロー実行部２３０は、部品情報テーブル２３１を参照して、自身で次のワークフローエンジン８３０を決定し、ワークフロー引継部２５０に引継要求を行う。ワークフローエンジン８３０−２が決定されたとする。
【００６４】
引継要求では、次のワークフローエンジン８３０−２を特定する情報（ＩＰ（Internet  Protocol）アドレス等）、ワークフロー７ｆのワークフロー名、次に実行する処理部品までに実施した処理に基づく引継情報、次に実行する処理部品のＩＤ（処理部品ＩＤ）等の情報が指定される。
【００６５】
ワークフロー引継部２５０は、ワークフロー実行部２３０からの引継要求に応じて、引継用の実行要求（以下、実行要求（引継）という）を作成し、引継要求で指定されるワークフローエンジン８３０−２に対して送信する。実行要求（引継）には、引継要求で指定される、ワークフロー名、引継情報、次に実行する処理部品ＩＤ等の情報が含まれる。
【００６６】
ワークフローエンジン８３０−２では、ワークフローエンジン８３０−１からの実行要求（引継）を受信すると、業務管理部２２０が、ワークフロー情報テーブル２２１から実行要求で指定されるワークフロー名に対応付けられたワークフローデータ７ｄを取得し、ワークフロー実行部２３０を起動する。
【００６７】
ワークフロー実行部２３０は、ワークフローデータ７ｄに示される処理部品及びその実行手順に従って、指定された処理部品ＩＤで特定される処理部品による処理から開始する。連携ライブラリ２４０は、処理部品からＡＰＩ呼び出しされることで、外部システムＢを制御する。
【００６８】
ワークフローデータ７ｄに示される処理部品が存在しない場合、ワークフローエンジン８３０−２のは、部品情報テーブル２３１を参照して、自身で次のワークフローエンジン８３０を決定し、ワークフロー引継部２５０に引継要求を行う。ワークフローエンジン８３０−１が決定されたとする。
【００６９】
引継要求では、次のワークフローエンジン８３０−１を特定する情報（ＩＰ（Internet  Protocol）アドレス等）、ワークフロー７ｆのワークフロー名、次に実行する処理部品までに実施した処理に基づく引継情報、次に実行する処理部品ＩＤ等の情報が指定される。
【００７０】
ワークフロー引継部２５０は、ワークフロー実行部２３０からの引継要求に応じて、実行要求（引継）を作成し、引継要求で指定されるワークフローエンジン８３０−１に対して送信する。実行要求（引継）には、引継要求で指定される、ワークフロー名、引継情報、次に実行する処理部品ＩＤ等の情報が含まれる。
【００７１】
ワークフロー７ｆに基づく処理完了の通知は、ワークフロー７ｆを完了したワークフローエンジン８３０がワークフローサーバ８１０に行う。また、ワークフロー７ｆに基づく処理が実行不可と判断された場合には、実行不可を判断したワークフローエンジン８３０がワークフローサーバ８１０に行う。
【００７２】
このように、本実施例では、初期の実行要求は、負荷情報に基づいて、複数のワークフローエンジン８３０の１つにのみ行えばよい。各ワークフローエンジン８３０は、処理の可否の判断結果と負荷情報等に基づき、ワークフロー７ｆの途中から処理を引き継ぐ次のワークフローエンジン８３０を決定する。従って、処理分散をワークフロー７ｆの実行中に適宜行える。また、ワークフローサーバ８１０の管理処理に係る負荷を軽減させることができる。
【００７３】
図５は、ワークフローデータの例を示す図である。図５では、ＸＭＬ（Extensible  Markup  Language）で記述されたワークフローデータ７ｄを例示する。ワークフロー名７ｎにより、ワークフローデータ７ｄが特定され、タグ＜branch＞毎に、idにより処理部品ＩＤ７ｉｄが指定され、処理部品７ｐが特定される。
【００７４】
処理部品７ｐは、処理の実行単位である。即ち、ワークフロー７ｆは、処理部品７ｐを複数含み、ワークフローデータ７ｄによって複数の処理部品７ｐの実行順序を示す。
【００７５】
次に、部品情報テーブル１３１及びワークフローエンジン情報テーブル１３２のデータ構成例について、図６及び図７で説明する。
【００７６】
図６は、部品情報テーブルのデータ構成例を示す図である。図６において、部品情報テーブル１３１は、ワークフローエンジン８３０毎に処理可能な処理部品を示したテーブルであり、ワークフローエンジン名、処理部品名等の項目を有する。
【００７７】
ワークフローエンジン名は、複数のワークフローエンジン８３０の各々を識別する名称等の情報を示す。処理部品名は、ワークフローエンジン８３０が処理可能な処理部品を識別する名称等の情報を示す。
【００７８】
図６に示すデータ例では、ワークフローエンジン名「ＷＦＥ−１」のワークフローエンジン８３０が処理可能な処理部品は、処理部品名により、ａ１、ａ２、及びａ３であることが示されている。
【００７９】
ワークフローエンジン名「ＷＦＥ−２」のワークフローエンジン８３０が処理可能な処理部品は、処理部品名により、ｂ１、ｂ２、及びｂ３であることが示されている。
【００８０】
ワークフローエンジン名「ＷＦＥ−３」のワークフローエンジン８３０が処理可能な処理部品は、処理部品名により、ａ１、ａ２、ａ３、ｂ１、ｂ２、及びｂ３であることが示されている。
【００８１】
図７は、ワークエンジン情報テーブルのデータ構成例を示す図である。図７において、ワークフローエンジン情報テーブル１３２は、ワークフローエンジン８３０を決定する際に参照されるテーブルであり、ワークフローエンジン名、アクセス用情報、負荷等の項目を有する。
【００８２】
ワークフローエンジン名は、現在稼働中のワークフローエンジン８３０を識別する名称（例えば、ホスト名）等の情報を示す。アクセス用情報は、アクセスするためのＩＰアドレス、アカウント情報、又は認証情報等の情報を示す。負荷は、ワークフローエンジン８３０のＣＰＵ使用率、又は実行中のワークフローの個数等を示す。
【００８３】
図７に示すデータ例では、ワークフローエンジン名「ＷＦＥ−１」のワークフローエンジン８３０に関して、アクセスはアクセス用情報により「ＩＰ１」であり、負荷は「１０」であることを示している。
【００８４】
ワークフローエンジン名「ＷＦＥ−２」のワークフローエンジン８３０に関して、アクセスはアクセス用情報により「ＩＰ２」であり、負荷は「２０」であることを示している。ワークフローエンジン名「ＷＦＥ−３」のワークフローエンジン８３０に関して、アクセスはアクセス用情報により「ＩＰ３」であり、負荷は「４０」であることを示している。
【００８５】
次に、ワークフローサーバ８１０のワークフロー管理部１１０による処理を説明する。図８は、ワークフロー管理部による処理を説明するためのフローチャート図である。
【００８６】
図８において、ワークフロー管理部１１０は、回線Ｉ／Ｆ８１４によって、管理者端末７からワークフロー７ｆのワークフロー名を指定した実行要求を受信すると（ステップＳ１０１）、ワークフロー情報テーブル１２１から、実行要求のワークフロー名のワークフローデータ７ｄを取得する（ステップＳ１０２）。
【００８７】
ワークフロー管理部１１０は、部品情報テーブル１３１を参照して、ワークフロー７ｆ内の最初に実行する処理部品を持っているワークフローエンジン８３０を検索する（ステップＳ１０３）。
【００８８】
即ち、ワークフロー管理部１１０は、ワークフローデータ７ｄを解析して、ワークフロー７ｆにおいて、最初に実行する処理部品名を抽出し、抽出した処理部品名を用いて部品情報テーブル１３１から最初に処理を実行するワークフローエンジン８３０を検索する。検索できた場合には、ワークフローエンジン８３０のワークフローエンジン名が抽出される。
【００８９】
ワークフロー管理部１１０は、ワークフローエンジン８３０を検索できたか否かを判断する（ステップＳ１０４）。ワークフローエンジン８３０を検索できなかった場合（ステップＳ１０４のＮＯ）、ワークフロー管理部１１０は、要求されたワークフロー７ｆにおいて、最初に実行する処理を行えるワークフローエンジン８３０は存在しないと判断し、管理者端末７へ実行不可を通知する（ステップＳ１０５）。その後、ワークフロー管理部１１０は、ステップＳ１０１で受信したワークフロー７ｆの実行要求に対する処理を終了する。
【００９０】
ワークフローエンジン８３０を検索できた場合（ステップＳ１０４のＹＥＳ）、ワークフロー管理部１１０は、要求されたワークフロー７ｆにおいて、最初に実行する処理を行えるワークフローエンジン８３０が存在すると判断し、２以上のワークフローエンジン８３０が存在するか否かを判断する（ステップＳ１０６）。
【００９１】
２以上のワークフローエンジン８３０が存在しない場合（ステップＳ１０６のＮＯ）、ワークフロー管理部１１０は、検索したワークフローエンジン８３０にワークフロー７ｆの実行要求を行うためステップＳ１０８へと進む。
【００９２】
一方、２以上のワークフローエンジン８３０が存在する場合（ステップＳ１０６のＹＥＳ）、ワークフロー管理部１１０は、ワークフローエンジン情報テーブル１３２を参照して、２以上のワークフローエンジン８３０のうち負荷の一番小さいワークフローエンジン８３０を選択する（ステップＳ１０７）。
【００９３】
ワークフロー管理部１１０は、ワークフローエンジン８３０に、少なくとも、ワークフロー名と、最初の処理部品の処理部品ＩＤとを指定した実行要求を送信する（ステップＳ１０８）。その後、ワークフロー管理部１１０は、実行要求を送信したワークフローエンジン８３０から、応答を受信して、権利者端末７へ通知する（ステップＳ１０９）。その後、ワークフロー管理部１１０は、この処理を終了する。
【００９４】
次に、ワークフローエンジン８３０での処理を説明する。図９は、ワークフローエンジンによる処理を説明するためのフローチャート図である。
【００９５】
図９において、ワークフローエンジン８３０では、業務管理部２２０が、回線Ｉ／Ｆ８３４ｂによって、ワークフローサーバ８１０又はワークフローエンジン８３０から、少なくとも、ワークフロー７ｆのワークフロー名と、実行する処理部品の処理部品ＩＤとを指定した実行要求を受信すると（ステップＳ２０１）、ワークフロー情報テーブル２２１から、実行要求のワークフロー名のワークフローデータ７ｄを取得する（ステップＳ２０２）。
【００９６】
ワークフローサーバ８１０から実行要求を受信した場合、ワークフロー７ｆにおける最初の処理部品ＩＤが指定される。ワークフローエンジン８３０から実行要求を受信した場合、ワークフロー７ｆにおける途中の処理部品ＩＤが指定される。
【００９７】
業務管理部２２０は、ワークフロー実行部２３０を起動して、取得したワークフローデータ７ｄと、実行要求で指定された処理部品ＩＤとをワークフロー実行部２３０に通知する（ステップＳ２０２−２）。実行要求で指定された処理部品ＩＤで特定される処理部品から、以下の処理が繰り返される。
【００９８】
ワークフロー実行部２３０は、処理部品ＩＤで特定される処理部品を実行し（ステップＳ２０３）、ワークフローデータ７ｄから次の処理部品ＩＤを検索することで、ワークフロー７ｆを終了したか否かを判断する（ステップＳ２０４）。次の処理部品ＩＤが存在する場合、ワークフロー７ｆを終了していないと判断する。
【００９９】
次の処理部品ＩＤが存在せず、ワークフロー７ｆを終了したと判断した場合（ステップＳ２０４のＹＥＳ）、ワークフロー実行部２３０は、処理完了をワークフローサーバ８１０に通知する（ステップＳ２０５）。ワークフローサーバ８１０から管理者端末７へ処理完了が通知される。その後、ワークフローエンジン８３０は、ステップＳ１０１で受信したワークフロー７ｆの実行要求に対する処理を終了する。
【０１００】
一方、次の処理部品ＩＤが存在し、ワークフロー７ｆを終了していないと判断した場合（ステップＳ２０４のＮＯ）、ワークフロー実行部２３０は、部品情報テーブル２３１を参照して、ワークフロー７ｆ内で次に実行する処理部品を持っているワークフローエンジン８３０を検索する（ステップＳ２０６）。
【０１０１】
即ち、ワークフロー実行部２３０は、ワークフローデータ７ｄを解析して、ワークフロー７ｆにおいて、ステップＳ２０３で実行した処理部品の次の処理部品を抽出し、抽出した処理部品名を用いて部品情報テーブル１３１から最初に処理を実行するワークフローエンジン８３０を検索する。検索できた場合には、ワークフローエンジン８３０のワークフローエンジン名が抽出される。
【０１０２】
ワークフロー実行部２３０は、ワークフローエンジン８３０を検索できたか否かを判断する（ステップＳ２０７）。ワークフローエンジン８３０を検索できなかった場合（ステップＳ２０７のＮＯ）、ワークフロー実行部２３０は、要求されたワークフロー７ｆにおいて、最初に実行する処理を行えるワークフローエンジン８３０は存在しないと判断し、管理者端末７へ実行不可を通知する（ステップＳ２０８）。その後、ワークフロー実行部２３０は、ステップＳ２０１で受信したワークフロー７ｆの実行要求に対する処理を終了する。
【０１０３】
ワークフローエンジン８３０を検索できた場合（ステップＳ２０７のＹＥＳ）、ワークフロー実行部２３０は、要求されたワークフロー７ｆにおいて、次の処理を行えるワークフローエンジン８３０が存在すると判断し、２以上のワークフローエンジン８３０が存在したか否かを判断する（ステップＳ２０９）。
【０１０４】
２以上のワークフローエンジン８３０が存在しない場合（ステップＳ２０９のＮＯ）、ワークフロー実行部２３０は、ステップＳ２１１へと進む。
【０１０５】
一方、２以上のワークフローエンジン８３０が存在する場合（ステップＳ２０９のＹＥＳ）、ワークフロー実行部２３０は、ワークフローエンジン情報テーブル１３２を参照して、２以上のワークフローエンジン８３０のうち負荷の一番小さいワークフローエンジン８３０を選択する（ステップＳ２１０）。
【０１０６】
ワークフロー実行部２３０は、次の処理を行うワークフローエンジン８３０が自身が否かを判断する（ステップＳ２１１）。次の処理を行うワークフローエンジン８３０が自身の場合（ステップＳ２１１のＹＥＳ）、ワークフロー実行部２３０は、ステップＳ２０３へと戻り、上述した同様の処理を行う。
【０１０７】
一方、次の処理を行うワークフローエンジン８３０が他のワークフローエンジン８３０である場合（ステップＳ２１１のＮＯ）、ワークフロー実行部２３０は、次のワークフローエンジン８３０に、少なくとも、ワークフロー名と、引継情報と、次に実行する処理部品ＩＤとを指定した実行要求を送信する（ステップＳ２１２）。その後、ワークフロー実行部２３０は、この処理を終了する。
【０１０８】
次に、図８及び図９に示すフローチャートによって、本実施例で実現される処理例を説明する。図１０は、ワークフロー例を示す図である。図１０では、ワークフロー７ｆの単純な例を示すが、この例に限定されない。
【０１０９】
図１０において、ワークフロー７ｆは、処理部品ａ１による処理を行い（ステップＳ３０１）、次に、処理部品ｂ１による処理を行い（ステップＳ３０２）、そして、処理部品ｂ２による処理を行う（ステップＳ３０３）、ことを示す。
【０１１０】
このようなワークフロー７ｆの一例として、サービスを設定し、ユーザ端末３の位置情報を取得し、ユーザ端末３とデータセンター６とのパスを設定するような一連の処理が考えられる。
【０１１１】
図１０のワークフロー７ｆ、図６の部品情報テーブル１３１、及び図７のワークフローエンジン情報テーブル１３２に基づく、動作例を以下に示す。各ワークフローエンジン８３０のワークフロー情報テーブル２２１、部品情報テーブル２３１、及びワークフローエンジン情報２３２は、各々、ワークフロー情報テーブル１２１、図６の部品情報テーブル１３１、及び図７のワークフローエンジン情報１３２と同様であるとする。
【０１１２】
図１１は、本実施例における第一の動作例を示す図である。図１１において、ワークフローサーバ８１０は、管理者端末７から実行要求を受信すると、ワークフロー実行受付部１２０は、ワークフロー情報テーブル１２１から、ワークフロー名からワークフロー７ｆを記述したワークフローデータ７ｄを取得する。
【０１１３】
ワークフロー実行受付部１２０は、ワークフローデータ７ｄを解析して、最初の処理部品ＩＤに対応する処理部品名を、部品情報テーブル１３１から検索することで、ワークフローエンジン名を取得する。図１０の例では、最初の処理部品名「ａ１」であるため、ワークフローエンジン名「ＷＦＥ−１」と「ＷＦＥ−２」とが抽出される。
【０１１４】
次に、ワークフロー実行受付部１２０は、ワークフローエンジン情報テーブル１３２（図７）を参照して、ワークフローエンジン名「ＷＦＥ−１」と「ＷＦＥ−２」のうち、最も小さい負荷「１０」を示すワークフローエンジン名「ＷＦＥ−１」と、ワークフローエンジン名「ＷＦＥ−１」に対応付けられるアクセス用情報「ＩＰ１」とを取得する。
【０１１５】
ワークフロー実行受付部１２０は、実行要求を作成し、アクセス用情報「ＩＰ１」を宛先として、ワークフローエンジン名「ＷＦＥ−１」のワークフローエンジン８３０（以下、ワークフローエンジン「ＷＦＥ−１」という）に、作成した実行要求を送信する。実行要求には、ワークフロー名、処理部品ＩＤ、依頼元等の情報が含まれる。処理部品ＩＤには「ａ１」が示され、依頼元にはワークフローサーバ８１０のアドレス等の情報が示される。
【０１１６】
複数のワークフローエンジン８３０のうち、選択されたワークフローエンジン「ＷＦＥ−１」が、ワークフローサーバ８１０から実行要求を受信する。
【０１１７】
ワークフローエンジン「ＷＦＥ−１」において、業務管理部２２０は、ワークフロー情報テーブル２２１を参照して、ワークフロー名からワークフローデータ７ｄを取得し、ワークフローデータ７ｄ内の実行要求で指定された処理部品「ａ１」から、ワークフロー７ｆを開始する。業務管理部２２０は、ワークフロー実行部２３０を起動して、処理部品「ａ１」を行わせる。
【０１１８】
ワークフロー実行部２３０は、処理部品「ａ１」での処理を終了すると、ワークフローデータ７ｄ内の次の処理部品ＩＤを取得する。この場合、処理部品「ｂ１」が取得される。そして、ワークフロー実行部２３０は、部品情報テーブル２３１（図６）から、取得した処理部品「ｂ１」に対応付けられるワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」とを抽出する。
【０１１９】
次に、ワークフロー実行部２３０は、ワークフローエンジン情報テーブル２３２（図７）を参照して、ワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」に関して、最も小さい負荷「２０」を示すワークフローエンジン名「ＷＦＥ−２」と、アクセス用情報「ＩＰ２」とを取得する。
【０１２０】
ワークフロー実行部２３０は、実行要求を作成し、アクセス用情報「ＩＰ２」を宛先として、ワークフローエンジン名「ＷＦＥ−２」のワークフローエンジン８３０（以下、ワークフローエンジン「ＷＦＥ−２」という）に、作成した実行要求を送信する。実行要求には、ワークフロー名、処理部品ＩＤ、依頼元等の情報が含まれる。処理部品ＩＤには「ｂ１」が示され、依頼元にはワークフローエンジン「ＷＦＥ−１」のアドレス等の情報が示される。
【０１２１】
複数のワークフローエンジン８３０のうち、選択されたワークフローエンジン「ＷＦＥ−２」が、ワークフローエンジン「ＷＦＥ−１」から実行要求を受信する。
【０１２２】
ワークフローエンジン「ＷＦＥ−２」において、業務管理部２２０は、ワークフロー情報テーブル２２１を参照して、ワークフロー名からワークフローデータ７ｄを取得し、ワークフローデータ７ｄ内の実行要求で指定された処理部品「ｂ１」から、ワークフロー７ｆを開始する。業務管理部２２０は、ワークフロー実行部２３０を起動して、処理部品「ｂ１」を行わせる。
【０１２３】
ワークフロー実行部２３０は、処理部品「ｂ１」での処理を終了すると、ワークフローデータ７ｄ内の次の処理部品ＩＤを取得する。この場合、処理部品「ｂ２」が取得される。そして、ワークフロー実行部２３０は、部品情報テーブル２３１（図６）から、取得した処理部品「ｂ２」に対応付けられるワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」とを抽出する。
【０１２４】
次に、ワークフロー実行部２３０は、ワークフローエンジン情報テーブル２３２（図７）を参照して、ワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」に関して、最も小さい負荷を示すワークフローエンジン名「ＷＦＥ−２」と、アクセス用情報「ＩＰ２」とを取得する。
【０１２５】
ワークフロー実行部２３０は、ワークフローエンジン名「ＷＦＥ−２」は自装置のワークフローエンジン名と一致するため、継続して、処理部品「ｂ２」の処理を実行する。処理部品「ｂ２」の処理を終了したことにより、図１０のワークフロー７ｆが終了する。
【０１２６】
次に、図７に示すワークフローエンジン情報テーブル１３２において、ワークフローエンジン名「ＷＦＥ−２」に対応付けられた負荷の値が「４０」から「１５」に更新された場合の第二の動作例について図１２で説明する。
【０１２７】
図１２は、本実施例における第二の動作例を示す図である。図１２において、処理部品名「ａ１」での処理がワークフローエンジン「ＷＦＥ−１」で行われ、ワークフロー７ｆがワークフローエンジン「ＷＦＥ−２」に引き継がれて、処理部品名「ｂ１」での処理がワークフローエンジン「ＷＦＥ−２」で行われるまでは、図１１の第一の動作例と同様であるため、その説明を省略する。
【０１２８】
ワークフローエンジン「ＷＦＥ−２」において、業務管理部２２０は、ワークフロー情報テーブル２２１を参照して、ワークフロー名からワークフローデータ７ｄを取得し、ワークフローデータ７ｄ内の実行要求で指定された処理部品「ａ１」から、ワークフロー７ｆを開始する。業務管理部２２０は、ワークフロー実行部２３０を起動して、処理部品「ａ１」を行わせる。
【０１２９】
ワークフロー実行部２３０は、処理部品「ａ１」での処理を終了すると、ワークフローデータ７ｄ内の次の処理部品ＩＤを取得する。この場合、処理部品「ｂ１」が取得される。そして、ワークフロー実行部２３０は、部品情報テーブル２３１（図６）から、取得した処理部品「ｂ１」に対応付けられるワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」とを抽出する。
【０１３０】
次に、ワークフロー実行部２３０は、ワークフローエンジン情報テーブル２３２（図７）を参照して、ワークフローエンジン名「ＷＦＥ−２」と「ＷＦＥ−３」に関して、最も小さい負荷「１５」を示すワークフローエンジン名「ＷＦＥ−３」と、アクセス用情報「ＩＰ３」とを取得する。
【０１３１】
ワークフロー実行部２３０は、実行要求を作成し、アクセス用情報「ＩＰ３」を宛先として、ワークフローエンジン名「ＷＦＥ−３」のワークフローエンジン８３０（以下、ワークフローエンジン「ＷＦＥ−３」という）に、作成した実行要求を送信する。実行要求には、ワークフロー名、処理部品ＩＤ、依頼元等の情報が含まれる。処理部品ＩＤには「ｂ２」が示され、依頼元にはワークフローエンジン「ＷＦＥ−２」のアドレス等の情報が示される。
【０１３２】
複数のワークフローエンジン８３０のうち、選択されたワークフローエンジン「ＷＦＥ−３」が、ワークフローエンジン「ＷＦＥ−２」から実行要求を受信する。
【０１３３】
ワークフローエンジン「ＷＦＥ−３」において、業務管理部２２０は、ワークフロー情報テーブル２２１を参照して、ワークフロー名からワークフローデータ７ｄを取得し、ワークフローデータ７ｄ内の実行要求で指定された処理部品「ｂ２」から、ワークフロー７ｆを開始する。業務管理部２２０は、ワークフロー実行部２３０を起動して、処理部品「ｂ２」を行わせる。
【０１３４】
ワークフロー実行部２３０は、処理部品「ｂ２」を実行し、処理部品「ｂ２」の処理を終了することで、図１０のワークフロー７ｆが終了する。
【０１３５】
次に、管理者端末７は、図６に示す部品情報テーブル１３１を変更するのみで、特定のワークフローエンジン８３０間での特定の外部システム８５０へのアクセス競合を回避できる例について説明する。
【０１３６】
図１３は、外部システムへのアクセス競合を防止する部品情報テーブルの設定例を示す図である。図１３において、処理部品「ａ１」、「ａ２」、及び「ａ３」は、複数の外部システム８５０のうち外部システムＡを利用して処理を行う処理部品であり、処理部品「ｂ１」、「ｂ２」、及び「ｂ３」は、複数の外部システム８５０のうち外部システムＢを利用して処理を行う処理部品である。
【０１３７】
図６に示すワークエンジン情報テーブル１３２では、外部システムＡに係る処理部品「ａ１」、「ａ２」、及び「ａ３」が、ワークフローエンジン「ＷＦＥ−１」と「ＷＦＥ−３」とで処理可能な設定を示している。この場合、ワークフローエンジン「ＷＦＥ−１」と「ＷＦＥ−３」とで外部システムＡへのアクセスが競合する場合がある。
【０１３８】
本実施例では、管理者端末７から、外部システムＡへのアクセスが競合しないように、ワークフローエンジン「ＷＦＥ−１」でのみ外部システムＡに係る処理部品「ａ１」、「ａ２」、及び「ａ３」を対応付けた設定に変更すればよい。
【０１３９】
図１３に示すようなワークフローエンジン情報テーブル１３２−２が、ワークフローサーバ８１０に記憶される。ワークフローエンジン「ＷＦＥ−１」でのみによって、外部システムＡに係る処理部品「ａ１」、「ａ２」、及び「ａ３」での処理が実行される。
【０１４０】
また、ワークフローエンジン情報テーブル１３２−２と同様の設定がなされたワークフロー情報テーブル２２１が、各ワークフローエンジン８３０の記憶部８４０に記憶される。従って、ワークフローエンジン「ＷＦＥ−１」以外のワークフローエンジン８３０では、処理部品「ａ１」、「ａ２」、及び「ａ３」での処理を実行する場合には、ワークフロー引継部２５０によって、ワークフローエンジン「ＷＦＥ−１」へとワークフロー７ｆが引き継がれる。
【０１４１】
従って、外部システムＡに係る処理部品「ａ１」、「ａ２」、及び「ａ３」を実行するための、ワークフローエンジン８３０間における外部システムＡへのアクセス競合を回避できる。
【０１４２】
本実施例では、第１に、ワークフローエンジン８３０毎に処理できる処理部品を割り当てることにより、１つのワークフロー７ｆをワークフローエンジン８３０間で分散して処理を行うことができる。
【０１４３】
第２に、ワークフローサーバ８１０のワークフローエンジン負荷監視部１３０により、ワークフローエンジン情報テーブル１３２、及び、各ワークフローエンジン８３０のワークフローエンジン情報テーブル２３２を周期的に更新する。
【０１４４】
第３に、設計者は、ワークフローシステム８００における、複数のワークフローエンジン８３０の構成を意識することなく、ワークフロー７ｆを設計できる。具体的には、複数のワークフローエンジン８３０の構成に寄らず、ワークフロー７ｆを記述したワークフローデータ７ｄを作成できる。
【０１４５】
第４に、各ワークフローエンジン８３０は自律的に動作できるため、ワークフロー管理部１１０は、一つの実行要求に対して、少なくとも負荷の少ない、ワークフローエンジン８３０を１回選択するのみで、１以上のワークフローエンジン８３０によってワークフロー７ｆを遂行させることができる。
【０１４６】
第５に、運用の中で、管理者は、管理者端末７からワークフローエンジン８３０に対する処理部品の割り当てを、部品情報テーブル１３１及び２３１を変更するのみで容易に調整でき、かつ、ワークフローエンジン８３０の負荷をチューニングできる。
【０１４７】
第６に、同時に、複数の実行要求を受け付けることができない外部システム８５０が存在する場合、管理者は、単に、部品情報テーブル１３１及び２３１を変更するのみの簡単な操作で、ワークフローエンジン８３０間のアクセスの競合を回避することができる。
【０１４８】
近年の、スマートフォン等の携帯端末の増加や、ビデオ、写真、ゲームなど様々なデータを扱うアプリケーションの増加、さらにセンサーやウェアラブル端末等を用いた新しいスタイルのデータ通信の増加により、通信サービスには、様々なデータ通信に対応できる通信品質を確保することが求められている。
【０１４９】
キャリア、サービスプロバイダ等は、より少ない投資と運用コストで、すばやく新しいネットワークサービスを提供し、かつネットワーク利用形態の変化に対応して、使いやすいものに素早く変更できる仕組みが望まれている。
【０１５０】
このような状況に対して、上述した種々の効果を有する本実施例の適用は、有効であると言える。
【０１５１】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
【０１５２】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信する受信部と、
前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部と、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部と
を有する負荷分散処理サーバ。
（付記２）
決定された前記サーバが自サーバの場合、前記実行部は、継続して次の処理部品を実行することを特徴とする付記１記載の負荷分散処理サーバ。
（付記３）
前記受信部は、前記第２の実行要求を受信し、
前記実行部は、前記第２の実行要求で指定される前記次の処理部品を実行することで、前記ワークフローの途中から処理を開始する
ことを特徴とする付記１又は２記載の負荷分散処理サーバ。
（付記４）
自サーバを含む複数のサーバに対して、該サーバ毎に、実行可能な前記処理部品の識別子を対応付けた部品情報テーブルを記憶した記憶部を有し、
前記実行部は、
前記ワークフローに従って前記次の処理部品を特定し、前記部品情報テーブルを参照して、前記複数のサーバの中から、特定した該次の処理部品を処理可能なサーバを特定する
ことを特徴とする付記１乃至３のいずれか一項記載の負荷分散処理サーバ。
（付記５）
前記部品情報テーブルの変更により、前記複数のサーバにおいて、同一の処理部品が処理可能である２以上のサーバによる同一の外部システムへのアクセス競合を回避可能とすることを特徴とする付記４記載の負荷分散処理サーバ。
（付記６）
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受信し、
前記第１の実行要求で指定される処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定し、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する
処理をコンピュータが行う負荷分散処理方法。
（付記７）
ワークフローを管理する管理サーバと、
前記ワークフローを遂行する複数の実行サーバとを有し、
前記管理サーバは、
処理の実行単位である処理部品を複数含む、処理部品の実行手順を示すワークフローの第１の実行要求を受け付けて、該ワークフローの最初の処理部品を処理可能な実行サーバに該第１の実行要求を送信する実行受付部を有し、
前記複数の実行サーバの各々は、
前記ワークフローの前記第１の実行要求を受信する受信部と、
前記第１の実行要求で指定される前記最初の処理部品を実行し、自サーバの負荷状況と次に実行する処理部品を処理可能な他サーバの負荷状況とに基づいて、該次の処理部品を実行するサーバを決定する実行部と、
決定された前記サーバが決定した前記他サーバの場合、前記ワークフローの識別子と、前記次の処理部品までに実施した処理に基づく該ワークフローの引継情報と、該次の処理部品の識別子とを含む第２の実行要求を送信する引継部と
を有するシステム。
（付記８）
前記管理サーバは、
前記複数の実行サーバの負荷状況を監視し、各実行サーバの該負荷状況を示す負荷状況テーブルを該前記複数の実行サーバに送信する負荷監視部を有することを特徴とする付記７記載のシステム。
【符号の説明】
【０１５３】
３            ユーザ端末、          ３ｒ            パスリクエスト
４            ゲートウェイ
５            ＷＡＮ、              ５ｒ            中継装置
６            データセンター
６ａ          ＬＡＮ、              ６ｃ            データベースサーバ
７            管理者端末
７ｄ          ワークフローデータ、  ７ｆ            ワークフロー
１１０        ワークフロー管理部
１２０        ワークフロー実行受付部
１２１        ワークフロー情報テーブル
１３０        ワークフローエンジン負荷監視部
１３１        部品情報テーブル
１３２        ワークフローエンジン情報テーブル
２２０        業務管理部
２３０        ワークフロー実行部
２３１        部品情報テーブル
２３２        ワークフローエンジン情報テーブル
２４０        連携ライブラリ
２５０        ワークフロー引継部
８１０        ワークフローサーバ
８３０        ワークフローエンジン
８５０        外部システム
１０００      ネットワーク構成
【図１】
2017102777.tif 000003
【図２】
2017102777.tif 000004
【図３】
2017102777.tif 000005
【図４】
2017102777.tif 000006
【図５】
2017102777.tif 000007
【図６】
2017102777.tif 000008
【図７】
2017102777.tif 000009
【図８】
2017102777.tif 000010
【図９】
2017102777.tif 000011
【図１０】
2017102777.tif 000012
【図１１】
2017102777.tif 000013
【図１２】
2017102777.tif 000014
【図１３】
2017102777.tif 000015