この章では、Oracle Portal付属のコンテンツ管理APIを使用する前に、知っておくと役に立つと思われるタスクや概念について説明します。内容は、次のとおりです。
コンテンツ管理APIおよびセキュア・ビューでは、特定のポータル・ユーザーとして実行するファンクションにコンテキストが設定されていることを前提としています。ブラウザ・セッション(データベース・プロバイダまたはPL/SQLアイテムなど)内からAPIをコールする場合、現在ポータルにログインしているユーザーに対して、コンテキストが自動的に設定されます。Webプロバイダまたは外部アプリケーション(SQL*PlusまたはPortalサービス)からAPIをコールする場合、wwctx_api.set_context
APIを使用してコンテキストを特定のユーザーに設定する必要があります。
このAPIを使用して、アサートされるユーザーのセッションを確立する前に、ポータルがOracle Application Server Single Sign-On Serverで検証できるユーザー名およびパスワードを提供することにより、アプリケーションはIDをアサートできます。パスワードの無効などが原因でアサーションが失敗した場合は、例外が発生します。
例10-1では、パスワードwelcome1
を持つユーザーJOE.BLOGS
に対してコンテキストを設定します。
次のパラメータはページ・グループIDを参照します。
p_site_id
p_siteid
p_caid
これらのパラメータ名は、下位互換性を確保するために変更されておらず、最新の用語を使用する場合でも変更されることはありません。詳細は、9.2.2項「用語」を参照してください。
次のパラメータはページIDを参照します。
p_folder_id
p_id
これらのパラメータ名は、下位互換性を確保するために変更されておらず、最新の用語を使用する場合でも変更されることはありません。詳細は、9.2.2項「用語」を参照してください。
1つのアイテムには2つのIDがあります。アイテムの各バージョンは、すべて同じマスター・アイテムID (GUID)を持ちます。ただし、アイテムの新しいバージョンを作成する場合、アイテムの個々のバージョンを一意に識別する独自のIDが割り当てられます。一部のAPIでは、アイテムを識別するためにマスター・アイテムID (p_master_item_id
)のみが必要とされます。ただし、処理するアイテムの個々のバージョンも認識する必要があるAPI (modify_item
など)もあります。この場合、一意のアイテムID (p_item_id
)を渡す必要があります。一部のAPIでは、アイテムIDはp_thing_id
として参照されます。
ほとんどのオブジェクトの主キーには、実際のオブジェクトのIDと、このオブジェクトが属しているページ・グループのIDが含まれます。パラメータで既存のオブジェクトを参照する場合、オブジェクトIDとページ・グループIDの両方を参照する必要があります。参照先オブジェクトのページ・グループは、参照元オブジェクトのページ・グループまたは共有オブジェクトのページ・グループのどちらかと同じである必要があります。たとえば、アイテムを追加する場合、アイテム・タイプ(ファイル、テキスト、イメージなど)を指定する必要があります。これを行うには、アイテム・タイプID (p_type_id
)およびアイテム・タイプが含まれるページ・グループのID (p_type_caid
)を渡す必要があります。
ほとんどのコンテンツ管理APIでは、パラメータにオブジェクトIDを渡す必要があります。これを行うには、処理対象のオブジェクトIDを知る必要があります。このIDを取得するには、セキュアなコンテンツ・リポジトリ・ビューを使用します。
ほとんどのコンテンツ管理APIには、パラメータの1つとしてページ・グループIDが含まれています。たとえば、add_folder
APIを使用してページを作成する場合、p_caid
パラメータを使用して、ページを作成するページ・グループのIDを指定する必要があります。例10-2は、このIDを検索するために使用できる問合せを示します。
例10-2 ページ・グループIDの検索
select id "Page Group ID" from wwsbr_all_content_areas where name = '&pagegroup' and language = '&language' /
例10-3は、ファンクションでこの問合せを使用する方法を示します。
例10-3 ページ・グループIDを検索するためのファンクション
create or replace function get_page_group_id (p_name in varchar2) return number is l_page_group number; l_language varchar2(30); begin l_language := wwctx_api.get_nls_language; select id into l_page_group from wwsbr_all_content_areas where name = p_name and language = l_language; return l_page_group; exception ... end; /
コンテンツ管理APIを使用してページおよびアイテムを処理する場合、処理対象のページIDを知る必要があります。たとえば、delete_page
APIを使用してページを削除する場合、ページIDによって削除対象のページを指定する必要があります。例10-4は、ページが属しているページ・グループのIDがわかっている場合にページIDを検索する方法を示します。
例10-4 既知のページ・グループ内でのページIDの検索
select id "Page ID" from wwsbr_all_folders where name = '&page' and caid = 53 and language = '&language' /
特定のページが属しているページ・グループのIDがわからない場合があります。例10-5は、ページのIDとこのページが属しているページ・グループを検索する方法を示します。
例10-5 ページおよびページ・グループ名がわかっている場合のページとページ・グループのIDの検索
column 'Page Group Name' format a25; column 'Page Name' format a25; select f.caid "Page Group ID", c.name "Page Group Name", f.id "Page ID", f.name "Page Name" from wwsbr_all_content_areas c, wwsbr_all_folders f where f.name = '&page' and c.id = f.caid and c.name = '&pagegroup' and c.language = '&language' and c.language = f.language /
add_item
APIを使用してアイテムをページに追加する場合、アイテムを配置するリージョンのIDを知る必要があります。アイテムを追加できるのは、コンテンツを追加できるよう設定されたアイテム・リージョンに対してのみです。例10-6は、特定のページに挿入可能なリージョンのIDおよびタイプを検索する問合せを示します。この情報を使用して、新しいアイテムを配置するのに適したページ内リージョンのIDを選択できます。
例10-6 特定のページに挿入可能なリージョンのIDおよびタイプの検索
select distinct r.id "Region ID", r.type "Type" from wwsbr_all_content_areas c, wwsbr_all_folders f, wwsbr_all_folder_regions r where f.name = '&page' and c.name = '&pagegroup' and c.id = f.caid and f.id = r.folder.id and f.caid = r.folder.caid and r.allow_content = 1 and c.language = '&language' and c.language = f.language and (f.language = r.language or r.language is null) /
例10-7は、WWSBR_ALL_ITEMSビューを問い合せてアイテムIDを検索する方法を示します。
例10-7 マスター・アイテムIDを指定したアイテムの現行バージョンIDの検索
select id from wwsbr_all_items where masterid = 513 and caid = 53 and active = 1 and is_current_version = 1 and language = '&language' /
現在公開されているアイテムを問い合せるときに行が重複しないようにするには、常にLANGUAGE、ACTIVE (active=1
)およびIS_CURRENT_VERSION (is_current_version=1
)列を含めます。例10-8は、特定のページ(folder_id=1
)および特定のページ・グループ(caid=75
)にあるアイテムをすべて選択する方法を示します。
例10-8 アイテムIDの検索
select i.display_name title, i.id latestversion from wwsbr_all_items i where i.folder_id = 1 and i.caid = 75 and i.active = 1 and i.is_current_version = 1 and (i.language = '&language' -- The current session language. or ( exists -- A row for the item in the page group default language. (select pg.id from wwsbr_all_content_areas pg where pg.id = i.caid and pg.default_language = i.language ) and not exists -- A row for the item in the current language. (select i2.id from wwsbr_all_items i2 where i2.id = i.id and i2.language = '&language' and i2.active = i.active and i2.is_current_version = i.is_current_version ) ) ) order by i.id /