30日間の無料評価版をお試しいただけます。

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleMETADATAQUERY

こちらの関数は、SQLクエリーを使用してYellowfinデータベースを管理するために使用します。例えば、SELECTコマンドを使用してデータベースから情報を取得したり、DELETEやINSERTを使用してデータベーステーブルを管理することもできます。この関数は、データベースのパスワードを要求しますが、これは以下に示す設定を変更することで無効にすることもできます。

 

ご利用の環境でこの機能を有効化し、設定を変更する方法は、以下をクリックして確認してください。

Expand
titleクエリーwebサービスの有効化
  1.  WEB-INFディレクトリから「web.xml」ファイルを開きます(appserver\webapp\ROOT\WEB-INF\web.xml)。
  2. ファイルのMIStartupサーブレット項目に以下のコードを追加します。ファイルに以下のコードを追加します。

    Code Block
    themeEclipse
    languagexml
    <init-param>
        <param-name>EnableQueryWebservice</param-name>
        <param-value>TRUE</param-value>
    </init-param>
  3. この関数はデフォルトでデータベースパスワードを要求しますが、以下のコードを同様のファイルに追加することで、これを無効にすることができます。必要ない場合は、この手順をスキップしてください。データベースパスワードを要求しますが、以下のコードをファイル内の同様の項目に追加することで、これを無効にすることができます。必要ない場合は、この手順をスキップしてください。

    Code Block
    themeEclipse
    languagexml
    <init-param>
        <param-name>DisableQueryWebservicePassword</param-name>
        <param-value>TRUE</param-value>
    </init-param>
  4. web.xmlファイルを保存し、実行していた場合はYellowfinを再起動します。
  5. こちらのwebサービスが有効化されていない場合は、METADATASQLQUERYの呼び出しを実行した後に、Yellowfinログに「Query Webservice not enabled(クエリーwebサービスが有効化されていません)」というエラーが表示されます。

 

 

リクエストパラメーター

以下の要素は、こちらのリクエストとともに渡されます。

リクエスト要素データ型説明

LoginId

String

Yellowfin Webサービスに接続する管理者アカウントです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。

このYellowfinアカウントは、「Yellowfin Webサービス使用権」が有効化されたロールを持ち、デフォルト(プライマリー)組織に所属していなくてはいけません。

Password

String

上記アカウントのパスワードです。

OrgId

Integer

Yellowfin内のデフォルト(プライマリー)組織IDです。常に、「1」に設定します。

Function

String

Webサービス関数です。こちらは、「METADATASQLQUERY」に設定します。

QueryStringYellowfinデータベース上で実行するSQLクエリーです。
ParameterString[]

Yellowfinデータベースのパスワードを渡すために使用します。(パスワードとして設定することのできる)配列の最初の要素のみ要求されますが、(上記手順で明記しているように)こちらの要件を無効にする場合は、このパラメーターは要求されません。

リクエストの例

以下は、こちらのリクエストのSOAP XMLの例です。

Code Block
themeEclipse
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservices.web.mi.hof.com/">
   <soapenv:Header/>
   <soapenv:Body>
    <web:remoteAdministrationCall>
        <arg0>
            <loginId>admin@yellowfin.com.au</loginId>
            <password>test</password>
            <orgId>1</orgId>
            <function>METADATASQLQUERY</function>
            <query>SELECT * FROM person</query>
        </arg0>
    </web:remoteAdministrationCall>
   </soapenv:Body>
</soapenv:Envelope>

 

応答パラメーター

返される応答には、これらのパラメーターが含まれます。

応答要素データ型説明

StatusCode

String

Webサービス呼び出しのステータスです。値の選択肢は、以下の通りです。

  • SUCCESS
  • FAILURE
QueryResultsReportRowSELECTがリクエストクエリーだった場合の結果セットのロウ(行)の配列です。

応答の例

サービスは今回のSOAPの例に基づき、以下の応答を返します。

Code Block
themeEclipse
languagexml
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
    <ns2:remoteAdministrationCallResponse xmlns:ns2="http://webservices.web.mi.hof.com/">
        <return>
            <errorCode>0</errorCode>
            <messages>Successfully Authenticated User: admin@yellowfin.com.au</messages>
            <messages>Web Service Request Complete</messages>
            <queryResults>
               <dataValue>5</dataValue>
               <dataValue>Administrator</dataValue>
               <dataValue>System</dataValue>
            <dataValue/>
            <dataValue/>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <dataValue>ATMN SSTM</dataValue>
            <dataValue/>
            <dataValue>System Administrator</dataValue>
            <dataValue>System Administrator</dataValue>
               <dataValue>EN</dataValue>
               <dataValue>PRIVATE</dataValue>
               <dataValue>4</dataValue>
               <dataValue>EMAIL</dataValue>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
               <dataValue>AUSTRALIA/SYDNEY</dataValue>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <dataValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
               <dataValue>ACTIVE</dataValue>
            </queryResults>
            <sessionId>804451ca30ad4a3065e4b67a9293440c</sessionId>
            <statusCode>SUCCESS</statusCode>
        </return>
    </ns2:remoteAdministrationCallResponse>
   </S:Body>
</S:Envelope>

 

手順

Javaの例を使用して、こちらの呼び出しを実行するための詳細な手順は、以下を参照してください。

Expand
title詳細手順
  • 管理ユーザーとしてのログインと、実行するwebサービスの呼び出しの指定を含む、こちらの関数のリクエストを定義します。

    Code Block
    themeEclipse
    languagejava
    AdministrationServiceRequest rsr = new AdministrationServiceRequest();
    rsr.setLoginId("admin@yellowfin.com.au");
    rsr.setPassword("test"); 
    rsr.setOrgId(1);
    rsr.setFunction("METADATASQLQUERY");
  • 実行するSQLクエリーを提供します。

     

    Code Block
    themeEclipse
    languagejava
    rsr.setQuery("SELECT * FROM configuration WHERE ConfigTypeCode = 'SYSTEM'");


  • リクエストを構成したら、呼び出しを実行してサーバをテストします。

    Code Block
    languagejava
    AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);

    管理webサービスを初期化します。実行方法の詳細は、こちらを参照してください。

 

  • 応答を取得するために以下のコードを追加します。(詳細は上記応答パラメーターの表を参照してください)

     

    Code Block
    themeEclipse
    languagejava
    if ("SUCCESS".equals(rs.getStatusCode()) ) {
                    out.write("<br>Success");
                    ReportRow[] rows = rs.getQueryResults();
                    if (rows != null)
                                        for (ReportRow rr: rows){
                                                        String[] str = rr.getDataValue();
                                                        out.write("<br>");
                                                        for (String s: str)
                                                                                            out.write("<br>" + s);
                                                         
                                        }
                     
    }
    else {
                    out.write("<br>Failure");
    }

 

完成例

以下は、こちらのwebサービスの呼び出しの完成例です。こちらを使用するには、以下の手順に従います。

  1. コードをコピーして、「ws_metadatasqlquery.jsp」として保存します。
  2. root(Yellowfin/appserver/webapps/ROOT)フォルダーにファイルを配置します。
  3. 環境に応じて、ホスト、ポート番号、管理ユーザーの詳細を調整します。
  4. インターネットブラウザから、「http://<host>:<port>/ws_metadatasqlquery.jsp」を実行します。

Code Block
themeEclipse
languagejava
<%          
/*              ws_metadatasqlquery.jsp                         */
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="com.hof.util.*, java.util.*, java.text.*" %>
<%@ page import="com.hof.web.form.*" %>
<%@ page import="com.hof.mi.web.service.*" %>
<%
  
AdministrationServiceService s_adm = new AdministrationServiceServiceLocator("localhost",8080, "/services/AdministrationService", false);       // adjust host and port number
AdministrationServiceSoapBindingStub adminService = (AdministrationServiceSoapBindingStub) s_adm.getAdministrationService();
AdministrationServiceRequest rsr = new AdministrationServiceRequest();
  
rsr.setLoginId("admin@yellowfin.com.au");       // provide your Yellowfin web services admin account
rsr.setPassword("test");                        // change to the password of the account above
rsr.setOrgId(1);
rsr.setFunction("METADATASQLQUERY");
  
rsr.setQuery("SELECT * FROM configuration WHERE ConfigTypeCode = 'SYSTEM'");
  
AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);
  
if ("SUCCESS".equals(rs.getStatusCode()) ) {
                out.write("<br>Success");
                ReportRow[] rows = rs.getQueryResults();
                if (rows != null)
                                    for (ReportRow rr: rows){
                                                    String[] str = rr.getDataValue();
                                                    out.write("<br>");
                                                    for (String s: str)
                                                                                        out.write("<br>" + s);
                                                     
                                    }
                 
}
else {
                out.write("<br>Failure");
                out.write(" Code: " + rs.getErrorCode());
}              
%>

...