システム変数に格納されたユーザー情報のレポート・データへの挿入

Publisherでは、現在のユーザーに関する情報を格納しますが、この情報にはレポート・データ・モデルからアクセスできます。

このユーザー情報は、次に説明するシステム変数に格納されています。

システム変数 説明

xdo_user_name

レポートを実行しているユーザーのユーザーID。たとえば: Administrator

xdo_user_roles

レポートを実行しているユーザーに割り当てられたロール。たとえば: XMLP_ADMIN、XMLP_SCHEDULER

xdo_user_report_oracle_lang

ユーザーのアカウント・プリファレンスに基づくレポート言語。たとえば: ZHS

xdo_user_report_locale

ユーザーのアカウント・プリファレンスに基づくレポート・ロケール。たとえば: en-US

xdo_user_ui_oracle_lang

ユーザーのアカウント・プリファレンスに基づくユーザー・インタフェース言語。たとえば: US

xdo_user_ui_locale

ユーザーのアカウント・プリファレンスに基づくユーザー・インタフェース・ロケール。たとえば: en-US

Publisherは、オンライン・レポートにシステム変数を移入します。スケジュール済ジョブでは、Publisherは、XDO_USER_REPORT_LOCALE、XDO_USER_UI_LOCALE、XDO_USER_UI_ORACLE_LANG、XDO_USER_REPORT_ORACLE_LANGおよびXDO_USER_REPORT_LOCALEシステム変数を移入しません。

要素としてのユーザー・システム変数の追加

ユーザー情報をデータ・モデルに追加するには、パラメータとして変数を定義して、データ・モデルでパラメータ値を要素として定義します。

また、単にパラメータとして変数を追加して、そのパラメータ値をレポート内で参照できます。

次の問合せがあるとします。

select
:xdo_user_name as USER_ID,
:xdo_user_roles as USER_ROLES,
:xdo_user_report_oracle_lang as REPORT_LANGUAGE,
:xdo_user_report_locale as REPORT_LOCALE,
:xdo_user_ui_oracle_lang as UI_LANGUAGE,
:xdo_user_ui_locale as UI_LOCALE
from dual

次の結果が戻されます。

<?xml version="1.0" encoding="UTF-8"?>
<! - Generated by Publisher - >
<DATA_DS>
<G_1>
<USER_ROLES>XMLP_TEMPLATE_DESIGNER, XMLP_DEVELOPER, XMLP_ANALYZER_EXCEL, XMLP_ADMIN, XMLP_ANALYZER_ONLINE, XMLP_SCHEDULER </USER_ROLES>
<REPORT_LANGUAGE>US</REPORT_LANGUAGE>
<REPORT_LOCALE>en_US</REPORT_LOCALE>
<UI_LANGUAGE>US</UI_LANGUAGE>
<UI_LOCALE>en_US</UI_LOCALE>
<USER_ID>administrator</USER_ID>
</G_1>
</DATA_DS>

サンプル・ユースケース: 返されるデータセットのユーザーIDによる制限

次の例では、返されるデータをユーザーIDで制限しています。

select EMPLOYEES.LAST_NAME as LAST_NAME,
  EMPLOYEES.PHONE_NUMBER as PHONE_NUMBER,
  EMPLOYEES.HIRE_DATE as HIRE_DATE,
 :xdo_user_name as USERID 
from   HR.EMPLOYEES EMPLOYEES
where lower(EMPLOYEES.LAST_NAME) = :xdo_user_name

lower()関数を使用しているため、xdo_user_nameは必ず小文字の書式になります。PublisherではUSERIDを保持しないため、ユーザー名を使用する必要があり、そのユーザー名を問合せ内で直接使用するか、参照表に問い合せてユーザーIDを検索します。

LDAPユーザー属性値からのバインド変数の作成

LDAPディレクトリに格納されたユーザー属性の値をデータ問合せにバインドするには、Publisherに属性名を定義して必要なバインド変数を作成します。

前提条件

バインド変数の作成に使用できる属性は、管理者が「セキュリティ構成」ページで定義する必要があります。

この属性は、LDAPの「セキュリティ・モデル」定義にある「データ問合せバインド変数の属性名」フィールドで定義します。ユーザーに対して定義された任意の属性を使用できます(たとえば: memberOf、sAMAccountName、primaryGroupID、mail)。

Publisherによるバインド変数の構成方法

LDAPの「セキュリティ・モデル」定義にある「データ問合せバインド変数の属性名」フィールドに入力した属性名は、問合せ内で参照できます。

次に、バインド変数の構築方法を示します:

xdo_<attribute name>

サンプル属性(memberOf、sAMAccountName、primaryGroupID、mail)を入力したと仮定します。これらの属性は、次のバインド変数として問合せ内で使用できます。

xdo_memberof
xdo_SAMACCOUNTNAME
xdo_primaryGroupID
xdo_mail

属性については大文字と小文字が区別されませんが、接頭辞のxdo_は小文字にする必要があります。

これらのバインド変数は、データ・モデル内で次のように使用します。

SELECT
:xdo_user_name AS USER_NAME,
:xdo_user_roles AS USER_ROLES,
:xdo_user_ui_oracle_lang AS USER_UI_LANG,
:xdo_user_report_oracle_lang AS USER_REPORT_LANG,
:xdo_user_ui_locale AS USER_UI_LOCALE,
:xdo_user_report_locale AS USER_REPORT_LOCALE,
:xdo_SAMACCOUNTNAME AS SAMACCOUNTNAME,
:xdo_memberof as MEMBER_OF,
:xdo_primaryGroupID as PRIMARY_GROUP_ID,
:xdo_mail as MAIL
FROM DUAL

LDAPバインド変数は、ログインしているユーザーのLDAPディレクトリに格納された値を返します。