IBM FileNet P8, バージョン 5.2.1            

ライフ・サイクル・ポリシー

ドキュメント・ライフ・サイクル・ポリシーとは、ドキュメントの「存続期間」を、経過するドキュメントのフェーズまたは状態を使用して定義するオブジェクトです。状態はユーザー定義であり、状態が別の状態に移行すると、ライフ・サイクル関連システム・イベントが発生します。イベントは、ライフ・サイクル・アクション (ユーザー実装のサーバー・サイド・コンポーネント) により処理されます。 例えば、ローン申請ドキュメントの 5 つの状態 (申請、承認、融資、返済中、完了) を定義するライフ・サイクル・ポリシーを作成できます。 ポリシーでは、ライフ・サイクル・アクションも定義できます。ユーザーがローン申請の状態を変更するたびに、ライフ・サイクル・アクションが開始され、申請の新しい状態に基づいて何らかの操作を実行します。

ポリシーを実際に利用するには、ドキュメント・ライフ・サイクル・ポリシーをドキュメントに割り当てる必要があります。この場合、個々の Document オブジェクトに割り当てるか、または Document クラスまたはそのサブクラスに割り当てます。ドキュメントまたはクラスには、ライフ・サイクル・ポリシーを 1 つだけ関連付けることができます。 Document オブジェクトには、オブジェクトの状態を変更する changeState メソッドと、オブジェクトの現行状態を取得する CurrentState プロパティーがあります。

ライフ・サイクル・ポリシーに関連付けられているクラス・タイプの Document オブジェクトを作成すると、ポリシーが新規ドキュメントに自動的に割り当てられます。クラスにより割り当てられたライフ・サイクル・ポリシーをオーバーライドするには、ドキュメントの作成時に別のライフ・サイクル・ポリシーを指定する必要があります。

注: Document オブジェクトの場合、ドキュメント・ライフ・サイクル・ポリシーを割り当てることができるのは、Document オブジェクトの作成時のみです。ドキュメント・ライフ・サイクル・ポリシーを使用して、既存の Document オブジェクトを更新することはできません。

ドキュメント・ライフ・サイクル・ポリシーを作成および取得することができます。 ドキュメント・ライフ・サイクル・ポリシーのサンプル・コードについては、「ライフ・サイクル関連オブジェクトの操作」を参照してください。

ライフ・サイクル・ポリシーのセットアップの要件

ドキュメント・ライフ・サイクル・ポリシーは DocumentLifecyclePolicy クラスにより表されます。Factory.DocumentLifecylePolicycreateInstance メソッドを使用してオブジェクトをインスタンス化してから、次の主要プロパティーを設定します。

  • ライフ・サイクル・ポリシーを識別する表示名 (DisplayName プロパティー)。
  • ドキュメントが移行できるユーザー定義の状態のリスト (DocumentStates プロパティー)。「ドキュメントの状態」を参照してください。
  • ドキュメントの状態が変化した時点で実行されるアクションを表すライフ・サイクル・アクション・オブジェクト (DocumentLifecycleAction プロパティー)。 「ライフ・サイクル・アクション」を参照してください。

また、以下の事項を指定するライフ・サイクル・ポリシー・プロパティーも設定できます。

  • ライフ・サイクル・ポリシーがオブジェクトに適用されるときに、ドキュメントで直接アクセス制御項目 (ACE) を保持するかどうか (PreserveDirectPermissions プロパティー)。 ドキュメントの追加の状態依存セキュリティーを定義するには、1 つ以上の DocumentState オブジェクトで TemplatePermissions プロパティーを設定します。 ドキュメントの状態が、権限が適用された状態に移行すると、この状態により定義された権限がドキュメントに適用されます。 したがって、PreserveDirectPermissions プロパティーが FALSE に設定した場合、ドキュメントの直接権限は実際には無視されます。

    PreserveDirectPermissions プロパティーの設定を含むサンプル・コードについては、「DocumentLifecyclePolicy オブジェクトの作成」を参照してください。権限の設定に関する一般情報については、「セキュリティーの操作」を参照してください。

  • 新しいバージョンのチェックイン時にドキュメントのライフ・サイクル状態を初期状態にリセットするか、またはドキュメントのバージョンが更新されたときにドキュメントのライフ・サイクル状態を維持するかどうか (ResetLifecycleOnCheckin プロパティー)。

詳細については、DocumentLifecyclePolicy プロパティーを参照してください。

ドキュメントの状態

ドキュメントの状態とは、特定の時点でのドキュメントの状況です。一般に、状態が設定されたドキュメントは、ドキュメントがすべての状態を通過するまで、すなわちライフ・サイクルが完了するまで、ドキュメントを特定の状態にする複数のユーザー間で共同で使用されます。 たとえばローン申請ドキュメントの場合、「申請」、「承認」、「融資」、「返済中」、「完了」という状態をすべて通過すると、ライフ・サイクルが完了します。ドキュメントの状態はユーザー定義であり、直線的に移行します。ドキュメントは次の状態に進むか (昇格)、または直前の状態に戻ります (降格)。

ドキュメントの状態は DocumentState オブジェクトにより表されます。このオブジェクトには、ドキュメントの状態の名前を指定するプロパティーや、状態が降格可能であるかどうかを示すプロパティーが含まれています。また、ドキュメントに権限を設定する TemplatePermissions プロパティーも含まれています。つまり、権限が定義された状態にドキュメントが移行すると、権限がドキュメントに適用されます。 DocumentState オブジェクトは、 DocumentStateList オブジェクトに追加されます。DocumentStateList オブジェクトは、 DocumentLifecyclePolicy の DocumentStates プロパティーで設定されます。

ドキュメントの状態を移行するには、Document オブジェクトで changeState メソッドを呼び出します。このメソッドは、ドキュメントに適用する状態を指定する LifecycleChangeFlags 定数をとります。次の状態への昇格、前の状態への降格、初期状態へのリセットの他に、ドキュメントの状態を例外状態に変更することもできます。エラー条件を示すかまたは状態変更を阻止する場合に、例外状態に変更します。例外状態をクリアすると、ドキュメントは例外を設定した時点の状態になります。

状態変更はトランザクションに基づいている点に注意してください。変更アクションが失敗すると、ドキュメントは changeState 呼び出し前の状態のままになります。

ライフ・サイクル・アクション

ライフ・サイクル・アクションにより、ライフ・サイクル・ポリシーが割り当てられているドキュメントの状態変更が処理されます。DocumentLifecycleAction オブジェクトで表されるライフ・サイクル・アクションには、ユーザー実装ライフ・サイクル・アクション・ハンドラーを指し示すプロパティーが含まれています。このライフ・サイクル・アクション・ハンドラーは、ドキュメントの状態変更に応答して実行されます。ライフ・サイクル・アクション・ハンドラーは、Content Engine で同期的に実行されます。

ライフ・サイクル・アクション・ハンドラーを作成するには、Content Engine Java™ API の DocumentLifecycleActionHandler インターフェースを実装します。これは、JavaScript コンポーネントまたは Java コンポーネントとして実装できます。 JAR ファイルに Java クラスをパッケージ化でき、クラスまたは JARファイルを、CodeModule オブジェクトとして Content Engine オブジェクト・ストアにチェックインできます。別の方法として、Content Engine を実行中のアプリケーション・サーバーのクラスパスに、Java で実装されたハンドラーを指定することもできます。

実装済みの JavaScript または Java ライフ・サイクル・アクション・ハンドラーを識別するために、DocumentLifecycleAction オブジェクトの ProgId プロパティーを設定します。 Java で実装されたハンドラーをオブジェクト・ストアにチェックインした場合は、DocumentLifecycleAction オブジェクトの CodeModule プロパティーも設定する必要があります。 ライフ・サイクル・アクション・ハンドラーの実装とライフ・サイクル・アクション・オブジェクトの作成のサンプル・コードについては、「ライフ・サイクル関連オブジェクトの操作」を参照してください。実装とデプロイメントの詳細については、アクション・ハンドラーを参照してください。

DocumentLifecycleAction オブジェクトにライフ・サイクル・ポリシーを関連付けるには、ポリシーの DocumentLifecycleAction プロパティーを設定します。ポリシーに指定できる DocumentLifecycleAction オブジェクトは 1 つのみです。ただし、DocumentLifecycleAction オブジェクトは複数の DocumentLifecyclePolicy オブジェクトに含めることができます。 これは、複数のドキュメント・ライフ・サイクル・ポリシーを処理するように 1 つのライフ・サイクル・アクション・ハンドラーをコーディングする場合などに該当します。

DocumentLifecycleAction プロパティーの設定は必須ではない点に注意してください。ドキュメント・ライフ・サイクル・アクションを使用せずにライフ・サイクル・ポリシーを作成することもできます。状態変更の処理にドキュメント・ライフ・サイクル・アクションを使用する代わりに、ChangeStateEvent オブジェクトによりトリガーされるイベント・アクションを使用することができます。ドキュメントの状態が変わる前の Document オブジェクトが必要である場合を除き、一般に、イベント・アクションを使用するメリットはありません。 イベント・オブジェクトが受け渡されるイベント・アクション・ハンドラーを使用することで、ChangeStateEvent オブジェクトの OriginalObject プロパティーを使用してイベント遷移前の Document オブジェクトを取得できます。 ライフ・サイクル・アクション・ハンドラーではこの取得操作は実行できません。

また、1 つのドキュメント、Document クラス、またはサブクラスに対してライフ・サイクル・アクションとイベント・アクションの両方を使用できます。イベント・アクションを組み込む場合は、ChangeStateEvent オブジェクト、およびライフ・サイクル・ポリシーが割り当てられるドキュメントとともに、そのイベント・アクションを参照するサブスクリプションを作成する必要があります。



最終更新日: 2015 年 10 月
lifecycle_concepts.htm

© Copyright IBM Corp. 2015.