ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Portal開発者ガイド
11gリリース1 (11.1.1)
B61384-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

12 ポータルの拡張

この章では、Oracle Portal付属のAPIを使用してポータルを拡張する方法について説明します。内容は、次のとおりです。

詳細はOTN

これらのAPIの詳細は、Portal Centerの『Oracle Portal PL/SQL API Reference』を参照してください。

http://portalcenter.oracle.com

「Portal Focus Areas」セクションで「Portlet Development」をクリックし、次に、「APIs and References」セクションで「PL/SQL API Reference」をクリックします。


ヒント:

Webブラウザまたは外部アプリケーションからAPIをコールする場合、最初にセッション・コンテキストを設定する必要があります。詳細は、10.1項「セッション・コンテキストの設定」を参照してください。


12.1 ページ・グループの作成

新しいページ・グループを作成するには、例12-1に示すように、add_content_area APIを使用します。

例12-1 ページ・グループの作成(add_content_area API)

declare
  l_new_page_group_id number;
begin
  -- Create the page group.
  l_new_page_group_id := wwsbr_api.add_content_area(
    p_name             => 'ENTERTAINMENT',
    p_display_name     => 'Entertainment Page Group',
    p_versioning       => wwsbr_api.VERSIONING_AUDIT,
    p_default_language => 'us'
  );
  -- process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

12.2 ページの作成

新しいページを作成する場合は、add_folder APIを使用します。デフォルトでは、新しいページには、ページ・グループのデフォルトのナビゲーション・ページが含まれるポートレット・リージョンとアイテム・リージョンの2つのリージョンがあります。つまり、Oracle Portalユーザー・インタフェースを使用せずにプログラムで作成されたページは、レイアウトが大幅に制限される場合があります。

ただし、希望のレイアウトを持ったPortalテンプレートに基づいて新しいページの親ページを作成することで、より高度なレイアウトを持ったページをプログラムで作成できます。これにより、親ページのプロパティを自動的にコピーするようにページ・グループを構成する場合、新しいページでは親ページと同じテンプレートが使用されるようになります。この方法によって、ページに必要なレイアウトをすべて設定できます。

このAPIで、JSPページまたはナビゲーション・ページを作成することはできません。このタイプのページを作成するには、Oracle Portalの「ページの作成」ウィザードを使用します。

ページのベースとなるページ・タイプのページ・プロパティにデフォルト値が設定されている場合、このデフォルト値は、APIにより設定される値にすべてオーバーライドされます。

新しいページの権限を定義するには、WWSEC_APIパッケージのAPIを使用します(例12-2)。詳細は、15.2項「ページ・レベルの権限の設定」を参照してください。

例12-2 ページの作成(add_folder API)

declare
  l_new_page_id       number;
  l_caid              number := 33;
begin
  -- create the page.
  l_new_page_id := wwsbr_api.add_folder(
    p_caid             => l_caid,
    p_name             => 'ENTERTAINMENT',
    p_display_name     => 'Entertainment Page',
    p_type_id          => wwsbr_api.FOLDER_TYPE_CONTAINER,
    p_type_caid        => wwsbr_api.SHARED_OBJECTS,
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

12.3 カテゴリおよびパースペクティブの作成

ポータルがすでに非常に細かく分類されている場合、Oracle Portalユーザー・インタフェースを使用しないで、プログラムで設定する方が効率的です。

add_category APIを使用して、新しいカテゴリを作成します(例12-3)。add_perspective APIを使用して、新しいパースペクティブを作成します(例12-4)。カテゴリまたはパースペクティブを作成するには、ページ・グループに対して「クラスの管理」以上の権限を持っている必要があります。

例12-3 カテゴリの作成(add_category API)

declare
  l_new_category_id number;
  l_caid            number := 33;
begin
  l_new_category_id := wwsbr_api.add_category(
    p_caid         => l_caid,
    p_parent_id    => 0,
    p_name         => 'newcategory1',
    p_display_name => 'New Category 1'
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

例12-4 パースペクティブの作成(add_perspective API)

declare
  l_new_perspective_id number;
  l_caid               number := 33;
begin
  l_new_perspective_id := wwsbr_api.add_perspective(
    p_caid         => 33,
    p_parent_id    => 0,
    p_name         => 'newperspective1',
    p_display_name => 'New Perspective 1'
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

12.4 アイテムの作成

ページにアイテムを作成するには、add_item APIを使用します(例12-5)。

このAPIは、アイテムのマスターIDを返します。これは、アイテムの一意のIDではありません。作成後にアイテムIDを検索するには、例10-7で示したように、WWSBR_ALL_ITEMSビューを問い合せます。アイテムの一意のIDとマスター・アイテムIDの差異の詳細は、10.2項「APIパラメータ」を参照してください。

例12-5 テキスト・アイテムの作成(add_item API)

declare
  l_new_item_master_id number;
begin
  l_new_item_master_id := wwsbr_api.add_item(
    p_caid              => 33,
    p_folder_id         => 13923,
    p_display_name      => 'Movie Review',
    p_type_id           => wwsbr_api.ITEM_TYPE_TEXT,
    p_type_caid         => wwsbr_api.SHARED_OBEJCTS,
    p_region_id         => 5,
    p_text              => 'This is the text of the review.',
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

ファイル・アイテムの作成

オブジェクトが1つ以上のファイル(イメージやファイル・アイテムなど)に関連付けられている場合、そのAPIを使用して、オブジェクトの作成または変更時にこれらのファイルをアップロードできます。これらのAPIのファイルおよびイメージ・パラメータに、ディレクトリ・パスおよびファイル名で構成されるファイルの場所を渡すことができます。ファイルを格納するディレクトリはデータベースから見える(データベース・サーバーに対してローカルである)必要があり、ファイル自体が適切な権限を持っている必要があります。ファイルのアップロード時のAPIコールで予期しない例外が発生した場合は、ディレクトリの権限とファイルの権限を両方チェックしてください。

アップロードするファイルが、Oracle Portalがインストールされているデータベースと同じサーバー上にある場合は、アイテムの作成または更新時にこのファイルをアップロードできます。例12-6は、この方法を示します。

例12-6 ファイル・アイテムの作成(add_item API)

declare
  l_item_masterthing_id number;
begin
  -- Add an item that resides on the same server as the OracleAS Portal
  -- content repository database.
  l_item_masterthing_id := wwsbr_api.add_item(
    p_caid          => 53,  -- A known page group ID.
    p_folder_id     => 1,   -- A known page ID.
    p_display_name  => 'My File',
    p_type_id       => wwsbr_api.ITEM_TYPE_FILE,
    p_type_caid     => wwsbr_api.SHARED_OBJECTS,
    p_region_id     => 513, -- A known region on the page.
    p_description   => 'Description of my file',
    p_file_filename => '/tmp/myfile.txt'
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

このファイルがOracle Portalがインストールされているデータベースと同じサーバー上にない場合、最初にupload_blob APIを使用してファイルをコンテンツ・リポジトリ・ドキュメント表にロードする必要があります(例12-7)。upload_blob APIは、一意のドキュメント名を返します。add_item_post_upload APIを使用して、返されたドキュメント名によって示されるファイルを要求する新しいアイテムを作成します。


注意:

コール元のアプリケーションは、BLOBを宣言し、データベースのBLOBのデータ型と互換性のあるオブジェクトにこのBLOBを割り当てる必要があります(Oracle Databaseのドキュメント・セットにある『Oracle Databaseアプリケーション開発者ガイド-ラージ・オブジェクト』を参照してください)。この後で、BLOBをupload_blob APIのp_blobパラメータに渡すことができます。


例12-7 コンテンツ・リポジトリへのファイルのアップロード、およびアップロード済ファイルを使用したファイル・アイテムの作成(upload_blob APIおよびadd_item_post_upload API)

declare
  l_blob                blob;
  l_blob_filename       varchar2(250);
  l_mime_type           varchar2(100) := 'text/html';
  l_doc_name            varchar2(500);
  l_display_name        varchar2(250);
  l_region_id           number        := 2013;
  l_file_name           varchar2(100);
  l_image_name          varchar2(100);
  l_site_id             number        := 73;
  l_page_id             number        := 1;
  l_item_type_id        number        := wwsbr_api.ITEM_FILE_TYPE;
  l_item_type_siteid    number        := wwsbr_api.SHARED_OBJECTS;
  l_description         varchar2(1000);
  l_item_masterthing_id number;
begin
  -- Your calling application must define the my_get_blob() function and retrieve
  -- your document into a blob so that it can be uploaded in the subsequent step.
  l_blob := my_get_blob('8001.HTML');
  -- Upload the BLOB to the Oracle Portal document table.
  l_blob_filename := 'index2.html';
  l_doc_name := wwsbr_api.upload_blob(
    p_file_name => l_blob_filename,
    p_blob      => l_blob,
    p_mime_type => l_mime_type
  );
  l_display_name := l_blob_filename;
  l_file_name := l_doc_name;
  l_description := 'File uploaded to portal = ' || l_doc_name;
  -- Use add_item_post_upload() to claim the document and add the item to a page.
  l_item_masterthing_id := wwsbr_api.add_item_post_upload(
    p_caid          => l_site_id,
    p_folder_id     => l_page_id,
    p_display_name  => l_display_name,
    p_file_name     => l_file_name,
    p_type_id       => l_item_type_id,
    p_type_caid     => l_item_type_siteid,
    p_region_id     => l_region_id,
    p_description   => l_description,
    p_display_option => wwsbr_api.FULL_SCREEN
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

upload_blobのパラメータを次に示します。

add_item_post_uploadのパラメータを次に示します。

アップロードしたドキュメントを要求するためのアイテムがすでに作成されている場合、modify_item_post_upload APIを使用します。

12.5 ページおよびアイテムのパースペクティブ属性の設定

ページまたはアイテムを作成する場合、必要に応じて、ページまたはアイテムに適用されるパースペクティブを指定できます。

例12-8は、ページの作成時にページに適用されるパースペクティブを指定する方法を示しています。 例12-9は、アイテムの作成時にアイテムに適用されるパースペクティブを指定する方法を示しています。

例12-8 ページの作成時におけるパースペクティブの指定

declare
  l_new_page_id       number;
  l_perspective_ids   wwsbr_api.g_perspectiveidarray;
  l_perspective_caids wwsbr_api.g_caid_array;
begin
  select id, caid
  bulk collect into l_perspective_ids, l_perspective_caids
  from wwsbr_all_perspectives
  where caid in (l_caid, wwsbr_api.shared_objects);
  l_new_page_id := wwsbr_api.add_folder(
    p_caid             => 33,
    p_name             => 'ENTERTAINMENT',
    p_display_name     => 'Entertainment Page',
    p_type_id          => wwsbr_api.FOLDER_TYPE_CONTAINER,
    p_type_caid        => wwsbr_api.SHARED_OBJECTS,
    p_perspectives     => l_perspective_ids,
    p_perspective_caid => l_perspective_caids
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

例12-9 アイテムの作成時におけるパースペクティブの指定

declare
  l_new_item_master_id number;
  l_perspective_ids    wwsbr_api.g_perspectiveidarray;
  l_perspective_caids  wwsbr_api.g_caid_array;
begin
  -- Select perspectives with the name prefix = 'ENTERTAINMENT'.
  select id, caid
  bulk collect into l_perspective_ids, l_perspective_caids
  from wwsbr_all_perspectives
  where caid in (l_caid, wwsbr_api.shared_objects) and
        display_name like 'ENTERTAINMENT%';
  l_new_item_master_id := wwsbr_api.add_item(
    p_caid              => 33,
    p_folder_id         => 13923,
    p_display_name      => 'Movie Review',
    p_type_id           => wwsbr_api.ITEM_TYPE_TEXT,
    p_type_caid         => wwsbr_api.SHARED_OBEJCTS,
    p_region_id         => 5,
    p_text              => 'This is the text of the review.',
    p_perspectives      => l_perspective_ids,
    p_perspectives_caid => l_perspective_caids
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
exception
  ...
end;
/

これらの例の他のパラメータの詳細は、例12-2および例12-5を参照してください。

12.6 アイテムの承認および却下

WWSBR_APIパッケージには、承認の管理を支援するためのAPIが2つ含まれています。これらのAPIをコンテンツ管理イベント・フレームワークとともに使用する方法の詳細は、16.7項「例: アイテム検証」および16.8項「例: 外部ワークフローの統合」を参照してください。

例12-10は、保留中のアイテムを承認する方法を示します。例12-11は、保留中のアイテムを却下する方法を示します。

例12-10 アイテムの承認

begin
  wwsbr_api.approve(
    p_item_id => 8056,
    p_site_id => 53,
    p_comment => 'Item approved'
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
end;
/

例12-11 アイテムの却下

begin
  wwsbr_api.reject(
    p_item_id => 8056,
    p_site_id => 53,
    p_comment => 'Item rejected'
  );
  -- Process cache invalidation messages.
  wwpro_api_invalidation.execute_cache_invalidation;
end;
/