Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionインテグレーターズ・ガイド 11g リリース1(11.1.1) B63033-01 |
|
![]() 前 |
![]() 次 |
この章では、Oracle BIメタデータWebサービスについて説明します。内容は次のとおりです。
Oracle BIサーバーではセマンティック・モデルを使用して、操作関連の動作を格納および制御します。セマンティック・レイヤーは共通エンタープライズ情報モデルと呼ばれ、Oracle BI管理ツールによって管理されるメタデータ内で取得されます。
Oracle BIの以前のバージョンでは、管理ツールを使用して、メタデータ・リポジトリ内に保管された情報にアクセスしていました。一方、現バージョンのOracle BIでは、Oracle BIメタデータWebサービスのWebサービス・インタフェースを使用することで、Oracle BIサーバーのストアド・プロシージャをコールできます。これらのプロシージャにより、メタデータについての情報を取得したり、メタデータを変更したりできます。
たとえば、Essbaseキューブに基づく分析を構築しようとする開発者が、管理ツールへのアクセス権がなく、メタデータ・リポジトリの作成方法がわからないとします。この開発者はストアド・プロシージャを使用することで、Oracle BIプレゼンテーション・サービス内にキューブをインポートしてから、キューブに問い合せ、必要な分析を構築できます。
このトピックでは、Oracle BIサーバーのデフォルト・インストールを使用しない場合について説明します。デフォルトでは、メタデータWebサービスは、次のURLで実行されるOracle BIサーバー・インスタンスに接続しようとします。
jdbc:oraclebi://localhost:9703/
しかし、Oracle BIサーバーが別のマシン上にデプロイされている場合、別のポートを使用する場合、またはWebサービスとサーバー間でSSL接続を構成しようとする場合は、Oracle WebLogic Serverの管理コンソールで作成したBI JDBCデータ・ソースを使用する必要があります。Webサービスは次の名前のデータ・ソースを検索し、見つかった場合は、これを使用してOracle BIサーバーに接続します。
jdbc/bi/server
BI JDBCデータ・ソースの作成方法は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のWebLogicでのBI JDBCデータ・ソース作成方法に関する項を参照してください。
ただし、メタデータWebサービスで使用できるようにBI JDBCデータ・ソースを設定する場合は、次の要件に注意が必要です。プリファレンスが適用されるように、このデータ・ソースの設定が完了した時点で、Webサービスを停止および再起動してください。
新規JDBCデータ・ソースウィザードの「接続プロパティ」ページの「URL」フィールドで、Oracle BIサーバーに対して構成したポートを指定します。既存の指示では「9703」を指定するようにされていますが、「9703」は正しいポート番号ではない可能性があります。
BI JDBCデータ・ソースを作成して保存した後は、データ・ソースの設定を変更する必要があります。データ・ソースの「設定」にアクセスし、「接続プール」タブをクリックします。各設定項目を、次のように変更します。
「文キャッシュ・サイズ」フィールドに「0」と入力します。この値を指定することで、文のキャッシュが無効になります。
「詳細設定」タブで、「接続作成の再試行間隔」フィールドに「10」と入力します(または0より大きな任意の数値)。
この項では、Webサービスのコールと保護について説明します。
Webサービスは通常、次の場所にデプロイされます。
http://server:port/AdminService/AdminService
WSDLは次の場所にあります。
http://server:port/AdminService/AdminService?WSDL
Webサービスは、2つの汎用メソッドを公開します。これらのメソッドcallProcedureおよびcallProcedureWithResultsを使用すると、Oracle BIサーバー上の任意のストアド・プロシージャをコールできます。
このメソッドを使用すると、結果セットを返すことが想定されていないプロシージャをコールできます。表4-1は、このメソッドの各引数についての情報を示します。
このメソッドは、結果セットを返すことが想定されるプロシージャのコールに使用します。
このメソッドは、結果セットを一連のResultsRowオブジェクトとして模倣するオブジェクトを返します。各ResultsRowにはそれぞれ1つ以上の列が含まれ、各列はタイプと値を定義します。エラーが発生した場合、ほとんどのストアド・プロシージャは、文字列による1つの列からなる行を1つ以上返します。このため、返された結果を注意深く確認することが重要です。
表4-2は、このメソッドの各引数についての情報を示します。
Webサービスを適切に保護するには、Oracle Web Services Manager (WSM)を使用する必要があります。Webサービスをコールするには、クライアント・コードを適切なクライアント側ポリシーによって構成し、ストアド・プロシージャのコール権限を持つユーザーにセキュリティ資格証明を提供する必要があります。
デフォルトでは、Webサービスは次の定義済ポリシーによって保護されます。
oracle/wss11_saml_token_with_message_protection_service_policy
Webサービスを適切にコールするには、クライアント・コードで次の定義済ポリシーを適用する必要があります。
oracle/wss11_saml_token_with_message_protection_client_policy
WSMの詳細、および定義済ポリシーの適用および構成方法は、Oracle Fusion Middleware Webサービスのセキュリティおよび管理者ガイドを参照してください。
Webサービスを適切に使用するには、事前にWSMを構成しておく必要があります。Oracle BIメタデータWebサービスおよびアクション・フレームワークには、同じ構成を使用します。
Oracle BIメタデータWebサービスを使用するためのWSMの構成は、「Oracle Web Services Managerの構成」を参照してください。
「ポリシーの適用」の手順で適用したポリシーを使用するには、SAMLを構成する必要があります。この構成により、SAMLトークンをリクエスト内に挿入することで、適切な認証が実行されるようになります。Oracle BIサーバーへの接続を試みるWebサービスは、システムのユーザー資格証明を使用して、リクエストのSAMLトークン内から検出されたユーザーとして振る舞います。
SAMLの構成の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。
Webサービスを実行するユーザーには、manageRepositories権限を付与する必要があります。セキュリティの設定方法、およびこの権限の適用方法は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionセキュリティ・ガイド』を参照してください。
クライアント側のセキュリティを設定するには、次のコードを使用します。このコードを使用すると、SAMLトークン内の認証情報を渡すように構成された、管理サービスのクライアント側インスタンスを設定できます。セッションの認証情報は、Webサービスに自動的に渡されます。サンプル・コードのようなコードを使用するには、クライアント側のプロキシ・クラスを生成する必要があります。
次の例では、adminwebservice.clientパッケージ内でプロキシが生成されています。
import adminwebservice.client.*; /** * Looks up an instance of the Admin Service and sets the correct authentication information on it. * @return Admin Proxy to the admin service. */ protected Admin getAdminService() throws Exception { String SERVICE_NAMESPACE = "http://ws.admin.obiee.oracle/"; String SERVICE_NAME = "AdminService"; String PORT_NAME = "AdminPort"; String WSS_POLICY_CONFIG_FILE_SAML = "wss-policy-saml.xml"; URL wsdlURL = new URL ("http://localhost:7001/AdminService/AdminService?WSDL"); QName serviceQname = new QName(SERVICE_NAMESPACE, SERVICE_NAME); QName portQname = new QName(SERVICE_NAMESPACE, PORT_NAME); ServiceDelegateImpl serviceDelegate = new ServiceDelegateImpl (wsdlURL, serviceQname, OracleService.class); Admin admin = serviceDelegate.getPort( portQname, Admin.class); ((BindingProvider)admin).getRequestContext().put(ClientConstants.CLIENT_ CONFIG,toElement(this.getClass().getResourceAsStream(WSS_POLICY_CONFIG_ FILE_SAML))); ((BindingProvider)admin).getRequestContext().put(BindingProvider. ENDPOINT_ADDRESS_PROPERTY, getServiceUrl()); return admin; }
WSS_POLICY_CONFIG_FILE_SAML
WSS_POLICY_CONFIG_FILE_SAMLは、次のような内容を持つファイルのリソース名です。
<?xml version="1.0" encoding="UTF-8"?> <oracle-webservice-clients> <webservice-client> <port-info> <policy-references> <policy-reference uri="oracle/wss11_saml_token_with_ message_protection_client_ policy"category="security"/> </policy-references> </port-info> </webservice-client> </oracle-webservice-clients>
Oracle BIには、JDBCまたはODBC経由でOracle BIサーバーをコールするための、いくつかのBIサーバーXMLプロシージャが用意されています。
ここでは、次のプロシージャについて詳しく説明します。
プロジェクト抽出プロシージャは、リポジトリからプロジェクトを抽出するために使用します。出力される結果セットには、リポジトリ内で定義された各プロジェクトを示す行が含まれます。
このプロシージャの構造は、次のとおりです。
NQSExtractMetadataProject Input 1. PROJECT_NAMES 2.RPD_NAME (optional) Output 1. RPD_OBJECT
表4-3は、プロジェクト抽出プロシージャの入力および出力パラメータと、それぞれの説明を示します。
メタデータ変更プロシージャは、変更をリポジトリに適用するために使用します。出力される結果セットには、0または1つの行が含まれます。1行が返された場合、この行にはエラー・メッセージが含まれます。
メタデータの変更には、コマンドライン・ユーティリティ(nqxudmlexec、nqxudmlcliなど)を使用したり、管理ツール内でコピーおよび貼付けを行うなど、他の方法を使用することもできます。
このプロシージャの構造は、次のとおりです。
NQSModifyMetadata Input 1. XUDML_TEXT 2. ORIGINAL_RPD (optional) 3. RPD_NAME (optional) Output 1. ERROR_MESSAGES
表4-4は、メタデータ変更プロシージャの入力および出力パラメータと、それぞれの説明を示します。
表4-4 メタデータ変更プロシージャのパラメータと説明
パラメータ | 説明 |
---|---|
XUMDL_TEXT |
サーバーに適用される完全なXUDMLテキスト。元のリポジトリが入力パラメータに設定されている場合を除き、通常はメタデータ定義は直接適用され、既存の定義を上書きします。 |
ORIGINAL_RPD |
Oracle BIがXUDMLを比較するためのリポジトリ名。Oracle BIは、指定した元のRPDに対してXUDMLフラグメントを比較し、競合を検出した場合には、XUDMLを適用しません。競合が検出されない場合は、XUMDLが適用されます。 |
RPD_NAME |
このパラメータは現在使用されていません。今後使用するために予約されています。 |
ERROR_MESSAGES |
問合せの実行の結果返されたすべてのエラーを保持します。 |
メタデータ問合せプロシージャは、リポジトリにメタデータを問い合せるために使用します。出力される結果セットには、一致したオブジェクトの数だけの行が含まれます。完全な形式のXUDMLドキュメントを得るには、結果行を連結する必要があります。
このプロシージャの構造は、次のとおりです。
NQSQueryMetadataObjects Input 1. OBJECT_TYPES 2. OBJECT_NAME (optional) 3. OBJECT_PARENT (optional) 4. CHILD_FLAG (optional) 5. RPD_NAME (optional) Output 1. XUDML_TEXT 2. ERROR_MESSAGES
表4-5は、メタデータ問合せプロシージャの入力および出力パラメータと、それぞれの説明を示します。
表4-5 メタデータ問合せプロシージャのパラメータと説明
パラメータ | 説明 |
---|---|
OBJECT_TYPES |
検索するオブジェクト・タイプのリスト。複数のオブジェクト・タイプを問い合せるには、各オブジェクト・タイプをカンマで区切って追加します。 たとえば、サブジェクト領域オブジェクトとプレゼンテーション・カタログ・オブジェクトを問い合せるには、object_typesの値を「2000,4004」と設定します。この例では、サブジェクト領域オブジェクトのタイプID値は2000であり、プレゼンテーション・カタログ・オブジェクトのタイプID値は4004です。 |
OBJECT_NAME |
(オプション)名前に一致するオブジェクトをフィルタします。この名前は、完全修飾名ではありません。 たとえば、「AtomicStar」という名前のすべてのサブジェクト領域を問い合せるには、OBJECT_TYPESパラメータを「2000」に、OBJECT_NAMEパラメータを「AtomicStar」に設定します。 |
OBJECT_PARENT |
(オプション)親オブジェクト名に基づいてオブジェクトをフィルタします。このパラメータは、完全修飾名を指定する場合に使用します。 |
CHILD_FLAG |
(オプション)このパラメータをtrueに設定して問合せを行うと、問い合せたオブジェクトのすべての子オブジェクトが返されます。たとえば、オブジェクト・タイプ・パラメータをビジネス・モデルと設定して、子フラグ・パラメータをtrueに設定すると、ツリー内のビジネス・モデルの下位にあるすべてのオブジェクトが返されます。 |
RPD_NAME |
このパラメータは現在使用されていません。今後使用するために予約されています。 |
XUDML_TEXT |
すべてのメタデータに対して返されたXML表現。XMLデータが大きすぎて1行に収まらない場合は、複数行に分割された結果が返されます。完全形式のXUDMLドキュメントを得るには、結果の各行を連結する必要があります。 |
ERROR_MESSAGES |
問合せの実行の結果返されたすべてのエラーを保持します。 |
プロジェクト問合せプロシージャは、リポジトリ内のプロジェクトを確認するために使用します。出力される結果セットは、出力された単一のBLOBを表す1行です。
このプロシージャの構造は、次のとおりです。
NQSQueryMetadataProject Input 1. RPD_NAME (optional) Output 1. PROJECT_NAME
表4-6は、プロジェクト問合せプロシージャの入力および出力パラメータと、それぞれの説明を示します。