(57)【要約】【課題】効率的なネットワークサービスの提供を図ること。【解決手段】（Ｂ）では、ユーザリクエストを受け付けると、プレゼンス、コンテンツ配信およびログ管理という一連のアプリケーションに対するユーザの認証処理（ステップＳ１１１）、ユーザにプレゼンスおよびログ管理の実行が認可されているか否かを判定する認可判定処理（ステップＳ１１２）、プレゼンス（ステップＳ１１３）、ユーザにコンテンツ配信の実行が認可されているか否かを判定する認可判定処理（ステップＳ１１４）、コンテンツ配信（ステップＳ１１５）、ログ管理（ステップＳ１１６）を実行する。すなわち、認証処理が一連のアプリケーションの実行に先立って１回に集約されている。したがって、認証処理を実行する認証サーバへのアクセスが（Ａ）では３回のところ、（Ｂ）では１回で済む。【選択図】図１
2010049631.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入手段、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段、
として機能させることを特徴とするワークフロー開発プログラム。
【請求項２】
コンピュータを、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理および前記ユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入するとともに、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入する挿入手段、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段、
として機能させることを特徴とするワークフロー開発プログラム。
【請求項３】
前記コンピュータを、
前記アプリケーションごとに前記アプリケーションの属性を記憶する属性テーブルから、前記ワークフローの中から選ばれたアプリケーションの属性を抽出する抽出手段、
前記抽出手段によって抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含むか否かを判断する判断手段、
前記判断手段によって判断された判断結果に基づいて、前記一連のアプリケーションに対する前記各認可判定処理の記述の挿入位置を決定する決定手段として機能させ、
前記挿入手段は、
前記決定手段によって決定された挿入位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入することを特徴とする請求項２に記載のワークフロー開発プログラム。
【請求項４】
前記決定手段は、
前記判断手段によって、前記抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含まないと判断された場合、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置を、前記選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定することを特徴とする請求項３に記載のワークフロー開発プログラム。
【請求項５】
前記挿入手段は、
前記判断手段によって、前記抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含むと判断された場合、前記依存元アプリケーションよりも後でかつ前記選ばれたアプリケーションよりも先に実行される位置を、前記選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定することを特徴とする請求項３に記載のワークフロー開発プログラム。
【請求項６】
前記コンピュータを、
前記ワークフローを、当該ワークフロー内の連続するアプリケーションどうしの遷移関係に基づいて複数通りのワークフローに分離する分離手段として機能させ、
前記抽出手段は、
前記分離手段によって分離されたワークフローごとに、前記アプリケーションごとに前記アプリケーションの属性を記憶する属性テーブルから、前記ワークフローの中から選ばれたアプリケーションの属性を抽出し、
前記判断手段は、
前記分離手段によって分離されたワークフローごとに、前記抽出手段によって抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報であるか否かを判断することを特徴とする請求項４または５に記載のワークフロー開発プログラム。
【請求項７】
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段と、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段と、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入手段と、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段と、
を備えることを特徴とするワークフロー開発装置。
【請求項８】
コンピュータが、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得工程と、
前記取得工程によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出工程と、
前記検出工程によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入工程と、
前記挿入工程による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存工程と、
を含むことを特徴とするワークフロー開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アプリケーションの一連の流れとなるワークフローを開発するワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法に関する。
【背景技術】
【０００２】
従来、アクセス制御（認可判定）とＷｅｂサービス実行を分離して、Ｗｅｂサービス実行のワークフローからアクセス制御組み込みのワークフローを自動生成する技術がある。このような従来技術では、資源を制御する箇所に単純にアクセス制御を組み込むこととしている。
【０００３】
【特許文献１】特開２００７−４５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、ユーザにサービス部品を組み合わせてネットワークサービスを提供する場合や、途中のサービス部品で認可判定（アクセス制御）結果がＮＧの場合、それまでのサービス部品実行処理は無駄になるという問題があった。また、そのサービス部品におけるロールバック処理を行わなくてはならないという問題があった。
【０００５】
さらに、最近、企業間のＷｅｂサービスのＳＳＯ（Ｓｉｎｇｌｅ  Ｓｉｇｎ−Ｏｎ）を目指して利用されているＳＡＭＬ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｅｒｔｉｏｎ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を用いると、認可判定をおこなうための認証・認可サーバへのアクセスが複数回（認証アサーションの検証、属性読出し、認可処理等）生じる。そのため、サービス部品毎に認可判定をおこなうと認証・認可サーバへのアクセスが大量に発生するという問題があった。
【０００６】
この発明は、上述した従来技術による問題点を解消するため、サーバ負荷軽減を図ることにより効率的なネットワークサービスの提供を図ることができるワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、第１のワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法は、複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得し、取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出し、検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入し、挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存することを要件とする。
【０００８】
このワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法によれば、開発後のワークフローに従ってサービスを提供する場合、認証処理の削減を図ることができる。
【０００９】
また、第２のワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法は、複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理および前記ユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得し、取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出し、検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入するとともに、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入し、挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存することを要件とする。
【００１０】
このワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法によれば、開発後のワークフローに従ってサービスを提供する場合、認証処理および認可判定処理の削減を図ることができる。
【発明の効果】
【００１１】
このワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法によれば、サーバ負荷軽減を図ることにより効率的なネットワークサービスの提供を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、このワークフロー開発プログラム、ワークフロー開発装置、およびワークフロー開発方法の好適な実施の形態を詳細に説明する。本実施の形態では、プレゼンス、コンテンツ配信、ログ管理という一連のアプリケーション（本明細書では、「サービス部品」ともいう）を実行するワークフローを例に挙げて説明する。
【００１３】
（ワークフロー開発の概要）
図１は、本実施の形態にかかるワークフロー開発の概要を示す説明図である。図１において、（Ａ）は従来のワークフローを示しており、（Ｂ）は本実施の形態により開発されるワークフローを示している。
【００１４】
（Ａ）では、ユーザリクエストを受け付けると、プレゼンスに対するユーザの認証処理（ステップＳ１０１）、ユーザにプレゼンスの実行が認可されているか否かを判定する認可判定処理（ステップＳ１０２）、プレゼンス（ステップＳ１０３）、コンテンツ配信に対するユーザの認証処理（ステップＳ１０４）、ユーザにコンテンツ配信の実行が認可されているか否かを判定する認可判定処理（ステップＳ１０５）、コンテンツ配信（ステップＳ１０６）、ログ管理に対するユーザの認証処理（ステップＳ１０７）、ユーザにログ管理の実行が認可されているか否かを判定する認可判定処理（ステップＳ１０８）、ログ管理（ステップＳ１０９）を実行する。すなわち、アプリケーションごとに認証処理と認可判定処理を実行している。
【００１５】
一方、（Ｂ）では、ユーザリクエストを受け付けると、プレゼンス、コンテンツ配信およびログ管理という一連のアプリケーションに対するユーザの認証処理（ステップＳ１１１）、ユーザにプレゼンスおよびログ管理の実行が認可されているか否かを判定する認可判定処理（ステップＳ１１２）、プレゼンス（ステップＳ１１３）、ユーザにコンテンツ配信の実行が認可されているか否かを判定する認可判定処理（ステップＳ１１４）、コンテンツ配信（ステップＳ１１５）、ログ管理（ステップＳ１１６）を実行する。
【００１６】
すなわち、認証処理が一連のアプリケーションの実行に先立って１回に集約されている。したがって、認証処理を実行する認証サーバへのアクセスが（Ａ）では３回のところ、（Ｂ）では１回で済む。これにより、認証処理回数の削減により認証サーバの処理負担を軽減することができる。
【００１７】
また、プレゼンスとログ管理についても、１回の認証処理後でかつ一連のアプリケーションの実行に先立って認可判定処理が１回に集約されている。なお、本例では、コンテンツ配信はプレゼンスに依存しているため、集約よりもアプリケーション間の依存関係を優先する。これにより、プレゼンスの後でかつコンテンツ配信の前に認可判定処理を実行する。このように、（Ｂ）では、認証処理は１回に纏められ、認可判定処理もできる限り一連のアプリケーションに先立って実行するように纏められる。
【００１８】
したがって、認可判定処理を実行する認可サーバへのアクセスが（Ａ）では３回のところ、（Ｂ）では２回で済む。これにより、認可判定処理回数の削減により認可サーバの処理負担を軽減することができる。
【００１９】
（ネットワークサービスシステムのシステム構成）
ネットワークサービスシステムは、クライアントを使用するユーザの認証、各サービス部品の利用がユーザに認可されているか否かを判定する認可判定、サービス部品（アプリケーション）によるクライアントへのサービス提供をおこなう。
【００２０】
図２は、本実施の形態にかかるネットワークサービスシステムのシステム構成図である。ネットワークサービスシステム２００は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワーク２８０を介してクライアント２７０と相互に通信可能である。クライアント２７０は、Ｗｅｂブラウザ２７１を備えている。クライアント２７０としては、据置型のパーソナル・コンピュータでもよく、ノート型パソコン、携帯電話機、スマートフォンなどの携帯型端末でもよい。
【００２１】
ネットワークサービスシステム２００は、ポータルサーバ２０１と、ＢＰＥＬ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ）サーバ２０２と、ワークフロー開発サーバ２０３と、認証サーバ２０４と、認可サーバ２０５と、複数（図では３個）のサービス部品サーバ２０６と、を備えている。
【００２２】
ポータルサーバ２０１はＢＰＥＬサーバ２０２に接続されている。また、ＢＰＥＬサーバ２０２と、ワークフロー開発サーバ２０３、認証サーバ２０４、認可サーバ２０５、および複数のサービス部品サーバ２０６は、ＥＳＢ（Ｅｎｔｅｒｐｒｉｓｅ  Ｓｅｒｖｉｃｅ  Ｂｕｓ）２９０を介して接続されている。
【００２３】
ポータルサーバ２０１は、Ｗｅｂサーバ機能２１１とＷｅｂアプリ機能２１２（認証プロキシ）の２つの機能を備え、クライアント２７０からサービス部品の要求を受け付けたり、クライアント２７０に対して当該要求に対する応答を送信する。
【００２４】
ＢＰＥＬサーバ２０２は、ＢＰＥＬ機能２２１と認可判定機能２２２と認可判定テーブル２２３とを有する。ＢＰＥＬ機能２２１とは、サービス部品サーバ２０６を制御する機能である。認可判定機能２２２とは、認証サーバ２０４との認証アクセスおよび認可サーバ２０５との認可判定アクセスとをおこなう機能である。認可判定テーブル２２３は、サービス部品ごとにサービス部品の属性を記憶するテーブルである。
【００２５】
ワークフロー開発サーバ２０３は、ワークフロー開発機能２３１を有する。ワークフロー開発機能２３１とは、一連のアプリケーション（サービス部品）からなるワークフローを開発する機能である。
【００２６】
認証サーバ２０４は、ユーザ情報ＤＢ（データベース）２４１を有する。ユーザ情報ＤＢ２４１は、ユーザの個人情報等が記憶されている。認証サーバ２０４は、ユーザ情報ＤＢ２４１を参照して、ネットワークサービスシステム２００にアクセスしてきたクライアント２７０のユーザを認証する。
【００２７】
認可サーバ２０５は、認可ポリシーテーブル２５１を有する。認可ポリシーテーブル２５１は、サービス部品の属性ごとに属性値を記憶する。認可サーバ２０５は、認可ポリシーテーブル２５１を参照して、認証サーバ２０４で認証されたユーザに、リクエストしたサービス部品の利用が認可されているか否かを判定する。
【００２８】
サービス部品サーバ２０６は、各種サービス部品となるアプリケーションを有する。ここでは、サービス部品サーバ２０６ａをプレゼンスサーバ、サービス部品サーバ２０６ｂをコンテンツ配信サーバ、サービス部品サーバ２０６ｃをログ管理サーバとする。ここで、プレゼンスサーバ２０６ａとは、プレゼンスと呼ばれるサービス部品を提供するサーバである。プレゼンスとは、リアルタイムに位置情報を提供するサービスである。
【００２９】
また、コンテンツ配信サーバ２０６ｂとは、映像や画像、音楽、文書などのコンテンツを配信するサーバである。また、ログ管理サーバ２０６ｃとは、クライアント２７０がネットワークサービスシステム２００内の各サーバにアクセスしたログを保存するサーバである。
【００３０】
（ワークフロー開発装置のハードウェア構成）
図３は、実施の形態にかかるワークフロー開発装置のハードウェア構成を示すブロック図である。図３において、ワークフロー開発装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、ディスプレイ３０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０９と、キーボード３１０と、マウス３１１と、スキャナ３１２と、プリンタ３１３と、を備えている。また、各構成部はバス３００によってそれぞれ接続されている。
【００３１】
ここで、ＣＰＵ３０１は、ワークフロー開発装置の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００３２】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３３】
ディスプレイ３０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ３０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３４】
インターフェース（以下、「Ｉ／Ｆ」と略する。）３０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク３１４に接続され、このネットワーク３１４を介して他の装置に接続される。そして、Ｉ／Ｆ３０９は、ネットワーク３１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３５】
キーボード３１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３６】
スキャナ３１２は、画像を光学的に読み取り、ワークフロー開発装置内に画像データを取り込む。なお、スキャナ３１２には、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ３１３は、画像データや文書データを印刷する。プリンタ３１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００３７】
（各種データベース等の内容）
つぎに、各種データベース等について説明する。図２に示したデータベースやテーブルは、ＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域により実現される。
【００３８】
図４は、ユーザ情報ＤＢ２４１の記憶内容を示す説明図である。ユーザ情報ＤＢ２４１は、認証サーバ２０４に保存されている。ユーザ情報ＤＢ２４１では、レコードごとに、ユーザＩＤ、ユーザタイプ、端末識別情報、ｅ−ｍａｉｌアドレス、ユーザ情報が記憶されている。ユーザＩＤとは、ユーザを特定する識別番号である。ユーザタイプとは、ユーザが、クライアント２７０として携帯型端末を利用する者であるか、固定電話を利用する者であるかを特定する情報である。端末識別情報とは、ユーザが利用するクライアント２７０の物理アドレスである。ｅ−ｍａｉｌアドレスとは、ユーザが利用するクライアント２７０で送受信できるｅ−ｍａｉｌアドレスである。ユーザ情報とは、ユーザ名、住所などの個人情報である。
【００３９】
図５は、認可判定テーブル２２３の記憶内容を示す説明図である。認可判定テーブル２２３は、ＢＰＥＬサーバ２０２に保存されている。認可判定テーブル２２３では、レコードごとに、サービス部品名と属性種が記憶されている。サービス部品名は、サービス部品の名称である。属性種とは、サービス部品の特徴をあらわす属性の種類を示す情報である。
【００４０】
たとえば、サービス部品がプレゼンスの場合、属性種は「ユーザタイプ」である。また、サービス部品がコンテンツ配信の場合、属性種は「ユーザタイプ」と「ロケーション」と「依存性情報」である。「ユーザタイプ」は、ユーザ情報ＤＢ２４１に記憶されている。「ロケーション」とは、プレゼンスの提供を受けることが可能なユーザ（の端末）のエリアである。「依存性情報」とは、対象とするサービス部品が依存するサービス部品を特定する情報である。たとえば、コンテンツ配信は、プレゼンスを依存元としている。すなわち、プレゼンスで認可が下りた場合に、コンテンツ配信の認可判定をおこなうこととなる。
【００４１】
図６は、認可ポリシーテーブル２５１の記憶内容を示す説明図である。認可ポリシーテーブル２５１は、認可サーバ２０５に保存されている。認可ポリシーテーブル２５１では、レコードごとに、サービス部品名と属性が記憶されている。属性については、認可判定テーブル２２３で指定された属性種の詳細が属性として記憶されている。
【００４２】
この認可ポリシーテーブル２５１では、プレゼンスは、ユーザタイプが携帯利用者からのアクセスであれば実行が認可されることを示している。また、コンテンツ配信は、ユーザタイプが新宿エリアにいる携帯利用者で、かつ、プレゼンスの実行後であれば実行が認可されることを示している。さらに、ログ管理は、ユーザタイプがすべての利用者（携帯利用者、固定電話利用者問わない）であれば実行が認可されることを示している。
【００４３】
（ワークフローの詳細）
つぎに、ワークフローの詳細な記述例について説明する。図７は、開発元となるワークフローの詳細な記述例を示す説明図である。図８は、開発後のワークフローの詳細な記述例を示す説明図である。図８のワークフローは図１の（Ｂ）に相当する。いずれのワークフロー７００，８００も、ＢＰＥＬサーバ２０２に与えられると、先頭行から読み込まれて実行される。したがって、上位の行にある処理が優先的に実行されることとなる。
【００４４】
図７のワークフロー７００において、符号７０１はプレゼンスサーバ２０６ａとのプレゼンスの実行に関する記述（以下、「プレゼンス記述」）であり、符号７０２はコンテンツ配信サーバ２０６ｂとのコンテンツ配信の実行に関する記述（以下、「コンテンツ配信記述」）であり、符号７０３はログ管理サーバ２０６ｃとのログ管理の実行に関する記述（以下、「ログ管理記述」）である。
【００４５】
図８のワークフロー８００において、符号８０１は認証サーバ２０４との認証処理に関する記述（以下、「認証処理記述」）であり、符号８０２はプレゼンスおよびログ管理の認可判定処理に関する記述（以下、「プレゼンス／ログ管理認可判定処理記述」）であり、符号８０３は、コンテンツ配信に関する認可判定処理の記述（以下、「コンテンツ配信認可判定処理記述」）である。したがって、このワークフロー８００では、認証処理、プレゼンスおよびログ管理の認可判定処理、プレゼンス、コンテンツ配信の認可判定処理、コンテンツ配信、ログ管理の順に実行されることとなる。
【００４６】
（ワークフロー開発装置の機能的構成）
つぎに、ワークフロー開発装置の機能的構成について説明する。図９は、ワークフロー開発装置の機能的構成を示すブロック図である。ワークフロー開発装置９００は、取得部９０１と、検出部９０２と、挿入部９０３と、保存部９０４と、抽出部９０５と、判断部９０６と、決定部９０７と、分離部９０８と、集約部９０９と、を含む構成である。
【００４７】
この制御部となるワークフロー開発機能２３１（取得部９０１〜集約部９０９）は、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０９により、その機能を実現する。また、ワークフロー開発機能２３１は、ワークフロー開発サーバ２０３に備えられているが、ＢＰＥＬサーバ２０２に備えることとしてもよい。
【００４８】
取得部９０１は、アプリケーションの一連の流れとなるワークフローを取得する機能を有する。ワークフローとは、具体的には、複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な一連のアプリケーションである。
【００４９】
また、認証処理のほか、各アプリケーションの実行に先立ってユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な一連のアプリケーションでもよい。いずれにしても、図７に示したようなワークフロー７００を取得する。この取得は、キーボードなどを操作することで入力することとしてもよく、内部の記憶領域から読み出してもよく、外部のコンピュータから受信することとしてもよい。取得されたワークフローは、記憶領域に記憶され、ＣＰＵ３０１からのアクセスを受ける。
【００５０】
検出部９０２は、取得部９０１によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する機能を有する。具体的には、ＣＰＵ３０１が、記憶領域に記憶されているワークフローにアクセスして、ワークフローが与えられると先頭行から読み込まれるため、最初に実行されるサービス部品を呼び出す記述を検出する。たとえば、図７を例に挙げると、サービス部品はかならず“＜ｉｎｖｏｋｅ  ｏｐｅｒａｔｉｏｎ＝…”という記述から始まるので、当該記述を検出する。
【００５１】
挿入部９０３は、検出部９０２によって検出された記述位置よりも先に実行される位置に、一連のアプリケーションに対するユーザの認証処理の記述を１つ挿入する機能を有する。具体的には、たとえば、ＣＰＵ３０１が、記憶領域に記憶されているワークフローにアクセスして、当該ワークフロー内における、検出部９０２によって検出された記述の行とその１つ前の行との間に挿入する。
【００５２】
図８に示した例では、認証処理記述８０１をプレゼンス記述の手前に挿入する。この認証処理記述８０１は、サービス部品ごとのユーザの認証処理の記述を１つに纏めた記述である。したがって、認証処理記述８０１をサービス部品の記述の前に挿入することで、サービス部品の数にかかわらず認証処理は１回で完了する。これにより、認証処理の効率化を図ることができる。
【００５３】
また、認可判定処理の記述を挿入する場合、ユーザの認証処理よりも後でかつ最初に実行されるアプリケーションよりも先に実行される位置に挿入することとなる。具体的には、後述する決定部９０７により決定された挿入位置に挿入することとなる。たとえば、図８に示したプレゼンス／ログ管理認可判定処理記述８０２のように、認証処理記述８０１とプレゼンス記述７０１との間に挿入したり、コンテンツ配信認可判定処理記述８０３のように、プレゼンス記述７０１とコンテンツ配信記述７０２との間に挿入する。
【００５４】
また、保存部９０４は、挿入部９０３による挿入後のワークフローを、複数のアプリケーションサーバを制御する管理サーバに保存する機能を有する。挿入後のワークフローとは、本例では図８のワークフローである。また、管理サーバとは、複数のアプリケーションサーバ、すなわち、サービス部品サーバ２０６に対してサービス部品の実行を制御するＢＰＥＬサーバ２０２である。
【００５５】
したがって、保存部９０４では、ＣＰＵ３０１が、ＢＰＥＬサーバ２０２に挿入後のワークフローをＩ／Ｆ３０９を介して送信する。これにより、挿入後のワークフローはＢＰＥＬサーバ２０２の内部の記憶領域に保存される。また、ワークフロー開発装置９００の制御部となる機能（取得部９０１〜集約部９０９）がＢＰＥＬサーバ２０２に備えられている場合、ＣＰＵ３０１が、挿入後のワークフローをそのままＢＰＥＬサーバ２０２の内部の記憶領域に保存する。
【００５６】
このように、認証処理記述８０１と先頭のサービス部品の記述との間に認可判定処理の記述を挿入することで、全サービス部品の認可判定処理を全サービス部品の実行に先立って１回で完了することができる。したがって、認可判定処理により認可されると、その後は、サービス部品を連続して実行することとなる。これにより、ワークフローによる処理の効率化を図ることができる。
【００５７】
なお、認可ポリシーテーブル２５１により依存元が指定されているサービス部品については、認証処理記述８０１と先頭のサービス部品の記述との間にそのサービス部品の認可判定処理の記述は挿入されない。この点については後述する。
【００５８】
抽出部９０５は、アプリケーションごとにアプリケーションの属性を記憶する属性テーブルから、ワークフローの中から選ばれたアプリケーションの属性を抽出する機能を有する。具体的には、ＣＰＵ３０１が、認可ポリシーテーブル２５１から、選択されたサービス部品の属性を読み出す。たとえば、対象となっているサービス部品がコンテンツ配信である場合、その属性の属性名である「プレゼンス」と「新宿エリア」を読み出す。
【００５９】
判断部９０６は、抽出部９０５によって抽出された属性が、選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含むか否かを判断する機能を有する。具体的には、たとえば、ＣＰＵ３０１が、抽出属性が依存元のサービス部品名を含むか否かを判断する。たとえば、対象となっているサービス部品がプレゼンスである場合、その属性の属性名である「携帯利用者」には依存元のサービス部品名が含まれていないこととなる。一方、対象となっているサービス部品がコンテンツ配信である場合、その属性の属性名である「プレゼンス」および「新宿エリア」には、依存元となるサービス部品「プレゼンス」が含まれている。
【００６０】
決定部９０７は、判断部９０６によって判断された判断結果に基づいて、一連のアプリケーションに対する各認可判定処理の記述の挿入位置を決定する機能を有する。この決定された挿入位置に、一連のサービス部品に対する各認可判定処理の記述が挿入されることとなる。
【００６１】
具体的には、判断部９０６によって、抽出された属性が、選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報でないと判断された場合、ＣＰＵ３０１が、ユーザの認証処理よりも後でかつ最初に実行されるアプリケーションよりも先に実行される位置を、選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定する。たとえば、対象となっているサービス部品がプレゼンスである場合、その属性の属性名である「携帯利用者」には依存元のサービス部品名が含まれていない。したがって、プレゼンスに対する認可判定処理の記述の挿入位置は、認証処理記述８０１とプレゼンス記述７０１との間に決定される。
【００６２】
一方、判断部９０６によって、抽出された属性が、選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報であると判断された場合、ＣＰＵ３０１が、依存元アプリケーションよりも後でかつ選ばれたアプリケーションよりも先に実行される位置を、選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定する。
【００６３】
たとえば、対象となっているサービス部品がコンテンツ配信である場合、その属性の属性名である「プレゼンス」および「新宿エリア」には、依存元となるサービス部品「プレゼンス」が含まれている。したがって、コンテンツ配信に対する認可判定処理の記述の挿入位置は、プレゼンス記述７０１よりも後でかつコンテンツ配信記述７０２よりも先に実行される位置、すなわち、プレゼンス記述７０１とコンテンツ配信記述７０２との間に決定される。
【００６４】
分離部９０８は、取得部９０１によって取得されたワークフローを、当該ワークフロー内の連続するアプリケーションどうしの遷移関係に基づいて複数通りのワークフローに分離する機能を有する。図７に示した開発元となるワークフローは単純なシーケンシャルな例であるが、実際にはシーケンシャルのほか、さまざまな遷移関係が含まれており複雑な経路となっている。
【００６５】
図１０は、ワークフロー内の代表的な遷移関係を示す説明図である。図１０中、楕円はサービス部品を示しており、（Ａ）はシーケンシャル、（Ｂ）は分岐、（Ｃ）は並行、（Ｄ）は合流を示している。（Ｂ）の分岐は遷移先のいずれか一方のサービス部品が実行され、（Ｃ）の並行は遷移先のいずれのサービス部品も実行される。また、（Ｄ）の合流では、合流元からすべてアクセスを受けると合流先となる末尾のサービス部品が実行される。
【００６６】
シーケンシャルに関しては、連続するサービス部品間の記述はない、分岐に関しては、分岐元のサービス部品の記述に分岐を示す記述が埋め込まれている。当該分岐を示す記述を検出することで、そのサービス部品の記述が分岐元、分岐を示す記述に含まれているサービス部品名が、分岐先のサービス部品となる。並行についても分岐と同様である。合流に関しては、そのサービス部品の記述の冒頭に合流元のサービス部品名が記述されている。分離部９０８では、ＣＰＵ３２０１がこれらの記述を検出することで、分離処理を実行する。
【００６７】
図１１は、分離元となるワークフローの一例を示す説明図である。図１１中、楕円はサービス部品であり、その内部にはサービス部品の番号を示している。また、塗りつぶされているサービス部品は依存元のサービス部品であり、依存元のサービス部品と点線で結ばれているサービス部品は依存先のサービス部品である。たとえば、サービス部品＃２，＃４はサービス部品＃５の依存元のサービス部品である。このワークフローＷＦ１では、シーケンシャル（＃２→＃３など）、並行（＃１→＃２，＃４）、分岐（＃６→＃５，＃６）、合流（＃３，＃６→＃５）が含まれている。このワークフローＷＦ１には３つのワークフローが含まれている。
【００６８】
図１２は、図１１に示したワークフローＷＦ１の分離後のワークフローを示す説明図である。分離後のワークフローＷＦ１１〜ＷＦ１３はすべてシーケンシャルなワークフローとなる。すなわち、分離とは、分離元のワークフローＷＦ１から、先頭のサービス部品から末尾のサービス部品までのシーケンシャルなワークフローを抽出する処理である。
【００６９】
図１３は、分離後のワークフローＷＦ１１〜ＷＦ１３での挿入位置の決定例を示す説明図である。認可判定処理の記述の挿入位置は、末尾のサービス部品から上位のサービス部品へ探索することにより決定される。たとえば、分離後のワークフローＷＦ１１では、＃５から探索してその依存元である＃２が検出されると、その後ろ、すなわち、＃２と＃３の間を挿入位置に決定する。分離後のワークフローＷＦ１２でも、＃５から探索してその依存元である＃４が検出されると、その後ろ、すなわち、＃４と＃６の間を挿入位置に決定する。
【００７０】
図１４は、認可判定処理の記述が挿入されたワークフローＷＦ１を示す説明図である。小丸は、認可判定処理の記述である。＃５以外のサービス部品＃１〜＃４，＃６，＃７の認可判定処理の記述の挿入位置は、認証処理記述８０１（不図示）と先頭のサービス部品＃１の記述との間に決定される。このように、＃２と＃４のあとに＃５の認可判定処理が実行されることとなるため、＃３と＃６のロールバック処理を防止することができる。
【００７１】
また、分離部９０８は、分離元のワークフローに同一の分岐箇所に帰還するループが含まれている場合、当該ループを構成するアプリケーション群を１ループ分のみ抽出することにより分離する。このようなループは無限に継続することとなるため、分離すると冗長なワークフローとなる。
【００７２】
図１５は、ループを含む分離元となるワークフローを示す説明図である。このワークフローＷＦ２を分離すると、＃１→＃４を通るワークフローのほか、「＃１→＃２→＃３→＃２→＃３→…」を通るワークフローが得られる。後者のワークフローは冗長となるため、本実施の形態では、１度ループを通って分岐に戻った場合、分岐先はループには別のサービス部品を選択する。
【００７３】
図１６は、ワークフローの縮退を示す説明図である。図１６中、（Ａ）は縮退前の冗長なワークフローであり、（Ｂ）は縮退後のワークフローである。すなわち、「＃２→＃３」のループに入って分岐に戻った場合、＃２を選択せず、＃４を選択する。これにより、分離後のワークフローとして、「＃１→＃２→＃３→＃→４」を得ることができる。また、図１６の（Ｂ）に示した縮退後のワークフローを末尾＃４から探索することで、依存先＃３の依存元＃２が検出され、依存先＃３の認可判定処理の記述の挿入位置は、＃２と＃３の間に決定される。
【００７４】
図１７は、認可判定処理の記述が挿入されたワークフローＷＦ２を示す説明図である。小丸は、認可判定処理の記述である。サービス部品＃１，＃２，＃４の認可判定処理の記述は、認証処理記述８０１（不図示）と先頭のサービス部品＃１の記述との間に挿入される。また、＃３の認可判定処理の記述は、＃２と＃３との間に挿入される。
【００７５】
図９において、集約部９０９は、挿入部９０３によって挿入された各認可判定処理の記述を、各アプリケーションを網羅する単一の認可判定処理の記述に集約する機能を有する。認可判定処理の記述とは、認証サーバ２０４への属性アサーション要求と認証サーバ２０４への認可決定アサーション要求である。認可判定処理の記述は、サービス部品ごとに認可判定処理の記述が蓄積されることとなるが、属性アサーションについては、ＣＰＵ３０１は、サービス部品ごとではなく、属性ごとに蓄積する。
【００７６】
たとえば、プレゼンスおよびログ管理の属性はともに「ユーザタイプ」のみであるため、図８に示したプレゼンス／ログ管理認可判定処理記述８０２では、“ｕｓｅｒ＿ｔｙｐｅ”のみ挿入されている。このように、属性が同一であればサービス部品ごとに属性を保持しておかず、纏められることとなる。また、コンテンツ配信の属性は「ユーザタイプ」と「ロケーション」であるため、コンテンツ配信認可判定処理記述８０３では、“ｕｓｅｒ＿ｔｙｐｅ”と“ｌｏｃａｔｉｏｎ”が挿入される。このように、属性が異なればそれぞれ蓄積されることとなる。このように、サービス部品単位ではなく属性単位で纏められるため、認可判定処理の効率化を図ることができる。
【００７７】
（ワークフロー開発処理手順）
つぎに、本実施の形態にかかるワークフロー開発装置９００が自動実行するワークフロー開発処理手順を、図１８〜図２２を用いて説明する。
【００７８】
図１８は、本実施の形態にかかるワークフロー開発装置９００が自動実行するワークフロー開発処理手順を示すフローチャートである。図１８において、まず、取得部９０１によりワークフローを取得し（ステップＳ１８０１）、検出部９０２により、先頭のサービス部品の記述を検出する（ステップＳ１８０２）。
【００７９】
つぎに、挿入部９０３により、認証処理記述８０１を挿入する（ステップＳ１８０３）。そして、分離部９０８によるワークフロー分離処理を実行する（ステップＳ１８０４）。ワークフロー分離処理（ステップＳ１８０４）については後述する。つぎに、分離後のワークフローの中で未処理のワークフローがあるか否かを判断する（ステップＳ１８０５）。
【００８０】
未処理のワークフローがある場合（ステップＳ１８０５：Ｙｅｓ）、未処理のワークフローを選択し（ステップＳ１８０６）、未選択のサービス部品があるか否かを判断する（ステップＳ１８０７）。未選択のサービス部品がある場合（ステップＳ１８０７：Ｙｅｓ）、末尾のサービス部品を選択して（ステップＳ１８０８）、決定部９０７による挿入位置決定処理を実行する（ステップＳ１８０９）。挿入位置決定処理（ステップＳ１８０９）については後述する。
【００８１】
このあと、決定された挿入位置に認可判定処理の記述を挿入する（ステップＳ１８１０）。そして、ステップＳ１８０７に戻る。一方、ステップＳ１８０７において、未選択のサービス部品がない場合（ステップＳ１８０７：Ｎｏ）、集約部９０９による認可判定まとめ処理を実行する（ステップＳ１８１１）。認可判定まとめ処理（ステップＳ１８１１）については後述する。このあと、ステップＳ１８０２に戻る。一方、ステップＳ１８０５において、未処理のワークフローがない場合（ステップＳ１８０５：Ｎｏ）、一連のワークフロー開発処理を終了する。
【００８２】
図１９は、ワークフロー分離処理（ステップＳ１８０４）の詳細な処理手順を示すフローチャート（前半）である。図１９において、まず、先頭からサービス部品の記述を順次抽出する（ステップＳ１９０１）。図１１のワークフローＷＦ１を例に挙げると、＃１から順次抽出することとなる。つぎに、分岐／並行箇所があるか否かを判断する（ステップＳ１９０２）。分岐／並行箇所がない場合（ステップＳ１９０２：Ｎｏ）、遷移先があるか否かを判断する（ステップＳ１９０３）。
【００８３】
遷移先がある場合（ステップＳ１９０３：Ｙｅｓ）、ステップＳ１９０２に戻る。一方、遷移先がない場合（ステップＳ１９０３：Ｎｏ）、末尾のサービス部品までたどり着いたこととなり、先頭からの一連のサービス部品からなるワークフローを抽出する（ステップＳ１９０４）。そして、ステップＳ１８０５に移行する。また、ステップＳ１９０２において、分岐／並行箇所が検出された場合（ステップＳ１９０２：Ｙｅｓ）、図２０のステップＳ２００１に移行する。
【００８４】
図２０は、ワークフロー分離処理（ステップＳ１８０４）の詳細な処理手順を示すフローチャート（後半）である。図２０において、ステップＳ２００１で分岐／並行箇所を記憶領域に保持し（ステップＳ２００１）、未選択の分岐／並行先のサービス部品の記述を選択する（ステップＳ２００２）。図１１のワークフローＷＦ１を例に挙げると、＃１で＃１自身が並行箇所として検出される。したがって、並行先＃２，＃４のうち未選択の並行先を選択することとなる。
【００８５】
そして、選択された分岐／並列先からサービス部品の記述を順次抽出する（ステップＳ２００３）。そして、分岐／並行箇所があるか否かを判断する（ステップＳ２００４）。分岐／並行箇所がある場合（ステップＳ２００４：Ｙｅｓ）、分岐／並行先がステップＳ２００１で保持された分岐／並行箇所と同一であるか否かを判断する（ステップＳ２００５）。
【００８６】
同一であると判断された場合（ステップＳ２００５：Ｙｅｓ）、その間のサービス部品はループとなるため、今回選択されなかった方の分岐／並列先を選択して（ステップＳ２００６）、ステップＳ２００３に戻る。このように、一度でも同一の分岐／並行先が検出されると、未選択の方の分岐／並列先に遷移するため、ループの内容を１回に制限することができ、ワークフローの冗長化を防止することができる。
【００８７】
図１５のワークフローＷＦ２を例に挙げると、＃１のあとの分岐箇所が＃３のつぎに検出されるため、「＃２→＃３」がループと判断される。したがって、＃３のつぎに分岐箇所が検出されると、未選択である＃４を選択することとなる。一方、ステップＳ２００５で同一でないと判断された場合（ステップＳ２００５：Ｎｏ）、ステップＳ２００１に戻る。
【００８８】
また、ステップＳ２００４において、分岐／並行箇所がない場合（ステップＳ２００４：Ｎｏ）、遷移先があるか否かを判断する（ステップＳ２００７）。遷移先がある場合（ステップＳ２００７：Ｙｅｓ）、ステップＳ２００４に戻る。一方、遷移先がない場合（ステップＳ２００７：Ｎｏ）、末尾のサービス部品までたどり着いたこととなり、先頭からの一連のサービス部品からなるワークフローを抽出する（ステップＳ２００８）。そして、１つ前の分岐／並行箇所があるか否かを判断する（ステップＳ２００９）。
【００８９】
１つ前の分岐／並行箇所がある場合（ステップＳ２００９：Ｙｅｓ）、１つ前の分岐／並行箇所に戻る（ステップＳ２０１０）。そして、未選択のサービス部品の記述があるか否かを判断する（ステップＳ２０１１）。未選択のサービス部品の記述がない場合（ステップＳ２０１１：Ｎｏ）、ステップＳ２００９に戻る。
【００９０】
一方、未選択のサービス部品の記述がある場合（ステップＳ２０１１：Ｙｅｓ）、ステップＳ２００２に戻る。これにより、また経路の異なるワークフローがステップＳ２００８で抽出されることとなる。なお、ステップＳ２００９において、１つ前の分岐／並行箇所がない場合（ステップＳ２００９：Ｎｏ）、ステップＳ１８０５に移行する。
【００９１】
図２１は、挿入位置決定処理（ステップＳ１８０９）の詳細な処理手順を示すフローチャートである。図２１において、抽出部９０５により選択サービス部品の依存性情報を引き、判断部９０６により選択サービス部品の依存元があるか否かを判断する（ステップＳ２１０１）。依存元がない場合（ステップＳ２１０１：Ｎｏ）、選択サービス部品の認可判定処理の記述の挿入位置を、認証処理記述８０１の後に決定する（ステップＳ２１０２）。そして、ステップＳ１８１０に移行する。
【００９２】
一方、依存元がある場合（ステップＳ２１０１：Ｙｅｓ）、選択ワークフロー内の依存元を探索する（ステップＳ２１０２）。そして、探索されなかった場合（ステップＳ２１０３：Ｎｏ）、ワークフロー異常と決定し（ステップＳ２１０６）、ステップＳ１８０５に戻る。一方、依存元が探索された場合（ステップＳ２１０３：Ｙｅｓ）、選択サービス部品の認可判定処理の記述の挿入位置を、依存元の記述の後に決定し（ステップＳ２１０４）、ステップＳ１８１０に移行する。
【００９３】
図２２は、認可判定まとめ処理（ステップＳ１８１１）の詳細な処理手順を示すフローチャートである。図２２において、まず、対象の認可判定処理に関する先頭の属性アサーションを検出する（ステップＳ２２０１）。そして、検出された属性アサーションから属性名を取得する（ステップＳ２２０２）。取得した属性名が取得済みの属性名か否かを判断し（ステップＳ２２０３）、取得済みの属性名である場合（ステップＳ２２０３：Ｙｅｓ）、その取得した属性名を削除し（ステップＳ２２０４）、ステップＳ２２０５に移行する。
【００９４】
一方、取得済みの属性名でない場合（ステップＳ２２０３：Ｎｏ）、その属性名をそのまま残しておき、ステップＳ２２０５に移行する。ステップＳ２２０５では、次の属性アサーションがあるか否かを判断し（ステップＳ２２０５）、次の属性アサーションがある場合（ステップＳ２２０５：Ｙｅｓ）、ステップＳ２２０２に戻る。一方、次の属性アサーションがない場合（ステップＳ２２０５：Ｎｏ）、次の認可判定処理の記述があるか否かを判断する（ステップＳ２２０６）。
【００９５】
次の認可判定処理の記述がある場合（ステップＳ２２０６：Ｙｅｓ）、ステップＳ２２０１に移行する。この場合、対象となる認可判定処理が次の認可判定処理となる。本例では、プレゼンス／ログ管理認可判定処理記述８０２の次のコンテンツ配信認可判定処理記述８０３が次の認可判定処理の記述となる。一方、次の認可判定処理の記述がない場合（ステップＳ２２０６：Ｎｏ）、ステップＳ１８０２に移行する。
【００９６】
（アサーション収集例）
つぎに、アサーション収集例について説明する。本実施の形態で得られたワークフローを実行すると、認可判定処理の記述においてアサーション収集がおこなわれる。ここでは、ＳＡＭＬのアサーション収集を例に挙げる。
【００９７】
図２３は、アサーション収集例を示す説明図である。まず、ＢＰＥＬサーバ２０２が認証アサーション要求を認証サーバ２０４に送信すると、認証サーバ２０４から認証アサーション応答が返ってくる。この認証アサーション要求と認証アサーション応答の送受が認証処理となる。つぎに、ＢＰＥＬサーバ２０２が属性アサーション要求を認証サーバ２０４に送信すると、認証サーバ２０４から属性アサーション応答が返ってくる。つぎに、ＢＰＥＬサーバ２０２が認可決定アサーション要求を認可サーバ２０５に送信すると、認可サーバ２０５から認可決定アサーション応答が返ってくる。
【００９８】
この属性アサーション要求と属性アサーション応答、認可決定アサーション要求と認可決定アサーション応答が認可判定処理となる。認可決定されたサービス部品サーバ２０６は、自身が提供するサービス部品を実行することとなる。
【００９９】
図２４−１は、属性アサーション要求の記述例を示す説明図、図２４−２は、属性アサーション応答の記述例を示す説明図、図２４−３は、プレゼンスに対する認可決定アサーション要求の記述例を示す説明図、図２４−４は、ログ管理に対する認可決定アサーション要求の記述例を示す説明図、図２４−５は、プレゼンスに対する認可決定アサーション応答の記述例を示す説明図、図２４−６は、ログ管理に対する認可決定アサーション応答の記述例を示す説明図である。
【０１００】
（ワークフローの実行シーケンス）
図２５は、本実施の形態で開発されたワークフローの実行シーケンスを示すシーケンス図である。この実行シーケンスは、図８に示したワークフローを読み込むことで実行された結果である。クライアント２７０からのリクエストをポータルサーバ２０１が受け付けるとＢＰＥＬサーバ２０２に転送する。ＢＰＥＬサーバ２０２は、認証サーバ２０４および認可サーバ２０５に対し、ユーザについての認証処理（１），（２）を実行する。つぎに、プレゼンスとログ管理について認可判定処理（３）〜（６）を実行する。この後、ＢＰＥＬサーバ２０２はプレゼンスサーバ２０６ａにアクセスすることでプレゼンスが実行される。
【０１０１】
また、ＢＰＥＬサーバ２０２は、認証サーバ２０４および認可サーバ２０５に対し、コンテンツ配信について認可判定処理（３）〜（６）を実行する。この後、ＢＰＥＬサーバ２０２はコンテンツ配信サーバ２０６ｂにアクセスすることでコンテンツ配信が実行される。また、ログ管理サーバ２０６ｃにアクセスすることでログ管理が実行される。また、ＢＰＥＬサーバ２０２はクライアント２７０からのリクエストに応じてレスポンスを返す。具体的には、たとえば、プレゼンス結果である利用者の現在位置や配信されるコンテンツを送信することとなる。
【０１０２】
図２６は、本実施の形態で開発されたワークフローの認可判定の失敗例を示すシーケンス図である。図２６では、プレゼンスの認可判定においてＮＧが出たため、クライアント２７０にその旨のレスポンスを返す。この場合、ユーザの認証処理（１），（２）とプレゼンスおよびログ管理を纏めた属性アサーション要求（３）および属性アサーション応答（４）と、プレゼンスの認可決定アサーション要求（５）および認可決定アサーション応答（６）のみが実行されたこととなる。このように、認可決定アサーション応答（６）でプレゼンスの認可判定がＮＧとなるため、ＮＧとなるまで６回のシーケンスが実行される。
【０１０３】
図２７は、従来のワークフロー（図１の（Ａ））の場合の認可判定の失敗例を示すシーケンス図である。Ｓ２７０１は、プレゼンスを提供する場合のユーザの認証処理およびプレゼンスの認可判定処理である。Ｓ２７０２は、コンテンツ配信を提供する場合のユーザの認証処理およびプレゼンスの認可判定処理である。Ｓ２７０３は、ログ管理を提供する場合のユーザの認証処理およびプレゼンスの認可判定処理である。
【０１０４】
図２６と同じように、プレゼンスの認可判定においてＮＧが出る場合、従来のワークフローでは、１８回のシーケンスが実行される。したがって、本実施の形態と従来例を比較すると、１２回分のシーケンスが省略されることとなり、ネットワークサービスの効率化を図ることができる。
【０１０５】
このように、本実施の形態によれば、開発後のワークフローに従ってサービスを提供する場合、認証処理を纏めることにより、認証処理の削減を図ることができる。また、開発後のワークフローに従ってサービスを提供する場合、認証処理および認可判定処理を纏めることにより、認証処理および認可判定処理の削減を図ることができる。これにより、ワークフローの実行が効率よく行われ、ネットワークサービスの効率化を図ることができる。
【０１０６】
また、サービス部品に応じて認可判定処理の記述の挿入位置を決定することができるため、ワークフロー内のサービス部品固有の順序を維持したままできる限り認可判定処理を前倒しして実行することができる。
【０１０７】
具体的には、サービス部品に依存元がない場合は、開発後のワークフローに従ってサービスを提供するときにおいて、認証処理に続けてそのサービス部品の認可判定処理を実行することができる。したがって、一連のアプリケーションの実行に先立って、認証処理および認可判定処理が完了する。
【０１０８】
一方、サービス部品に依存元がある場合は、サービス部品間の依存関係を優先することができる。したがって、認証処理や他のサービス部品の認可判定処理は、一連のアプリケーションの実行に先立って完了するが、該当するアプリケーションの認可判定処理は、依存元のアプリケーションの実行後に実行されることとなる。したがって、ワークフロー内のサービス部品固有の順序を維持したままできる限り認可判定処理を前倒しして実行することができる。
【０１０９】
したがって、サービス部品固有の順序という制約を遵守することができ、かつ、認可判定処理も効率よく実行することができる。したがって、ワークフローを修正しなおす必要もなくなり、開発者の負担軽減も図ることができる。
【０１１０】
また、ワークフローを詳細に分離し、分離したワークフローごとに挿入位置を決定することで、開発元となるワークフロー内の認可判定処理の記述の挿入位置を正確に網羅することができる。
【０１１１】
また、ワークフローにループが含まれている場合、ワークフローを縮退させることができるため、冗長なワークフローの抽出を防止することができ、ワークフロー開発の効率化を図ることができる。
【０１１２】
また、挿入された各認可判定処理の記述を、各アプリケーションを網羅する単一の認可判定処理の記述に集約することで、開発後のワークフローに従ってサービスを提供する場合、各サービス部品の認可判定処理を纏めて実行することができる。したがって、認可判定処理の効率化を図ることができる。
【０１１３】
以上説明したように、本実施の形態によれば、サーバ負荷軽減を図ることにより効率的なネットワークサービスの提供を図ることができるという効果を奏する。具体的には、認可判定処理を纏めることにより認可処理メッセージ数の削減を図り、さらに認可判定処理をできる限りサービス部品処理の前に持ってきているので無駄なサービス部品の実施およびロールバック処理の削減を図ることができる。
【０１１４】
なお、本実施の形態で説明したワークフロー開発方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な媒体であってもよい。
【０１１５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１６】
（付記１）コンピュータを、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入手段、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段、
として機能させることを特徴とするワークフロー開発プログラム。
【０１１７】
（付記２）コンピュータを、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理および前記ユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入するとともに、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入する挿入手段、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段、
として機能させることを特徴とするワークフロー開発プログラム。
【０１１８】
（付記３）前記コンピュータを、
前記アプリケーションごとに前記アプリケーションの属性を記憶する属性テーブルから、前記ワークフローの中から選ばれたアプリケーションの属性を抽出する抽出手段、
前記抽出手段によって抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含むか否かを判断する判断手段、
前記判断手段によって判断された判断結果に基づいて、前記一連のアプリケーションに対する前記各認可判定処理の記述の挿入位置を決定する決定手段として機能させ、
前記挿入手段は、
前記決定手段によって決定された挿入位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入することを特徴とする付記２に記載のワークフロー開発プログラム。
【０１１９】
（付記４）前記決定手段は、
前記判断手段によって、前記抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含まないと判断された場合、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置を、前記選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定することを特徴とする付記３に記載のワークフロー開発プログラム。
【０１２０】
（付記５）前記挿入手段は、
前記判断手段によって、前記抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報を含むと判断された場合、前記依存元アプリケーションよりも後でかつ前記選ばれたアプリケーションよりも先に実行される位置を、前記選ばれたアプリケーションに対する認可判定処理の記述の挿入位置に決定することを特徴とする付記３に記載のワークフロー開発プログラム。
【０１２１】
（付記６）前記コンピュータを、
前記ワークフローを、当該ワークフロー内の連続するアプリケーションどうしの遷移関係に基づいて複数通りのワークフローに分離する分離手段として機能させ、
前記抽出手段は、
前記分離手段によって分離されたワークフローごとに、前記アプリケーションごとに前記アプリケーションの属性を記憶する属性テーブルから、前記ワークフローの中から選ばれたアプリケーションの属性を抽出し、
前記判断手段は、
前記分離手段によって分離されたワークフローごとに、前記抽出手段によって抽出された属性が、前記選ばれたアプリケーションが依存する依存元アプリケーションを特定する情報であるか否かを判断することを特徴とする付記４または５に記載のワークフロー開発プログラム。
【０１２２】
（付記７）前記分離手段は、
前記ワークフローに同一の分岐／並行箇所に帰還するループが含まれている場合、当該ループを構成するアプリケーション群を１ループ分のみ抽出することにより分離することを特徴とする付記６に記載のワークフロー開発プログラム。
【０１２３】
（付記８）前記コンピュータを、
前記挿入手段によって挿入された各認可判定処理の記述を、前記各アプリケーションを網羅する単一の認可判定処理の記述に集約する集約手段として機能させ、
前記保存手段は、
前記集約手段による集約後のワークフローを前記管理サーバに保存することを特徴とする付記２〜７のいずれか一つに記載のワークフロー開発プログラム。
【０１２４】
（付記９）複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段と、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段と、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入手段と、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段と、
を備えることを特徴とするワークフロー開発装置。
【０１２５】
（付記１０）複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理および前記ユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得手段と、
前記取得手段によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出手段と、
前記検出手段によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入するとともに、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入する挿入手段と、
前記挿入手段による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存手段と、
を備えることを特徴とするワークフロー開発装置。
【０１２６】
（付記１１）コンピュータが、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得工程と、
前記取得工程によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出工程と、
前記検出工程によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入する挿入工程と、
前記挿入工程による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存工程と、
を含むことを特徴とするワークフロー開発方法。
【０１２７】
（付記１２）コンピュータが、
複数のアプリケーションサーバが有する各アプリケーションの実行に先立ってユーザの認証処理および前記ユーザに実行が認可されているか否かを判定する認可判定処理がそれぞれ必要な前記アプリケーションの一連の流れとなるワークフローを取得する取得工程と、
前記取得工程によって取得されたワークフローのうち最初に実行されるアプリケーションの記述位置を検出する検出工程と、
前記検出工程によって検出された記述位置よりも先に実行される位置に、前記一連のアプリケーションに対する前記ユーザの認証処理の記述を１つ挿入するとともに、前記ユーザの認証処理よりも後でかつ前記最初に実行されるアプリケーションよりも先に実行される位置に、前記一連のアプリケーションに対する前記各認可判定処理の記述を挿入する挿入工程と、
前記挿入工程による挿入後のワークフローを、前記複数のアプリケーションサーバを制御する管理サーバに保存する保存工程と、
を含むことを特徴とするワークフロー開発方法。
【図面の簡単な説明】
【０１２８】
【図１】本実施の形態にかかるワークフロー開発の概要を示す説明図である。
【図２】本実施の形態にかかるネットワークサービスシステムのシステム構成図である。
【図３】実施の形態にかかるワークフロー開発装置のハードウェア構成を示すブロック図である。
【図４】ユーザ情報ＤＢの記憶内容を示す説明図である。
【図５】認可判定テーブルの記憶内容を示す説明図である。
【図６】認可ポリシーテーブルの記憶内容を示す説明図である。
【図７】開発元となるワークフローの詳細な記述例を示す説明図である。
【図８】開発後のワークフローの詳細な記述例を示す説明図である。
【図９】ワークフロー開発装置の機能的構成を示すブロック図である。
【図１０】ワークフロー内の代表的な遷移関係を示す説明図である。
【図１１】分離元となるワークフローの一例を示す説明図である。
【図１２】図１１に示したワークフローＷＦ１の分離後のワークフローを示す説明図である。
【図１３】分離後のワークフローでの挿入位置の決定例を示す説明図である。
【図１４】認可判定処理の記述が挿入されたワークフローを示す説明図である。
【図１５】ループを含む分離元となるワークフローを示す説明図である。
【図１６】ワークフローの縮退を示す説明図である。
【図１７】認可判定処理の記述が挿入されたワークフローＷＦ２を示す説明図である。
【図１８】本実施の形態にかかるワークフロー開発装置が自動実行するワークフロー開発処理手順を示すフローチャートである。
【図１９】ワークフロー分離処理（ステップＳ１８０４）の詳細な処理手順を示すフローチャート（前半）である。
【図２０】ワークフロー分離処理（ステップＳ１８０４）の詳細な処理手順を示すフローチャート（後半）である。
【図２１】挿入位置決定処理（ステップＳ１８０９）の詳細な処理手順を示すフローチャートである。
【図２２】認可判定まとめ処理（ステップＳ１８１１）の詳細な処理手順を示すフローチャートである。
【図２３】アサーション収集例を示す説明図である。
【図２４−１】属性アサーション要求の記述例を示す説明図である。
【図２４−２】属性アサーション応答の記述例を示す説明図である。
【図２４−３】プレゼンスに対する認可決定アサーション要求の記述例を示す説明図である。
【図２４−４】ログ管理に対する認可決定アサーション要求の記述例を示す説明図である。
【図２４−５】プレゼンスに対する認可決定アサーション応答の記述例を示す説明図である。
【図２４−６】ログ管理に対する認可決定アサーション応答の記述例を示す説明図である。
【図２５】本実施の形態で開発されたワークフローの実行シーケンスを示すシーケンス図である。
【図２６】本実施の形態で開発されたワークフローの認可判定の失敗例を示すシーケンス図である。
【図２７】従来のワークフロー（図１の（Ａ））の場合の認可判定の失敗例を示すシーケンス図である。
【符号の説明】
【０１２９】
２００  ネットワークサービスシステム
２０１  ポータルサーバ
２０２  ＢＰＥＬサーバ
２０３  ワークフロー開発サーバ
２０４  認証サーバ
２０５  認可サーバ
２０６  サービス部品サーバ
２２３  認可判定テーブル
２４１  ユーザ情報ＤＢ
２５１  認可ポリシーテーブル
２７０  クライアント
７００，８００  ワークフロー
９００  ワークフロー開発装置
９０１  取得部
９０２  検出部
９０３  挿入部
９０４  保存部
９０５  抽出部
９０６  判断部
９０７  決定部
９０８  分離部
９０９  集約部
【図１】
2010049631.tif 000003
【図２】
2010049631.tif 000004
【図３】
2010049631.tif 000005
【図４】
2010049631.tif 000006
【図５】
2010049631.tif 000007
【図６】
2010049631.tif 000008
【図７】
2010049631.tif 000009
【図８】
2010049631.tif 000010
【図９】
2010049631.tif 000011
【図１０】
2010049631.tif 000012
【図１１】
2010049631.tif 000013
【図１２】
2010049631.tif 000014
【図１３】
2010049631.tif 000015
【図１４】
2010049631.tif 000016
【図１５】
2010049631.tif 000017
【図１６】
2010049631.tif 000018
【図１７】
2010049631.tif 000019
【図１８】
2010049631.tif 000020
【図１９】
2010049631.tif 000021
【図２０】
2010049631.tif 000022
【図２１】
2010049631.tif 000023
【図２２】
2010049631.tif 000024
【図２３】
2010049631.tif 000025
【図２４−１】
2010049631.tif 000026
【図２４−２】
2010049631.tif 000027
【図２４−３】
2010049631.tif 000028
【図２４−４】
2010049631.tif 000029
【図２４−５】
2010049631.tif 000030
【図２４−６】
2010049631.tif 000031
【図２５】
2010049631.tif 000032
【図２６】
2010049631.tif 000033
【図２７】
2010049631.tif 000034