こちらの関数は、新規ロールを作成し、ロール機能を更新します。リクエストは、ロールの詳細を指定するAdministrationRoleオブジェクトと、ロールのAdministrationFunctionの配列を含まなくてはいけません。こちらの関数を、ロールの更新、または新規ロール作成のいずれに使用するかに関わらず、すべてのYellowfinロールは、必須関数であるレポートアクセス(コード:MIREPORT)を要求することに注意してください。MIREPORTには、アクセスレベルコードとして、最低でもR(読み取り)を設定しなくてはいけません。こちらの関数が呼び出される度に、セキュリティ機能は上書きされます。 リクエスト要素以下の要素は、こちらのリクエストとともに渡されます。 リクエスト要素 | データ型 | 説明 | LoginId | String | Yellowfin Webサービスの管理者ユーザーIDです。これは、ログインIDの方法に応じて、ユーザーID、または電子メールアドレスになります。 このYellowfinアカウントは、「Yellowfin Webサービス使用権」が有効化されたロールを持ち、デフォルト(プライマリー)組織に所属していなくてはいけません。 | Password | String | 上記アカウントのパスワードです。 | OrgId | Integer | Yellowfin内のデフォルト(プライマリー)組織IDです。常に、「1」に設定します。 | Function | String | Webサービス関数です。こちらは、「SAVEROLE」に設定します。 | Role | AdministrationRole | 追加、または更新されるロールの詳細を含むオブジェクトです。詳細は、以下の表を参照してください。 |
以下は、こちらの関数のAdministrationRoleオブジェクトに設定しなくてはいけない主要なパラメーターです。AdministrationRole 要素 | データ型 | 説明 | RoleCode | String | 既存のロールの内部コードを指定します。既存のロールを更新したい場合は、こちらのパラメーターを必ず含めなくてはいけません。こちらを指定しない場合は、既に同名のロールが存在していても、新規ロールとして作成されます。 | RoleName | String | 新規、または既存のロールの名前です。こちらは、既存のロールの変更時にも必須です。こちらを設定しない場合、呼び出しはロール名を空白にします。 | RoleDescription | String | ロールの説明です。 | Functions | AdministrationFunction | セキュリティ機能の一覧を含むオブジェクトです。これらは、SAVEROLE関数を呼び出す度に上書きされます。レポートアクセス関数は必須です。より詳細な情報は、以下の表を参照してください。 |
以下は、こちらのwebサービスのAdministrationFunctionオブジェクトに設定しなくてはいけない主要なパラメーターです。AdministrationFunction要素 | データ型 | 説明 | FunctionCode | String | セキュリティ機能のコードを指定します。例えば、レポートアクセス関数を含める場合は、MIREPORTと設定します。 | AccessLevelCode | String | 関数のアクセスレベルです。例えば、Rは読み取りを意味します。 |
以下のSOAPの例は、この呼び出しに渡すことのできるパラメーターを表示しています。 Code Block |
---|
| <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>SAVEROLE</function>
<role>
<roleCode>REPORTWRITER</roleCode>
<roleName>Report Content Writer</roleName>
<roleDescription>This role can generate reports.</roleDescription>
<functions>
<functionCode>MIREPORT</functionCode>
<accessLevelCode>R</accessLevelCode>
</functions>
</role>
</arg0>
</web:remoteAdministrationCall>
</soapenv:Body>
</soapenv:Envelope> |
応答要素返される応答には、これらのパラメーターが含まれます。 応答要素 | データ型 | 説明 | StatusCode | String | Webサービス呼び出しのステータスです。値の選択肢は、以下の通りです。 |
サービスは、今回のSOAPの例に基づき、以下の応答を返します。 Code Block |
---|
| <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>
<roles>
<functions>
<accessLevelCode>R</accessLevelCode>
<functionCode>MIREPORT</functionCode>
</functions>
<roleCode>REPORTCONTENTWRITER</roleCode>
<roleDescription>This role can generate reports.</roleDescription>
<roleName>Report Content Writer</roleName>
</roles>
<sessionId>ceaa85d0ca1eb6057dc4facb0a7a5aa9</sessionId>
<statusCode>SUCCESS</statusCode>
</return>
</ns2:remoteAdministrationCallResponse>
</S:Body>
</S:Envelope> |
手順Javaの例を使用して、こちらの呼び出しを実行するための詳細な手順は、以下を参照してください。 Expand |
---|
| 以下は、こちらの関数の基礎的なリクエストです。
Code Block |
---|
| AdministrationServiceRequest rsr = new AdministrationServiceRequest();
rsr.setLoginId("admin@yellowfin.com.au");
rsr.setPassword("test");
rsr.setOrgId(1);
rsr.setFunction("SAVEROLE"); |
ロールを定義します。
Code Block |
---|
| AdministrationRole role = new AdministrationRole(); |
既存のロールを変更する場合は、ロールコードが必須になります。
Code Block |
---|
| role.setRoleCode("NEWROLE"); // If you want to create a new role, comment this out. |
ロールコードを指定しない場合は、同名のロールが既に存在していても、新規ロールとして作成されます。 Tip |
---|
YellowfinデータベースのOrgRoleテーブルから、ロールコードを取得することができます。(通常これはロール名に基づき、すべて大文字のスペースなしで表現されます。) |
既存のロールを変更する場合でもロール名は必須です。ロール名を指定しない場合、呼び出しはこれを空白にします。
Code Block |
---|
| role.setRoleName("New Role");
role.setRoleDescription("testing"); |
ロールにセキュリティ機能を割り当てます。
Code Block |
---|
| role.setFunctions(f);
rsr.setRole(role); |
|
完成例以下は、SAVEROLE関数の完成例です。こちらを使用するには、以下の手順に従います。 - コードをコピーして、「ws_saverole.jsp」として保存します。
- root(Yellowfin/appserver/webapps/ROOT)フォルダーにファイルを配置します。
- 環境に応じて、ホスト、ポート番号、管理ユーザーの詳細を調整します。
- インターネットブラウザから、「http://<host>:<port>/ws_saverole.jsp」を実行します。
Code Block |
---|
| <%
/* ws_saverole.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("SAVEROLE");
//define a role:
AdministrationRole role = new AdministrationRole();
role.setRoleCode("NEWROLE");
role.setRoleName("New Role");
role.setRoleDescription("testing");
AdministrationFunction[] f = new AdministrationFunction[2];
f[0] = new AdministrationFunction();
f[0].setFunctionCode("MIREPORT"); // mandatory
f[0].setAccessLevelCode("R");
f[1] = new AdministrationFunction();
f[1].setFunctionCode("ACTIVITYSTREAM");
f[1].setAccessLevelCode("CRUD");
//Feed the security functions to the role:
role.setFunctions(f);
rsr.setRole(role);
AdministrationServiceResponse rs = adminService.remoteAdministrationCall(rsr);
if ("SUCCESS".equals(rs.getStatusCode()) ) {
out.write("Success");
} else {
out.write("Failure");
out.write(" Code: " + rs.getErrorCode());
}
%> |
|