IBM FileNet P8, バージョン 5.2.1            

サブスクリプション

サブスクリプションとは、Content Engine の中核となる機能を拡張するユーザー実装のサーバー・サイド・コンポーネントを開始するデバイスのことです。サブスクリプションは、1 つ以上のイベント、そのイベントが起動される、ターゲットの Content Engine オブジェクト、およびイベント・アクションで定義されます。ターゲット・オブジェクトでイベントが起動されると、イベント・アクションが実行されます。例えば、「Code Module」クラス (ターゲット・オブジェクト) のドキュメントが作成された (起動イベント) ときに E メール (イベント・アクション) で通知するサブスクリプションを定義できます。

サブスクリプション・コードの例については、「サブスクリプションの操作」を参照してください。Administration Console for Content Platform Engineで実装されるサブスクリプションについては、イベントのサブスクリプション (Subscribing to events) を参照してください。

サブスクリプションのセットアップ要件

サブスクリプションは、InstanceSubscriptionClassSubscription (一般的なサブスクリプション用)、および InstanceWorkflowSubscriptionClassWorkflowSubscription (ワークフロー関連のサブスクリプション用) の基本クラスである Subscription クラスで表されます。ワークフロー関連のサブスクリプションは、特定のオブジェクト、または特定のクラスの任意のオブジェクトで起動されるイベントに応答してワークフローおよびイベント・アクションを開始します。

開始するには、Factory メソッドを使用して、Subscription から派生するサブクラスのインスタンスを作成します。(Subscription 基本オブジェクトは作成できません。1 つだけ取得できます。) サブスクリプション・オブジェクトを作成したら、以下に示す主要なプロパティーを定義します。

  • サブスクリプションを識別する表示名 (DisplayName プロパティー)。
  • サブスクリプションのターゲット・オブジェクト (SubscriptionTarget プロパティー)。 ターゲット・オブジェクトには、任意の Subscribable サブクラスのインスタンスを指定できます。作成したサブスクリプション・オブジェクトのタイプ (インスタンスまたはクラス) により、ターゲット・オブジェクトのタイプが、特定のオブジェクト・インスタンスと特定のクラスの任意のオブジェクトのいずれになるかが決まります。概要の説明で挙げた E メール通知の例は、クラス・サブスクリプションです。これは、ターゲット・オブジェクトがクラスであり、クラス内の特定のオブジェクト・インスタンスではないためです。
  • イベント・アクションを開始する起動済みイベント (SubscribedEvents プロパティー)。これらのイベントはシステム・イベントでもカスタム・イベントでもかまいません。E メール通知の例では、サブスクリプション付きイベントは CreationEvent です。「サブスクリプション付きイベント」を参照してください。
  • サブスクライブ済みイベントが発生したときに実行されるアクションを表すイベント・アクション・オブジェクト (EventAction プロパティー)。イベント・アクションは、JavaScript コンポーネントまたは Java™ コンポーネントとして実装できます。E メール通知の例では、イベント・アクションは E メール通知を生成するハンドラーです。「イベント・アクション」を参照してください。

必須プロパティーに加えて、サブスクリプション・プロパティーは以下の情報を指定します。

  • 特定のサブスクリプションのイベント・ハンドラー・コードを同期または非同期のどちらで実行するか。コードを非同期で実行すると、QueueItem テーブルで待機中のその他の非同期操作の後にイベントが挿入され、リソースが使用できるようになったときにイベントが実行されます。また、非同期イベントは失敗すると再試行されますが、同期イベントは失敗しても再試行されません。
  • サブスクリプションを有効にするかどうか。
  • イベント要求をキューに追加するかどうかを判別するために、ターゲット・オブジェクトで Content Engine サーバーが (メモリー内で) 評価するオプションのフィルター式。
  • フィルター式を適用するターゲット・オブジェクトのオブジェクト値プロパティーのシンボル名 (フィルター式はターゲット・オブジェクト自体には適用しない)。
  • (クラス・サブスクリプションの場合) サブスクリプションをターゲット・クラスのすべてのサブクラスに適用するかどうか。

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

サブスクリプション付きイベント

サブスクリプションを作成するとき、その SubscribedEvents プロパティーを 1 つ以上のシステム・イベントおよびカスタム・イベントのコレクションに設定します。これらのイベントのいずれかがサブスクリプションのターゲット・オブジェクト上で発生すると、Content Engine により、そのサブスクリプションのイベント・アクションが実行されます。例えば、FileEvent オブジェクトにサブスクライブすると、包含可能オブジェクトのフォルダーへのファイリング、またはサブフォルダーの作成により、イベント・アクションが実行されます。

サブスクライブできるシステム・イベントは、ObjectChangeEvent インターフェースから派生します。また、RetrievalEvent インターフェースから派生する GetContentEvent もサブスクライブできます。 Content Engine のシステム・イベントによってまだ表されていないイベントが必要な場合は、カスタム・イベントを作成できます。カスタム・イベントは、Subscribable クラスのサブクラスに適用され、このクラスの RaiseEvent メソッドを呼び出すことで起動されます。例えば、カスタム・イベント・クラスを作成し、次に、インスタンス化したカスタム・イベント・オブジェクトをサブスクリプションの SubscribedEvents プロパティーに設定できます。カスタム・イベントを起動するには、サブスクリプションのターゲット・オブジェクトである Subscribable オブジェクトでそのイベントを開始します。それによって、サブスクリプションのイベント・アクションが開始します。

サブスクライブできるシステム・イベントおよびカスタム・イベントは、監査もできます。詳細については、サブスクライブ可能イベントと監査可能イベントを参照してください。

イベント・アクション

イベント・アクションとは、Content Engine の機能を拡張するために実装され、サブスクリプションを使用して実行されるコード・プロシージャーのことです。イベント・アクションは、ドキュメントをパブリッシュまたは再パブリッシュするときにも開始できます。イベント・アクションには、以下に示すようにさまざまなユース・ケースあります。

  • 通知/通信: 特定のイベントおよびソース・オブジェクト向けに調整した E メール・メッセージを生成するイベント・ハンドラーを作成し、そのメッセージを該当するユーザーに送信できます。
  • ログ記録/カウント: さまざまな種類の Content Engine のオブジェクトおよびイベントの使用頻度を追跡するために、イベントに関する詳細なレコードを生成し、イベント・カウンターの値を増分し、データベースまたはファイルに情報を書き込むイベント・ハンドラーを作成できます。
  • フィルタリング: ドキュメントのライフ・サイクル・プロセスまたはワークフロー・プロセスのような一部の複雑なプロセスでは、ドキュメントまたはそのコンテンツをシステムが受け付けるようにするために、それらに対する詳細なフィルタリングが必要になる場合があります。イベント・ハンドラーを作成して、特定のドキュメント入力を拒否し、トランザクションを停止またはロールバックできます。

Content Engine EventActionHandler インターフェースまたは RetrievalEventActionHandler インターフェースに基づいて、イベント・アクションを JavaScript または Java コンポーネントとして実装します。Java で実装されたハンドラーの場合、そのクラスを JAR ファイルにパッケージ化できます。次に、クラス・ファイルまたは JAR ファイルを、CodeModule オブジェクトとして Content Engine のオブジェクト・ストアにチェックインできます。別の方法として、Content Engine が実行されたアプリケーション・サーバーのクラスパスで Java イベント・ハンドラーを指定できます。ハンドラーは、Content Engine をホストするアプリケーション・サーバー上で実行されます。Content Engine は、同期的または非同期的なイベント・ハンドラーの実行中にセキュリティー・アクセス・チェックを明示的に無効にします。

実装されたイベント・アクション・ハンドラーを、サブスクリプション、あるいはパブリッシュ操作または再パブリッシュ操作で使用できるようにするには、EventAction オブジェクトを使用します。EventAction オブジェクトを作成および取得することも、そのプロパティーとアクセス権限を設定および取得することもできます。イベント・アクション・ハンドラーを EventAction オブジェクトに関連付けるには、EventAction オブジェクトの ProgId プロパティーを設定します。これにより、JavaScript コンポーネントまたは Java コンポーネントがハンドラーとして識別されます。Java イベント・ハンドラーをオブジェクト・ストアにチェックインする場合は、EventAction の CodeModule プロパティーも設定する必要があります。次に、サブスクリプション・オブジェクトの EventAction プロパティーを EventAction オブジェクトに設定します。パブリッシュ操作または再パブリッシュ操作の場合は、イベント・アクションの名前または ID を指定します。

1 つのオブジェクトで 2 つのイベント・アクションを開始するために、サブスクリプションと、パブリッシュまたは再パブリッシュの操作の両方を使用できます。すなわち、パブリッシュ可能なオブジェクトでは、PublishRequestEvent または PublishCompleteEvent にサブスクライブして最初のイベント・アクションを開始し、そのオブジェクトで publish メソッドまたは republish メソッドを使用して 2 番目のイベント・アクションを起動させることができます。このシナリオでは、サブスクリプション・メカニズムに設定されたイベント・アクションがまず開始され、publish メソッドまたは republish メソッドに指定されたイベント・アクションが 2 番目に開始します (最初のイベント・アクションで例外がスローされなかった場合)。

イベント・アクション・ハンドラーの実装およびイベント・アクション・オブジェクトの作成に関するコード例については、「サブスクリプションの操作」を参照してください。実装とデプロイメントの詳細については、アクション・ハンドラーを参照してください。



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

© Copyright IBM Corp. 2015.