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

これらの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に示すように、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;
/
p_name: 新しいページ・グループの内部名です。この名前は、パスに基づくURLで使用され、一意である必要があります。
p_display_name: 新しいページ・グループの表示名です。
p_versioning: ページ・グループ内のアイテムのバージョン・レベルです。次の値をとることができます。
wwsbr_api.VERSIONING_NONE
wwsbr_api.VERSIONING_SIMPLE
wwsbr_api.VERSIONING_AUDIT
p_default_language: ページ・グループのデフォルト言語です。
新しいページを作成する場合は、add_folder APIを使用します。デフォルトでは、新しいページには、ページ・グループのデフォルトのナビゲーション・ページが含まれるポートレット・リージョンとアイテム・リージョンの2つのリージョンがあります。つまり、Oracle Portalユーザー・インタフェースを使用せずにプログラムで作成されたページは、レイアウトが大幅に制限される場合があります。
ただし、希望のレイアウトを持ったPortalテンプレートに基づいて新しいページの親ページを作成することで、より高度なレイアウトを持ったページをプログラムで作成できます。これにより、親ページのプロパティを自動的にコピーするようにページ・グループを構成する場合、新しいページでは親ページと同じテンプレートが使用されるようになります。この方法によって、ページに必要なレイアウトをすべて設定できます。
このAPIで、JSPページまたはナビゲーション・ページを作成することはできません。このタイプのページを作成するには、Oracle Portalの「ページの作成」ウィザードを使用します。
ページのベースとなるページ・タイプのページ・プロパティにデフォルト値が設定されている場合、このデフォルト値は、APIにより設定される値にすべてオーバーライドされます。
新しいページの権限を定義するには、WWSEC_APIパッケージのAPIを使用します(例12-2)。詳細は、15.2項「ページ・レベルの権限の設定」を参照してください。
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;
/
p_caid: ページを追加するページ・グループのIDです。
p_name: 新しいページの内部名です。この名前はパスに基づくURLで使用されます。
p_display_name: 新しいページの表示名(タイトル)です。
p_type_id: ページのベースとなるページ・タイプのIDです。ページ・タイプは、ページを作成するページ・グループで使用可能なものである必要があります。生成済ページ・タイプには、次の定数が定義されています。
wwsbr_api.FOLDER_TYPE_CONTAINER
wwsbr_api.FOLDER_TYPE_URL
wwsbr_api.FOLDER_TYPE_PLSQL
WWSBR_FOLDER_TYPESビューのID列の値
WWSBR_FOLDER_TYPESビューのID列を問い合せると、カスタム・ページ・タイプのIDを検索できます。
p_type_caid: ページに使用されるページ・タイプが属しているページ・グループのIDです。この値は、ページを作成するページ・グループ(p_caid)または共有オブジェクトのページ・グループ(wwsbr_api.SHARED_OBJECTS定数を使用)と同じである必要があります。
ポータルがすでに非常に細かく分類されている場合、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;
/
p_caid: カテゴリまたはパースペクティブを作成するページ・グループのIDです。
p_parent_id: 新しいカテゴリまたはパースペクティブの作成先となる上位のカテゴリまたはパースペクティブのIDです。トップ・レベルのカテゴリまたはパースペクティブである場合は、0(ゼロ)を使用します。
p_name: 新しいカテゴリまたはパースペクティブの内部名です。
p_display_name: 新しいカテゴリまたはパースペクティブの表示名です。
ページにアイテムを作成するには、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;
/
p_caid: アイテムを作成するページを所有しているページ・グループのIDです。
p_folder_id: アイテムを作成するページのIDです。
p_display_name: 新しいアイテムの表示名(タイトル)です。
p_type_id: アイテムのベースとなるアイテム・タイプのIDです。WWSBR_APIパッケージで定義されている定数を使用します。次に例を示します。
wwsbr_api.ITEM_TYPE_FILE
wwsbr_api.ITEM_TYPE_TEXT
wwsbr_api.ITEM_TYPE_URL

生成済アイテム・タイプの定数の完全なリストは、Portal Centerの『Oracle Portal PL/SQL API Reference』を参照してください。
http://portalcenter.oracle.com
「Portal Focus Areas」セクションで「Portlet Development」をクリックし、次に、「APIs and References」セクションで「PL/SQL API Reference」をクリックします。
WWSBR_ITEM_TYPESビューのID列を問い合せると、カスタム・アイテム・タイプのIDを検索できます。
アイテム・タイプは、アイテムを作成するページ・グループで使用可能になっている必要があり、このため、WWSBR_CONTENT_AREA_ITEM_TYPESビューにリストされている必要があります。
p_type_caid: アイテムに使用されるアイテム・タイプが属しているページ・グループのIDです。この値は、アイテムを追加するページ・グループ(p_caid)または共有オブジェクトのページ・グループ(wwsbr_api.SHARED_OBJECTS定数を使用)と同じである必要があります。
p_region_id: アイテムを作成するリージョンのIDです。リージョンを指定していない場合やリージョンIDが無効な場合は、アイテムは、ページのデフォルトのアイテム・リージョンに格納されます。WWSBR_ALL_FOLDER_REGIONSビューを使用して、リージョンIDを検索します。
p_text: テキスト・アイテムのテキストです。
ファイル・アイテムの作成
オブジェクトが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;
/
p_caid: アイテムを作成するページを所有しているページ・グループのIDです。
p_folder_id: アイテムを作成するページのIDです。
p_display_name: 新しいアイテムの表示名(タイトル)です。
p_type_id: アイテムのベースとなるアイテム・タイプのIDです。
p_type_caid: アイテムに使用されるアイテム・タイプが属しているページ・グループのIDです。この値は、アイテムを追加するページ・グループ(p_caid)または共有オブジェクトのページ・グループ(wwsbr_api.SHARED_OBJECTS定数を使用)と同じである必要があります。
p_region_id: アイテムを作成するリージョンのIDです。リージョンを指定していない場合やリージョンIDが無効な場合は、アイテムは、ページのデフォルトのアイテム・リージョンに格納されます。WWSBR_ALL_FOLDER_REGIONSビューを使用して、リージョンIDを検索します。
p_description: アイテムの説明です。
p_file_filename: このアイテムに関連付けられているファイルのディレクトリ・パスおよびファイル名です。このファイルは、Oracle Portalがインストールされているデータベースと同じサーバー上にある必要があります。
このファイルがOracle Portalがインストールされているデータベースと同じサーバー上にない場合、最初にupload_blob APIを使用してファイルをコンテンツ・リポジトリ・ドキュメント表にロードする必要があります(例12-7)。upload_blob APIは、一意のドキュメント名を返します。add_item_post_upload APIを使用して、返されたドキュメント名によって示されるファイルを要求する新しいアイテムを作成します。
|
注意: コール元のアプリケーションは、BLOBを宣言し、データベースのBLOBのデータ型と互換性のあるオブジェクトにこのBLOBを割り当てる必要があります(Oracle Databaseのドキュメント・セットにある『Oracle Databaseアプリケーション開発者ガイド-ラージ・オブジェクト』を参照してください)。この後で、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のパラメータを次に示します。
p_file_name: BLOBに割り当てるファイル名です。これは、ファンクションによって返される値ではありません。通常、このファイル名により、ファイルがソース・ファイル・システム上で認識されます。
p_blob: コンテンツが含まれるBLOBです。
p_mime_type: BLOBのMIMEタイプです。WWSBR_APIパッケージに用意されている事前定義済の定数を使用します。
add_item_post_uploadのパラメータを次に示します。
p_caid: アイテムを作成するページを所有しているページ・グループのIDです。
p_folder_id: アイテムを作成するページのIDです。
p_display_name: 新しいアイテムの表示名(タイトル)です。
p_file_name: ファイル・アイテムの内部ドキュメント名で、ドキュメント表のドキュメントに対応しています。upload_blobによって返された値をこのパラメータに渡し、アップロードされたドキュメントをこのアイテムのファイルとして参照します。
p_type_id: アイテムのベースとなるアイテム・タイプのIDです。
p_type_caid: アイテムに使用されるアイテム・タイプが属しているページ・グループのIDです。この値は、アイテムを追加するページ・グループ(p_caid)または共有オブジェクトのページ・グループ(wwsbr_api.SHARED_OBJECTS定数を使用)と同じである必要があります。
p_region_id: アイテムを作成するリージョンのIDです。リージョンを指定していない場合やリージョンIDが無効な場合は、アイテムは、ページのデフォルトのアイテム・リージョンに格納されます。WWSBR_ALL_FOLDER_REGIONSビューを使用して、リージョンIDを検索します。
p_description: アイテムの説明です。
p_file_filename: このアイテムに関連付けられているファイルのディレクトリ・パスおよびファイル名です。このファイルは、Oracle Portalがインストールされているデータベースと同じサーバー上にある必要があります。
p_display_option: アイテムを表示する方法です。次の事前定義済の定数を使用します。
wwsbr_api.FULL_SCREEN: クリック時にアイテムが同じブラウザ・ウィンドウに表示されるリンクを表示します。
wwsbr_api.NEW_WINDOW: クリック時にアイテムが新しいブラウザ・ウィンドウに表示されるリンクを表示します。
wwsbr_api.IN_PLACE: アイテムをリージョンに表示します(これは、テキスト・アイテムおよびPL/SQLアイテムに対してのみ適用されます)。
アップロードしたドキュメントを要求するためのアイテムがすでに作成されている場合、modify_item_post_upload APIを使用します。
ページまたはアイテムを作成する場合、必要に応じて、ページまたはアイテムに適用されるパースペクティブを指定できます。
例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;
/
p_perspectives: パースペクティブIDの配列です。
p_perspective_caid: p_perspectivesに指定されているパースペクティブのページ・グループIDの配列です。この配列の各要素の位置は、p_perspectives内の対応するIDの位置と一致している必要があります。p_perspective_caidの値は、ページまたはアイテムを作成するページ・グループ(p_caid)または共有オブジェクトのページ・グループ(wwsbr_api.SHARED_OBJECTS定数を使用)と同じである必要があります。
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;
/
p_item_id: 承認または却下するアイテムの一意のIDです。
p_site_id: アイテムが属しているページ・グループのIDです。
p_comment: アイテムの承認または却下に関する追加情報を提供します。