(57)【要約】  自動化されたワークフローサービスシステムが、様々なワークフローシナリオに対処することができる。コンポジションサービス、制約サービス、及び追跡サービスを、クライアントプログラムに提供することができる。コンポジションサービスは、アクティビティフローのアクションの、クライアントによって指示されるインスタンス化をサポートすることができる。アクティビティフローは、アクティビティモデルに基づくか、アドホックな基礎で構成するか、この組合せとすることができる。アクションを、アクティビティフローの実行時にアクティビティフローに追加することができる。追跡サービスは、アクションへ及びアクションからのメッセージを追跡することができる。
2007515016.tif 000002
【特許請求の範囲】
【請求項１】
複数のアクションをアクティビティフローにコンポーズするように動作可能で、かつクライアントプログラムによってサービスとしてアクセス可能であるアクションコンポジションサービスと、
ストアされた制約に従って使用可能なオプションを提供するように動作可能で、かつ前記クライアントプログラムによってサービスとしてアクセス可能である制約サービスと、
前記アクティビティフローの進行を提供するように動作可能で、かつ前記クライアントプログラムによってサービスとしてアクセス可能である追跡サービスと
を備えたことを特徴とする自動化されたワークフローサービスシステム。
【請求項２】
前記コンポジションサービス、前記制約サービス及び前記追跡サービスは、前記クライアントプログラムによってアクセス可能な単一のサービスとして提供されることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項３】
前記単一のサービスは、ウェブサービスであることを特徴とする請求項２に記載の自動化されたワークフローサービスシステム。
【請求項４】
前記単一のサービスは、ＳＯＡＰベースプロトコルを介して前記クライアントプログラムと通信するように動作可能であることを特徴とする請求項２に記載の自動化されたワークフローサービスシステム。
【請求項５】
前記単一のサービスは、クライアント不可知であることを特徴とする請求項２に記載の自動化されたワークフローサービスシステム。
【請求項６】
前記制約サービスは、使用可能なアクションはオプションとして提示されるアクタのアイデンティティに基づいて前記使用可能なアクションを制約するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項７】
前記制約サービスは、ターゲットアクタはオプションとして提示されるアクタのアイデンティティに基づいて、アクションに使用可能な前記ターゲットアクタを制約するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項８】
前記制約サービスは、エンアクテッドオンアクタのアイデンティティに基づいて推移アクションを制約するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項９】
前記アクションコンポジションサービスは、前記アクティビティフローの実行時に前記アクティビティフローに実行可能アクションを追加するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項１０】
前記アクションコンポジションサービスは、複数のアクションを関連付けられた事前定義のアクティビティモデルに基づいて、アクティビティフローをインスタンス化するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項１１】
前記制約サービスは、事実に包括的な形でオプションを制約するように動作可能であることを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項１２】
前記アクションコンポジションサービスは、さらに、前記アクティビティフローの実行時に前記事前定義のアクティビティモデルに基づいて前記アクティビティフローに実行可能アクションを追加するように動作可能であることを特徴とする請求項１０に記載の自動化されたワークフローサービスシステム。
【請求項１３】
前記制約サービスは、前記アクティビティの一部として生成されるタスクに関する使用可能なアドホックアクションのセットを示すように動作可能であることを特徴とする請求項１２に記載の自動化されたワークフローサービスシステム。
【請求項１４】
前記使用可能なアクションは、アクタのアイデンティティに基づいて制約されることを特徴とする請求項１３に記載の自動化されたワークフローサービスシステム。
【請求項１５】
前記使用可能なアクションは、アクタのアイデンティティに関する相対的関係に基づいて制約されることを特徴とする請求項１３に記載の自動化されたワークフローサービスシステム。
【請求項１６】
前記自動化されたワークフローサービスシステムは、
照会に応答してアクションのアクティブ化パラメータの指定を提供するように動作可能な発見可能性機能性を含むことを特徴とする請求項１に記載の自動化されたワークフローサービスシステム。
【請求項１７】
ＳＯＡＰベースプロトコルを介してクライアントと通信し、前記クライアントからの要求に応答して複数のインスタンス化されるアクションをインスタンス化するように動作可能で、かつ前記クライアントからの通信に応答してアクティビティフローの実行時に前記アクティビティフローにアクションのインスタンスを追加するように動作可能であるアクティビティフローコンポジションサービスと、
複数の知識ベースから該知識ベースに関する各々のスキーマを有する知識ベースアダプタを介して抽出された複数の事実を含む事実ストアと、
前記ＳＯＡＰベースプロトコルを介して前記クライアントと通信するように動作可能であり、前記アクティビティフローの参加アクタのアイデンティティに基づいて制約を実施するように動作可能で、かつ前記事実ストアの事実に基づいて制約を実施するように動作可能である制約サービスと、
前記インスタンス化されたアクションへ及びこれからのメッセージを追跡するように動作可能である追跡サービスと
を備えたことを特徴とする自動化されたワークフローサービスシステム。
【請求項１８】
複数のアクションをアクティビティフローにコンポーズするように動作可能で、かつクライアントプログラムによってサービスとしてアクセス可能なコンポジション手段と、
ストアされた制約に従って使用可能なオプションを提供するように動作可能で、かつ前記クライアントプログラムによってサービスとしてアクセス可能な制約手段と、
前記アクティビティフローの進行を提供するように動作可能で、かつ前記クライアントプログラムによってサービスとしてアクセス可能な追跡手段と
を備えたことを特徴とする自動化されたワークフローサービスシステム。
【請求項１９】
サービスで、アクティビティフローの一部としてアクションをインスタンス化する要求をクライアントプログラムから受け取り、それに応答して前記アクションをインスタンス化するステップと、
前記サービスで、前記アクティビティフローの実行中に使用可能なオプションに関する要求を受け取り、それに応答してオプションのリストを提供するステップと、
前記サービスで、前記アクティビティフローの状況に関する要求を受け取り、それに応答して状況情報を提供するステップと
を有することを特徴とする自動化されたワークフローサービスを提供する方法。
【請求項２０】
請求項１９に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とする１つ又は複数のコンピュータ読取可能な媒体。
【請求項２１】
前記サービスは、ウェブサービスとして実施されることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記クライアントプログラムは、ＳＯＡＰベースプロトコルを介して前記サービスと相互作用することを特徴とする請求項１９に記載の方法。
【請求項２３】
前記サービスは、クライアント不可知であることを特徴とする請求項１９に記載の方法。
【請求項２４】
オプションの前記リストは、アクタのアイデンティティ及びストアされた制約に基づいて提供される使用可能なアクションのリストであることを特徴とする請求項１９に記載の方法。
【請求項２５】
オプションの前記リストは、アクタのアイデンティティ及びストアされた制約に基づいて提供される使用可能なターゲットアクタのリストであることを特徴とする請求項１９に記載の方法。
【請求項２６】
オプションの前記リストは、推移アクションに関するエンアクテッドオンターゲットアクタに基づく使用可能なターゲットアクタのリストであることを特徴とする請求項１９に記載の方法。
【請求項２７】
前記アクションをインスタンス化する前記クライアントプログラムからの前記要求は、前記アクティビティフローの実行時に受け取られることを特徴とする請求項１９に記載の方法。
【請求項２８】
アクティビティフローが、文書に関連する複数のタスクを複数のアクタに割り当てるように、前記アクティビティフローを開始するステップと、
前記タスクに対する前記アクタによるアクションに応答して、前記アクティビティフローの状況を更新するステップと
を有することを特徴とする文書のワークフロー処理を達成する方法。
【請求項２９】
前記開始は、電子形式での前記文書のレビュー者の表示の受け取りに応答して実行され、前記アクタは、前記レビュー者を含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記タスクのうちのタスクの前記アクタのうちのアクタへの割り当ての際に、前記文書へのハイパーリンクを有する電子メール通知を前記アクタに送るステップをさらに有することを特徴とする請求項２８に記載の方法。
【請求項３１】
前記タスクのうちのタスクの前記アクタのうちのアクタへの割り当ての際に、前記タスクへのハイパーリンクを有する電子メール通知を前記アクタに送るステップをさらに有することを特徴とする請求項２８に記載の方法。
【請求項３２】
前記アクタによる前記アクションは、タスクを委任することを含むことを特徴とする請求項２８に記載の方法。
【請求項３３】
前記アクタによる前記アクションは、タスクをエスカレートすることを含むことを特徴とする請求項２８に記載の方法。
【請求項３４】
前記アクタによる前記アクションは、前記文書の承認を提供することを含むことを特徴とする請求項２８に記載の方法。
【請求項３５】
銭アクタによる前記アクションは、前記文書に対するコメントを提供することを含むことを特徴とする請求項２８に記載の方法。
【請求項３６】
前記開始は、前記アクティビティフローを開始するために電子メール別名に送られた添付された文書を含む電子メールの受け取りに応答して開始されることを特徴とする請求項２８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動化されたワークフローサービスシステム及びそのサービスを提供する方法に関し、ワークフローサービスアーキテクチャ、自動化されたワークフローテクノロジに関する。
【背景技術】
【０００２】
本願は、それぞれが参照により本明細書に組み込まれている、２００２年１１月２５日出願のＴｅｅｇａｎ他の米国仮特許出願第１０／３０４５８９号明細書、名称「SYSTEM AND METHOD FOR COMPOSING AND CONSTRAINING AUTOMATED WORKFLOW」の一部継続出願である、２００３年１２月１９日出願の米国仮特許出願第１０／７４２６９６号明細書の優先権を主張するものである。
【０００３】
自動化されたワークフローテクノロジは、仕事場で生産性を高める万能薬として売り込まれてきた。コンピュータ自動化の科学をビジネスプロセスに持ち込むことによって、ワークフローテクノロジは、会社が仕事を行う形にソフトウェアの威力を適用する見込みがある。
【０００４】
自動化されたワークフローテクノロジは、ビジネスプロセスを、ソフトウェアでワークフローとして表すことができる。ワークフロー設計者は、通常、ビジネスプロセスを別個の片に分解し、これらの片は、ある完了判断基準が達成されるまで、実行され、監視されなければならない。
【０００５】
ワークフローテクノロジに関する持続的な問題は、ワークフローテクノロジが、通常、平均的な働く人に理解不能であることである。例えば、ワークフローの構成は、通常、プログラミングの技量及びワークフローシステムの広範囲の知識を必要とする。洗練された情報労働者であっても、一般に、必須のプログラミングの技量を所有せず、ワークフローテクノロジを使用するためにもう１つの情報システムを学習することができないか、そうするつもりがない。
【０００６】
さらに、情報労働者は、ワークフローシステムに対する関心を失う傾向がある。というのは、ワークフローシステムが、彼らが実際に仕事を行う形を反映しないからである。例えば、プロセスの小さい例外が、通常は、ワークフローシステムによって対処できず、したがって、ワークフローシステムは、しばしば、ビジネスプロセスを容易にするのではなく、ビジネスプロセスの達成を阻止する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
自動化されたワークフローに対する従来の手法は、通常、実際の労働者の必要に関して複雑すぎ、剛直に過ぎる。したがって、自動化されたワークフローの改善された技術に関する必要がまだある。
【０００８】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、自動化されたワークフローサービスシステム及びそのサービスを提供する方法を提供することにある。
【課題を解決するための手段】
【０００９】
本明細書に記載のテクノロジは、様々な自動化されたワークフローで使用することができる。例えば、ワークフローサービスは、コンポーザブルアクション（ｃｏｍｐｏｓａｂｌｅ  ａｃｔｉｏｎ）の実行を提供することができる。アクションは、メッセージの標準的なセットを送り、受け取ることができ、このメッセージのフォーマットは、標準インターフェースによって指定することができる。
【００１０】
ワークフローサービスに、コンポジション（ｃｏｍｐｏｓｉｔｉｏｎ）サービス、制約（ｃｏｎｓｔｒａｉｎｔ）サービス、及び追跡（ｔｒａｃｋｉｎｇ）サービスを含めることができる。コンポジションサービスは、先験的な基礎、アドホックな基礎、又はこの２つの組合せでのアクションのコンポジションをサポートすることができる。先験的コンポジションは、アクティビティモデルに基づくものとすることができる。
【００１１】
制約サービスは、アクタのアイデンティティに基づく制約を含む様々な制約をサポートすることができる。制約は、アクション又はターゲットアクタを制約することができる。制約は、相対的又は否定的とすることができる。さらに、推移アクション（ｔｒａｎｓｉｔｉｖｅ  ａｃｔｉｏｎ）の制約をサポートすることができる。
【００１２】
サービスは、ＳＯＡＰベースのプロトコルを介してクライアントと通信することができ、サービスは、クライアント不可知（ｃｌｉｅｎｔ  ａｇｎｏｓｔｉｃ）とすることができる。サービスにアクセスするユーザインターフェースを、既にユーザのデスクトップに現れている一般的に使用されるアプリケーションに統合することができる。例えば、ワークフロー動作を、馴染みのある電子メールインターフェース又はワードプロセッシングインターフェースに簡単に統合することができる。
【００１３】
アクションとの間のメッセージを、追跡することができる。その結果、ワークフロー処理の状況を提供することができる。
【００１４】
予想されない状況に対処する弾力性のあるワークフローサービスを、本明細書に記載のテクノロジを介して実装することができる。
【００１５】
様々なアクション機能性及びアクション協力を提供するコンポーザブルアクションを、本明細書に記載のテクノロジを介して実装することができる。
【００１６】
前述及び他の特徴及び利益は、添付図面を参照して進行する、開示される実施形態の次の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明の実施例について説明する。  
【実施例１】
【００１８】
＜例示的なワークフローシステム＞
図１は、自動化されたワークフローをサポートする例示的なシステムを示すブロック図で、コンポーザブルアクションを介して自動化されたワークフローを実装する例示的なシステム１００を示している。この例では、複数のクライアントプログラム１２２Ａ〜１２２Ｎが、ネットワーク１３２を介して（例えば、ネットワーク接続を介して）ワークフローサービス１４０にアクセスする。実際には、クライアントプログラム１２２Ａ〜１２２Ｎは、各々の人間のアクタによって操作される。人間のアクタは、ワークフローサービス１４０で実行されるワークフロー処理への人間の参加であり、システム内で、アイデンティティ情報（例えば、情報１２５）によって表すことができる。
【００１９】
ワークフローサービス１４０は、クライアントプログラム１２２Ａ〜１２２Ｎのユーザインターフェース及び他の詳細と独立に動作することができる。したがって、クライアントプログラム１２２Ａ〜１２２Ｎは、望みに応じて、様々な形をとることができ、あるいは均一とすることができる。サービス１４０は、様々なクライアント（例えば、異なるタイプのクライアントソフトウェア）によってアクセスできるので、時々、「クライアント不可知」と呼ばれる。
【００２０】
ワークフローサービス１４０は、コンポジションサービス１４１を介してワークフロー処理を実行することができ、コンポジションサービス１４１は、コンポーザブルアクション（例えば、アクション１４２）をアクティビティフローにアセンブルすることができる。コンポーザブルアクションは、標準インターフェースに従ってメッセージ（例えば、メッセージ１４３）を送り、受け取ることができる。
【００２１】
メッセージの表示を、アクティビティフローの状況の追跡など、後の検索のために、追跡サービスによって（例えば、追跡データベース１６２に）ストアすることができる。制約サービス１５２は、制約を実施して、様々な制約を課して、ワークフロー処理中にユーザを案内することができる。制約サービスは、適当に制約を適用するために、事実ストアに相談することができる。そのような事実ストアに、組織の様々な情報を含めることができ、新しい事実タイプに対処することができる。
【００２２】
実際には、システム１００は、任意の個数のクライアントプログラムを有し、複数のネットワークを介して実行し、様々な同時に実行されるアクション及びアクティビティフローをサポートすることができる。
【実施例２】
【００２３】
＜ワークフローを処理する例示的な方法＞
図２は、図１に示されたものなどの自動化されたワークフローシステムでワークフローを処理する例示的な方法をフローチャートに示す図で、この方法２００は、ソフトウェアによって実行することができる。
【００２４】
ステップ２１２で、コンポーザブルアクションを、制約に鑑みてアクティビティフローにコンポーズする。例えば、制約サービスは、事実ストアに基づいて、可能なアクション及びターゲットアクタを示すことができる。ステップ２２２で、アクションを、ワークフローサービスによって実行する。実行は、様々な形をとることができ、人間のアクタからの情報又は指示の受け取りを含む、様々な処理を含む。実行中に、タスクを割り当て、タスクに関する情報を収集することができる。
【００２５】
ステップ２３２で、アクティビティフローの進行を追跡する。例えば、コンポーザブルアクションとの間で送られるメッセージを、後の点検のために記録することができる。アクティビティフローに関連するタスクに関する情報も、追跡することができる。
【００２６】
実際には、ワークフローシステムは、ワークフローサービスでの実行に関するアクションのセットを指定するアクティビティモデルを作成する能力を含む、様々な他の機能性を提供することができる。
【実施例３】
【００２７】
＜例示的なアクション＞
図３は、コンポーザブルアクションの例示的なパターンを示すブロック図である。本明細書で説明する例のどれにおいても、コンポーザブルアクションは、図３に示された例示的なコンポーザブルアクション３００の形をとることができる。アクション３１２は、コンポーザブルアクション定義からインスタンス化することができ、このコンポーザブルアクション定義には、通常、アクションのアクション固有ワークフロー処理（例えば、ビジネスロジック）３０８の定義が含まれる。
【００２８】
アクション３１２は、様々なコンポーザビリティシナリオをサポートするために、通信インターフェース３１２、３２２、３３２、３４２、３５２及び３６２のセットを介してメッセージを送り、受け取ることができる。例えば、ユーザによって指示される時又はワークフロー内の適当な位置にいる時に、ワークフローサービスは、アクションをインスタンス化し、これにアクティブ化メッセージを送ることができる。図３に示された配置は、アクションのパターンとして使用することができ、その結果、コンポーザビリティを、自動化されたワークフローサービスにまたがってサポートできるようになる。
【００２９】
インターフェース３１２、３２２、３３２、３４２、３５２及び３６２は、標準インターフェースの形をとることができる。例えば、インターフェース３１２、３２２、３３２、３４２、３５２及び３６２は、ワークフローシステム全体を通じて使用されるＸＭＬスキーマ（例えば、ＸＳＤ指定）に従うメッセージを受け入れることができる。この形で、開発者は、新しいアクションを開発することができ、そのアクションがＸＭＬスキーマに従う場合に、そのアクションを、ワークフローサービス内の他のアクションとコンポーズすることができ、ワークフローサービス特徴から利益を得ることができる。異なるスキーマを、インターフェース３１２、３２２、３３２、３４２、３５２及び３６２のそれぞれについて使用することができる。例えば、タスクインターフェース３２２に関連するスキーマに、タスクに関連するアクタを指定する方法を含めることができる。
【００３０】
メッセージ（例えば、メッセージ３６２）を、アクションのアクティブ化、アクションへの割込み、アクションの終了、他のコンポーザブルアクションとのアクションの同期化（例えば、ブロック解除）を含む様々な理由のために、アクションによってカプセル化されるロジックによって受け取ることができる。同様に、メッセージを、アクションがアクティブ化されたこと、アクションが終了したこと、又はタスクが割り当てられる（例えば、アクタに）ことを示すことを含む様々な理由のために、アクションによってカプセル化されるロジックによって送ることができる。
【００３１】
より少数のインターフェース、より多数のインターフェース、又は異なるインターフェースなど、インターフェースの代替配置が可能である。しかし、準拠が望まれる場合に、ある同一のインターフェースを、全体を通じて使用することができる（例えば、アクティブ化メッセージを受け取るインターフェース及び割込みメッセージを受け取るインターフェース）。インターフェースは、コンポーザブルアクションのお互いへ、ワークフローサービスへ、及びクライアントシステムへの接続を容易にするので、インターフェースを、時々「ピン（ｐｉｎ）」と呼ばれる。ピンを有するアクション定義を、ワークフロー参加者による使用のためにワークフローサービスにインストールすることができる。インストールされたアクションのアクセス可能性に関する制約を、管理者が指定することができる。次に、ワークフローシステムが、適当なアクタだけにオプションとしてアクションを提示することができる。
【実施例４】
【００３２】
＜インターフェースを介してメッセージを処理する例示的な方法＞
図４は、コンポーザブルアクションでメッセージを処理する例示的な方法をフローチャートに示す図で、コンポーザブルアクション３００によるなど、コンポーザブルアクションでメッセージを処理する例示的な方法を示している。ステップ４１２で、アクションによってカプセル化されたロジックを介して、アクションによって、標準インターフェースの１つによってメッセージを受け取る。ステップ４２２で、メッセージを処理する。ステップ４３２で、アクションによってカプセル化されたロジックを介して、アクションによって、標準インターフェースの１つからメッセージを送る。
【００３３】
実際には、メッセージの送出及び受け取りは、メッセージの間の同期化及びアクションによる様々な処理を含めて、はるかに複雑になる可能性がある。しかし、テンプレートを開発者に提供することができ、このテンプレートによって、アクションの所望のビジネスロジックをテンプレートに簡単に統合して、ワークフローサービスの詳細な作業に精通する必要なしに開発者がアクションを作成するのを容易にすることができる。
【実施例５】
【００３４】
＜例示的なアクティビティフロー＞
１つ又は複数のコンポーザブルアクションの実行可能セットが、アクティビティフローの形をとることができる。ワークフローサービスは、アクションのアクティブ化、インスタンス化、及びアクションの間の実行フローを調整することができる。実行中に、アクションは、ワークフローサービス及びお互いにメッセージを送り、これらからメッセージを受け取ることができる。さらに、アクションは、クライアントプログラムにメッセージを送り、受け取る（例えば、ワークフローサービスを介して）ことができる。
【実施例６】
【００３５】
＜例示的なメッセージ＞
様々なメッセージを、ワークフローサービスによってサポートすることができる。しかし、可能なメッセージのセットを選択することによって、アクション、ワークフローサービス、及びワークフローサービスのクライアントの間での通信の標準的なモードを達成することができる。表１に、ワークフローシステムのメッセージの例示的なセットを示す。
【００３６】
【表１】
2007515016.tif 000003
【００３７】
プロトコルメッセージのそれぞれは、ＸＳＤスキーマに準拠することができる。したがって、メッセージをＸＭＬで送ることができる。
【実施例７】
【００３８】
＜例示的な同期化シナリオ＞
いくつかの情況で、アクションが、互いに実行を同期化することが望ましい場合がある。例えば、第１アクションが実行する間に、第２アクションが、第２アクションが進行することが適当であることを第１アクションが示すのを待つ場合がある。そのような手法を使用して、アクティビティフロー内でタイムアウトを実施することができる。
【００３９】
図５は、メッセージを介する例示的なアクション対アクション通信を示すブロック図である。そのような配置５００は、依存アクションコンポーザビリティ及び同期化機能性に使用することができる。
【００４０】
この例では、アクタＡのアクティビティに起因して、アクティビティフローの実行が、アクション５１２に達し、これによってタスクがアクタＢに割り当てられる。次に、アクタＢは、アクション５１４及び５１６をアクティブ化し、アクション５１６を、アクション５１４に依存させる。例えば、アクション５１４を「委任」アクションとすることができ、アクション５１６を「エスカレーションアクション（ｅｓｃａｌａｔｉｏｎ  ａｃｔｉｏｎ）」とすることができる。アクタＢは、委任のターゲットとしてアクタＣを選択し、Ｃがあるタイムリミットのうちに応答しない場合に、エスカレーションがＣの管理者に送られることも指定する。アクション５１６は、その場合に、アクション５１４がタイムアウトし、同期化メッセージ５７２を送るまでブロックする。
【００４１】
同期化メッセージ５７２は、インターフェース５６２及び５６４の間で送られる。同期化メッセージ５７２を受け取る時に、アクション５１６は、ブロック解除され、その機能性を実行し、メッセージをＣの管理者に送る。次に、Ｃの管理者が、このフローを次のアクション５１８に拡張することができる。
【００４２】
図６は、アクション対アクション通信を介して同期化を達成する例示的な方法をフローチャートに示す図である。この方法６００は、ステップ６１２で、アクションの実行をブロックする。ステップ６２２で、ブロックされたアクションが、同期化メッセージを受け取った。ステップ６３２で、ブロックされたアクションが、実行を再開する。
【００４３】
配置５００又は６００は、並列実行パスに沿った実行を調整するのに有用である可能性があり、アクタがタスクを割り当てられたが、アクタがタイムアウト期間内に応答しない場合にそのタスクが他の誰かにエスカレートされる時など、タイムアウト条件を実装するのに使用することができる。同期化メッセージは、様々な他のアクション対アクション通信シナリオ（例えば、別のアクションの進行を監視するために）に使用することができる。
【実施例８】
【００４４】
＜例示的なタスク＞
ワークフロー処理では、人間の参加者に作業を割り当てることが、しばしば望ましい。そのような割り当ては、タスクをアクタに割り当てることによって達成することができる。タスク機能性は、ワークフローサービスクライアントによる様々な実装をサポートするために、ワークフローサービスによって包括的に実施することができる。タスクに関する詳細は、クライアントソフトウェアによって処理することができる。例えば、ワークフローサービスは、特定のアクタに割り当てられたタスクがあることを追跡することができるが、タスクがどのように達成されるかは、ワークフローサービスによって理解又は実装される必要がない。
【００４５】
例えば、クライアントソフトウェアは、人間のアクタにタスクを提示することができ、この人間のアクタは、応答し、追加のステップを行ってタスクを完了することができる。多くの場合に、人間対人間の対話が、タスクの達成に用いられ、したがって、タスクの実施は、包括的に、ワークフローサービス内で、ワークフローサービスが様々な情況で有用になることを可能にする。
【００４６】
図７は、タスクの例示的な実施を示すブロック図である。ワークフローサービス７１２がタスクをサポートできる例示的な配置７００を示している。この例では、アクション７１４が、標準インターフェース７２２を介してタスクメッセージ７２４を送ることができる。タスクメッセージ７２４は、クライアントソフトウェア７３２に向けられ、このクライアントソフトウェア７３２には、タスク達成機能性、タスク完了機能性、又はその両方７３４が含まれる。
【００４７】
ワークフローサービス７１２は、追跡のためにメッセージ７２４を解釈し、このメッセージ７２４の表示をデータベース７３２にストアすることができる。例えば、テーブル７３４は、割り当てられたタスク及び関連するアクタを示すことができる。実際には、追加情報をストアすることができる（例えば、タスクが割り当てられた時、タスクの結果、及び類似物）。この情報は、アクションから送られるかアクションに送られるメッセージからとるか、これによって表すことができる。
【００４８】
図８は、タスクを処理する例示的な方法をフローチャートに示す図である。この方法８００は、ステップ８１２で、タスクメッセージを、タスクをサポートするソフトウェアに送る。ステップ８２２で、タスクの結果を、ワークフローサービスによって、タスクをサポートするソフトウェアから受け取る。
【００４９】
ステップ８３２で、ワークフローサービスの追跡システムを更新する。この形で、ワークフロー進行（例えば、タスクの進行）に関する照会に答え、ワークフロー進行を監視したいユーザに提示することができる。
【実施例９】
【００５０】
＜アクションの例示的なコンポーザビリティ＞
本明細書で説明する例のどれにおいても、アクションをコンポーズして（例えば、つなぎ合わせて）アクティビティフローを形成することができる。ワークフローサービスの設計に起因して、アクションを、アクティビティフローの実行時（例えば、ランタイム）にコンポーズすることができる。アクティビティフローに関するワークフロー処理が進行しつつある時に、追加のアクションを、アクティビティフローに追加することができる。したがって、このシステムは、先験的な形（例えば、アクティビティモデルの設計時中）、アドホックな形（例えば、アクティビティモデルの実行時中）、又はこれらのある組合せ（例えば、先験的な形で作成されたアクティビティフローにアドホックな基礎でアクションを追加すること）で作成されたアクティビティフローをサポートすることができる。
【００５１】
開発者は、新しいアクションを設計することができ、この新しいアクションは、ワークフローサービスによってサポートされるパターンにおさまる限り、システムにインストールすることができる。
【実施例１０】
【００５２】
＜例示的な制約＞
本明細書で説明するどの例においても、ワークフローサービスは、制約サービスを介して制約に対処することができる。制約は、様々な形をサポートするために包括的に定義することができる。例えば、制約は、現在のシナリオの様々な態様を評価し、現在のシナリオで使用可能なアクション又はターゲットを示すストアと比較することができる。使用可能なアクション又はターゲットを、クライアントソフトウェアに提供することができ、クライアントソフトウェアは、アクティビティフローの実行中又は構成中に、参加アクタによる検討のためにこれらの使用可能なアクション又はターゲットを提示することができる。
【００５３】
アクションが実行される前に適用する他に、制約を、関連するアクティビティフローに実行時に適用することもできる。制約を使用して、アクタが次に行えることを制限することができるが、制約は、ワークフローの実行中にどのアクションが使用可能であるかに関してアクタを案内するという推論的な効果も有することができる。この形で、このシステムは、多数の無意味なオプションでユーザを圧倒することを避け、単純だが有効なユーザインターフェースを提示することができる。
【００５４】
例示的な制約は、どのアクタがどのアクションを実行できるか、又は、どのアクタが特定のアクティビティモデルに基づいてアクティビティフローを開始するかを制限する。例えば、特定のアクション又はアクティビティモデルへのアクセスを、特定のロール、グループ、又はアクタに制限することができる。制約サービスは、事実に関して包括的に制約を課すことができる。
【００５５】
同様に、ターゲットにすることができる（例えば、タスクを割り当てることができる）アクタを、同様に制限することができる。例えば、アクタは、会計部門の人に会計タスクを割り当てることだけを許可されることなどができる。
【００５６】
様々な事実を、制約サービスによる考慮のために含めることができる。例えば、組織が、アクタの名前、関連する部署、アクタが管理者であるかどうか、アクタの直接レポート、及び類似物を示す情報をストアすることができる。そのような事実は、本明細書の他所に記載のように、様々なソースから引き出すことができる。知識ベースを介して使用可能な事実のどれについても、制約を定義することができる。
【００５７】
さらに、ワークフローサービスは、相対制約をサポートすることができる。例えば、タスクを、エスカレートするアクタの管理者だけにエスカレート可能にすることができる。あるいは、アクタが自分の部署のターゲットアクタにタスクを割り当てることだけを許容することができる。したがって、アクタとターゲットの間の関係を、考慮に入れることができる。
【００５８】
さらに、制約を、否定的な形で定義することができる。例えば、アクティビティフローを開始できるアクタを指定するのではなく、アクティビティフローを開始できないアクタを指定することができる。
【００５９】
さらに、ワークフローサービスは、推移アクションに関する制約をサポートすることができる。例えば、タスクが会計部門の誰かに割り当てられているシナリオで、制約が、どのアクタがそのタスクに作用する（例えば、エスカレートする）ことを許可されるか、ならびに推移ターゲットの制約（例えば、タスクが割り当てられる新しい人）を指定することができる。制約は、エンアクテッドオン（ｅｎａｃｔｅｄ  ｏｎ）アクタ（例えば、タスクが既に割り当てられているターゲットアクタ）を考慮に入れることもできる。推移アクションに関する制約を、相対的に指定することができる（例えば、ソースアクタとエンアクテッドオンアクタの間の関係）。
【００６０】
他の制約は、文書タイプに基づくものとすることができる。例えば、タスクが特定の文書タイプ（例えば、提案）を有する場合に、制約によって、使用可能なアクション及び使用可能なターゲットを制御することができる。アクティビティモデルでは、次に実行されるアクションの判定を、ある形の制約として実施することができる。
【００６１】
もう１つの制約は、アクティビティフロー進行状態（例えば、アクティビティモデル内でアクティビティフローがどこまで進行したか）に基づくものとすることができる。例えば、アクティビティモデルが、文書に関連し、アクティビティモデルが、まだインスタンス化されていない（例えば、進行状態が「ｎｏｔ  ｓｔａｒｔｅｄ（未開始）」）場合に、制約が、使用可能なアクションに影響することができる。そのアクティビティのアクティビティフローが開始された（例えば、進行状態が「ｓｔａｒｔｅｄ（開始済み）」）後に、異なる制約が、異なるアクションを提示することができる。同様に、アクティビティフローが終了した（例えば、進行状態が「ｆｉｎｉｓｈｅｄ（終了）」）時に、制約が、それを反映することができる（例えば、アクティビティフローの終了をオプションとして提示しない）。他の状態をサポートすることができる（例えば、特定のアクションを終了した、又は類似物）。
【００６２】
図９は、制約の例示的な実装を示すダイヤグラムで、次に使用可能なアクションを決定する制約を含む例示的な配置９００を示している。この例では、ワークフローサービスが、アクション９１２の可能な次のアクションを決定している。この例では、アクション９２２Ａ〜９２２Ｎのいずれかが可能である。シナリオの周囲の状況（例えば、次のアクションを選択するアクタのアイデンティティ、グループ、又はロール及び類似物）に応じて、次のアクション９２２Ａ〜９２２Ｎのセットを、ワークフローサービスによってストアされた制約によって示されるアクションのサブセットに制約することができる。次のアクションの決定は、制約を現在の状況に適用する制約エンジンによって実行することができる。
【００６３】
図１０は、コンポーザブルアクションに関する制約を実装する例示的な方法をフローチャートに示す図で、アクティビティフローで制約を実装する例示的な方法１０００を示している。ステップ１０１２で、アクティビティフローのアクションをインスタンス化する。次に、実行を開始することができる。アクティビティフローの実行時に、ステップ１０２２で、次のアクションとしてコンポジションに使用可能なアクションを、事実に基づいて制約する。
【００６４】
包括的な形で制約を使用することによって、ワークフロー実行中にワークフロー参加者を案内する様々な機構が可能になる。制約は、通常は管理者によって管理されるが、参加アクタが、制約に寄与することができる（例えば、アクティビティフローを一緒にする時に）。
【実施例１１】
【００６５】
＜制約に関する事実の例示的な獲得＞
図１１は、知識ベースアダプタを介する高速収集を示すブロック図で、制約１１３２を適用するためにワークフローサービス１１１２が１つ又は複数の知識ベース１１６２Ａ〜１１６２Ｎと相互作用する例示的な配置１１００を示している。この例では、１つ又は複数のめいめいのアダプタ１１２２Ａ〜１１２２Ｎが、事実を獲得するために知識ベース１１６２Ａ〜１１６２Ｎと相互作用するのに使用される。
【００６６】
知識ベース（例えば、知識ベース１１６２Ａ）での事実の可用性は、ワークフローサービス内で各々の知識ベースアダプタ（例えば、アダプタ１１２２Ａ）をインストールすることによって達成することができる。アダプタ１１２２Ａに、マッピングが含まれ、このマッピングによって、知識ベース１１６２Ａ内の情報を、ワークフローサービス１１１２による使用のために取り出すことができる。例えば、ワークフローサービス１１１２が、制約１１３２を適用する時に、アクタ、その位置、セキュリティレベル、及び類似物に関する事実を相談することを望む場合がある。この形で、ワークフローサービス１１１２から使用可能な事実が、様々なソースのどれからでも来ることができる。
【００６７】
図１２は、制約を適用する時に事実を使用する例示的な方法をフローチャートに示す図である。この方法１２００は、ステップ１２１２で、制約処理中に、事実に関する要求を受け取る。例えば、アクタのセキュリティレベル又は部署を要求することができる。ステップ１２２２で、事実を取り出す。次に、ステップ１２３２で、取り出された事実を使用して制約を適用する。
【００６８】
実際には、事実を、周期的に又は１回だけの基礎で取り出すことができ（例えば、１つ又は複数の知識ベースから）、ワークフローサービスの制御の下で中央事実ストアにストアすることができ、このストアから、要求を満たすことができる。
【００６９】
さらに、事実に、アクティビティフローの現在の進行状態、アクティビティフローに関連する文書タイプ、又はその組合せを含めることができる。
【実施例１２】
【００７０】
＜アクティビティモデルを制約する例示的なコンポーザビリティ＞
本明細書で説明する例のどれにおいても、１つ又は複数のアクションを、アクションのセット及びインスタンス化可能な関連する制約にコンポーズして、アクティビティフローを作成することができる。そのようなアクションのセットを、時々、「アクティビティモデル」と呼ぶ。
【００７１】
アクティビティモデルの実行を、時々、先験的アクティビティフローの実行と呼ぶ。というのは、アクションが、アクティビティモデル設計者によって既に選択されているからである。望まれる場合に、アクティビティモデル設計者は、関連するアクティビティフローの実行中に変更を行うことができなくなるようにするために、不変としてアクティビティモデルを定義することができる。
【００７２】
図１３は、例示的なアクティビティモデル１３００を示すブロック図である。このアクティビティモデル１３００は、アクション定義１３２２、１３２４、１３２６、１３２８及び１３３０への様々な参照が、呼出し可能な単位にアセンブルされ、この呼出し可能な単位は、アクタによる実行のために選択することができる（例えば、制約によって許可される）。ユーザの便宜のために、アクティビティモデル１３００に、それによってアクティビティモデルを選択できるフレンドリ名を与えることができる。
【００７３】
図１４は、コンポーザブルアクションを介してアクティビティモデルを実装する例示的な方法をフローチャートに示す図である。この方法１４００は、ステップ１４１２で、要求を受け取って（例えば、人間のアクタから）、アクティビティモデルを実行する（例えば、ワークフローサービスのクライアントソフトウェアを介して）。ステップ１４２２で、アクティビティフローのコンポーザブルアクションを、アクティビティモデル定義に基づいてインスタンス化する。ステップ１４３２で、アクティビティフロー定義に基づいて、アクションをアクティビティフローにコンポーズする。例えば、アクションのシーケンスを、アクティビティモデルによって定義することができ、その結果、アクションの完了時に、アクティビティフローの次のアクションが実行されるようになる。
【実施例１３】
【００７４】
＜アクションのアドホック選択のための例示的なコンポーザビリティ＞
本明細書で説明する例のどれにおいても、１つ又は複数のアクションを、人間のアクタによってアクションのセットにコンポーズして、アドホックな基礎でアクティビティフローを形成することができる。例えば、人間のアクタが、インスタンス化のためにアクションを選択することができる。望まれる場合に、特定の状況に適当な様々なパラメータを、人間のアクタによって（例えば、電子形式を介して）インスタンス化されたアクションに供給することができる。
【００７５】
図１５は、アドホックアクションコンポジションを介して構成された例示的なアクティビティフローを示すブロック図で、アクション１５２２及び１５５２のセットがアドホックな基礎でコンポーズされている例示的なアクティビティフロー１５００を示している。この例では、ユーザが、レビューアクション１５２２をインスタンス化することを選択しており、これによって、ターゲットアクタに対してタスクが生成されている。この例では、タスクが、ユーザインターフェース１５３２の形でターゲットアクタに示され、ターゲットアクタがアイテム（例えば、アタッチされた文書）をレビューしなければならないことを示す。ターゲットアクタは、アイテムを承認１５３４するか拒絶１５３６することを選択することができる。メモ１５３８を提供することができる。実際には、より包括的な又は他のユーザインターフェースを提供することができる。
【００７６】
しかし、この例では、ターゲットアクタが、望まれる時までにアイテムをレビューしていない。したがって、アクタ（例えば、レビューアクション１５２２をインスタンス化することを選択したアクタと同一のアクタ又は別のアクタ）が、アクティビティフローの実行時に（例えば、アクティビティフローが完了する前に）エスカレートアクション１５５２を追加することを選択した。したがって、新しいアクション１５５２が、インスタンス化され、アクティビティフロー１５００内に置かれる。その結果、このタスクが、別のターゲットユーザに再割り当てされる。望まれる場合に、割込みメッセージをレビューアクション１５２２に送ることができ、これによって、適当なステップ（例えば、第１ターゲットアクタへのタスクを取り消す）を行うことができる。
【００７７】
新しいタスクの結果として、新しいユーザインターフェース１５６２が、ターゲットアクタに示される。やはり、このユーザインターフェースに、要素１５６４、１５６６、及び１５６８を含めることができる。
【００７８】
図示のアクションは、例示にすぎない。実際には、様々なアドホックアクションを、制約に鑑みて提供することができる。
【００７９】
図１６は、コンポーザブルアクションを介してアドホックアクティビティフローを作成する例示的な方法をフローチャートに示す図で、アドホックアクティビティフローを実施する例示的な方法１６００を示している。この方法１６００は、ステップ１６１２で、アクティビティフローの実行時にアクティビティフローにアクションを追加する要求を受け取る。ステップ１６２２で、アクティビティフローの実行時にアクティビティフローにアクションをコンポーズする。
【実施例１４】
【００８０】
＜アクティビティモデルへのアドホックアクションの追加のための例示的なコンポーザビリティ＞
先験的アクティビティフローの実行のアクティビティモデル及びアクティビティフローのアドホックコンポジションのサポートに加えて、ワークフローサービスは、アドホックな基礎でアクティビティモデルに基づくアクティビティフローへのアクションの追加をサポートすることができる。
【００８１】
図１７は、アクティビティモデルに基づいてアクティビティフローに追加される例示的なアドホックアクションを示すブロック図で、アクション１７８８がアドホックな基礎で追加されているアクティビティモデルに基づく例示的なアクティビティフロー１７００を示している。この例では、アクティビティフローが、アクティビティモデルのインスタンスであり、アクション１７２２、１７２４、１７２６、１７２８及び１７３０を含んでいる。アクション１７８８の追加に基づいて、実行のフローを変更することができる。アクタは図示されていないが、アクションをアクタに向けることができる（例えば、タスクを割り当てるために）。
【００８２】
図１８は、アクティビティモデルに基づいてアドホックな基礎でアクティビティフローにアクティビティを追加する例示的な方法をフローチャートに示す図である。この方法１８００は、ステップ１８１２で、使用可能なアドホックアクションを判定する（例えば、制約に基づいて）。例えば、次に、使用可能なアクションを、選択のために人間のアクタに提示するために、クライアントソフトウェアに送ることができる。
【００８３】
ステップ１８２２で、所望のアドホックアクションの指示を受け取る。例えば、クライアントソフトウェアが、ユーザがどのオプションを選択したかを示すことができる。
【００８４】
ステップ１８３２で、アドホックアクションをアクティビティフローにコンポーズする。ワークフローサービスの追跡サービスを更新して、新しいアクションが追加されたことと、どのアクタがそれを追加したかを示すことができる。
【実施例１５】
【００８５】
＜タスクに関する例示的なアドホックアクション＞
アドホックアクションの特殊なタスク固有のセットを、タスクのために使用可能にすることができる。そのようなアドホックアクションは、タスクが用いられる時にいつでも（例えば、そのアドホックアクションが関連するアクティビティモデルに現れない場合でも）アクタによる選択のために提示することができる。そのようなアドホックアクションを、制約に基づいて選択的に提示することができる。
【００８６】
タスクに関する例示的なアドホックアクションに、エスカレート、委任、及び類似物が含まれる。例えば、タスクと共に提示される時に、アクタに、タスクをエスカレート又は委任するオプションも提示することができる。そのようなオプションが使用可能であるかどうか及び可能なターゲットは、制約によって制御することができる。そのようなオプションを、アクティビティフローの進行のグラフィカル表示で提示することもできる。この形で、進行を監視するアクタが、エスカレーション又は委任によって実行を簡単に移動することができる。
【００８７】
タスクに関連するそのようなアドホックアクションを指定する能力によって、ワークフローサービスをより有用にすることができる。というのは、ワークフロー処理が、予想されない状況により応答できるようになるからである。
【実施例１６】
【００８８】
＜ユーザアイデンティティに基づく例示的な制約＞
図１９は、ユーザアイデンティティに基づく例示的な制約を示すブロック図で、ワークフローサービス１９１２がアクタアイデンティティに基づく制約をサポートする例示的な配置１９００を示している。この例では、人間のアクタが、ワークフローサービス１９１２内のアクタ１９２２によって表される。
【００８９】
定義された制約１９１４によって、アクタ１９２２（すなわち、ソースアクタ）が、インスタンス化のためにアクション１９３１を選択できるかどうか、及びどのターゲット１９３４を選択できるかが決定される。この決定は、アクタ１９２２のアイデンティティに基づくものとすることができる。そのようなアイデンティティ制約に、アクタのユーザ名、アクタがメンバであるグループ、及びアクタ１９２２がメンバであるロールを含めることができる。さらに、相対制約によって、アクタ１９２２が別のアクタへの関係を有することを指定することができる。
【００９０】
さらに、制約１９１４によって、どのターゲットアクタ１９３４をアクション１９３１について指定できるかが決定される。ターゲットアクタ１９３４は、単一のアクタ、グループ、又は他の指定とすることができる。様々な制約によって、アクション（例えば、アクションの定義に関連するアクションｉｄを介して）を、許可されるインスタンス化するアクタ及びターゲットアクタ（例えば、特定のインスタンス化するアクタについて）に関連付けることができる。
【００９１】
実際には、アクタ１９２２に関連する人間のアクタが、制約１９１４によって示される適当なオプションだけを見るようにするために、制約を実施することができる。この形で、人間のアクタは、多すぎる選択肢によって圧倒されず、ワークフロー処理中に案内されている。
【００９２】
図２０は、アクタ制約に基づいてアクションオプション及びターゲットオプションを提示する例示的な方法をフローチャートに示す図である。この方法２０００は、ステップ２０１２で、可能なアクションを、アクタアイデンティティに基づいて提示する。ステップ２０２２で、可能なターゲットアクタを、アクタアイデンティティに基づいて提示する。実際には、ワークフローサービスが、クライアントソフトウェアによる提示に関するオプションを提示することによってそのような提示を制御することができ、このクライアントソフトウェアは、選択を受け取ることができる（例えば、ピックリスト、ラジオボタン、コンボボックス、又は類似物から）。
【実施例１７】
【００９３】
＜例示的な推移アクション＞
ワークフローは、推移アクションに関する制約をサポートすることもできる。推移アクションに、他のアクションに適用できるアクションが含まれ、このアクションは、通常は既に関連するターゲットアクタを有する。推移アクションの例に、委任及びエスカレートが含まれる。
【００９４】
図２１は、推移アクションの例示的な制約を示すブロック図で、ワークフローシステム２１１２が推移アクションに制約を適用する例示的な配置２１００を示している。この例では、アクション２１３１が、既にターゲットアクタ２１３４又は「エンアクテッドオン」アクタに適用されている。アクタ２１２２（すなわち、ソースアクタ）が、推移アクション２１４４をアクション２１３１に適用している。
【００９５】
推移アクション２１４４が、アクタ２１２２にオプションとして示されるかどうかは、制約２１１４次第である。そのような決定は、アクタ２１２２のアイデンティティ、推移アクション２１４４のタイプ、アクション２１３１のタイプ、エンアクテッドオンアクタ２１３４、又はこれらのある組合せに基づくものとすることができる。最後に、許容されるターゲット２１４８も、制約２１１４を介して制御することができる（例えば、オプションが示されるかどうかに関する考慮事項と同一の考慮事項又は考慮事項の他の組合せに基づく）。
【００９６】
図２２は、制約に鑑みてエンアクテッドオンアクタに基づいてオプションを提示する例示的な方法をフローチャートに示す図で、エンアクテッドオンユーザに基づいて可能なアクション及び可能なターゲットを提示する例示的な方法を示している。ステップ２２１２で、少なくとも１つのエンアクテッドオンアクタに基づいて、可能なアクションを提示する。ステップ２２２２で、少なくとも１つのエンアクテッドオンアクタに基づいて、可能なターゲットを提示する。
【００９７】
相対制約を、どのシナリオにおいても使用することができる。例えば、アクタを、そのアクタによって管理されるアクタだけに対して特定の推移アクションを実行するように制約することなどができる。
【実施例１８】
【００９８】
＜例示的な追跡＞
図２３は、例示的な追跡配置を示すブロック図で、ワークフローサービス２３１２が追跡をサポートする例示的な配置２３００を示している。この例では、ワークフローサービス２３１２が、１つ又は複数のアクティビティフロー２３２２Ａ〜２３２２Ｎの実行をサポートする。フローの実行に関する情報は、後の検索のために追跡データベース２３３２にストアすることができる。例えば、アクションとの間のメッセージの表示を、メッセージを示す情報をインターセプトし、ストアするカスタムインターセプタを使用することによってストアすることができる。さらに、ワークフロー処理の進行を示す状況レポートを構成するための他の情報をストアすることができる。
【００９９】
図２４は、コンポーザブルアクションのアクティビティフローの状況を追跡する例示的な方法をフローチャートに示す図である。この方法２４００は、ステップ２４１２で、コンポーザブルアクションへ又はこれからのメッセージをインターセプトする。ステップ２４２２で、メッセージの表示を、追跡データベースにストアする。
【実施例１９】
【０１００】
＜ワークフロー状況の例示的な描写＞
図２５は、追跡（例えば、収集されたメッセージ）に基づくワークフロー状況のグラフィカルプレゼンテーションを提示する例示的なユーザインターフェースを示す図である。このユーザインターフェース２５００は、様々な箱２５２１、２５２２、２５２３、２５２４、２５２５及び２５２６が、タスクを割り当てたか割り当てられた、ワークフロー処理（例えば、アクティビティフロー）に参加するアクタを示す。さらに、ユーザインターフェース２５００は、アクタの間の通信を提示することができる。例えば、矢印に、Ｊｕｌｉａｎが文書を承認したことの表示２５３４を含めることができる。そのような表示は、テキスト、アイコン、又は類似物によるものとすることができる。もう１つの矢印に、タスクがエスカレートされたことの表示２５３２が含まれる。
【０１０１】
図２６は、アクティビティフロー状況を提示する例示的な方法をフローチャートに示す図である。この方法２６００は、ステップ２６１２で、追跡ストアに照会する。ステップ２６２２で、照会結果に基づいて、アクティビティフローをビジュアルに示す。
【０１０２】
実際には、様々なユーザインターフェースを提示することができる。さらに、ユーザインターフェースは、人間のアクタがワークフローを監視する際にそのワークフローに参加できるようにするさらなるオプションを人間のアクタに提示することができる。例えば、オプションをエスカレートするか割り込むオプションを提示することができる。
【実施例２０】
【０１０３】
＜ウェブサービスとしての例示的な実装＞
本明細書で説明する例のどれにおいても、ワークフローサービスを、ウェブサービスとしてクライアントに提示することができる。例えば、ユーザインターフェースを、クライアントがレンダリングできるＨＴＭＬの形で提供することができる。
【実施例２１】
【０１０４】
＜例示的なパーベイシブインターフェース技術＞
本明細書で説明するどの例においても、ワークフローサービスを、パーベイシブユーザインターフェースを介して使用することができる。例えば、ワークフローサービスのユーザインターフェースを、電子メールプログラム又はワードプロセッシングプログラムなどの一般的なソフトウェアプログラムに統合することができる。この形で、一般的な馴染みのあるソフトウェアを、ワークフローサービスのクライアントとして使用することができる。通信は、ＸＭＬメッセージを送信することによって（例えば、ＳＯＡＰプロトコルに従って）達成することができ、ユーザインターフェースを、ＨＴＭＬを介して描くことができる。
【０１０５】
図２７は、電子メールユーザインターフェース内でのパーベイシブワークフローユーザインターフェースの例示的実施形態をスクリーンショットに示す図で、ワークフローサービスが電子メールプログラムのユーザインターフェースの一部として提示される例示的なユーザインターフェース２７００を示している。この例では、電子メールプログラムに、馴染みのあるフォルダリスト２７１２及び受信トレイ２７２２が含まれる。受信トレイの一部として、タスクが表示される。選択された時に、電子メールのプレビューが、プレビューペイン２７６２に表示される。
【０１０６】
このユーザインターフェースは、ターゲットアクタ（例えば、電子メールをレビューするユーザ）に関するタスクが、予算文書をレビューすることであることを示している。ユーザインターフェース要素２７６４、２７６６、及び２７６８を使用して、ワークフローサービスと通信することができる。例えば、押しボタン２７６４のアクティブ化の際に、メッセージが、ターゲットアクタへのタスクを開始したアクションに送られる。その後、関連するアクティビティフローによって、適当なステップを行うことができる。
【０１０７】
ペイン２７６２の代わりに、図２８に示したペイン２８００を表示することができる。この例では、サブペイン２８６２の標準タスクオプション（例えば、ユーザインターフェース要素２８６４、２８６６、及び２８６８）に加えて、アドホックアクションのオプションが、サブペイン２８７２に表示される（例えば、ユーザインターフェース要素２８７６）。
【０１０８】
図２９は、パーベイシブワークフローユーザインターフェースを介して選択を提示し、受け入れる例示的な方法をフローチャートに示す図である。この方法２９００は、ステップ２９１２で、ワークフロー関連ユーザインターフェースを、パーベイシブアプリケーション内で提示する。ステップ２９２２で、ユーザ（例えば人間のアクタ）の選択を、ユーザインターフェースを介して受け取る。
【０１０９】
図３０は、ワードプロセッシングユーザインターフェース内でアイテムを承認するか拒絶するパーベイシブワークフローユーザインターフェースの例示的な実施形態をスクリーンショットに示す図で、ワークフローサービスにアクセスするユーザインターフェース要素が文書編集（例えば、ワードプロセッシング又はスプレッドシート）プログラムに統合されたものとして提示されるユーザインターフェース３０００を示している。この例では、文書が、文書ペイン３０６２に提示される。文書ペイン３０６２の横に、ワークフローオプション３０７２が表示される。この例では、アドホックアクションが表示され、これによって、アクタが、アクション及びターゲットアクタを選択することができる。アクションの開始は、ユーザインターフェース要素３０７６を介して達成することができる。実際には、追加のオプション又は異なるオプションを提示することができる（例えば、編集中の文書を承認するため）。
【実施例２２】
【０１１０】
＜例示的な発見可能性（ｄｉｓｃｏｖｅｒａｂｉｌｉｔｙ）＞
図３１は、アクションをアクティブ化するパラメータの指定の発見可能性に関する例示的な配置を示すブロック図で、アクション３１３６をアクティブ化するアクティブ化パラメータの指定を入手できる例示的な配置３１００を示す図である。この例では、クライアントソフトウェア３１３４（例えば、アクション、ワークフローサービス、又は他のソフトウェア）が、アクション３１３６に照会を送り、アクション３１３６は、このアクションをアクティブ化するパラメータの指定（例えば、アクション３１３６の開発者によって指定されたパラメータリスト）を応答する。実際には、アクション３１３６がまだインスタンス化されていないので、照会（例えば、アクションタイプを指定する）を、ワークフローサービスによって受け止めることができ、このワークフローサービスが、アクションタイプ及びそのそれぞれのパラメータのリストを調べて、アクティブ化パラメータ指定を判定する。
【０１１１】
指定は、それによってパラメータを収集できるＨＴＭＬフォームの形で提供するか、これに変換することができる。例えば、レビューアクションは、ターゲットが提供されることを指定することができ、したがって、アクタによる完成のために適当なＨＴＭＬフォームを生成することができる。制約を使用して、適当なターゲットアクタに書き込むことができる。
【０１１２】
図３２は、アクションのアクティブ化パラメータ指定を発見する例示的な方法をフローチャートに示す図である。この方法３２００は、ステップ３２１２で、アクティブ化パラメータ指定に関する照会を受け取る。ステップ３２２２で、照会に応答して指定を供給する。
【０１１３】
類似する手法を、アクティビティモデルのパラメータ指定の発見可能性に関して使用することができる。アクション又はアクティビティフローの実行時に、発見可能性を実行することができる。
【実施例２３】
【０１１４】
＜例示的なアクションテンプレート＞
アクションの開発を容易にするために、開発者にテンプレートを供給することができる。  
図３３は、コンポーザブルアクションのパターンをサポートする例示的なテンプレートを示すブロック図で、テンプレートアクション定義３３１４を伴う例示的な配置３３００を示している。テンプレートは、ビジュアルプログラミング言語で編集することができ、このビジュアルプログラミング言語は、その後、アクションに関する適当な実行可能コードを生成することができる。
【０１１５】
この例では、アクションのインターフェースが、ピン３３２２、３３２４、３３２６及び３３２８によって表されている。テンプレートは、アクティブ化インターフェース３３２２によるアクティブ化メッセージの受け取りを考慮に入れたものである。アクションによってカプセル化されるアクティブ化ロジック３３３２は、アクティブ化メッセージを受け取り、アクションテンプレートによって受け取られる他のメッセージを相関させる値を初期化するために、アクティブ化応答メッセージをそれ自体にループバックする。
【０１１６】
テンプレート３３１４は、さらに、依存コンポジション（例えば、同期化シナリオ）を考慮に入れたものである。例えば、同期化ロジック３３４２及びリスンロジック３３４４を、並列に実行することができる。アクションが、依存する形でコンポーズされる（例えば、そのさらなる実行が、別のアクションからのメッセージの受け取りに依存する）場合に、同期化ロジック３３４２は、同期化インターフェース３３２４からメッセージを受け取るまで、実行をブロックすることができる。
【０１１７】
並列に、リスンロジック３３４４が、割込みメッセージ又は終了メッセージをリスンすることができる。割込みメッセージが割込みインターフェース３３２６から受け取られる場合に、割込みロジック（例えば、状態のロールバック）を実行することができる。
【０１１８】
ブロックされていないかブロック解除される場合に、アクション固有の処理（例えば、ビジネスロジック）３３５２を実行することができる。最後に、終了ロジック３３６２を実行することができ、終了メッセージを終了インターフェース３３２８に送ることができる。このメッセージは、アクションによって、リスンロジック３３４４で受け取られ、並列分岐も完了させる。
【０１１９】
実際には、追加のロジック又は他のロジックを含めることができる。開発が完了した後に、アクション定義を、ワークフローサービスにインストールすることができ、適当な制約を、アクションに関連するものとして定義することができる。
【実施例２４】
【０１２０】
＜ワークフローテクノロジの例示的な実行＞
図３４乃至図３７は、ワークフローテクノロジの例示的な実行を示す図である。この例では、カスタマが、アカウントマネージャに提案要求（ＲＦＰ）を送り、アカウントマネージャが、ＲＦＰに対する応答を調整するための専門家のチームを関係させる。
【０１２１】
図３４には、含まれるアクションを示している。カスタマ３４１０が、アカウントマネージャ３４２０にＲＦＰ文書を（例えば、電子メールを介して）送る。例えば、この文書は、ワードプロセッシング文書とすることができる。次に、アカウントマネージャは、専門家３４３０Ａ〜３４３０Ｄにタスクを送って、ＲＦＰに応答するのに必要な処理を完了する。
【０１２２】
図３５乃至図３７には、例示的なスクリーンショットを示している。図３５には、例示的な電子メールプログラム３５１０を示しているが、このプログラムで、電子メール３５２０が、アカウントマネージャによってカスタマから受け取られている。この電子メールには、電子メール添付ファイル３５３０の形でＲＦＰ文書が含まれる。この例では、アカウントマネージャが、電子メール３５２０を電子メール別名（例えば、「ＲＦＰ  Ａｐｐｒｏｖａｌ（ＲＦＰ承認）」）に転送することによって、アクティビティモデルに基づいてアクティビティフローを開始することができる。電子メールソフトウェアは、電子メール処理ルールに基づいてこの電子メールを処理して、アクティビティモデルに基づくアクティビティフローを開始することができ、このアクティビティモデルは、専門家３４３０Ａ〜３４３０Ｄ用の適当なタスクを生成し、タスクの一部として添付ファイル３５３０（又はそれへのリンク）を含めることができる。
【０１２３】
図３６には、タスクに関連する文書が開かれた時の、専門家３４３０Ａ〜３４３０Ｄの１人に提示される例示的なユーザインターフェースを示している。このユーザインターフェースは、馴染みのある文書編集（例えば、ワードプロセッシング）プログラム３６１０とすることができ、この文書編集プログラム３６１０は、文書３６２０を（例えば、添付ファイル３５３０に基づいて）提示する。
【０１２４】
ユーザインターフェースに、専門家３４３０Ａ〜３４３０Ｄの１人が別のアクタにタスクをエスカレート又は委任することを可能にするペイン３６３０も含まれる。この例では、見るアクタが、アクタ「Ｋｅｒｒｉ」にこのタスクを委任し、ユーザインターフェース要素３６３５をアクティブ化する。
【０１２５】
本ワークフローテクノロジの追跡特徴に起因して、プレゼンテーション３７００に、上述したワークフローの状況を示すことができる。カスタマＰｅｔｅｒ  ３７２１が、電子メールを送ることによってこのワークフローを開始した。例えば、電子メールを手動で転送するのではなく、アクタＪｅｎｎｙ  ３７２２は、自分の電子メール受信トレイ内でルールをセットアップして、メッセージの件名で「Ｎｅｗ  ＲＦＰ（新規ＲＦＰ）」を検出することに基づいてアクティビティモデルを自動的に開始することができる。専門家３７２３〜３７２５が、レビューのためにＲＦＰを受け取っている。Ｊｕｌｉａｎ  ３７２３は、ＲＦＰを承認しており、Ｍｉｃｈａｅｌ  ３７２５は、インジケータ３７３２によって示されるように、彼のタスクをＫｅｒｒｙ  ３７２６に委任している。
【実施例２５】
【０１２６】
＜タスクの例示的な通知＞
図３８は、ハイパーリンクを用いるタスクの例示的な通知を示す図で、タスクが受取人アクタに割り当てられる時に送られる（例えば、電子メールを介して）例示的な通知３８００のスクリーンショットを示している。この通知は、そのタスクに応答する形に関する指示を与えることができる。この通知に、文書へのハイパーリンク及びタスクへのハイパーリンクを含めることができる。
【実施例２６】
【０１２７】
＜メッセージタイプに関する例示的なスキーマ＞
様々なメッセージタイプに関する例示的なスキーマを以下に示す。メッセージタイプに、アクティブ化、アクティブ化応答、同期化、タスク、終了、及び割込みを含めることができる。いくつかの例で、スキーマに従うためにスキーマを変更してはならないことが示されるが、代替実施形態では、類似する機能性を達成するためにスキーマの異なるセットを使用することができる。例えば、ＧＵＩＤが、例で指定されるが、他の識別子（例えば、別の一意識別子）をその代わりに使用することができる。例では、ワークフローシステムを、時々、ヒューマンワークフローシステム（「ＨＷＳ」）と呼ぶ。
【実施例２７】
【０１２８】
＜アクティブ化メッセージタイプの例示的なスキーマ＞
Ｈｗｓ＿Ａｃｔｉｖａｔｅメッセージは、アクションのアクティブ化中にアクションにパラメータを供給するのに使用される、例示的なアクティブ化メッセージである。アクションは、多くとも１つのアクティブ化メッセージスキーマを関連付けさせることができる。この例では、Ｈｗｓ＿Ａｃｔｉｖａｔｅメッセージが、ＨｗｓＭｅｓｓａｇｅノードの下に３つの子要素を有する。この子要素は、ＨｗｓＳｅｃｔｉｏｎ、ＡｃｔｉｏｎＳｅｃｔｉｏｎ、及びＰａｙｌｏａｄｓである。これらを以下に説明する。
【０１２９】
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約された、ＸＭＬ要素及びＸＭＬ属性の定義を保持する。このセクションで定義された要素又は属性を変更してはならない。表２に、ＨｗｓＳｅｃｔｉｏｎノードの下で定義される要素／属性の例示的なリストを示す。
【０１３０】
【表２−１】
2007515016.tif 000004
【０１３１】
【表２−２】
2007515016.tif 000005
【０１３２】
【表２−３】
2007515016.tif 000006
【０１３３】
【表２−４】
2007515016.tif 000007
【０１３４】
†これらのプロパティは、アクションテンプレートでの参照及び使用のためにデフォルトで昇格される。
【０１３５】
ＡｃｔｉｏｎＳｅｃｔｉｏｎ：ＡｃｔｉｏｎＳｅｃｔｉｏｎは、アクション開発者によってカスタマイズ可能であり、インスタンス化中にアクションに引き渡されるアクション固有のパラメータ及び値を含めることができる。このセクションに、アクションの人間のターゲットに対応する要素を含めることができる。ＡｃｔｉｏｎＳｅｃｔｉｏｎの要素／属性の値は、Ｈｗｓインターセプタによって追跡されない。追跡されなければならないプロパティが必要な場合には、インスタンス文書内で事前定義のＨｗｓＳｅｃｔｉｏｎ＼ＡｃｔｉｏｎＰｒｏｐｅｒｔｉｅｓコレクションで指定する。
【０１３６】
Ｐａｙｌｏａｄｓ：スキーマのｐａｙｌｏａｄｓノードは、アクションによって送られる他のメッセージに含める必要がある場合がある追加情報をアプリケーションが指定するためのプレースホルダである。
【０１３７】
○  Ａｎｎｏｔａｔｉｏｎｓ：アクティブ化メッセージスキーマは、Ｈｗｓシステムによって使用される注釈を担持する。スキーマルートノードレベルで定義されるプロパティと、要素ノードレベルで定義されるプロパティがある。
【０１３８】
・  スキーマノードプロパティ：次のプロパティが、スキーマノードレベルで定義される：
・  Ｄｅｓｃｒｉｐｔｉｏｎ：このプロパティの値は、アクティブ化メッセージが関連するアクションを記述するのに使用される。
・  Ｉｎｃｏｍｉｎｇ  Ｓｙｎｃ  ｍｅｓｓａｇｅｓ：このプロパティは、アクティブ化メッセージに関連するオーケストレーション（ｏｒｃｈｅｓｔｒａｔｉｏｎ）によって受け取られる同期化メッセージのターゲット名前空間を指定する。
・  Ｏｕｔｇｏｉｎｇ  Ｓｙｎｃ  ｍｅｓｓａｇｅｓ：このプロパティは、アクティブ化メッセージに関連するオーケストレーションによって送られる同期化メッセージのターゲット名前空間を指定する。
・  要素ノードプロパティ：スキーマ文書のＡｃｔｉｏｎＳｅｃｔｉｏｎ要素の下で定義される要素ノードについて、Ｈｗｓは、次のプロパティを定義する：
・  Ｔａｒｇｅｔ：これは、Ｂｏｏｌｅａｎプロパティである。値真は、要素ノードが、アクティブ化メッセージに関連するアクションによって送られる１つ又は複数のタスクメッセージの受取人である人間のターゲットであることを示す。値偽又は値が指定されない場合には、ノードが人間のターゲットでないことが示される。
【０１３９】
各アクティブ化メッセージスキーマは、展開されるスキーマのセット内でそれを一意に識別するターゲット名前空間を有することができる。
【実施例２８】
【０１４０】
＜アクティブ化応答メッセージタイプに関する例示的なスキーマ＞
Ｈｗｓ＿ＡｃｔｉｖａｔｅＲｅｓｐｏｎｓｅメッセージは、テンプレート内の他のメッセージを受け取るのに使用される相関変数のセットを初期化するためにアクションテンプレートによって内部的に使用される例示的なアクティブ化応答メッセージである。
【０１４１】
Ｈｗｓ＿ＡｃｔｉｖａｔｅＲｅｓｐｏｎｓｅメッセージは、ＨｗｓＭｅｓｓａｇｅノードの下に１つの子要素だけを有する。この子要素が、ＨｗｓＳｅｃｔｉｏｎである。これを以下に説明する。
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約されたｘｍｌ要素及びｘｍｌ属性の定義を保持する。このセクションで定義される要素又は属性を変更してはならない。表３に、ＨｗｓＳｅｃｔｉｏｎノードで定義される要素／属性の例示的なリストを示す。
【０１４２】
【表３】
2007515016.tif 000008
【０１４３】
†これらのプロパティは、アクションテンプレートによって使用される相関セットを初期化するために、デフォルトで昇格される。
【０１４４】
○  Ａｎｎｏｔａｔｉｏｎｓ：アクティブ化応答メッセージスキーマは、メッセージの記述に関する注釈を有する。この注釈の値は、編集に使用可能でない。
【０１４５】
このスキーマのＴａｒｇｅｔＮａｍｅｓｐａｃｅは、ＵＲＬ（例えば、http://[base]/Hws_ActivateResponse）を介して定義される。このスキーマは、アセンブリ（例えば、ＤＬＬ）にコンパイルすることができ、アクションテンプレートによって参照される。メッセージは、アクションで構成され、直接にバインドされたポートを介して送られ／受け取られる。
【実施例２９】
【０１４６】
＜同期化メッセージタイプに関する例示的なスキーマ＞
Ｈｗｓ＿Ｓｙｎｃｈｒｏｎｉｚｅメッセージは、受取り側のアクションの実行をブロック解除するために、あるアクションから別のアクションに送られる例示的な同期化メッセージである。受取り側のアクションインスタンスは、同期化メッセージを待つことができるように、アクティブ化メッセージでＩｓＤｅｐｅｎｄｅｎｔＯｎＰａｒｅｎｔプロパティに真をセットされてアクティブ化されていなければならない。
【０１４７】
Ｈｗｓ＿Ｓｙｎｃｈｒｏｎｉｚｅメッセージは、ＨｗｓＭｅｓｓａｇｅノードの下に３つの子要素を有する。この子要素は、ＨｗｓＳｅｃｔｉｏｎ、ＡｃｔｉｏｎＳｅｃｔｉｏｎ、及びＰａｙｌｏａｄｓである。これらを以下に説明する。
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約されたｘｍｌ要素及びｘｍｌ属性の定義を保持する。このセクションで定義される要素又は属性を変更してはならない。表４に、ＨｗｓＳｅｃｔｉｏｎノードで定義される要素／属性の例示的なリストを示す。
【０１４８】
【表４】
2007515016.tif 000009
【０１４９】
†これらのプロパティはアクションテンプレートでの参照及び使用のためにデフォルトで昇格される。
【０１５０】
ＡｃｔｉｏｎＳｅｃｔｉｏｎ：ＡｃｔｉｏｎＳｅｃｔｉｏｎは、アクション開発者によってカスタマイズ可能であり、受取り側のアクションに引き渡されるシナリオ固有のパラメータ及び値を含めることができる。
Ｐａｙｌｏａｄｓ：
○  Ａｎｎｏｔａｔｉｏｎｓ：同期化メッセージスキーマは、メッセージの記述に関する注釈を有する。このプロパティは、スキーマルートノードレベルで定義される。
・  スキーマノードプロパティ：次のプロパティを、スキーマノードレベルで定義することができる。
・  Ｄｅｓｃｒｉｐｔｉｏｎ：このプロパティの値は、同期化メッセージを記述するのに使用される。
【０１５１】
各同期化メッセージスキーマは、展開されるスキーマのセット内でそれを一意に識別するＴａｒｇｅｔＮａｍｅｓｐａｃｅを有しなければならない。同期化メッセージのＴａｒｇｅｔＮａｍｅｓｐａｃｅが変更される場合、又は新しい同期化メッセージスキーマがアクションに追加される場合に、アクティブ化メッセージ（この同期化メッセージを送るか受け取るのかいずれかであるアクションの）のＩｎｃｏｍｉｎｇ  Ｓｙｎｃ  Ｍｅｓｓａｇｅｓプロパティ及びＯｕｔｇｏｉｎｇ  Ｓｙｎｃ  Ｍｅｓｓａｇｅｓプロパティも更新される必要がある。同期化メッセージは、直接にバインドされたポートを介して受け取られ、送られる。
【実施例３０】
【０１５２】
＜タスクメッセージタイプに関する例示的なスキーマ＞
Ｈｗｓ＿Ｔａｓｋメッセージスキーマは、アクションの参加するターゲットに送られるメッセージに使用される例示的なスキーマである。アクションは、１つ又は複数のタイプのタスクメッセージを送ることができる。アクションは、所与のタスクメッセージタイプの１つ又は複数のインスタンスを送ることもできる。Ｈｗｓ＿Ｔａｓｋメッセージは、アクションに応答をサブミットするのにも使用することができる。
【０１５３】
Ｈｗｓ＿Ｔａｓｋメッセージは、ＨｗｓＭｅｓｓａｇｅノードの下に３つの子要素を有する。この子要素は、ＨｗｓＳｅｃｔｉｏｎ、ＡｃｔｉｏｎＳｅｃｔｉｏｎ、及びＰａｙｌｏａｄｓである。これらを以下に説明する。
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約されたｘｍｌ要素及びｘｍｌ属性の定義を保持する。このセクションで定義される要素又は属性を変更してはならない。表５に、ＨｗｓＳｅｃｔｉｏｎノードで定義される要素／属性の例示的なリストを示す。
【０１５４】
【表５−１】
2007515016.tif 000010
【０１５５】
【表５−２】
2007515016.tif 000011
【０１５６】
【表５−３】
2007515016.tif 000012
【０１５７】
ＡｃｔｉｏｎＳｅｃｔｉｏｎ：ＡｃｔｉｏｎＳｅｃｔｉｏｎは、アクション開発者によってカスタマイズ可能であり、参加するターゲットに引き渡されるシナリオ固有のパラメータ及び値を含めることができる。これは、ターゲットがその応答で供給できるパラメータを定義するのに使用することもできる。
【０１５８】
Ｐａｙｌｏａｄｓ：ｐａｙｌｏａｄｓノードは、アクションによって送られる他のメッセージに含める必要がある場合がある追加情報をアプリケーションが指定するためのプレースホルダである。
【０１５９】
○  Ａｎｎｏｔａｔｉｏｎｓ：タスクメッセージスキーマは、Ｈｗｓシステムによって使用される注釈を担持する。これらのプロパティは、スキーマルートノードレベルで定義される。
・  スキーマノードプロパティ：次のプロパティを、スキーマノードレベルで定義することができる。
・  Ｄｅｓｃｒｉｐｔｉｏｎ：このプロパティの値は、タスクメッセージスキーマを記述するのに使用される。
・  Ｔａｒｇｅｔ  ＸＰａｔｈ：このプロパティは、このタスクメッセージが送られる先のアクティブ化メッセージ内のターゲットノードのＸＰａｔｈを指定する。
【０１６０】
各タスクメッセージスキーマは、展開されるスキーマのセット内でそれを一意に識別するＴａｒｇｅｔＮａｍｅｓｐａｃｅを有しなければならない。
【実施例３１】
【０１６１】
＜終了メッセージタイプに関する例示的なスキーマ＞
Ｈｗｓ＿Ｆｉｎｉｓｈメッセージは、アクションによって内部的に使用され、アクションが実行を完了する時に送られる例示的な終了メッセージである。Ｈｗｓ＿Ｆｉｎｉｓｈメッセージは、ＨｗｓＭｅｓｓａｇｅノード内に１つの子要素だけを有する。この子要素は、ＨｗｓＳｅｃｔｉｏｎである。これを以下に説明する。
【０１６２】
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約されたｘｍｌ要素及びｘｍｌ属性の定義を保持する。このセクションで定義される要素又は属性を変更してはならない。表６に、ＨｗｓＳｅｃｔｉｏｎノードで定義される要素／属性の例示的なリストを示す。
【０１６３】
【表６】
2007515016.tif 000013
【０１６４】
○  Ａｎｎｏｔａｔｉｏｎｓ：アクティブ化応答メッセージスキーマは、Ｈｗｓシステムによって使用される注釈を担持する。これらのプロパティは、編集に使用可能ではない。
【０１６５】
このスキーマのＴａｒｇｅｔＮａｍｅｓｐａｃｅは、ＵＲＬ（例えば、http://[base]/Hws_Finish）を介して定義される。このスキーマは、アセンブリ（例えば、ＤＬＬ）にコンパイルすることができ、アクションテンプレートによって参照される。メッセージは、アクションで構成され、直接バインドされたポートを介して送られ／受け取られる。
【実施例３２】
【０１６６】
＜割込みメッセージタイプに関する例示的なスキーマ＞
Ｈｗｓ＿Ｉｎｔｅｒｒｕｐｔメッセージは、アクションの動作中のインスタンスに割り込むのに使用される例示的な割込みメッセージである。割込みメッセージは、個々のアクションインスタンスに、アクティビティフロー全体に、又はアクティビティモデルインスタンス全体に送ることができる。２種類の割込みすなわち、アボート及びロールバックがある。
【０１６７】
Ｈｗｓ＿Ｉｎｔｅｒｒｕｐｔメッセージは、ＨｗｓＭｅｓｓａｇｅノードの下に１つの子要素だけを有する。この子要素が、ＨｗｓＳｅｃｔｉｏｎである。これを以下に説明する。
ＨｗｓＳｅｃｔｉｏｎ：ＨｗｓＳｅｃｔｉｏｎは、Ｈｗｓシステムによる使用のために予約されたｘｍｌ要素及びｘｍｌ属性の定義を保持する。このセクションで定義される要素又は属性を変更してはならない。表７に、ＨｗｓＳｅｃｔｉｏｎノードで定義される要素／属性の例示的なリストを示す。
【０１６８】
【表７】
2007515016.tif 000014
【０１６９】
Ａｎｎｏｔａｔｉｏｎｓ：割込みメッセージスキーマは、メッセージの記述の注釈を有する。この注釈の値は、編集に使用可能ではない。
【０１７０】
このスキーマのＴａｒｇｅｔＮａｍｅｓｐａｃｅは、ＵＲＬ（例えば、http://[base]/Hws_Finish）を介して定義される。このスキーマは、アセンブリ（例えば、ＤＬＬ）にコンパイルすることができ、アクションテンプレートによって参照される。割込みメッセージのインスタンスは、ＡｃｔｉｏｎＩｎｔｅｒｒｕｐｔＰｏｒｔを介してテンプレートで受け取られる。アクティビティフローレベル又はアクティビティモデルインスタンスレベルの割込みメッセージは、そのアクティビティフロー又はアクティビティモデルインスタンス内で現在アクティブなアクションのそれぞれにサブミットされる。割込みタイプＡｂｏｒｔは、アクションによって行われた作業を補償せずに、割込みアクションを終了させる。Ｒｏｌｌｂａｃｋ割込みタイプは、アクションに、そのアクションによって既に完了された作業を補償させる。
【実施例３３】
【０１７１】
＜アーキテクチャの例示的な実施形態＞
図３９は、ワークフローシステムを実装する例示的なアーキテクチャを示すブロック図で、ワークフローサービス３９０２を含むシステム３９００のアーキテクチャの例示的な実施形態を示している。この例では、クライアントアプリケーション３９０４が、ワークフローサービス３９０２を活用して、アクタがワークフローを作成し、それに参加することを可能にする。ワークフローサービス３９０２は、クライアントアプリケーションに３つの主要なサービスすなわち、ワークフローコンポジション３９０８、ワークフロー制約３９０６、ならびにワークフロー追跡及び表示３９１０を提供することができる。
【０１７２】
ワークフローは、アクティビティフロー内でアクション３９１２をコンポーズすることによって作成することができる。アクション３９１２のコンポジションは、ワークフローサービス３９０２によって実施される制約３９１４によって支配される。制約３９１４は、ワークフローアドミニストレーション及び管理（例えば、ＭＭＣ）又はプログラマ的な形の管理ＡＰＩを介することを含む、複数の既知の方法で定義することができる。
【０１７３】
これらの制約３９１４の定義で、事実リトリーバによって公開される事実を活用することができる。事実リトリーバは、標準インターフェースを実装することができ、その結果、制約サービス３９０６が、これらの事実を照会し、ワークフローに適用することができる。事実リトリーバは、アクティブディレクトリ又はＳＱＬデータベースなどの基礎になるデータソース３９１６から事実を公開することができる。
【０１７４】
クライアントアプリケーション３９０４は、アクティビティフローに参加したい時に、ワークフローサービス３９０２に登録することができる。コンポジションサービス３９０８は、クライアント要求に一意ＩＤを関連付けることができ、このＩＤを使用して、アクティビティフローの一部としてアクタが実行するアクション３９１２を追跡することができる。
【０１７５】
追跡サービス３９１０を使用して、アクティビティフローの状態を追跡し、クライアントによって要求された時にアクティビティフローを再構成することができる。クライアントが、アクティビティフローにアクション３９１２をアタッチすることを試みる時に、制約サービス３９０６は、制約を検査（例えば、事実ストア３９１６又はフローの状態に基づいて）して、どのアクション３９１２をアクティビティフローにアタッチできるかを調べる。例えば、表示されるオプションを、制約の下で使用可能なものに制限することができる。ユーザが、制約されたセットからアクションを選択した後に、コンポジションサービス３９０８は、選択されたアクションを既に使用されているアクションとコンポーズすることができる。
【０１７６】
アクションに、追跡サービス３９１０によって消費される追跡イベントを発するように指示することができる。これらのイベントに、その後、クライアントによってアクセスして、最新のワークフローをアクタに提供することができる。
【実施例３４】
【０１７７】
＜ワークフローサービスにアクセスするユーザインターフェースの例示的実施形態＞
図４０は、ワークフローの状況を示し、次のアクションの選択を受け入れるユーザインターフェースの例示的な実施形態をスクリーンショットに示す図で、ワークフローサービスにアクセスするユーザインターフェース４０００の例示的な実施形態を示している。この例では、アクティビティフローのグラフィカル表示が、示されており、ユーザに、タスクをエスカレートするオプション（例えば、アクタを右クリックすることによる）が提示されている。
【実施例３５】
【０１７８】
＜アクション作成用のテンプレートの例示的な実施形態＞
図４１は、アクション作成用の例示的なテンプレート４１００を示す図である。この例では、テンプレート４１００が、ビジュアルプログラミング環境内で提示されているが、他の形で表すことができる。テンプレート４１００は、様々なシナリオを処理することができ、その結果、開発者は、特定のシナリオのロジックをドロップインするだけでよい。例えば、依存コンポジションを、テンプレートによってサポートすることができる。
【０１７９】
テンプレート４１００に、アクティブ化レシーバロジック４１１０を含めることができる。アクションは、ＨＴＴＰトランスポートにバインドされた１方向ポートを介してアクティブ化メッセージを受け取ることができる。次に、ＡｃｔｉｖａｔｅＲｅｓｐｏｎｓｅメッセージのインスタンスを作成することができる。応答メッセージを使用して、後にオーケストレーションで使用される相関セットを初期化する。アクションは、それ自体にメッセージを送る。ＡｃｔｉｏｎＤｉｒｅｃｔＢｏｕｎｄＯｕｔＰｏｒｔのＳｅｎｄＯｒＲｅｃｅｉｖｅＡｃｔｉｖａｔｅＲｅｓｐｏｎｓｅ動作を使用して、メッセージを送り出し、ＡｃｔｉｏｎＤｉｒｅｃｔＢｏｕｎｄＩｎＰｏｒｔを使用して、そのメッセージを受け取る。このテンプレートのセクション４１１０は、ＰａｒｅｎｔＡｃｔｉｏｎＩｎｓｔａｎｃｅＩＤ又はＡｃｔｉｖｉｔｙＭｏｄｅｌＩｎｓｔａｎｃｅＩＤの値が空の識別子（例えば、空のＧＵＩＤ）であるかどうかも検査することができる。そうである場合には、これらのプロパティの新しい識別子値を生成することができる。これらの値は、インスタンス化されるアクションが親アクションを有しない場合、又はアクションがアクティビティモデルの一部としてインスタンス化されていない場合に、空の識別子になる。多数のそのようなアクションインスタンスがある場合に、終了メッセージタイプ及び割込みメッセージタイプの同数の非一意サブスクリプションを作成することができるが、これは性能に悪影響を及ぼす可能性がある。
【０１８０】
そのような状況は、新しい識別子を生成することによって回避され、サブスクリプションがそのようなシナリオで満足されないと期待されるので安全である。サブスクリプションの一意性は、有効なサブスクリプションのメッセージのルーティング性能が劣化しないことを保証する。
【０１８１】
並列ステートメント４１２０は、２つの枝を有する。左の枝は、別のアクションへのアクションのコンポジション（例えば、４１３０）を可能にし、テンプレート内のカスタム開発の場所も提供する（例えば、４１４０）。右の枝は、割込みメッセージ及び終了メッセージをリスンするアクションを可能にする（例えば、４１５０）。
【０１８２】
判断形状４１３０（図４２として拡大）は、アクションが、別のアクションに従属するものとしてコンポーズする意図でアクティブ化されたかどうかを検査する。４２１０で、アクティブ化メッセージにＩｓＤｅｐｅｎｄｅｎｔＯｎＰａｒｅｎｔ昇格プロパティがあるかどうかを検査する。そうである場合には、このアクションは、４２３０で、親からの同期化メッセージ又は終了メッセージの受け取りを待つ。
【０１８３】
同期化メッセージ４２５０又は終了メッセージ４２４０の受取り形状は、親アクションのインスタンスｉｄに基づく相関セットを使用する。同期化メッセージの受け取り時に、実行は、ＳｃｏｐｅＡｌｌＡｃｔｉｏｎＳｐｅｃｉｆｉｃＬｏｇｉｃに進み、４２５５で、開発者によってドロップインされたロジックを実行することができる。
【０１８４】
その代わりに、終了メッセージの受け取りは、４２４５でのアクションの終了を引き起こす。その場合に、終了の前に、アクションは、直接にバインドされたポートを介してメッセージボックスに終了メッセージを送り出して、その完了を示す。
【０１８５】
同期化メッセージで使用される相関セットを拡張して、アクティブ化メッセージから昇格された追加のプロパティを含めることができる。追加の相関セットも、同期化メッセージ４２５０の受取り形状で使用することができる。
【０１８６】
同期化メッセージと並列の終了メッセージのリスンによって、依存アクションは、親アクションが同期メッセージを送らずに終了した場合にクリーンアップを行えるようになる。
【０１８７】
カスタムロジック（例えば、ビジネスロジック）を、カスタム開発の場所４１４０に組み込むことができる。場所４１４０の周囲で定義されるトランザクションスコープ及び補償ブロックがある。これによって、アクションが、ロールバック動作を要求する割込みメッセージを送られた場合、又は未知の例外がアクション内で送出される場合の補償を作成することができるようになる。
【０１８８】
４１５０で、複数のサブスクリプションに基づく割込みメッセージのインスタンスをリスンする。この４１５０では、それ自体からの終了メッセージもリスンする。アクションは、３レベルの粒度すなわち、アクションインスタンスレベル、アクティビティフローレベル、及びアクティビティモデルレベルで割込みメッセージについてサブスクライブする。割込みメッセージは、アクションの動作のアボート又はロールバックを要求することができる。割込みメッセージを受け取ることによって、Ａｂｏｒｔ又はＲｏｌｌｂａｃｋの例外が、アクション内で送出される。これらの例外は、テンプレート内（例えば、４１６０）で受け取られ、例外ハンドラが、４２４０で、ＳｃｏｐｅＡｌｌＡｃｔｉｏｎＳｐｅｃｉｆｉｃＬｏｇｉｃスコープに関する補償を呼び出す。
【０１８９】
リスンブロック４１５０の他のメッセージは、それ自体からの終了メッセージである。このメッセージは、アクション自体によって生成され、並列ステートメント４１２０の左側の枝の直接にバインドされたポートを介してメッセージボックスに送られる。このメッセージは、ＳｃｏｐｅＡｌｌＡｃｔｉｏｎＳｐｅｃｉｆｉｃＬｏｇｉｃスコープ（例えば、４２４０）が完了した直後に送られる。右側の枝でのこのメッセージの受け取りによって、リスン形状ＬｉｓｔｅｎＦｏｒＡｂｏｒｔＯｒＦｉｎｉｓｈが完了し、この枝が終了する。
【０１９０】
アクションのセクション４１６０は、Ａｂｏｒｔ例外、Ｒｏｌｌｂａｃｋ例外、及びＵｎｋｎｏｗｎ例外の例外ハンドラを有する。Ａｂｏｒｔ例外及びＲｏｌｌｂａｃｋ例外は、割込みメッセージの受け取り時に、アクション内で生成される。Ａｂｏｒｔ例外の例外ハンドラは、アクションが完了しつつあることを示す終了メッセージを作成し、送り、その後、終了状態に入る。Ｒｏｌｌｂａｃｋ例外の例外ハンドラは、終了メッセージを作成し、送る前に、補償ブロックＣｏｍｐｅｎｓａｔｅＦｏｒＡｌｌＡｃｔｉｏｎＳｐｅｃｉｆｉｃＬｏｇｉｃを呼び出す。その後、Ｒｏｌｌｂａｃｋ例外の例外ハンドラは、終了状態に入る。
【０１９１】
Ｕｎｋｎｏｗｎ例外の例外ハンドラも、終了メッセージを作成し、送り、終了する前に、補償ブロックＣｏｍｐｅｎｓａｔｅＦｏｒＡｌｌＡｃｔｉｏｎＳｐｅｃｉｆｉｃＬｏｇｉｃを呼び出す。
【０１９２】
各例外ハンドラは、直接にバインドされたポートを介してメッセージボックスに終了メッセージを送り出すことができる。このメッセージは、このアクションに依存してコンポーズされ、同期化メッセージを受け取っていない他の子アクションに、終了するように指示する。終了メッセージが、依存してコンポーズされた子アクションによって受け取られる（例えば、４１３０で）。
【０１９３】
４１７０で、親アクションからの終了メッセージをリスンする。メッセージが受け取られない場合に、タイムアウト（例えば５分後に）し、アクションが完了する。これは、アクションが、それにルーティングされたが消費されない親アクションからの終了メッセージを消費するようにするために行われる。この条件が生じるのは、親アクションが、同期化メッセージを送り、素早く連続して終了メッセージも送る場合である。同期化メッセージだけが、リスン形状内（例えば、４２３０）で依存子アクションによって消費される。終了メッセージは、子アクションに引き渡されるが、リスン形状が２つのメッセージのうちの最初のメッセージだけを受け入れるので、これは消費されない。子アクションが、このメッセージを消費せずに完了し、このパターンが、他のインスタンスについて継続する場合に、複数の孤児メッセージエントリが、メッセージボックスデータベース内で蓄積され、性能に悪影響を及ぼす可能性がある。リスン形状４１７０を有することによって、アクションが、既にルーティングされている場合にこの終了メッセージを消費せずに完了しなくなる。
【実施例３６】
【０１９４】
＜テクノロジの組合せ＞
本明細書で説明するすべての例からのテクノロジを、本明細書で説明する１つ又は複数の他の例の任意の組合せのテクノロジと組み合わせることができる。
【実施例３７】
【０１９５】
＜例示的なコンピュータシステム＞
本明細書に記載の例示的なシステムのどれであっても、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム及び他を含む様々なオペレーティングシステムのいずれかが動作するマイクロプロセッサベースのシステムを含む汎用プログラマブルコンピュータなどのコンピュータシステムで動作するソフトウェアによって実施することができる。そのようなコンピュータシステムは、ＲＡＭ、ＲＯＭ、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及び類似物などのコンピュータ可読媒体を含むか、これらと共に動作することができる。
【実施例３８】
【０１９６】
＜例示的なコンピュータ実行可能命令＞
本明細書で説明する例示的な方法のどれであっても、コンピュータ実行可能命令を含むソフトウェアによって実施することができ、このコンピュータ実行可能命令は、コンピュータ可読媒体にストアすることができる。
【０１９７】
＜代替案＞
本発明の原理を適用できる多数の可能な実施形態に鑑みて、例示的な実施形態が、本発明の例であり、本発明の技術的範囲に対する制限と解釈されてはならないことを理解されたい。そうではなく、本発明の技術的範囲に、請求項に含まれるものが含まれる。したがって、本発明人は、請求項の技術的範囲及び趣旨に含まれるすべてのものを本発明として請求する。
【図面の簡単な説明】
【０１９８】
【図１】自動化されたワークフローをサポートする例示的なシステムを示すブロック図である。
【図２】図１に示されたものなどの自動化されたシステムでワークフローを処理する例示的な方法をフローチャートに示す図である。
【図３】コンポーザブルアクションの例示的なパターンを示すブロック図である。
【図４】コンポーザブルアクションでメッセージを処理する例示的な方法をフローチャートに示す図である。
【図５】メッセージを介する例示的なアクション対アクション通信を示すブロック図である。
【図６】アクション対アクション通信を介して同期化を達成する例示的な方法をフローチャートに示す図である。
【図７】タスクの例示的な実施を示すブロック図である。
【図８】タスクを処理する例示的な方法をフローチャートに示す図である。
【図９】制約の例示的な実装を示すブロック図である。
【図１０】コンポーザブルアクションに関する制約を実装する例示的な方法をフローチャートに示す図である。
【図１１】知識ベースアダプタを介する高速収集を示すブロック図である。
【図１２】制約を適用する時に事実を使用する例示的な方法をフローチャートに示す図である。
【図１３】例示的なアクティビティモデルを示すブロック図である。
【図１４】コンポーザブルアクションを介してアクティビティモデルを実装する例示的な方法をフローチャートに示す図である。
【図１５】アドホックアクションコンポジションを介して構成された例示的なアクティビティフローを示すブロック図である。
【図１６】コンポーザブルアクションを介してアドホックアクティビティフローを作成する例示的な方法をフローチャートに示す図である。
【図１７】アクティビティモデルに基づいてアクティビティフローに追加される例示的なアドホックアクションを示すブロック図である。
【図１８】アクティビティモデルに基づいてアクティビティフローにアドホックアクティビティを追加する例示的な方法をフローチャートに示す図である。
【図１９】ユーザアイデンティティに基づく例示的な制約を示すブロック図である。
【図２０】アクタ制約に基づいてアクションオプション及びターゲットオプションを提示する例示的な方法をフローチャートに示す図である。
【図２１】推移アクションの例示的な制約を示すブロック図である。
【図２２】制約に鑑みてエンアクテッドオンアクタに基づいてオプションを提示する例示的な方法をフローチャートに示す図である。
【図２３】例示的な追跡配置を示すブロック図である。
【図２４】コンポーザブルアクションのアクティビティフローの状況を追跡する例示的な方法をフローチャートに示す図である。
【図２５】追跡に基づくワークフロー状況の例示的なグラフィカルプレゼンテーションをスクリーンショットに示す図である。
【図２６】アクティビティフロー状況をグラフィカルに提示する例示的な方法をフローチャートに示す図である。
【図２７】電子メールユーザインターフェース内でのパーベイシブワークフローユーザインターフェースの例示的実施形態をスクリーンショットに示す図である。
【図２８】タスクを受け入れるパーベイシブワークフローユーザインターフェースの例示的実施形態をスクリーンショットに示す図である。
【図２９】パーベイシブワークフローユーザインターフェースを提示し、これを介して選択を受け入れる例示的な方法をフローチャートに示す図である。
【図３０】ワードプロセッシングユーザインターフェース内でアイテムを承認するか拒絶するパーベイシブワークフローユーザインターフェースの例示的な実施形態をスクリーンショットに示す図である。
【図３１】アクションをアクティブ化するパラメータの指定の発見可能性に関する例示的な配置を示すブロック図である。
【図３２】アクションのアクティブ化パラメータ指定を発見する例示的な方法をフローチャートに示す図である。
【図３３】コンポーザブルアクションのパターンをサポートする例示的なテンプレートを示すブロック図である。
【図３４】ワークフローテクノロジの例示的な実行を示す図である。
【図３５】ワークフローテクノロジの例示的な実行を示す図である。
【図３６】ワークフローテクノロジの例示的な実行を示す図である。
【図３７】ワークフローテクノロジの例示的な実行を示す図である。
【図３８】ハイパーリンクを用いるタスクの例示的な通知を示す図である。
【図３９】ワークフローシステムを実装する例示的なアーキテクチャを示すブロック図である。
【図４０】ワークフローの状況を示し、次のアクションの選択を受け入れるユーザインターフェースの例示的な実施形態をスクリーンショットに示す図である。
【図４１】コンポーザブルアクションの例示的なテンプレートを示す図である。
【図４２】コンポーザブルアクションの例示的なテンプレートの一部を示す図である。
【図１】
2007515016.tif 000015
【図２】
2007515016.tif 000016
【図３】
2007515016.tif 000017
【図４】
2007515016.tif 000018
【図５】
2007515016.tif 000019
【図６】
2007515016.tif 000020
【図７】
2007515016.tif 000021
【図８】
2007515016.tif 000022
【図９】
2007515016.tif 000023
【図１０】
2007515016.tif 000024
【図１１】
2007515016.tif 000025
【図１２】
2007515016.tif 000026
【図１３】
2007515016.tif 000027
【図１４】
2007515016.tif 000028
【図１５】
2007515016.tif 000029
【図１６】
2007515016.tif 000030
【図１７】
2007515016.tif 000031
【図１８】
2007515016.tif 000032
【図１９】
2007515016.tif 000033
【図２０】
2007515016.tif 000034
【図２１】
2007515016.tif 000035
【図２２】
2007515016.tif 000036
【図２３】
2007515016.tif 000037
【図２４】
2007515016.tif 000038
【図２５】
2007515016.tif 000039
【図２６】
2007515016.tif 000040
【図２７】
2007515016.tif 000041
【図２８】
2007515016.tif 000042
【図２９】
2007515016.tif 000043
【図３０】
2007515016.tif 000044
【図３１】
2007515016.tif 000045
【図３２】
2007515016.tif 000046
【図３３】
2007515016.tif 000047
【図３４】
2007515016.tif 000048
【図３５】
2007515016.tif 000049
【図３６】
2007515016.tif 000050
【図３７】
2007515016.tif 000051
【図３８】
2007515016.tif 000052
【図３９】
2007515016.tif 000053
【図４０】
2007515016.tif 000054
【図４１】
2007515016.tif 000055
【図４２】
2007515016.tif 000056
【国際調査報告】
2007515016.tif 000057