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

戻る
戻る
 
次へ
次へ
 

10 コンテンツ管理APIを使用する前に

この章では、Oracle Portal付属のコンテンツ管理APIを使用する前に、知っておくと役に立つと思われるタスクや概念について説明します。この章の内容は、次のとおりです。

10.1 セッション・コンテキストの設定

コンテンツ管理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に対してコンテキストを設定します。

例10-1 セッション・コンテキストの設定(set_context API)

declare
  p_user_name varchar2(60) := 'JOE.BLOGGS';
  p_password  varchar2(60) := 'welcome1';
  p_company   varchar2(60) := null;
begin
  wwctx_api.set_context(p_user_name,p_password,p_company);
end;
/

10.2 APIパラメータ

10.3 オブジェクトIDの検索

ほとんどのコンテンツ管理APIでは、パラメータにオブジェクトIDを渡す必要があります。これを行うには、処理対象のオブジェクトIDを知る必要があります。このIDを取得するには、セキュアなコンテンツ・リポジトリ・ビューを使用します。

10.3.1 ページ・グループ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;
/

10.3.2 ページIDの検索

コンテンツ管理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
/

10.3.3 リージョンIDの検索

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.3.4 アイテムIDの検索

例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
/