(57)【特許請求の範囲】
【請求項１】
ワークフロー管理システム（１６）において実行するためのアプリケーションを開発する方法であって、前記ワークフロー管理システム（１６）はデータベース（２２）を含み、前記アプリケーションは前記データベース（２２）とのインタラクションを含むワークフロー（ＷＦ）を定義し、前記ワークフロー（ＷＦ）は、ワークフローの複数のフェーズ（Ｆ）、及び前記複数のフェーズ（Ｆ）の間の複数のトランジション（Ｔ）として表されることができる、方法であって、
アプリケーション開発インタフェース（３００）を提供するステップ（２５０）であって、前記アプリケーション開発インタフェース（３００）は少なくとも１人のアプリケーション開発者によって複数のデータエントリ（Ｔ１２，Ｔ２３，Ｔ２４，Ｔ４，Ｔ４５）が追加されるべきトランジションテーブル（ＴＴ）を含み、前記複数のデータエントリ（Ｔ１２，Ｔ２３，Ｔ２４，Ｔ４，Ｔ４５）は前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）の間の各々のトランジション（Ｔ）を定義し、前記アプリケーション開発インタフェース（３００）は、前記少なくとも１人のアプリケーション開発者が、各データエントリに対して、自動（Ａ）の動作パラメータ又は手動（Ｍ）の動作パラメータのうちの１つを選択することを可能にする、ステップと、
手動（Ｍ）の動作パラメータが、前記各々のトランジション（Ｔ）のうちの特定の１つに対して選択された場合、前記データベース（２２）にアクセスするために満たされるべき少なくとも１つの条件（４０５）を前記少なくとも１人のアプリケーション開発者が定義するためのインタフェース（４００）を提供するステップと、を含み、
前記アプリケーション開発インタフェース（３００）は、各動作パラメータ（Ａ；Ｍ）の前記選択及び各条件（４０５）に応答して、メタデータを自動的に定義し、且つ、前記メタデータを、前記各々のトランジション（Ｔ）のうちの対応する１つと関連付け、
前記方法は、ワークフロー実行の間、複数のコマンド（５０２）を自動的に呼び出して、前記ワークフロー（ＷＦ）の実行に係る現在のフェーズに応じて、前記メタデータに従って前記複数の動作パラメータ（Ａ；Ｍ）を有効にするように前記アプリケーションを構成するステップを更に含む、
ことを特徴とする方法。
【請求項２】
前記データベースはマルチテナントデータベース（２２）であり、
前記ワークフロー（ＷＦ）は、実行の間、複数のテナントと前記マルチテナントデータベース（２２）との間のインタラクションを可能にするためのものである、
請求項１記載の方法。
【請求項３】
前記アプリケーション開発インタフェース（３００）はユーザインタフェース（３０１ｃ）を備え、
前記方法は、前記アプリケーション又は前記ワークフロー管理システム（１６）のうちの少なくとも１つを構成して、第１のトリガプロシージャ（ＴＲ１）を用いて、前記トランジションテーブル（ＴＴ）を確認して、トランジションが許可されるかを判断するステップを更に備える
請求項１記載の方法。
【請求項４】
前記アプリケーション開発インタフェース（３００）は、前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）のうちの１つの編集（３３１）、前記ワークフロー（ＷＦ）の新たなフェーズの定義（３４０）、又は前記ワークフロー（ＷＦ）の前記複数のフェーズのうちの１つの削除（３３１）のうちの少なくとも１つを可能にするためのユーザインタフェース（３０１ｄ）を更に備える、
請求項１記載の方法。
【請求項５】
前記ワークフロー（ＷＦ）の現在のフェーズを定義する情報の自動的な識別と表示を提供する前記アプリケーション開発インタフェース（３００）を構成するステップ（９００）を更に含む、
請求項１記載の方法。
【請求項６】
前記ワークフロー管理システム（１６）はサードパーティによって分配され、
前記方法は、前記サードパーティのソフトウェア又は前記サードパーティのソフトウェアによって動作されるべきオブジェクトのうちの少なくとも１つをカスタマイズして、当該少なくとも１つをワークフローの前記複数のフェーズのうちの少なくとも１つのオペランドとして表すように構成するための、構成ソフトウェアを提供するステップを含む、
請求項１記載の方法。
【請求項７】
前記アプリケーション開発インタフェース（３００）を提供するステップは、前記複数のフェーズの間の可能性のある複数のトランジションのマトリクス（ＴＳ）を提供するステップであって、各可能性のあるトランジションは、前記自動（Ａ）の動作パラメータ又は手動（Ｍ）の動作パラメータのうちの１つを選択するように、前記少なくとも１人のアプリケーション開発者によって選択可能である、ステップを含む、
請求項１記載の方法。
【請求項８】
視覚化を提供するステップは、前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）の間の可能性のある複数のトランジション（Ｔ）を、前記マトリクス（ＴＳ）に自動的に追加するステップを含む、
請求項７記載の方法。
【請求項９】
構成インタフェースを含むアプリケーション開発インタフェース（３００）を提供するステップは、
エンドユーザコマンド（５０２）のラベルの構成、
エンドユーザコマンドを表示することに先行する条件の定義（４０５）、
少なくとも１つのフィールドの更新（４０６）、及び
前記各々のトランジションのうちの１つの更新（４０７）、
のうちの少なくとも１つを選択的に実行するためのコマンドを前記少なくとも１人のアプリケーション開発者に提供するステップを含む、請求項１記載の方法。
【請求項１０】
第１の視覚化メカニズム（５０２）を介して前記コマンドの表示を引き起こすように前記メタデータを構成するステップであって、前記第１の視覚化メカニズム（５０２）は、１つ又は複数のワークフロー非依存型のコマンドを表示するために用いられる第２の視覚化メカニズム（５０４）とは異なる、ステップを更に含む、
請求項９記載の方法。
【請求項１１】
前記ワークフローは顧客関係管理ワークフロー（ＣＲＭ）を表し、
前記方法は、記録タイプフィールドを追加するための、前記ワークフロー管理システム（１６）の要求管理オブジェクト（３００）の選択的な修正を可能にする（２０６）、ユーザインタフェース（６００）を提供するステップを更に含む、
請求項１記載の方法。
【請求項１２】
ワークフロー管理システムにおいて実行するためのアプリケーションの生成を支援する装置であって、前記ワークフロー管理システム（１６）はデータベース（２２）を含み、前記アプリケーションは前記データベース（２２）とのインタラクションを含むワークフロー（ＷＦ）を定義し、前記ワークフロー（ＷＦ）は、少なくとも一部において、複数のフェーズ（Ｆ）及び複数のフェーズ（Ｆ）の間の複数のトランジション（Ｔ）として表されることができる、装置であって、
少なくとも１人のアプリケーション開発者によって複数のデータエントリ（Ｔ１２，Ｔ２３，Ｔ２４，Ｔ４，Ｔ４５）が追加されるべきトランジションテーブル（ＴＴ）を含むアプリケーション開発インタフェース（３００）を提供する手段であって、前記複数のデータエントリ（Ｔ１２，Ｔ２３，Ｔ２４，Ｔ４，Ｔ４５）は前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）の間の各々のトランジション（Ｔ）を定義し、前記アプリケーション開発インタフェース（３００）は、前記少なくとも１人のアプリケーション開発者が、各データエントリに対して、自動（Ａ）の動作パラメータ又は手動（Ｍ）の動作パラメータのうちの１つを選択することを可能にする、手段と、
手動（Ｍ）の動作パラメータが、前記各々のトランジション（Ｔ）のうちの特定の１つに対して選択された場合、前記データベースにアクセスするために満たされるべき少なくとも１つの条件（４０５）を定義するためのインタフェース（４００）を、前記少なくとも１人のアプリケーション開発者に提供する手段と、を備え、
前記アプリケーション開発インタフェース（３００）は、各動作パラメータ（Ａ；Ｍ）の前記選択及び各条件（４０２）に応答して、メタデータを自動的に定義するためのものであり、また前記メタデータを、前記各々のトランジション（Ｔ）のうちの対応する１つと関連付けるためのものであり、
前記装置は、ワークフロー実行の間、複数のコマンド（５０２）を自動的に呼び出して、前記ワークフロー（ＷＦ）の実行の現在のフェーズに応じて、前記メタデータに従って前記複数の動作パラメータを有効にするための、前記アプリケーションを構成する手段を更に備える、
装置。
【請求項１３】
前記データベースはマルチテナントデータベース（２２）であり、
前記ワークフロー（ＷＦ）は、実行の間、複数のテナントと前記マルチテナントデータベース（２２）との間のインタラクションを可能にするためのものである、
請求項１２記載の装置。
【請求項１４】
第１のトリガプロシージャ（ＴＲ１）を用いて、前記トランジションテーブル（ＴＴ）を確認して、トランジションが許可されるかを判断するように更に構成された、
請求項１２記載の装置。
【請求項１５】
前記アプリケーション開発インタフェースは、前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）のうちの１つの編集（３３１）、前記ワークフロー（ＷＦ）の新たなフェーズの定義（３４０）、又は前記ワークフロー（ＷＦ）の前記複数のフェーズのうちの１つの削除（３３１）のうちの少なくとも１つを可能にするように構成されたユーザインタフェース（３０１ｄ）を更に備える、
請求項１２記載の装置。
【請求項１６】
前記トランジションテーブルは、前記複数のフェーズ（Ｆ）の間の可能性のある複数のトランジション（Ｔ）のマトリクス（ＴＳ）を含み、各可能性のあるトランジション（Ｔ）は、前記自動（Ａ）の動作パラメータ又は手動（Ｍ）の動作パラメータのうちの１つを選択するように、前記少なくとも１人のアプリケーション開発者によって、選択可能である、
請求項１２記載の装置。
【請求項１７】
前記ワークフロー（ＷＦ）の前記複数のフェーズ（Ｆ）の間の可能性のある複数のトランジション（Ｔ）を前記マトリクス（ＴＳ）に自動的に追加することによって、視覚化を提供するように構成される、ことを特徴とする、
請求項１６記載の装置。
【請求項１８】
前記ワークフローは顧客関係管理ワークフロー（ＣＲＭ）を表し、
前記装置は、記録タイプフィールドを追加するための、前記ワークフロー管理システム（１６）の要求管理オブジェクトの選択的な修正を提供する（２０６）、
ように更に構成されることを特徴とする、
請求項１２記載の装置。
【請求項１９】
少なくともコンピュータのメモリ内に直接的に読み込み可能であるコンピュータプログラムプロダクトであって、
コンピュータ上で実行するとき、請求項１〜１１のうちの１つ又は複数の請求項のステップを実行するソフトウェアコード部分を備える、
コンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ワークフロー管理システムのためのアプリケーションを開発するための技術に関する。本ワークフロー管理システムはデータベースを含む。アプリケーションは、データベースとのインタラクションを含むワークフローを定義する。ワークフローは、ワークフローの複数のフェーズ、及び複数のフェーズの間の複数のトランジションとして表されることができる。
【背景技術】
【０００２】
多くの場合、技術者、典型的にはプログラマは、業務オペレーションのアンサンブルを開発及び管理することが必要である。これらの業務オペレーションは、ワークフロー管理システムにおけるコンピュータ及びコンピュータシステム等の処理手段の助けを借りて、開発及び管理可能である。
【０００３】
例えば、顧客関係管理（ＣＲＭ）の分野において、ビジネスプロセス及びそれらの基礎を成すロジックの自動化及び管理を補助するためのソフトウェアベースのシステムの採用は、よく知られている。そのようなシステムは、種々の企業機能（例えば、セールス、マーケティング、顧客サービス、及び技術サポート）の従業員の間のコミュニケーションを提供し、また、関連する販売、マーケティング、又はサポート処理を表すワークフローにおいて詳述するように、タスクを同期するためのメカニズムを提供する。そのようなシステムはまた、ペーパーレスデータエントリを促進し、ヒューマンエラーのリスクの低減を助け、またその他一般に業績を改善する。
【０００４】
通常の実施において、所望のワークフローは、マルチテナントデータベースに格納されたデータに基づいて動作するアプリケーションによって強制される。アプリケーションは通常、多くの場合ワークフロー管理システムによって提供されるプログラミングフレームワークを用いて、オブジェクト指向環境において設計される。プログラミングフレームワークは、ワークフロー管理システムに特有の高いレベルの構成ツールを用いた、アプリケーションの設計及び構成を可能にする。任意に、アプリケーションは、種々の組織又は企業からのユーザ、及び／又は種々の地理的位置において業務を行うユーザによって、各々１つ又は複数のサーバ、ワークステーション、又はモバイル機器を介して、使用可能であり且つこれらのユーザとインタラクトするように、設計される。ワークフロー管理システムの一例は、よく知られている「Ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ」環境である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アプリケーションの設計は通常、全体としてワークフローによって要求されるオペレーション及びデータ変換の所望のシーケンスを記述する処理マップはもちろん、分析フェーズの間に記載された設計ドキュメントに基づいている。アプリケーション開発者（例えばプログラマ）は、この情報を解釈して、実行されるべきタスクを予測して、そして上述の高いレベルの構成ツールを用いてワークフロー管理システムに特有の高いレベルの構成ツールの能力及び限界の範囲内で、適切なワークフローを定義する；必要な場合、アプリケーション開発者はまた、構成ツールにおける欠点の克服の補助を試みるカスタムオブジェクトを開発することができる。
【０００６】
しかし所望のワークフローの実施は通常、（ワークフロー管理システムの）高いレベルの構成ツールによって提供される設計ドキュメントと能力の解釈と、プログラマのスキルとに大きく依存している。従って、望まれるビジネスロジックを適切に与えるように、プログラマは注意しなければならない。例えば、アプリケーション開発者は通常、望まれるビジネスロジックに適合しない状態に入り込むことを避ける方法で、システムを設計する必要がある。更に、ビジネスプロセスの現在のロジック状態に応じて、特定の処理又は動作コンテキストに関連するオンスクリーンの情報を提供することが通常望まれる。例えば通常、ワークフロー内の所与のコンテキストに適切な、命令、チェックボックス、ドロップダウンメニュー、及び他のコマンド、又はサポート機能を表示することが望まれる。
【０００７】
要求されるコンテキスト上のサポートでは、通常、プログラマが、所望のワークフローの各ステップのために、エンドユーザが入手可能な各コマンド又はオプション（例えば、アクティブボタン）を、手動でコードする必要があるため、これらの制約内のアプリケーションの開発及び維持は両方とも、高価であり且つ時間がかかり得る。このプロセスは特に、処理ステージ間の数百の可能性のある複数のトランジション又は他の複雑なフロー構造を含むワークフローアプリケーションのために、骨の折れることである。
【課題を解決するための手段】
【０００８】
上述のコンテキストにおいて、例えば許されないトランジションをトリガする誤りを回避し、またプロセスビジネスロジックに従って特定のロジック状態に関連するユーザ画面と動作可能なボタンのコーディングを簡単にする等の、負担が比較的少ないそのような環境においてアプリケーションの開発及び維持を行う必要性と、前述の状況において開発者のタスクを簡単にする必要性とが組み合わさる。
【０００９】
これにより、特に、処理の各ステップに対して、コマンド及びユーザに利用可能にされる関連する動作のコーディングは構成タスクに移行可能であり、また上述の欠点が克服される。
【００１０】
１つ又は複数の実施形態は、上述の必要性を満たすことを目的とする。
【００１１】
種々の実施形態において、以下の請求項に特に記載の特徴を有するワークフロー管理システムにおいて実行するためのアプリケーションを開発する方法によって、そのような目的は達成される。
【００１２】
種々の実施形態はまた、ワークフロー管理システムにおいて実行するためのアプリケーションの生成を支援する装置、並びにコンピュータプログラムプロダクトに関する。ここで、当該コンピュータプログラムプロダクトは、少なくとも１つのコンピュータのメモリに読み込み可能であり、また少なくとも１つのコンピュータ上で本プロダクトが実行されるときに本方法のステップを実施するためのソフトウェアコード部分を含む。本明細書において、コンピュータプログラムプロダクトへの言及は、複数の実施形態に係る方法の実施を調整するように処理システムを制御するための命令を含むコンピュータ読み取り可能な媒体への言及に等価であることが意図される。「少なくとも１つのコンピュータ」への言及は明らかに、現在の複数の実施形態がモジュール形式及び／又は分散形式で実施され得るという可能性を強調することが意図される。
【００１３】
特許請求の範囲は、複数の実施形態に関連して本明細書において提供される技術的な教示の肝要な部分を形成する。
【図面の簡単な説明】
【００１４】
添付の図面は、本明細書において説明される原理の種々の実施形態を示し、明細書の一部である。示される複数の実施形態は単に例であり、特許請求の範囲を限定しない。
【図１Ａ】仮想のワークフローの例示的な実施例を示すフローチャートを示す。
【図１Ｂ】図１Ａのワークフローを表す状態図である。
【図２】例示的なマルチテナントデータベース環境の図である。
【図３Ａ】ワークフローを設計する方法の一実施形態を示す。
【図３Ｂ】ワークフローを設計する方法の別の実施形態を示す。
【図４】例示的な実施形態に係る、フェーズ及びトランジション特有の定義をサポートするオブジェクト構造を生成する方法のフロー図である。
【図５】例示的な実施形態に係るケースオブジェクトを定義するために使用されるユーザインタフェースを示す。
【図６】ケースオブジェクト構造を示す。
【図７】例示的な実施形態に係るケース管理オブジェクトを構成するために、特にケース管理オブジェクトのためのフェーズフィールドＣＦを定義するために使用されるユーザインタフェースを示す。
【図８】例示的な実施形態に係る図７のケース管理オブジェクトが利用可能なフェーズを定義するために使用されるユーザインタフェースを示す。
【図９】フェーズ説明（右の列）及び対応するフェーズコード（左の列）のテーブルを表す。
【図１０】例示的な実施形態に係るフェーズトランジションを定義するために用いられるユーザインタフェースを示す。
【図１１】図１０のユーザインタフェースを示す。しかしこの場合において、いくつかの許可されたフェーズトランジションを定義する動作タイプによって追加される方法におけるユーザインタフェースを示す。
【図１２】図１０及び１１のユーザインタフェースに関連して用いられるポップアップダイアログを示す。
【図１３】例示的な実施形態に係るフェーズ定義を編集するために用いられるユーザインタフェースを示す。
【図１４】フェーズ定義と関連付けられたユーザインタフェースを示す。このインタフェースは図１３の「新しいフェーズ」ボタン３４０の選択に応答して呼び出される。
【図１５】例示的な実施形態に係る、ケース詳細を提供するオブジェクトのレイアウトを示す。
【図１６】トランジションテーブルを示す。
【図１７】例示的な実施形態に係る第１のトリガのオペレーションの方法のフロー図である。
【図１８】例示的な実施形態に係る第２のトリガのオペレーションの方法のフロー図である。
【図１９】例示的な実施形態に係る、試みられたトランジションを認証する方法のフロー図である。
【発明を実施するための形態】
【００１５】
工業上の発明の名称：「ワークフロー管理システムにおいて実行するためのアプリケーションを開発する方法、及びワークフロー管理システムにおいて実行するためのアプリケーションの生成を支援する装置」
出願人：Ａｓｓｅｔ  Ｓ．ｒ．ｌ．，  ｏｆ  Ｉｔａｌｉａｎ  ｎａｔｉｏｎａｌｉｔｙ，  Ｖｉａ  Ｓｕａｒｄｉ  ２４  ２４１２４  ＢＥＲＧＡＭＯ  （Ｐｒｏｖｉｎｃｅ  ｏｆ  ＢＥＲＧＡＭＯ）
指定された発明者：Ｌｏｒｅｎｚｏ  ＣＯＳＬＯＶＩ，  Ａｌｅｓｓａｎｄｒｏ  ＰＬＥＢＡＮＩ
提出日：２０１４年６月２０日
【００１６】
本開示は、ワークフロー管理システムにおいて実行するためのアプリケーションを開発する方法、装置、ソフトウェア、及びシステムを提供する。一実施形態において、これらの技術は、アプリケーション開発インタフェースを提供するステップを含む。ここで、アプリケーション開発インタフェースは、アプリケーション開発者による処理フェーズの定義を可能にする。本アプリケーション開発インタフェースはまた、定義された複数のフェーズの間の許可された複数のトランジションをアプリケーション開発者が定義するためのトランジションテーブルを、アプリケーション開発者に提示する。
【００１７】
アプリケーション開発インタフェースは、自動の動作パラメータ又は手動の動作パラメータを用いて各トランジションを記述するように、実装可能である；手動の動作パラメータが選択された場合、ユーザインタフェースは、データベースにエンドユーザがアクセスするために満たされるべき１つ又は複数の条件をアプリケーション開発者が定義するためのメカニズムと、エンドユーザが利用可能なリンク、コマンド、及び他のオプションをアプリケーション開発者が定義するためのメカニズムとを提供する。アプリケーション開発インタフェースは、これらの定義に基づいてメタデータを生成し、次いでこのメタデータを、所望のワークフローと関連付ける。メタデータはワークフロー実行の間に呼び出されて、任意の所望の条件及び従って所望のコンテキストに束縛される方法で、複数のトランジション及びデータベースとのエンドユーザインタラクションを拘束する。
【００１８】
明らかであるように、開示される技術は、所望のワークフローの開発、維持、及び修正を簡単にする。すなわち、例えば、開示される技術は、（例えば上述のメタデータを用いて）複数の状態及び複数のトランジションを表して、検討されたワークフローの各ステップに対してコンテキスト特有の条件を強制するための設計メカニズムを提供する。後述の特定の実施のために、アプリケーション開発インタフェースは、コマンド、ボタン、メニュー、及び他のワークフロー情報を特定のフェーズ及び／又はトランジションと明確に関連付けて、処理がどのように実施されるかをアプリケーション開発者が理解でき、且つ特定のワークフローステップが、必要とされる特徴と、又は反対に必要以上の又は不適切な特徴と関連付けられたかをアプリケーション開発者が理解できる、相対的に直接的なメカニズムを提供する。
【００１９】
後述の特定の複数の実施形態において、ワークフロー設計は、顧客関係管理（ＣＲＭ）の分野のコンテキストにおいて例示されることに留意されたい；しかし本明細書において説明される技術は、他の分野においても適用可能であることが理解される必要がある。
【００２０】
また、所望のワークフローのオペレーションを定義する「アプリケーション」について種々の言及がされる。そのようなアプリケーションは、（処理を実行するに十分なコードを意味する）ソフトウェアアプリケーションであることが可能であり、また、特定のワークフローを実装するためのワークフロー非依存型のソフトウェア（例えば、一般的なワークフロー管理システム）によって使用される構成情報であることが可能である。例えば、全ての実施形態に必須ではないが、後述の一実施形態において、そのような構成情報はメタデータを含むことができる。従って、一般的なワークフロー管理システムは、共通のデータベースに対して適用される複数のワークフローをサポートすることができ、各ワークフローは、それ自体のメタデータのセットによって定義される。メタデータの各セットは、各々のワークフローを実装する方法で、一般的なワークフロー管理システムによる実行を効果的にカスタマイズする。
【００２１】
図１Ａは、所望のオペレーションが３列にわたって分配された、仮想のワークフローを示すために用いられる例示的な処理マップ１００を示す。特定のワークフローのためにアプローチされる可能性のある設計処理の理解のために、このワークフローがまず提示される。このワークフローは通常、ひとたび生成されると、図２に関連して後述されるように、ハードウェア及びソフトウェアを有するワークフロー管理システム上で実施される。
【００２２】
上述の３つの列はそれぞれ、ＣＲＭソフトウェア１１６、ドキュメントサービス１１７、及び請求サービス１１８によって実行されるオペレーションを表わす。
【００２３】
符号１０１は処理の開始を示し、一方で符号１０２はドキュメントを識別する目的のためのユーザデータの手動でのエントリを示す。符号１０２によって参照されるステップは、ユーザの介在を必要とし、従って図１Ａにおいて、小さな円で囲まれた「Ｍ」から成る記号を伴う方法で表示される。図示される例において、符号１０３はデータエントリを確認するステップを示し、このステップはまたユーザの介在を必要とすることが示される。
【００２４】
図示の例において、ドキュメント選択のユーザ確認に続いて、選択されたドキュメントは印刷される。この趣旨で、ユーザ確認（１０３）は、ドキュメントサービス１１７を効果的に呼び出すオープン統合ステップ１０４をトリガする。この統合は以下のことを可能にする：（ａ）ドキュメントを抽出すること（１０５）、（ｂ）ドキュメントを印刷すること（１０６）、及び（ｃ）印刷オペレーションの結果をＣＲＭソフトウェア１１６に返すこと（１０７）。この結果は、ステップ１０８において、ＣＲＭソフトウェア１１６によって受信される；ステップ１０９において印刷オペレーションが成功したと判断された場合、もう１つのオープン統合ステップ１１２は次いで実行されて、クライアントがこの場合適切に変更された状態で請求サービス１１８を起動する（ステップＳ１１３）。請求イベントに続いて、制御は次いで処理終了オペレーション１１４にパスされる。印刷オペレーションが成功しなかった場合、ＣＲＭソフトウェアは、ステップ１１０において、結果が修正可能であるかを判断する。結果が修正可能でない場合、制御は処理終了オペレーション１１４にパスされる。しかし、修正が可能な場合、ステップ１１１が次に実行されて、ユーザによる手動での修正を許す；制御は次いで、印刷オペレーション１０５〜１０７を再び試みるために、オープン統合ステップ１０４にパスされて戻される。
【００２５】
提示された仮想のワークフローを要約すると、図１Ａのマップ１００は、符号１０１〜１１４によって表される複数の状態要素と判断要素を示す。設計処理の間、アプリケーション開発者はこれらの要素を分析して、設計選択を行いそれらをフェーズＦ１〜Ｆ５としてグループ化する。図１Ａに示す例において、アプリケーション開発者は、要素１０１〜１１４を５つのフェーズＦ１〜Ｆ５に編成することが仮定されるべきである。トランジションデスクリプタＴ１２，Ｔ２３，Ｔ２４，Ｔ４２，及びＴ４５は、これらのフェーズの間の、望まれる又は許可された複数のトランジションを定義する。例えば、トランジションＴ１２は、フェーズＦ１とＦ２の間（すなわち、ステップ１０３からステップ１０４へ）のトランジションを識別する。図１Ａの例はワークフローの一例を単に提供する、ということに留意されたい。すなわち、ワークフローはＣＲＭ以外の分野に適用可能であり、より多い数の、又はより少ない数の状態、判断、フェーズ、トランジション、サービス、又は関連する処理から構成されることが可能である。
【００２６】
また、複数のフェーズは実際には、これらの状態の間のトランジションを表すトランジション符号「Ｔ」を用いて、状態機械の有限の又は論理的な状態と同一視可能であることに留意されたい。図１Ｂは、この関係を示す状態図を示す。各フェーズは、単一の論理的状態又は複数の論理的状態からなるグループと一致することが可能であり、また各フェーズは、所与のフェーズから後続の（論理的に許される）フェーズへのトランジションが、動作に応答して排他的に起こることによって特徴付けられる。（図１Ｂにおいて文字「Ｍ」を有するトランジションによって表されるように）手動の動作は通常、人間の動作であり、その一方で（図１Ｂにおいて文字「Ａ」を有するトランジションによって表されるように）自動の動作は通常、処理の実行の間、特定のイベント、条件、又は基準に応じて、ソフトウェアアプリケーションによって自動的に呼び出される。
【００２７】
図２は、ワークフロー管理が使用される可能性があるマルチテナントオンデマンドデータベース環境１０の例示的なアーキテクチャを示す。図２に示すように、複数のエンドユーザシステム１２は、ローカル又はワイドエリアネットワーク１４を介して、ワークフロー管理システム１６に接続される。ワークフロー管理システム１６は、１つ又は複数のプロセッサ（図２においては別々に示されていない）と、アプリケーションプラットフォーム１８と、ネットワークインタフェース２０と、テナントデータストレージ２２と、システムデータストレージ２４と、プログラムコード２６と、メモリ２８と、を含む。ワークフロー管理システム１６は、相互に排他的な方式又は共有される方式で、協働してタスクを実行する１つ又は複数の機械として、例えば１つ又は複数のサーバ、パーソナルコンピュータ、携帯型機器、又は他の処理手段として、実装可能である。図示される実施形態において、所望のワークフローは、プログラムコード２６（例えば、アプリケーション及び／又は関連のあるメタデータ）に従って定義される。そのようなプログラムコード及び／又はメタデータは、ワークフロー設計ソフトウェア４３の助けを借りて、１つ又は複数のマシン４２上で業務を行うアプリケーション開発者によって一部において設計される。ワークフロー設計ソフトウェア４３は、実行時に（複数の）マシン４２のオペレーションを指示する方法で構造化された、複数の命令を備える；これらの命令は、非一時的機械読み込み可能媒体上に格納されるものとして図示される。ワークフロー定義ソフトウェア４３は、上述のように、（複数の）マシン４２に、アプリケーション開発インタフェースをアプリケーション開発者に提示させて、フェーズ、トランジション、動作タイプ、コマンド、及び関連付けられた条件、並びに関連付けられたメタデータをアプリケーション開発者が定義することを可能にさせる。なお、（複数の）マシン４２及びワークフロー設計ソフトウェア４３は（図２においては別々に図示されるが）任意に、ワークフロー管理システム１６又は任意のエンドユーザシステム１２の統合的な一部である；すなわち、実施形態に応じて、エンドユーザはまた、アプリケーション開発者、及び／又はテナントであることが可能であり、設計及びワークフロー実行は、エンドユーザシステム１２、ワークフロー管理システム１６、又は（複数の）マシン４２の任意の置換又は組み合わせを用いて実行可能である。
【００２８】
関連のある定義及びメタデータがひとたび所有されると、ワークフロー管理システム１６は次いで、ワークフロー管理システムの実行時の間、メタデータによってインスタンス化された規則を強制する（すなわち、これによって、エンドユーザがテナントデータストレージシステム２２とインタラクトする方法を拘束する）。
【００２９】
各エンドユーザシステム１２は、所望のワークフローのエンドユーザがデータベースにアクセスすることを可能にする任意のマシン又はシステムであることができる。例えば、エンドユーザシステム１２のうちのどれもが、ハンドヘルドのコンピュータ装置、携帯電話、ラップトップコンピュータ、ワークステーション、及び／又はコンピュータ装置のネットワークであることができる。上述のように、エンドユーザシステム１２の一部又は全ては（複数の）マシン４２と組み合わせられることができ、すなわち、一実施形態においてエンドユーザが本明細書における教示に従ってエンドユーザ自身のワークフローを設計及びカスタマイズすることができるように（複数の）マシン４２と組み合わせられることができる。「エンドユーザ」は、仲介業者、サービス会社、及びそのデータベースに格納されるデータとインタラクトする任意の他のエンティティはもちろん個人を含む、マルチテナントデータベース環境においてデータを操作するいかなる者をも含むことができる；例えば、エンドユーザは、対応するエンドユーザシステム１２を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者又はソフトウェアプロバイダを含むことができる。同一のアクセス及び許可及び機能を用いて同一のデータを操作する１人又は複数人のエンドユーザからなる各グループは一般に「テナント」と呼ばれ、すなわち、テナントが個々のエンドユーザ又はエンドユーザのグループ（販売会社の従業員等）である可能性があることができるように、「テナント」と呼ばれる。最後に、本明細書において用いられる「アプリケーション開発者」は通常、アプリケーションを設計又はカスタマイズして（関連のあるデータアクセスを含む）特定のワークフローを提供する者である；これらの用語は必ずしも相互に排他的である必要がない点に再び留意されたい。例えば、複数のエンドユーザが自身の各々のワークフローを任意に設計する実施形態において、各エンドユーザは、テナントであることができることはもちろん、アプリケーション開発者であることもできる。他の複数の実施例は明確に可能である。
【００３０】
図２に示すように、各エンドユーザシステム１２は、ネットワーク１４を介して、ワークフロー管理システム１６とインタラクトし得る。ワークフロー管理システム１６は、１つ又は複数のオンデマンドデータベースサービス、１つ又は複数のアプリケーション、及び任意のサポートソフトウェアを提供する。以下の説明において、実施例は単一のワークフローアプリケーションを前提とするが、単一のマシン又は複数のマシンの集合上で動作する複数のそのようなアプリケーションであることが可能であることが理解されるべきである。特定のワークフローに対するテナントは、ワークフロー管理システム１６又はデータベースシステムの構築及び／又は維持に必ずしも関与する必要はなく、ワークフロー管理システム１６又はデータベースシステムは、むしろ一実施形態においては、（複数の）マシン４２を使用する１人又は複数人のアプリケーション開発者によって設計及び維持される。データベースは、データベースシステムに対してアクセスを要求するエンドユーザによって「オンデマンド」で利用可能である。アプリケーションに応じて、オンデマンドデータベースサービスは、１つ又は複数のテナントからの情報を、共通のデータベースイメージの複数のテーブルに格納することができ、それによってマルチテナントデータベースシステム（ＭＴＳ）を形成することができる。データベースイメージは、個々のデータベース又はそれらの構成オブジェクトに対して情報の格納と検索を実行するために使用されるリレーショナルデータベース管理システム（ＲＤＭＳ）又はその等価物を有する、１つ又は複数のデータベースを含むことができる。
【００３１】
アプリケーションプラットフォーム１８はフレームワークを提供し、ここでこのフレームワークは、ワークフロー管理システム１６の各アプリケーションが動作することを可能にし、またそのような各アプリケーションの任意的な生成及び維持を可能にする。アプリケーションプラットフォーム１８はまた、サードパーティソフトウェアアプリケーション（当該アプリケーションは、ワークフロー管理システム１６又は関心の特定のワークフローアプリケーションの構成要素を含む場合があり、又は含まない場合がある）をホストする。実行時、各アプリケーションは、ワークフロー管理システム１６の処理空間において１つ又は複数の仮想マシンとしてインスタンス化可能であり、種々のデータベースオブジェクトの、関連する生成、削除、及び操作を可能にする。
【００３２】
異なる複数のテナントは、テナントのセキュリティ又は許可レベルに応じて、また設計されるべき特定のワークフローに応じて、アプリケーション及びデータベース情報へのアクセス又はこれらの修正に関する異なる能力を有することができる。これらの能力及び関連するセキュリティ対策に対するサポートは通常、マシン４２を使用するアプリケーション開発者によって、所望のワークフロー内において設計されるが、個々のアクセス許可の仕様はワークフロー管理システムのプロバイダ又は管理者に留保可能である。一例として、第１のテナントにデータエントリ能力を与え、第２のテナントに対してはこれらの能力を認めない（そして他の能力を与える）ことが望まれる場合がある；アプリケーション開発者はアクセスの複数のクラスを提供でき、アプリケーション開発者又はその他の者（例えば管理者）のいずれかはこの場合、特定のテナントを、上記複数のクラスのうちの特定の１つに割り当てる。この区別に関連して、ワークフロー管理システムのメモリ２８は、個々のテナント及び／又はエンドユーザの処理空間、並びにテナント管理処理空間を含むことができる。テナントデータベース２２は、物理的配列又は論理的配列のいずれかに基づいて、個々のエンドユーザ格納領域に分割可能である。各格納領域内において、ストレージ及び関連のあるアプリケーション構成データ（任意のテナント特有のメタデータを含む）は同様に、各テナントに対して割り当て可能である。
【００３３】
ネットワーク１４は、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク、例えばインターネット）、無線ネットワーク、ポイントツーポイントネットワーク、スター型ネットワーク、トークンリング型ネットワーク、ハブ型ネットワーク、又は任意の他の適切な構成であることができる。典型的なアプリケーションにおいて、エンドユーザシステム１２及び／又はマシン４２は、通信制御プロトコル（例えばＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、及びその他のもの等の、種々のプロトコルを用いて、システム１６と通信する。ネットワークインタフェース２０は、アプリケーションプラットフォーム１８、テナントデータストレージ２２、及びシステムデータストレージ２４と協働する１つ又は複数のＨＴＴＰアプリケーションサーバ１０００として実施可能である。アプリケーションサーバは、ＴＣＰ／ＩＰ等の種々のネットワーク接続及びプロトコルを用いて、アプリケーションプラットフォーム１８に接続し得る。
【００３４】
ＨＴＴＰが使用される実施例において、エンドユーザシステム１２は通常、ワークフロー管理システム１６におけるＨＴＴＰサーバへＨＴＴＰメッセージを送信し、また当該ＨＴＴＰサーバからＨＴＴＰメッセージを受信する、ＨＴＴＰクライアント（例えばウェブブラウザ）を含む。各エンドユーザシステム１２及び／又はアプリケーション開発者のマシン４２はまた、通常、後述する種々のページ、フォーム、アプリケーション、及び他の情報と共にディスプレイ（例えば、モニタスクリーン、ＬＣＤディスプレイ等）上にブラウザによって提供されるグラフィカルユーザインタフェース（ＧＵＩ）とインタラクトするための１つ又は複数のユーザインタフェース機器、例えばキーボード、マウス、タッチスクリーン、ペン、又は同様のもの等を含む。例えば、ユーザインタフェース機器は、ワークフロー管理システム１６によってホストされるデータ及びアプリケーションにアクセスするために使用可能であり、格納されたデータに対して検索を実行するために使用可能であり、またその他、テナント、エンドユーザ、管理者、アプリケーション開発者、又は他のエンティティに対して提示され得る種々のグラフィカルユーザインタフェース（ＧＵＩ）ページとのインタラクションを可能にするために使用可能である。
【００３５】
アプリケーションプラットフォーム１８は、ユーザインタフェース（ＵＩ）３０及びアプリケーションプログラミングインタフェース（ＡＰＩ）３２を含み、エンドユーザ、テナント、管理者、及び／又はアプリケーション開発者が、任意にエンドユーザシステム１２及び／又は（複数の）マシン４２を介して、ワークフロー管理システム１６とインタラクトすること可能にする。アプリケーションプラットフォーム１８はまた、自動化された又は部分的に自動化された手段でアプリケーションの生成と管理をサポートするユーティリティを含み、例えば、アプリケーション開発者が、１つ又は複数のテナント処理の一部として実行される保存ルーチンを用いて、メタデータをテナントデータベース（及び／又は、必要に応じて、各テナントに特有のストレージ）に保存することを可能にする。一実施形態におけるそのような処理の呼び出しは、Ａｐｅｘを用いてコードされ、ＡＰＩ３２に対してプログラミング言語形式のインタフェース拡張を提供する。そのような呼び出しは、仮想マシンを介した特定のテナントに対するアプリケーションメタデータの検索及び関連のあるメタデータの実行を管理する、１つ又は複数のシステム処理によって検出可能である。
【００３６】
一例として、あるテナントは、販売員を雇用する会社であって、個々のエンドユーザ（例えば販売員）がワークフロー管理システム１６を使用して、共通の方法でデータベースとインタラクトすることによって会社の販売プロセスを管理する、会社であり得る。このインタラクションの一部として、各エンドユーザは、全て１つ又は複数のエンドユーザシステム１２を介してワークフロー管理システム１６にロギングすることによって、そのような会社の販売プロセスに適用可能な、連絡先データ、見込み客（リード）データ、顧客追跡（フォローアップ）データ、業績データ、目標及び進捗データ、及びその他のものとインタラクトし得る。このコンテキストにおける種々のエンドユーザシステム１２はアプリケーションサーバ１０００と通信して、ワークフロー管理システム１６からのシステムレベル及びテナントレベルのデータを要求及び更新する；これは、（例えば、所望の情報にアクセスするように設計された１つ又は複数のＳＱＬクエリを用いて）１つ又は複数のクエリをシステムデータベース２２及び／又はテナントデータベース２４に要求し得る。
【００３７】
各データベースは一般に、予め定義された複数のカテゴリに適合されるデータを含む、論理テーブルのセット等のオブジェクトの集合とみなされることができる。各テーブル及び／又はオブジェクトは一般に、視認可能なスキーマにおいて１つ又は複数の行、列、レコード、又はフィールドにおいて論理的に配列された１つ又は複数のデータカテゴリを含む。次にテーブルの各行、列、又はレコードは、複数のフィールドによって定義された各カテゴリに対するデータのインスタンスを含む。例えば、テーブルは、顧客、製品、販売価格、日付等の情報のためのフィールドを含む購入注文を記述し得る。
【００３８】
いくつかのマルチテナントデータベースシステムにおいて、実施に依存して、テナントは、例えば標準的なオブジェクトのためのカスタムフィールドを生成することによって、カスタムオブジェクトを生成及び格納すること、又は標準的なオブジェクトをカスタマイズすることが可能とされることができる。また、いくつかのデータベースシステムにおいて、エンドユーザ及び／又はテナントは、ワークフローアプリケーションを生成、ポスト、及び交換する（例えば、特定のワークフロー又は関連するメタデータを交換する）機能が提供される；例えば、これは共有ディレクトリ、電子掲示板、又はソーシャルネットワークスキームを用いて実行可能である。更に別の実施形態において、複数のワークフローはネストされることができ、例えば、個々のテナントが第１のワークフローに従ってマルチテナントデータベースとインタラクトしながら、また第１のワークフローの特定のステップ又はコンテキスト内で、第２のワークフローを設計及び利用する機能が複数のテナントの各々に提供されながら、特定の処理を実行することが可能である。
【００３９】
アプリケーションは任意に、データモデル、ユーザインタフェースオペレーション、及び／又はビジネスロジックを定義するマルチテナントデータベースセットアップデータ（例えば、メタデータ）のグループ若しくはパッケージとして実施可能であることに留意されたい。すなわち、上述のように、そのような実施形態において、ワークフロー管理システム１６は、実行ソフトウェア及びデータベースを提供し、その一方でワークフローを定義する特定のソフトウェアアプリケーションは、ワークフロー管理システムの制御構造を用いて、前記データベースのデータにアクセスし、当該データを修正し、また当該データを表示するための構成情報を提供する。アプリケーション開発者は、特定のアプリケーションを定義するために必要なセットアップデータ（例えば、カスタムオブジェクト定義、ページレイアウト定義、ワークフロー規則、等）の一部又は全てを含むメタデータ「パッケージ」として、特定のアプリケーションを定義する。各アプリケーションはまた、（Ａｐｅｘ又はｊａｖａｓｃｒｉｐｔ（登録商標）等の）種々の言語で記述されたコード、及び／又はワードプロセッサドキュメント等のファイルを含むことができる。メタデータベースの構造は、全ての実施のために必須ではなく、例えば、別の実施形態において、各アプリケーションはむしろ主として、自己完結型の実行ソフトウェアとして実施可能であることに留意されたい。
【００４０】
一実施形態において、アプリケーション開発者及び／又はテナントは、当該アプリケーション開発者及び／又はテナントの複数のアプリケーションを、中央ディレクトリに登録することができる。ディレクトリは、パブリック部分及びプライベート部分を任意に含むように実装可能であり、あるいは書き込み（又は修正）許可を有して又は有さずアプリケーションが選択的に共有可能である方法で構造化可能である。そのようなディレクトリは、例えばＪＳＰページ及びＪａｖａ（登録商標）クラスを用いて、構築可能である。そのような構造は、他のエンティティが、公開されたアプリケーションを閲覧すること、及び他者によって設計されたアプリケーションを選択的に利用することを可能にする。許可は、共通のマルチテナント環境における複数のテナントに対して、任意に制限可能である。他の複数の実施形態において、許可はまた、共通のマルチテナント環境のテナントではないエンティティに対しても、拡張可能である。
【００４１】
紹介されているワークフロー管理システムのための一般的な環境を用いて、本開示は次に、ワークフローの設計及び実装に関する更なる詳細を提供する。
【００４２】
より具体的には、前述のように、アプリケーション開発者は、ワークフロー実行の間にコンテキスト特有の規則を呼び出すためにメタデータが使用される方法で、ワークフローの自動化された又は部分的に自動化された開発を促進するアプリケーション開発インタフェースが提供されることができる。そのような処理の第１の実施形態は一般に、図３Ａにおいて符号５０で表される。アプリケーション開発者は設計機能を起動し、ワークフロー設計ソフトウェアによってアプリケーション開発インタフェースが提供される（符号５２）。上述のように、アプリケーション開発者は、単独で又は他と協働して、所望のワークフローのフェーズ及び関連する許可されたトランジションを定義する。インタフェースは、各トランジションと関連付けられる複数の動作の定義を可能にするトランジションテーブルへのアクセスを提供する（符号５４）。より具体的には、トランジションテーブルは、動作パラメータを用いて、ワークフローの任意の２つのフェーズの間の許可されるべき各トランジションに対して追加され、ここで各動作パラメータは自動（Ａ）の動作タイプ又は手動（Ｍ）の動作タイプのいずれかを表す。上述の自動（Ａ）の動作タイプは、ワークフローの実行の間にワークフロー管理システムによって自動的に呼び出されて処理されるべき、動作タイプである。その一方で、手動（Ｍ）の動作タイプは、通常エンドユーザによる、ある種類（タイプ）のユーザ介在を要求する。各特定される動作タイプに応じて、判断ブロック５６で示すように、ワークフロー設計ソフトウェアは、例えばポップダウンメニュー、チェックボックス、又は類似の設計機能を介して、手動（Ｍ）の動作タイプ（及び、任意に、自動（Ａ）の動作タイプに対する更新機能等の動作）のために提供されるべきデータベースアクセスのために優先する複数の条件を、ユーザが定義することを可能にする；これについては以下において更に例示される。アプリケーション開発者は、この時点において、トランジションテーブルにおいて生成された、生成されたトランジションを保存することが許可されるか、代わりにそのようなトランジションはバルク処理として保存されるかかのいずれかである（符号６０）。生成又は修正されたトランジションテーブルに基づいて、符号６２で示すように、メタデータは生成される。最後に、（そのようなメタデータを含む）生成されたワークフローは、機能ボックス６４によってリレーされるように、非一時的機械読み込み可能媒体６６上に格納される。一実施形態では、オプションの処理ブロック６８で表すように、方法は、例えばネイティブソフトウェアを構成することによって、及び／又は本明細書において検討される技術に従って生成された顧客ワークフローの実行を可能にする拡張を生成することによって、レガシーのワークフローアプリケーションをカスタマイズして、説明される技術に従って設計された新たなワークフロー構造をサポートすることを含むことができることに留意されたい。
【００４３】
図３Ｂは、ワークフローを表す、アプリケーションを設計する方法の別の実施形態２００を示す。ここでアプリケーションは、複数のフェーズＦ及び複数のトランジションＴの観点から定義される。この実施形態の目的のために、ケースオブジェクトは、必要に応じて適切なカスタマイズを用いて従来のワークフロー管理システム（例えば、ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ）によって提供されるプログラミングフレームワークを用いて、生成及び操作されることとなることが仮定されるべきである。図３Ｂにおけるブロック２０５によって全体として示すように、このカスタマイズは任意に、関連する構成を用いて、ワークフロー管理システム上へのソフトウェアのインストールによって、実行可能である。このインストール／実行は機能ブロック２０８によって表され、これは非一時的機械読み込み可能媒体４３に対する命令によって行われる。結果として得られる修正は、以下の点をもたらす：
−ワークフロー管理システムにおける１つ又は複数の追加のソフトウェアモジュールのインストール；特定のオブジェクトベースの実施形態において、これは、符号３００によって表される、フェーズ管理オブジェクト３００、並びに関連するユーザインタフェース及びトリガを含む。
−特に要求管理オブジェクト（例えば、以下の検討において例示される「ケース」オブジェクト）の、プログラミングフレームワークのツールのカスタマイズ；このオブジェクトは、図３Ｂにおいて符号５００で表される。
【００４４】
以下の概念は、この実施の理解に有用であろう。
−オブジェクト：マルチテナントデータベースにおける、ワークフロー管理と関連付けられた特定の単一的な構造。ここで、この単一的な構造は、格納又は参照されることが可能であり、またデータ、１つ又は複数の機能、及び／又はロケーションのポインタを通常含む。従業員環境に関する種々の実施形態において、オブジェクトはまた、そのような従業員環境においてデータがどのように表示されるかを定義するレイアウトに、すなわちページ及び場合によっては他のグラフィック属性に関するデータの配列に、関連付けられることが可能である。
−ケース：マルチテナントデータベースの特定のレコード、例えば、個々の顧客サービス要求及び関連する「チケット」を追跡するために用いられるデータベースエントリ；各新たなケースは、オブジェクト（すなわち、特定の要求管理オブジェクト）として表される。
−記録タイプ：共通のオブジェクトによって表されることができる種々のタイプ（種類）のチケット又はアイテムの間を区別することを可能にする、ワークフロー又はワークフロー管理システムに特有の区別；（フィールドがページにおいて配置される場所等の）種々のレイアウト及び種々のピックリストセットは各々、異なる記録タイプと関連付けられることが可能である；例えば、後述の１つの記録タイプ（「苦情」）は顧客の苦情を追跡するために使用され得、その一方で異なる記録タイプ（「再印刷」）は、特定のドキュメントをオーダーするための顧客要求を追跡するために使用され得る；記録タイプはときとして、ケースオブジェクト上にマップされる各異なるビジネスプロセスに特有である。
−ピックリスト：対応するオブジェクトに対する選択の（開発者によって定義された）変数セットを保持する選択メカニズムのタイプ（種類）
−ビジュアルフォース：Ａｐｅｘを用いて記述された動的ページのタイプ（種類）；そのようなページは、ユーザインタフェースの一部、例えばコマンドボタンの変数選択、の動的表示を効果的にプロキシするために挿入可能である。
−トリガ：特定のイベントに応答して、例えばレコードにおけるエントリの変更（例えば、エントリの追加、更新、又は削除）行われるとき、自動的に実行されるコード；トリガは、例えば保存処理のとき、不整合（エラー）を検出して、ワークフローアプリケーションのインテグリティ及び／又はデータベースに格納される情報を維持することを補助するために、用いられることができる。
【００４５】
以下の検討において、ＣＲＭ環境において根ざしている例示的な仮想のワークフローを用いて、ワークフロー管理システムにおけるオブジェクト（例えば、レガシーのワークフロー管理システムにおいて用いられる標準的なオブジェクト、又は新たなオブジェクト）の構成について説明する。従って、検討対象のオブジェクトのタイプは通常、顧客要求オブジェクトであり、特に、顧客からの特定のサービス要求をドキュメントに記録するために用いられる「ケース」オブジェクトであり得る。各ケースオブジェクトは実際には、顧客要求を最初に対応処理するエンドユーザによって生成され得るが、この検討の目的のために、ワークフロー設計のために提供されるカスタマイズによって、このオブジェクトのフォーマット（例えばデータ構造）の修正を行うことができ、本開示により提供されるワークフローアプリケーション設計原理が補助される。以下に言及されることとなるこのオブジェクトの特定のフィールドは「記録タイプ」フィールドであり、当該「記録タイプ」フィールドは、特定の要求が「苦情」、「再印刷」の要求、及びその他のもののいずれであるかを示す顧客要求を最初に対応処理するエンドユーザによって追加される。本明細書において検討される技術は例えば、図１Ａ及び１Ｂのワークフローを実施するアプリケーションを設計するために用いられることができ、この例示的なワークフローは、以下に提供されるナラティブの一部において用いられることとなる。以下の検討は（顧客関係管理オブジェクトの特定の例であるとして）「ケース」オブジェクトに焦点を合わせるが、もちろん、開示される技術を限定することなく、（例えばＳａｌｅｓｆｏｒｃｅ．ｃｏｍによって提供される）レガシーのワークフロー管理システムによって使用される任意のオブジェクトを含む他の種類のオブジェクトにも適用可能であるということに留意されたい。
【００４６】
処理２０８は、１つ又は複数の追加のソフトウェアモジュール（３００）のインストール及び要求管理オブジェクト（例えば「ケース」オブジェクト）５００のカスタマイズをもたらすことが上述された。（通常、予備的な処理として一度実行される）複数の追加のソフトウェアモジュール３００は、上で説明したアプリケーション開発インタフェース、並びに関連する特定の画面、ツール、及びインタフェースを追加して、フェーズ及び関連するトランジションの定義を促進する。この促進は、後述のトランジションマトリクス、並びに関連付けられたトリガ、機能、及び関係する一貫性検査を用いて、一部において達成される。要求管理オブジェクトのカスタマイズは、「フェーズ」フィールドＣＦの追加を示す。すなわち、上述のように、いくつかの実施形態において、メタデータは、特定の規則及び条件の、特定のトランジションとの関連付けを可能にする方法で、生成可能である；従来のワークフロー管理システム（例えば、ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ）と適合する方法でこの処理を促進するために、追加のフェーズフィールドは、セットアップにおいて、ケースオブジェクトと関連付けられてもよい（そのようなケースオブジェクトによってサポートされる任意のネイティブフィールドに加えて）。フェーズフィールドは、それが、各ケースオブジェクトの、単一の状態との関連付け又は代わりに複数の論理的状態のグループとの関連付けを可能にする方法で、定義される。
【００４７】
インストール／カスタマイズオペレーション２０５に続いて、特定のワークフローを設計する処理の一部として、所与のデータモデルを代表するオブジェクト（例えば、ＣＲＭアプリケーションのためのケース要求管理オブジェクト）を定義するための、セットアップオペレーション２０６が実行される。このオペレーションは、図４に示すフローチャートを参照することによって、より良く説明される。
【００４８】
図４を簡潔に参照し、このセットアップオペレーション２０６は、（ＣＲＭアプリケーションのための）要求管理オブジェクトのためのフォーマットを決定し、特にそのフィールド（例えば許可された記録タイプ、フェーズ、及びその他のもの）を定義する。第１のステップ２０７は、ケースオブジェクトをフォーマットする。このステップは、データを、ワークフローの特定の状態に対応する特定のレイアウト及びデータビュー等の、特定のデータインタフェースと関連付け可能なオブジェクト特有のフィールド及びアプリケーション特有のフィールドに編成するステップを含む。このフォーマットはまた、そのようなデータインタフェースへのコードリファレンスを定義するために使用されることとなる更なるフェーズフィールドＣＦと、トランジションとフェーズの一貫性を確保するために特定の節目（マイルストーン）において自動的に実行されるべきトリガ（例えば、ＴＲ１及びＴＲ２）と、を自動的に含むように構造化される。
【００４９】
第２ステップ２１０は次いで実行されて、実施されているワークフローに特有のテンプレートを選択して、例えば、実施されるべきワークフローのタイプに特有の、任意のデフォルトのレイアウト／データインタフェース及び許される選択値、並びにその他のものを各フィールドに追加する。例えば、この第２ステップ２１０は、特定のＣＲＭワークフローと共に使用可能な、予め定義されたカテゴリ（例えば、「苦情」、「再印刷」等）のデフォルトのセットを「記録タイプ」フィールドに追加するために用いられることができる。この選択はまた、設計中のオブジェクトを、以前に各カテゴリと（例えば各予め定義された記録タイプと）関連付けられているレイアウト及び／又はデータインタフェースと、関連付けるために使用可能である。
【００５０】
第３ステップ２２０は次いで実行されて、システムにおいて既に定義されていない場合には、特定のワークフローに対して要求されるタイプの、新たな複数のフェーズを追加する。これらのフェーズは、上で参照された異なる機能的なグループであり、通常、設計処理の分析フェーズの間に決定される。ステップ２３０は次いで実行されて、フェーズフィールドＣＦをカスタマイズし、実際には、実行されるべき（且つ、アプリケーション開発者が潜在的にトランジションを定義することができる）特定のワークフローの種々のフェーズを定義する。例えば、各ワークフローが複数のフェーズと論理的オペレーションのサブセットのみとインタラクトしている状態で、複数のワークフローを用いて、多くのフェーズと論理的オペレーションを有することが可能である；ステップ２３０は通常、実際上グローバルなフェーズであるものを、特定の（個々の）ワークフローと関連付けるように、実行される。望まれる場合、ステップ２２０及び２３０は交換可能である。ステップ２２０及び２３０は実際には、フェーズテーブルＴＦの生成を可能とするようにインポート可能である方法で、設計中のオブジェクトに関連する複数のフェーズを定義するように実行される。図４において示される種々のステップは、特にワークフローの複数のフェーズＦと複数のトランジションを定義するための、予備的な前処理オペレーションを表す。
【００５１】
上に示された例は、要求管理オブジェクトの構築、１つ又は複数のテンプレートの採用、及びフェーズサポートの追加を説明するが、説明された処理はまた、例えば既存の要求管理オブジェクトを修正することによって、レガシーのワークフロー管理システムに適用可能であるということに留意されたい。
【００５２】
図３Ｂに戻り、フェーズテーブルＴＦの生成は、フェーズ管理オブジェクト３００の使用のための述語（プレディケート）を提供する。フェーズ管理オブジェクト３００は、（フェーズテーブルＴＦに依存して）使用可能であるトランジションマトリクスＴＳ及び／又はトランジションテーブルＴＴを提供して、複数のフェーズ、任意の関連付けられた規則、条件、又はインタラクションの間の、許可されたトランジションを定義し、また一貫性検査及び他の処理のためのフレームワークを確立する。フェーズ管理オブジェクト３００は、上述のメタデータを生成するために、また後述のようにトリガ及び一貫性検査を指示するために、用いられることとなる。オペレーション２５０は呼び出されてフェーズテーブルに対してデータ投入を行う；記入が完了してオブジェクト３００が閉じられたとき、フェーズ管理オブジェクト３００によって特定されるトリガは一貫性検査を行うように実行される。例えば、一実施形態において、第１及び第２のトリガ（ＴＲ１及びＴＲ２）は、一貫性検査を提供し、またフェーズコードをフェーズ説明にそれぞれデコードするために用いられる；第１のトリガＴＲ１は、結果として得られるテーブル（すなわち、トランジションテーブルＴＴ、及び／又はトランジションマトリクスＴＳ、及び／又はフェーズテーブルＴＦ）を検査して、実行されるべき複数のトランジションＴの適合性を確認するために用いられる。その一方で第２のトリガＴＲ２は、フェーズテーブルＴＦ及びトランジションテーブルＴＴを参照して、実行されるべき各フェーズの明示的な説明ＦＰを探索するために用いられる。ケースオブジェクト５００はまた、設計処理の間に複数のフェーズＦの管理に用いる動作ボタン（例えば、ボタン、リンク、コマンド、リスト、チェックボックス、及びその他のもの）を、テーブルＴＴに依存して提示するモジュール（すなわち動的ページ）を備える。
【００５３】
新たなケースオブジェクト生成のステップは効果的に、対応するワークフローアプリケーションを表すオブジェクト定義、ページレイアウト、ワークフロー規則等の、全てのセットアップデータを含むメタデータのセットを、ケースオブジェクト５００に属するものとみなす。（例えば上述のカスタマイズによって）既存のワークフロー管理システムフレームワークに対して改良が行われた場合、ここで説明される原理は、フェーズフィールドＣＦ、関連するトランジションテーブル及び／又はマトリクス、並びにワークフローに適切な任意のトリガ、例えばトリガＴＲ１及びＴＲ２、の追加によって、既存のオブジェクトフォーマットをカスタマイズすることに留意されたい。これは次いで、フェーズ定義、及び（フェーズフィールドＣＦによって表される）定義された複数のフェーズ上で自動的に動作するソフトウェア制御を促進する。従って、オブジェクト５００の修正は、種々のワークフローによって使用可能であるデータモデルを生成し、またワークフローのカスタマイズと修正を促進するように適応されたユーザインタフェースを提供する。ソフトウェアのカスタマイズ及び／又はそのような修正はまた、複数の新たなオブジェクト、及びそれらオブジェクトと関連付けられるべき複数のフィールドを簡単に定義し、また新たな複数のフィールドを既存の（例えばレガシーの）複数のオブジェクトに簡単に追加するためのユーザインタフェースを提供する。最後に、オブジェクト５００の修正はまた、複数の記録タイプ、及び他の複数のフィールドをカスタマイズする手段であって、ここで上記他の複数のフィールドはそのような複数のフィールドに特有の複数のパラメータ（例えば、レイアウト、条件、可視化、振る舞い）を有する、手段と、（例えばテンプレートに従って）任意の所望の所定のパラメータをそのような複数のフィールドに追加する手段との両方を提供する。
【００５４】
これらの原理を例示すると、レガシーのワークフロー管理システムによって用いられるオブジェクトは、例えば図４のオペレーション２１０を用いて、許される複数のフィールド値を追加し、編集し、又は削除するように簡単にカスタマイズ可能である。上述のように、本開示によって提供される技術は、そのような複数の値をカスタマイズするための、図５に例示される、ユーザインタフェースを提供する。紹介された例に戻り、再印刷のための顧客要求に応えるためにワークフローが修正又は設計されるべきである場合、（例えばケースオブジェクトの）記録タイプフィールドは「再印刷」の選択可能な値を含むように定義され得る。同様に、既存のワークフローの拡張をサポートするために「苦情」の記録タイプの値が定義されるべきである場合、オブジェクト設計はそれに応じて、個々のケースオブジェクト（例えば新たなチケット）が「苦情」として識別されることを可能とするように、修正され得る。図５は、この設計オペレーションを実行するための、例示的な入力画面レイアウト６００（例えばユーザインタフェース）を示す。そのような入力画面レイアウトは、アプリケーション開発者が、例えば既存の記録タイプをテンプレートとして指定するためのフィールド６０１、記録タイプラベル（この例では「再印刷」）のためのフィールド６０２、記録タイプ名のためのフィールド６０３、及びサポート処理タイプを定義するためのフィールド６０４を用いて、「ｒｅｃｏｒｄ＿ｔｙｐｅ」を定義するための情報を入力することを可能にする。要求された情報の記入が完了すると、その効果として、特定のワークフローに対する要求管理オブジェクト５００と関連付けられる方法で、新たな記録タイプが生成される。
【００５５】
図６は、特定の記録タイプの定義に関する追加の情報を提供する図である。新たに定義又は修正されたケースオブジェクト５００を用いて実施されるべき各処理に対して、各関連記録タイプが定義される。図６において、「ＣＲＴ１」及び「ＣＲＴ２」は２つの記録タイプを示し、ここで「ＣＲＴ１」はそれが実施する処理に従って、ケースオブジェクト５００Ａ及び５００Ｂのために使用され、「ＣＲＴ２」はそれが実施する処理に従ってケースオブジェクト５００Ｃ及び５００Ｃのために使用される。各記録タイプは図示のように、それ自身のケース番号、フェーズフィールドＣＦ、及びフェーズ説明を有する。
【００５６】
図４に戻り、処理２１０を介して、新たな記録タイプＣＲＴのための名前及び説明が入力される。新たな記録タイプは、その記録タイプに利用可能な（例えばデフォルトの、又は以前に定義された）全てのピックリスト値を含むようにデータ投入が行われることとなる。新たな記録タイプを保存した後、フェーズフィールドＣＦに対して選択可能である値を含むピックリスト値をアプリケーション開発者がカスタマイズすることが可能であるように、ソフトウェアは構造化されてもよいことに留意されたい。
【００５７】
記録タイプＣＲＴの定義は多数の点でシステムに影響を与え、この定義の後に、従って、関連するレイアウト（視覚化）の構成、及び必要に応じて任意の関連するエンドユーザプロファイルが続いてもよい。
【００５８】
上述のように、ワークフロー管理システム及び対応するレイアウトの標準的な要求管理オブジェクトは、その複数のフィールドの中で、カスタムフィールドフェーズフィールドＣＦを含む。このフィールドＣＦは、一実施形態において、ピックリストタイプフィールドを含み、当該ピックリストタイプフィールドは、関連のあるワークフローのための全ての記録タイプのフェーズに対応する全ての値の完全なリストを、選択のために保持する。アプリケーション開発者は、特定のオブジェクトに関連する複数のフェーズのセットを定義するために、ワークフローに対して定義された複数のフェーズの中から選択する。例えば、図１Ａ〜１Ｂの例を適用して、アプリケーション開発者は、ワークフロー全体のための複数のフェーズＦの完全なリストから、フェーズＦ１〜Ｆ５を表す複数のコードを選択して、これらを要求管理オブジェクトと関連付けて入力し得る。この処理及び関連付けられたユーザインタフェースは、既存のワークフローの、準備ができている修正を許し、どのようにオブジェクト、又はその関連するワークフローが使用されるかをカスタマイズする。複数のフェーズは再び、プロジェクトの分析フェーズから決定される。
【００５９】
図７は、データベース環境の複数のフィールドをカスタマイズするための、特に要求管理オブジェクトの特定のフィールドに対して利用可能な選択値を構成するための、例示的な構成タブ（すなわち、ユーザインタフェースのためのレイアウト）６１０を示す。図７によって示される特定のケースにおいて、フェーズフィールドに対して利用可能な選択を特定することが望まれ、ここでエンドユーザの選択オプションは通常、アプリケーション開発者によって（すなわち、説明したように、分析フェーズに応じて）定義される。説明したように、一実施形態において、フェーズフィールドＣＦは、デフォルトで、全ての記録タイプに対して全ての可能性のあるフェーズＦを保持する。タブ６１０は、実施されるべきアプリケーションに対する、複数のフェーズ又は個々のフェーズパラメータ（例えば、フェーズのためのコード、及び他の示されたフィールド）を追加、編集、又は削除するためにアプリケーション開発者によって使用されることができる。
【００６０】
タブ６１０は図示のように、フィールド、ラベル、名前、ＡＰＩ名、オブジェクト名（例えば、この場合において「ケース」）等の情報を表示する情報セクション６１３を含む。符号６１１は、（例えば、関連のあるフェーズを選択するためのピックリストの使用を示すこの例を用いて）フィールドに値を追加するために使用される選択メカニズムを示す。処理の任意の時点において、ユーザはボタン６１４を用いて、ピックリストのための新たな値を選択できる（又は反対に、例えば、値の順番を変更し、及び／又は値を除去する）。他の選択、動作、及びコマンドのメカニズムは、当業者によって理解されるように、提供可能であることに留意されたい。
【００６１】
上述を考慮し、オブジェクトを追加又はカスタマイズするために、アプリケーション開発者は、（図７のスクリーンショットによって表される）ユーザインタフェースを用いて、所望のワークフローによって決定される通りに、関連のある複数のフェーズを定義する；各記録タイプはそれ自体の各々の選択オプション（例えば、関連のある複数のフェーズの各々のリスト）を有することができるため、この処理は、ワークフロー設計処理の間か後であるかによらず、新たなフェーズが追加されるとき、ワークフローの、準備ができている修正を促進する。
【００６２】
図８は、所望のワークフローの種々のフェーズを定義するためのピックリストに関する、もう１つの例示的な構成タブ（又はユーザインタフェースレイアウト）６２３を示す。例えば、このユーザインタフェースは、上述のボタン６１４のアプリケーション開発者による選択に応答して、入力されることができる。アプリケーション開発者は、利用可能な（既存の）複数の値６２１のセットから選択して、ピックリスト選択を定義する。各値は、（ページの中央において見られる右矢印ボタンを用いて）選択オプションとして選択及び追加されるため、その値は、検討中の特定の記録タイプのためのピックリストに利用可能な選択値のセット６２２に追加される。逆に、セット６２２から特定の値をハイライトさせて図の中央においてみられる左矢印ボタンを選択することによって、ユーザは、選択オプションとしての使用から１つ又は複数のフェーズを削除することによって、以前に選択した複数のオプションを編集できる。
【００６３】
この図から見られるように、各フェーズ値は、この実施形態ではワークフロー処理の各フェーズに対応する英数字のコードによって、フェーズフィールドＣＦにおいて表される。対応するフェーズ説明は参照目的のフェーズのテキスト説明を保持し、また対応するフェーズ説明は、図９において符号６１４で示すようにフェーズ説明のルックアップテーブルをロードするために関連する英数字のコードをダブルクリックすることによって、選択可能である。このテーブルは、新たなフェーズ選択オプションとして追加されて、ワークフローに追加される。ルックアップテーブル６１４は、英数字のフェーズコード「ＦＣ」及びテキストのフェーズ説明「ＦＤ」を含む、２つのフィールドを有する。これは、本開示において説明される多くの例示的なユーザインタフェースと同様に、必ずしも全ての実施形態に必須ではなく、代替手段によって実施可能であることに留意されたい。例えば、別の実施形態において、値に対するテキストの説明は、アプリケーション開発者が特定の英数字コードをハイライトさせるいかなるときにおいても、図８のユーザインタフェースの一部として自動的に検索され且つ表示されることが可能である。明らかに、他の変形例はまた、可能である。
【００６４】
所望のワークフローに関連する複数のフェーズＦのセットがひとたび定義されると、それら複数のフェーズＦは、ステップ２０５（図３Ｂ）において定義されるフェーズ管理オブジェクト３００に追加される。このオブジェクトは次いで、許可された複数のトランジションを定義するために用いられる。このオブジェクトに対するレイアウトは、図１０、１１及び１２に示される。すなわち、このオブジェクトは、所望のワークフローの複数のフェーズの間の全ての許可された複数のトランジションを定義して、それら複数のトランジションを構成するためのトランジション定義のための、ユーザインタフェースを提供する。このタスクはまた、特定のワークフロー管理システムによってサポートされている場合、標準的な非常に大きなレコードインポートツール（例えば、Ａｐｅｘ  Ｄａｔａ  Ｌｏａｄｅｒ、又は類似のＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ  Ｃｏｎｎｅｃｔｏｒ）を用いて、実行可能である。
【００６５】
図３Ｂに戻り、オペレーション２５０に従って、トランジションマトリクスＴＳは、オペレーション２５５においてトランジションテーブルＴＴを生成するために構築されて用いられる。フェーズ管理オブジェクト３００のレイアウトの手段によって（図１０、１１、及び１２参照）、所望のワークフローの任意の２つの関連するフェーズの間の各可能性のあるトランジションを表す交差は、関連のあるユーザインタフェースの一部として、アプリケーション開発者に対して自動的に提示される。特に、ステップ２５６において、アプリケーション開発者は、各所望のトランジションＴが手動であるか自動であるかを特定するように要求される。自動である複数のフェーズトランジションＴ（例えば、これはボタン又は動作リンクを提供すること、又はエンドユーザ入力を要求することが条件とされない）は、「Ａ」の印が付される。（確認のみであるとしても）エンドユーザによる画面上の動作を要求する手動のフェーズトランジションは、「Ｍ」の印が付される。ワークフロー処理の制御オブジェクトとしてのそのようなトランジションテーブルのストレージはこの場合、明らかに効果的に、トランジションマトリクスＴＳ及び／又はトランジションテーブルＴＴによって明示的に提供されない任意の試みられたフェーズトランジションを禁止する方法で、所望のワークフローのオペレーションを指示する。これは、特に、ケースオブジェクト上で動作するように設定された対応するＡｐｅｘトリガを介してマトリクスＴＳからの情報を検索して確認することによって、強制される。
【００６６】
次いで、オペレーション２５７において、追加の動作構成ツール４００の手段によって任意の手動の動作タイプ（Ｍ）の記入のために必要とされる複数のパラメータを有効にするためにエンドユーザが表示させてその上をクリックするボタン、コマンド、又はリンクを構成するように、アプリケーション開発者は呼び出される。
【００６７】
いくつかの非限定的な実施例を提供するために、そのような動作可能なボタンは、以下を含む。
【００６８】
条件付け：ケースオブジェクトのために優先する特定の条件が満たされる（例えば、いくつかのボタンが利用可能とされることができ、また特定のユーザプロファイルに対して表示可能である）とき、トランジションは利用可能である（また任意に、利用可能であるとして、エンドユーザに対して表示される）。
【００６９】
割り当て：動作ボタンがエンドユーザによってクリックされたとき、当該ボタンはデータの保存、及びワークフローイベント（例えば、その動作が実行されたときの日付）を追跡するために有用なケースオブジェクトの他のフィールドの値の割り当てをトリガする。
【００７０】
オペレーション２５７に関する追加の詳細は、図１２において更に詳細に説明する。例えば、符号４０１，４０２，４０４ａ〜４０４ｂ，４０５ａ〜４０５ｂ，４０６，及び４０７は全て、任意の所望の手動のトランジションに対する複数の条件、パラメータ、及びコンテキストに設定されることができるフィールドを示す。表示されたユーザインタフェースは、追加されたトランジションテーブルを保存するとき、又は処理の任意の他の適切な時点において、手動の動作パラメータ（Ｍ）の選択に応答して、呼び出されることができる。
【００７１】
ひとたびオペレーション２５５及び２５７が完了すると、要求管理オブジェクト５００（例えば、ケースオブジェクト）は、処理２７０を介して、生成される（又は適切に更新される）。要求管理オブジェクト５００は、オブジェクト定義等の全てのセットアップデータを含むメタデータのセットと、複数のページレイアウト、及び特に、特定のアプリケーションを構成するために使用される複数のワークフロー規則とを含む。メタデータのセットは、所望のワークフローを実装するためにワークフロー管理システムによって用いられる構成及び規則を提供するために用いられる。レガシーの環境のために、ソフトウェアは、既存のオブジェクトの機能を、それらオブジェクトを修正することによって拡張し、（例えばフェーズ管理ツールオブジェクトによって定義された）フェーズフィールドＣＦ、トランジション定義サポート、及びメタデータを提供することができる。メタデータは、オブジェクト５００及びその関連付けられたレイアウトに対して複数の動作定義パラメータを定義し、また事実上手動であるとして定義されたそれら動作に対して、フェーズにおける複数のトランジションとインタラクトするエンドユーザを管理するための複数のパラメータを定義する。
【００７２】
簡単の目的のために、用語「ケース」又は「チケット」は、（例えば、顧客クエリに応答して起動される）特定のケースレコードとのアプリケーションのインタラクションを指すために用いられる。
【００７３】
図１０，１１，及び１２について更に説明する前に、仮想のワークフロー処理に関連する更なる検討を提供することは有益であろう。この例及び次の検討は、（図３Ｂに示す）オペレーション２５５のステップを示す。
【００７４】
例えば、ケースオブジェクトの関連する複数のフェーズＦを有する仮想の記録タイプ構造「ＣＲＴ」は、以下のケースタイプ及び関連付けられた複数のフェーズＦを含むことが仮定されるべきである。
【００７５】
ケースタイプ：「苦情」
フェーズ「Ｆ１」  フェーズ説明：「ケースがログに記録される」
フェーズ「Ｆ２」  フェーズ説明：「レターを送信する」
フェーズ「Ｆ９」  フェーズ説明：「ケースが閉じられる」
ケースタイプ：「ＲＭＡ」
フェーズ「Ｆ１」  フェーズ説明：「ケースがログに記録される」
フェーズ「Ｆ４」  フェーズ説明：「ドキュメントを印刷する」
フェーズ「Ｆ９」  フェーズ説明：「ケースが閉じられる」
ケースタイプ：「顧客データ更新」
フェーズ「Ｆ１」  フェーズ説明：「ケースがログに記録される」
フェーズ「Ｆ４」  フェーズ説明：「ドキュメントを印刷する」
フェーズ「Ｆ９」  フェーズ説明：「ケースが閉じられる」
ケースタイプ：「ドキュメントを再印刷する」
フェーズ「Ｆ１」  フェーズ説明：「ケースがログに記録される／データエントリ」
フェーズ「Ｆ２」  フェーズ説明：「ドキュメントを印刷する」
フェーズ「Ｆ４」  フェーズ説明：「障害、介在を要求する」
フェーズ「Ｆ７」  フェーズ説明：「成功、アラインメント」
フェーズ「Ｆ９」  フェーズ説明：「ケースが閉じられる」
この仮想の例は、「苦情」、「ＲＭＡ」、「顧客データ更新」、及び「ドキュメント再印刷」の４つの異なる仮想のサービス要求にそれぞれ対応する、４つの異なるケースタイプを表す。各異なるケースタイプ（すなわち、サービス要求のタイプ）は、ワークフローの異なるフェーズを用いて処理される。
【００７６】
図１０は、フェーズ管理オブジェクト３００の第１の構成を示す。図１０に示す例は、図１Ａ及び１Ｂからの印刷例に関連するデータに対応する。オブジェクト３００のレイアウトは図示のように、以下の４つの異なるタブのセット３０１を備える：デフォルトのホームページタブに戻るために選択されるタブ３０１ａ；ユーザインタフェースを使用するためのガイドにアクセスするために選択されるタブ３０１ｂ；トランジションマトリクスＴＳタブを呼び出すために選択されるタブ３０１ｃ（又は、複数のトランジション、及び／又は複数の動作パラメータを定義するための他のユーザインタフェース）；利用可能な複数のフェーズを構成するためにアプリケーション開発者によって選択されるタブ３０１ｄ、すなわちフェーズタブ。一般に、フェーズ構成オブジェクト３００は、検討中のオブジェクトに対する、全ての関連のある複数のフェーズ及び関連付けられたトランジションデータ（及び関連する複数のパラメータ）の識別を含む、図示される複数のタブの各々のデータ視覚化／管理のための複数のデータ構造及び複数のレイアウトを含む。例えば、上述のように、フェーズ構成オブジェクト３００は、所望のワークフローの複数のフェーズＦの入力又は定義の結果としてデータが投入されるフェーズテーブルＴＦと、許可された複数のトランジションを識別するために、フェーズテーブルに基づいて、且つアプリケーション開発者の入力に基づいてデータが投入されるトランジションテーブルＴＴを含む。アプリケーション開発者が、どのトランジションが許可されるべきか、及び自動（Ａ）又は手動（Ｍ）のうちのいずれの動作が各トランジションに対してとられるべきかを識別することのみ必要であるように、図示されるユーザインタフェースは、全ての関連のあるフェーズ、及び全ての関連のある可能性のあるトランジション（すなわち、任意の２つの関連のあるフェーズの間の全ての可能性のあるトランジション）を効果的に識別する構造を、アプリケーション開発者に提供してもよい。種々のタブ３０１とインタラクトすることによって、アプリケーション開発者は、トランジションテーブルＴＴとフェーズテーブルＴＦのための種々の構成レイアウト、及び各許可されたトランジションのための複数のパラメータにアクセスすることができる。
【００７７】
特に、タブ３０１ｃが選択されるとき、タブ（ユーザインタフェース）は表示され、フェーズマトリクスＴＳの表現を示す。このインタフェースは、フェーズ管理オブジェクト３００によって許可された複数のトランジションに対して入力、修正、又は削除を行うためのする手段を、アプリケーション開発者に提供する。インタフェースは、行選択と列選択との両方として提示される特定のケースタイプの種々の関連する複数のフェーズを有する、トランジションマトリクスＴＳのグラフ表示を含む。従って、図１Ａ〜１Ｂからの印刷例において、トランジションマトリクスは５行５列のマトリクスであり、複数の列の各々はフェーズＦ１〜Ｆ５のうちの１つにそれぞれ対応し、複数の行の各々は、フェーズＦ１〜Ｆ５のうちの１つにそれぞれ対応する。従って、トランジションマトリクスＴＳの入力は、任意の２つのフェーズＦの間の全ての可能性のあるトランジションＴを定義する。タブ３０１ｃは、所与のケースタイプに対して、複数のトランジションＴＳの配列を読み込むためのボタン３０２と、アプリケーション開発者によって定義されている全ての定義と値を有するトランジションマトリクスＴＳを保存するためのボタン３０３とを提供する。
【００７８】
図１１は、各許可されたトランジションのための動作パラメータを定義するための、手動（３０６）であることを指す「Ｍ」又は自動（３０７）であることを指す「Ａ」のいずれかを有する行／列の交点において定義された許可された複数のトランジションが現在追加された、このフェーズ管理オブジェクト３００を示す。図示のように、トランジションは、動作パラメータが特定された場合にのみ、トランジションは、許可されると定義される；例えば、行−列の値１−２は、フェーズＦ１からフェーズＦ２への手動のトランジションを構成するために用いられる手動の動作パラメータに対応する。アプリケーション開発者が、任意の所望のトランジション識別するセルを選択し、任意の許可されたトランジションの動作パラメータを（例えば適切なダイアログによってガイドされて）入力することができるように、フェーズ管理オブジェクト３００によって提示されるトランジションマトリクスは、構造化されてもよい。手動のトランジションは、再び、例えば進むために確認ボタンをクリックすることによる人間の介在が要求される；対照的に、自動のトランジションは、全ての非手動のトランジション（すなわち、トランジションが、例えば外部システムとの自動化された統合の場合等において、ユーザの介在が条件付けられていない場合）を包含する。
【００７９】
図１１は、６つの可能なフェーズトランジションがある仮想の表示を示す。図１Ａ及び１Ｂからの「データエントリ」、「ドキュメントの印刷」、「修正」、「同期」、及び「ケースを閉じる」の複数のフェーズ、並びにこれらの図によって明確に示される複数のトランジションを用いて、トランジションマトリクスＴＳは、以下の更なるエントリが追加される：
−フェーズＦ１（「データエントリ」）からフェーズＦ２（「ドキュメントの印刷」）への、手動のトランジションＴ１２；
−フェーズＦ２（「ドキュメントの印刷」）からフェーズＦ３（「同期」）への、自動のトランジションＴ２３；
−フェーズＦ２（「ドキュメントの印刷」）からフェーズＦ４（「修正」）への、手動のトランジションＴ２４；
−フェーズＦ４（「修正」）からフェーズＦ２（「ドキュメントの印刷」）への、手動のトランジションＴ４２；
−フェーズＦ４（「修正」）からフェーズＦ５（「ケースを閉じる」）への、自動のトランジションＴ４５；トランジションＴ４５は、同一の起点フェーズと目的フェーズとの間の２つの異なる処理トランジション点を表すことに留意されたい。
【００８０】
所望のワークフロー処理が実行されているとき種々のチケット状態の間で進展する間、トランジションＴは、許可されるか拒否されるかのいずれかである。進捗は、特定の実施（例えば、インタフェース側のユーザの介在、ワークフロー、トリガ、又はネットワークを介した外部サービスとの統合）に依存して大きく異なる場合がある。従って、トランジションテーブルＴＴの設定に従って、特に動作パラメータが特定のフェーズトランジションに対して提供されるか否かに従って、本明細書において説明される教示は、ワークフローが実行されるときに低いレベルの一貫性検査を実行する手段を提供する；より具体的に、所望のトランジションは、トリガが発生したとき、トランジションテーブルエントリの参照によって、チケットの現在のフェーズに従って、許可されるか拒否される。トリガは、レコードの変更に関するあるイベントに応答して手続き型のコードを自動的に実行する、よく知られたデータベース機能である。トリガの使用は、更に後述される。
【００８１】
トランジションマトリクスＴＳエントリ又はトランジションテーブルＴＴレコードに一致しない任意の試みられたトランジションが拒否されて（又は禁止されて）、例えばデータベースレコードの不適切な更新を回避するように、フェーズ管理オブジェクト３００のこの構成は、保存がされるときのワークフローに関して直接的な効果を有する。例えば、ケースオブジェクト５００（又は別のオブジェクト）が、許可されないトランジションを呼び出し得る方法で不正確に構成された場合、トランジションテーブルへの低いレベルの一貫性検査及び適切なエスケープメカニズムは効果的に、試みられたトランジションを無効にする。言い換えると、一貫性検査トリガは、実行時において、開発されたアプリケーションにおける不整合を拒否するための効果的な制御を提供し、また当該一貫性検査トリガによって、システム管理者がワークフローインテグリティ全体を危険にさらすことなく大量のデータ更新を安全に行うことができる。いくつかの例示的なトリガ処理は図１７、１８、及び１９を参照して以下に更に説明されることに留意されたい。
【００８２】
再び図３Ｂを参照し、オペレーション２５７は、アプリケーション開発者が、各許可されたトランジションと関連して、画面上の１つ又は複数のコマンドの表示（例えば、ボタン、コマンドオプション、又は動作リンク）を提供することを可能にする。これらの機能の、アプリケーション開発者の構成は、ワークフロー実行のときに動作されている、又はワークフロー実行の間に実行されているケースオブジェクト５００のための視覚的レイアウトの一部を形成し、コンテキスト特有である方法で現在利用可能な複数のコマンドを補助する。そのようなボタン、コマンド、又は動作リンクは通常、ワークフローを種々のフェーズへ進める機能に関連し、又は（例えばデータベースレコード又はケースオブジェクトを更新することによって）フェーズトランジションの実行を支援する。
【００８３】
関連のある複数のフェーズの定義に関連して、フェーズタブ３０１ｄは、各フェーズを一意的な識別子に、例えば上で識別されたようにフェーズコードＦＣに、割り当てるために用いられる。そのようなプロキシの使用は、システムドキュメンテーションの構成と維持を簡単にする。図示されるタブ（図１３参照）は、リスト３３０のように表示される、全てのフェーズコード−説明ペアを格納する、カスタマイズされたサブオブジェクトを提供する。リストは、任意の既存のフェーズコード、並びにフェーズの識別３３２、名前３３３、及び説明３３４を編集又は削除するためのオプション３３１を提供する。タブ３０１ｄはまた、図示のように、選択されたときに図１４に示すユーザインタフェースの提示を引き起こす、新たなフェーズコードを挿入するためのコマンド３４０を含む。
【００８４】
図１５は、（例えば、顧客チケットの開始を文書で記録する）ケースオブジェクト５００のための視覚的レイアウトの表示を示す。図示のように、このオブジェクトは、データを表示し且つ入力又は修正するための複数のセクションと、複数のコマンドを発行するためのセクションとを含むインタフェースをエンドユーザに提供する。図示されるレイアウトは、チケット（例えば、ケースファイル番号５０１ａ、ケースタイプの参照５０１ｂ、ドケット番号の参照５０１ｃ、チケットが現在において存するフェーズに対するフェーズ説明の参照５０１ｄ、フェーズコードの参照５０１ｅ）に関連する情報を示す参照セクション５０１を含む。レイアウトはまた、サービス要求が受け入れられていること（５０３ａ）又は優先であること（５０３ｂ）を示すために用いられるステータスインジケータ５０３と、例えば、図示される「編集」、「削除」、及び「保存」のコマンド等の、利用可能な複数のコマンドをグループ化するために用いられる第１のコマンド領域５０４とを提供する。レイアウトはまた、第１のコマンド領域５０４から分離された第２のコマンド領域５０２を提供してもよい。当該第２のコマンド領域５０２は、（トランジションマトリクスＴＳによって定義されたように）オペレーションの現在のフェーズに対する任意の許可された手動の複数のトランジションに関連して定義されたように、ワークフローに関連するコンテキスト特有コマンドのセットを表示するためのものである。従って、第１のコマンド領域５０４は、コンテキストに基づいて通常変化しない、複数のコマンド又は複数のボタンの予め決定されたセットを表示し、その一方で、第２のコマンド領域５０２は、フェーズ管理オブジェクトによって特定される、現在のフェーズ及び任意の手動の動作条件に従って、コンテキスト特有のコマンドの変数を表示するために用いられる。
【００８５】
例えば、第２のコマンド領域５０２は、ケースオブジェクト５００にネイティブに統合されたＶｉｓｕａｌ  ｆｏｒｃｅコンポーネントによる使用のためのウィンドウを提供できる。Ｖｉｓｕａｌ  ｆｏｒｃｅコンポーネントは、チケットステータスに従って、すなわち、ワークフローの現在のフェーズ及びアプリケーション開発者によって特定される任意の条件に従って、複数のボタン、コマンド、又は動作リンクを表示するように実行される動的ページを提供する。この構造は、案内される方法で、また特定のワークフロー処理の所望の制約と適合する方法で、オープンチケットに対する動作を実行する処理を、エンドユーザに提供することを促進する。
【００８６】
図１５は、領域５０２において、特定の動作ボタン５０２ａ（「要求の確認」）を示す。このコマンドをオプションとしてエンドユーザに利用可能とするために、アプリケーション開発は、図１２を参照して上述されたように、トランジションテーブルＴＴ及び動作構成ツール４００とインタラクトし、関連のあるトランジションマトリクスセルを、許可されている手動の動作として、表示する。すなわち、図１１及び１２に戻り簡潔に参照し、動作ボタン５０２ａの利用可能性をエンドユーザに提供するために、アプリケーション開発者は、トランジションマトリクスＴＳにアクセスし（図１１参照）、（フェーズＦ１からフェーズＦ２へのトランジションを表す）第１の行の第２の列を指定し、そのセルとインタラクトして「Ｍ」を入力し得る；（例えばコマンドボタンを押すことによって、又はマウスでダブルクリックすることによって）セルをハイライトさせることによって、アプリケーション開発者は、（図１２の符号４００で示すように）動作構成ツールダイアログにアクセスして、ラベル（符号４０３における「確認の要求」）を入力して、残りの複数のパラメータを構成し得る。アプリケーション開発者は、設定された複数のトランジションパラメータを格納し、エンドユーザはこの場合、ワークフロー実行時において、特定された条件を満たすことによって（このケースにおいて、フェーズトランジションを確認するために、提示された動作ボタンをクリックすることによって）、ワークフローの前進をトリガすることが許される。明らかであるように、種々のダイアログ及び関連付けられた複数のユーザインタフェースは、任意の関連のあるトランジション又はトランジションオプションと関連付けられた複数の条件及び複数のコマンドをアプリケーション開発者が定義することを可能にする。図１２に示すように、次のダイアログのタイトルバー４０１は、現在選択されたフェーズトランジションＴを（すなわち、Ｆ１からＦ２へのトランジションとして）識別することに留意されたい。図１２において、「新しい手動のランジション［Ｍ］」のラベルが付されたボタンは、アプリケーション開発者が適切な新たなコマンドを動作可能なボタンとして構成することを可能にする。レイアウトはまた、以前に追加されたボタンのリストを表示し、動作ボタン４０２によって表すように、それらの削除を可能にする。
【００８７】
図１２において記入動作ボタンの下に示す詳細のセクションにおいて、上述したように、ボタンのラベルを構成すること、又はボタンのエンドユーザへの提示の仕方をカスタマイズすることが可能である。例えば、図示されるチェックボックス４０４ａ及び４０４ｂは、以下の目的のためにボタンのエンドユーザ提示を提供するために選択可能である：
−エンドユーザがリダイレクトされることができるＵＲＬ又は他のネットワークリソース識別子（例えば、Ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ）を特定する「リンク」；及び／又は
−フェーズ変更又はデータ更新をトリガするための、エンドユーザに対して最終確認コマンドを提示する「確認してクリック」ボタン４０４ｂ。
【００８８】
他の複数のコマンドはまた、複数の条件を設定するためのセクション４０５又は複数の更新を実行するためのセクション４０６を用いてアプリケーション開発者によって構成可能である。また、他のタイプの複数のコマンド又は複数の動作を提供することが可能である。例えば、典型的なワークフローにおいて、エンドユーザは、第１のフェーズ（例えば「Ｆ１」）から第２のフェーズ（例えば「Ｆ２」）へのトランジションの受け入れ可能性の確認、又は特定のケースオブジェクト（例えばチケット）のあるフィールドの更新のいずれかのために呼び出され得る。すなわち、まず、セクション４０５に示すように、複数の動的条件に依存する動作可能な複数のボタンを生成することが可能である。例えば、動作ボタンは、（例えば、エンドユーザのプロファイルへのアクセス、及びそのプロファイルが定義された基準を満たすかの判断の参照によって決定される）特定のエンドユーザに対してのみ表示されるように、又はある条件が満たされている者のみに対して表示されるように、構成可能である。図示のように、「条件」セクション４０５は、アプリケーション開発者が、それぞれフィールド、オペレータ、及び値のパラメータのためのドロップダウンリスト及びチェックボックスを用いて達成される複数の条件の構成を用いて、最大で５個の異なる論理的条件を、定義することを可能にする。フィールドパラメータ４０５ａは、図示のように、所望の条件、典型的にはケースオブジェクトのフィールド、に対する特定のオペランドのドロップダウンリスト選択を可能にし、その一方で、オペレータパラメータ４０５ｂは、アプリケーション開発者が、予め決定された要求に対する任意の関連オブジェクトフィールドのコンテンツをテストするために、選択されたフィールド（例えば「ｓｕｂｊｅｃｔ＝ｎｕｌｌ」）上で実行されるべき論理的オペレーションを定義することを可能にする。図示される動作構成ツールダイアログ４００は任意に、任意の所望の方法で、（例えば、複数の論理ＡＮＤ演算子及び／又は論理ＯＲ演算子を組み合わせて）例えば複雑な複数のブール条件の定義を可能にする方法で構造化され、比較、確認、及び他のロジックを実装し、トランジションのために優先する条件として満たされることができることに留意されたい。動作構成ツールダイアログはまた、アプリケーション開発者が、ケースオブジェクトの選択フィールドの更新を命令することを（すなわち、フェーズ変更を単に命令することに加えて）可能にするように構造化される。すなわち、動作構成ツール４００の「更新動作」セクション４０６は、チェックボックス４０６ａを選択することによってひとたび有効にされると、アプリケーション開発者が、ピックリスト又は日付のエントリとしてｎｕｌｌ、ＴＯＤＡＹ等のシステム値を含む、更新のための複数のフィールド及び複数の値を定義することを可能にする。
【００８９】
図１５に戻り、すぐ上に説明したようなトランジションテーブル編集の効果は、以下の方法で第２のコマンド領域５０２における動作ボタンが生成されることである：
−ケースタイプに特有である（すなわち、説明された処理に対して間接的であるように、記録タイプ）；
−チケットの現在のフェーズＦを識別する；及び
−複数のジョイント条件（各条件が満たされることが要求される）、複数のディスジョイント条件（いずれか１つの条件が満たされることが要求される）、又はこれら２つの組み合わせとしての、アプリケーション開発者によって定義された複数の条件の、選択的な実施を可能にして、更新等の任意の関連する複数の動作を定義する。
【００９０】
上述の複数の実施形態により、アプリケーション開発者は、ポインティングメカニズム若しくはクリックメカニズム又は他のユーザ機器のみを用いて、いかなる明確なコーディングの労力を要求することなく、所望のワークフローを構成及び再構成できる。
【００９１】
ひとたび構成が完了すると、「トランジションを格納」ボタン４０７は、アプリケーション開発者が、トランジションマトリクスＴＳにリンクされた方法で、任意の２つのフェーズＦの間の（全ての手動のトランジション定義及び自動のトランジション定義を含む）トランジションテーブルＴＴに対して行われる全ての設定を格納することを可能にする。言い換えると、図示されるトランジションマトリクスＴＳ及び動作構成ツール４００（又は類似のユーザインタフェース）を介して、トランジションテーブルＴＴは、各々の定義された許可されたトランジションＴが自動的に追加され、また反対に、特に提供されないいかなるトランジションも禁止するように構成される。任意のときに、アプリケーション開発者は、クローズオブジェクトボタン４０８を用いて、動作構成ツール４００ダイアログによって提供される構成セッションを終了できる。
【００９２】
例として、一実施形態において、各トランジションＴに対するレコードを生成、削除、又は上書きするためのボタン４０７を選択すると、トランジションテーブルＴＴは自動的に更新される。トランジションオブジェクトＴＯとしてのこのテーブルの例示的なフォーマットは図１６に示される。上述のトランジションマトリクスＴＳと比較して、例えば、トランジションＴに対応するレコードが行に配列される場合、構成された動作パラメータのフィールドは更に列に配列される。このように、トランジションオブジェクトＴＯの各トランジションテーブルＴＴは、各記録タイプに対して１つのテーブルとして、（各々が行で表された）複数のレコードを有することができ、当該複数のレコードの各々は、記録タイプＣＲＴＦ、起点フェーズ及び目的フェーズ（それぞれＯＦ及びＤＦ）、ボタンプロパティＢＰ、関連する条件ＢＣ、及びボタン動作ＢＡを識別するエントリを含む。トランジションオブジェクトＴＯは、任意の所望のワークフロー及び関連付けられた記録タイプに対して、エンドユーザによって経験される又はエンドユーザに利用可能な現在のフェーズ（すなわち、起点フェーズＯＦ）及びトランジションＴに係る、対応する複数のユーザインタフェースコマンドを生成することができるメタデータ構造を表す。例を提供するために、単一のトランジションテーブルＴＴは、図１Ａ及び１Ｂに関連して上に例示したトランジションＴ１２，Ｔ２３，Ｔ２４，Ｔ４２，Ｔ４５，及びＴ３５を含むことができる。代替実施形態において、複数のトランジションは、図１６に示されるインタフェース及び関連付けられたダイアログを用いて、定義可能であることに留意されたい；他の変形実施形態もまた当業者により想到される。
【００９３】
言い換えると、フェーズ管理オブジェクト３００は、トランジションマトリクスＴＳ又はトランジションテーブルＴＴの手段により、又は他の入力手段により、所望のワークフローにおけるエンドユーザの動作を拘束する方法で、複数のトランジションＴＯを定義する方法を提供する。複数のトランジション定義は任意に、複数のレコードのセットとして、各トランジションに対して１つ、構造化可能であり、これらは、簡単に理解される方法で、且つ準備が整った編集（及びワークフローの修正）を提供する方法で、関連付けられた複数の動作及び複数のパラメータを定義する。更に、上述のように、そのような構造は、低いレベルの一貫性検査を実施する、準備が整った手段を提供し、処理及びデータベースのインテグリティを改善する。従って、一実施形態において、あるトランジションに関係する全ての情報は、関連のある複数の手動の動作パラメータを含むオブジェクトのテーブルの各々のレコードに適合可能である。
【００９４】
種々の時点において、複数のトリガは、低いレベルの一貫性検査を含む、更新のときに、自動的な動作を行うように実行可能であることに留意すべきであることを上述した。そのような複数のトリガは、図３において、頭字語ＴＲ１及びＴＲ２によって表される。より具体的に、機能ブロック２５０への入力により見られるように、トリガは、フェーズ定義に関係するテーブル又はレコードが格納される任意のときにおいて、実行可能である；同様に、ワークフローアプリケーションの実行時の間、複数のエンドユーザは（実行時処理２８０を介して）ケース管理オブジェクトにアクセスするため、複数のオブジェクトプロパティの更新はまた、関連のある一貫性検査をトリガするために用いられることができる。これらのオペレーションは一般に図１７〜１９を参照して検討された。
【００９５】
特に、図１７に示すように、第１のトリガＴＲ１は、要求管理オブジェクトが更新され又はアクセスされる任意のときのワークフロー実行時の間、アクティブにされることができ（ブロック８１０）、試みられたトランジションを（起点フェーズと目的フェーズの両方の観点で）許可されたトランジションとして定義するトランジションオブジェクトＴＯにおいて対応するエントリが存在することを、トランジションが試みられたときはいつでも（ブロック８２０）、検査（ベリファイ）するために使用されることができる。この検査（ベリフィケーション）処理は、図１７において、判断ブロック８３０によって表される。完全な一致が発見されない場合、試みられたオペレーションは、拒否可能であり（ブロック８４０）、システムのステータスはワークフロー管理システムによってロールバック可能である（ブロック８５０）。
【００９６】
図１８は、第２のトリガのオペレーション、ＴＲ２を説明する。第２のトリガのオペレーションＴＲ２は、フェーズテーブル又はオブジェクト定義フェーズ、トランジション、又は任意のトランジションパラメータの更新を試みるときに実行される。より具体的に、このトリガは、関連のあるオブジェクト又はテーブルが更新され又はアクセスされる任意のときにアクティブにされることができ（ブロック９１０）、これにより、目的とされるトランジションが適切に定義されたフェーズ説明に、確実に関連付けられることができる。ステップ９２０において、新たに更新され又は定義されたテーブル又はオブジェクトは、任意の、フェーズに関連付けられた（又はトランジションに関連付けられた）パラメータが、変更されているかを判断するために確認される。そのような変更が検出された場合、ワークフロー設計ソフトウェアは、（例えば、トランジションテーブルＴＴから、関連のあるフェーズコード又はトランジションデスクリプタを検索することによって）目的フェーズを検索して、フィールドに適用されるべき適切な説明を発見する。次いで、ステップ９４０において、更新されたフェーズ説明は、ケースオブジェクトのために格納される。このトリガは、フェーズコードを検索するルックアップテーブルを探索してフィールドに適用されるべき適切な説明を発見することによって、要求管理オブジェクト５００におけるフェーズフィールドＣＦが変化するときはいつでも、フェーズ説明の更新を提供する。
【００９７】
図１９は、図３Ｂからのオペレーション２８０の実行に関係するフロー図を提供する。
【００９８】
より具体的には、ステップ１１１０において、システムは、ケースオブジェクトに関連して任意の動作ボタン、コマンド、又はリンクがエンドユーザに提示されるまで、待機状態を保つ。判断ブロックステップ１１２０に示すように、ソフトウェアは、任意のボタン、コマンド、及びリンクが表示されたか、またそうでない場合（１１３０）、フェーズの変更が以前の状態に比較して発生しているかが判断されるループにおいて、動作する。そのようなフェーズの変更が発生した場合、ソフトウェアは、処理サークル８００によって示されるトリガＴＲ１を呼び出す。他方、ソフトウェアがエンドユーザコマンドの提示を検出した場合、ソフトウェアは関連のある入力機器を監視して、ボタン、コマンド、又はリンクのうちの１つを介したユーザコマンドの発行を検出する。これはステップ１１４０によって表される。これが検出された場合、ステップ１１５０において、クリックされたボタン、コマンド、又はリンクによって要求される動作が実行される。ステップ１１６０に示すように、そのとき、現在のフェーズは、目的フェーズの値に更新され、ソフトウェアはトリガＴＲ２に対応する処理サークル９００を実行する。上述のように、ステップ１１５０によって表される動作が、禁止された状態を呼び出した場合、ソフトウェア（図１７参照）は、フェーズを、前から存在する値にロールバックし、又は試みられたトランジションが発生するのを抑止する。
【００９９】
上述のように、上で検討された複数の実施形態は、以下の拡張又はオブジェクト／ワークフロー管理プロパティのうちの１つ又は複数を提供する：
−例えば要求管理オブジェクト５００の一部であることができる又は要求管理オブジェクト５００に追加されることができるフェーズフィールドＣＦ及びフェーズ説明フィールド；
−許可された複数のトランジション、複数の動作タイプ（例えば、自動及び手動のトランジション定義）、及び任意の関連付けられた複数の条件又は複数の動作を定義及び格納するためのカスタムオブジェクト；
−複数のフェーズ説明を保持するためのカスタムオブジェクト（フェーズテーブルＴＦに関連付けられたタブ３０１ｄ）；
−チケット又はレコードケース更新のフェーズ適合性を確認するための第１のトリガＴＲ１；
−フェーズを自動的にデコードするための第２のトリガＴＲ２（フェーズコードＦＣ及びフェーズ説明ＦＤ）；及び
−メタデータセットによって定義された複数のコマンドを表示するための要求管理オブジェクト５００（例えば、コマンド領域５０２）のカスタムセクション。一実施形態において、このカスタムセクションは任意に、Ｖｉｓｕａｌ  ｆｏｒｃｅコンポーネント／ページとして実装可能である。
【０１００】
他の実装は、疑いなく、これらの拡張を用いることなく当業者により想到される。
【０１０１】
上述の説明において、特定の詳細は、選択された複数の実施形態の十分な理解を提供するために説明された。いくつかの例において、用語及び記号は、それらの実施形態の実施に必須ではない特定の詳細を意味し得る。用語「例示的な」及び「実施形態」は、選択又は要求ではなく、例を表すために用いられる。いくつかの例において、よく知られた材料又は方法は、提示の実施形態を曖昧にすることを避けるために、詳細に説明されていない。
【０１０２】
一般的に、本明細書において検討される複数の処理又は複数の方法のいずれも、非一時的機械読み込み可能媒体上に格納される命令の形式で、例えばソフトウェアとして、実施可能である。「非一時的機械読み込み可能媒体」は、当該媒体上にデータがどのように格納されるかに関わりなく、任意の具体的な（すなわち、物理的な）記憶媒体を意味し、当該記憶媒体は、限定することなく、ランダムアクセスメモリ、ハードディスクメモリ、光ディスク、フロッピー（登録商標）ディスク、ＤＶＤ又はＣＤ、サーバストレージ、揮発性メモリ、及び命令が機械によって後に読み込まれることができる他の具体的なメカニズムを含む。機械読み込み可能な媒体は、スタンドアロンの形式で（例えば、プログラムディスク）あることができ、又はより大きなメカニズムの一部として、例えばラップトップコンピュータ、携帯型機器、サーバ、ネットワーク、プリンタ、又は１つ又は複数の機器の他のセットとして、実施可能である。命令は、種々のフォーマットで実装可能であり、例えば、呼び出されたときに、特定の動作を呼び出す効果を発揮するメタデータ、Ｊａｖａ（登録商標）コード又はスクリプト、特定のプログラミング言語で（例えばＣ＋＋コード、「Ｊａｖａ（登録商標）」、「ＪａｖａＳｃｒｉｐｔ（登録商標）」、「ＡｃｔｉｖｅＸ」、「ＶＢＳｃｒｉｐｔ」、「Ａｐｅｘ」、又は他の言語で）記述されたコード、若しくはプロセッサ特有の命令セットとして、又は他の形式で、実装可能である。命令はまた、実施形態に依存して、同一のプロセッサ、又は異なるプロセッサによって実行可能である。例えば、一実施例において、非一時的機械読み込み可能媒体上の命令は、単一のコンピュータによって実行可能であり、また他の場合において、上述のように、分配ベースで、例えば１つ又は複数のサーバ、ウェブクライアント、又はアプリケーション特有の機器を用いて、格納及び／又は実行されることができる。そのような複数の命令又はそれらの一部はまた、ソフトウェアソースから、伝送媒体を介して、例えばインターネットを介して伝送又はダウンロード可能であり、又はよく知られているように他のサーバから伝送又はダウンロード可能であり、又はよく知られているように任意の通信媒体及びプロトコル（例えば、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰｓ、イーサネット（登録商標）等）を用いて、よく知られているように任意の他の従来のネットワーク接続（例えば、エクストラネット、ＶＰＮ、ＬＡＮ、等）を介して伝送可能である。
【０１０３】
本明細書において示された複数の実施形態は、開示の広範な精神と範囲から逸脱することなく、種々の修正及び変更が行われることができる。例えば、複数の実施形態のうちのいくつかの特徴又は態様は任意に、複数の実施形態の任意の他のいくつかの組み合わせに適用されることができ、又はその対応する特徴又は態様を置き換えて適用できる。従って、明細書及び図面は、限定的意味ではなくむしろ例示的なものとしてみなされるべきである。
【図１Ａ】
0006487282.tif 000002
【図１Ｂ】
0006487282.tif 000003
【図２】
0006487282.tif 000004
【図３Ａ】
0006487282.tif 000005
【図３Ｂ】
0006487282.tif 000006
【図４】
0006487282.tif 000007
【図５】
0006487282.tif 000008
【図６】
0006487282.tif 000009
【図７】
0006487282.tif 000010
【図８】
0006487282.tif 000011
【図９】
0006487282.tif 000012
【図１０】
0006487282.tif 000013
【図１１】
0006487282.tif 000014
【図１２】
0006487282.tif 000015
【図１３】
0006487282.tif 000016
【図１４】
0006487282.tif 000017
【図１５】
0006487282.tif 000018
【図１６】
0006487282.tif 000019
【図１７】
0006487282.tif 000020
【図１８】
0006487282.tif 000021
【図１９】
0006487282.tif 000022