ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

47 WebCenter Sitesでのアセット・イベントおよびパブリッシュ・イベント

WebCenter Sitesのイベント・フレームワークによって、開発者は、WebCenter Sites内の特定のイベントに対して実行するカスタム・ビジネス・ロジックを記述できます。カスタム・ビジネス・ロジックは、事前定義済のインタフェースを実装するクラスパスに、Javaクラスの形式で実装する必要があります。このチュートリアルでは、リスナーの作成手順について説明します。

この章では、イベント・リスナーの作成手順について説明します。この章は、次の項で構成されています。

47.1 イベントのタイプ

WebCenter Sitesでは現在、アセット・イベントおよびパブリッシュ・イベントの2つのイベント・タイプがサポートされています。

47.2 アセット・イベント

この項の内容は、次のとおりです。

47.2.1 アセット・イベント・リスナーの記述

アセット・リスナーでは、AssetEventListenerを拡張して、アセットの変更が通知されるようにする必要があります。WebCenter Sitesには、AbstractAssetEventListenerという便利なベース・クラスが用意されています。このクラスから拡張することで、イベントにつながる特定タイプのアクション(追加/変更/削除)が認識しやすくなります。

次のサンプル・コードでは、カスタム・アセット・リスナーを実装しています。アセットIDを出力しているだけですが、カスタム・ビジネス・ロジックをプラグインする方法を簡単に理解できます。

package com.mycompany
public final class CustomAssetEventListener extends AbstractAssetEventListener
{
    public void assetAdded(AssetId id)
    {
        System.out.println("Asset " + id + " added");
    }
    public void assetUpdated(AssetId id)
    {
        System.out.println("Asset " + id + " added");
    }
    public void assetDeleted(AssetId id)
    {
        System.out.println("Asset " + id + " added");
    }
}

アセット・イベント・リスナーはアセット操作の発生後に起動され、データのコミット前には起動されません。

47.2.2 アセット・イベント・リスナーの登録


注意:

WebCenter Sitesは、検索の索引付けに使用する標準リスナーを実装した状態で出荷されます。変更または削除は行わないでください。


アセット・イベント・リスナーは、AssetListener_regデータベース表に登録されます。テーブルの構造は次のとおりです。

表47-1 AssetListener_regデータベース表

ID (整数) 行の一意のID

listener(String)

AssetEventListenerを実装する完全修飾されたクラス名。たとえば、com.mycompany.CustomAssetEventListenerなどです。

blocking(YまたはN)

'Yは、リスナーがブロッキング状態であることを示します(イベントを生成したスレッドと同時に実行されます)。

'Nは、リスナーがブロッキング状態でないことを示します(別のスレッドで実行されます)。


47.3 パブリッシュ・イベント

この項の内容は、次のとおりです。

47.3.1 パブリッシュ・イベント・リスナーの記述

パブリッシュ・リスナーはPublishingEventListenerを実装する必要があります。リスナーに渡されるPublishingEventは、起動の要因となった特定のイベントを示します。

次の例は、pubsession IDをコンソールに出力するカスタム実装を示しています。

package com.mycompany;
public class CustomPublishingEventListener implements PublishingEventListener
{
    public void onEvent( PublishingEvent event ) throws EventException
    {
        System.out.println( "Publishing event fired for     pubsession: " + event.getPubSessionId());
        System.out.println( "Publishing task : " + event.getTaskName());
        System.out.println( "Status of the task :  " + event.getStatus());
        System.out.println( "Message associated with the task : " + event.getMessage() );
    }
}

パブリッシュは複数のタスク(データ収集、パッケージ化、転送など)で構成され、それぞれがイベントを生成します。PublishingEventクラスは、パブリッシュ・タスクのイベントを表します。実装では、前述のようにイベントからタスクおよびそのステータスを問い合せることができます。

次の状態になった場合に、各タスクでイベントが生成されます。

  • STARTED

  • DONE

  • CANCELLED

  • SUBTASK_FINISHED

  • FAILED

47.3.2 パブリッシュ・イベント・リスナーの登録

パブリッシュ・イベント・リスナーは、FW_PublishingEventRegistryデータベース表に登録されます。テーブルの構造は次のとおりです。

表47-2 FW_PublishingEventRegistryデータベース表

ID (整数) 行の一意のID

listener(String)

AssetEventListenerを実装する完全修飾されたクラス名。たとえば、com.mycompany.CustomPublishingEventListenerなどです。

blocking(YまたはN)

'Yは、リスナーがブロッキング状態であることを示します(イベントを生成したスレッドと同時に実行されます)。

'Nは、リスナーがブロッキング状態でないことを示します(別のスレッドで実行されます)。