ポリシー管理プログラムのサンプル

サンプル・ポリシー管理プログラムを使用してカスタム・レビュー・ポリシーを作成することができます。 ポリシー作成の手順については、カスタム・ポリシー・レビュー API によるカスタム・ポリシーの作成を参照してください。
カスタム・ポリシーの例がサンプル・ポリシー管理プログラムの中にあります。場所は WebServerPath/extensionExamples/customPolicyGovernor/SampleGovernor.jar ( WebServerPathRational® Asset Manager リポジトリーの Web サーバー・パスです)。
ポリシーの Java アーカイブ・ファイルである CustomPolicyAPI.jar は同じフォルダー内にあります。 その場所は WebServerPath/extensionExamples/customPolicyGovernor/CustomPolicyAPI.jar です。
package com.ibm.ram.extension.demo.policy;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import com.ibm.ram.extension.PolicyGovernor;
import com.ibm.ram.policy.AssetPolicy;
import com.ibm.ram.policy.Policy;

管理プログラムを Rational Asset Manager にマップする方法については、 『外部ポリシー管理プログラムの定義』を参照してください。

次のコードは、サンプルの Rational Asset Manager ポリシー管理プログラムです。
public class MyGovernor extends PolicyGovernor {
注: ポリシーはマップ内に保管されます。 マップからポリシーを取り出すには、getPolicies().get(id) メソッドにポリシー ID を入力します。

以下のコードは、ポリシー管理プログラムで使用できるすべてのアセット・ポリシーのリストを返します。

public AssetPolicy[] getAssetPolicies() { 		
	Collection policiesCollection = getPolicies().values(); 		 		
	AssetPolicy[] policies = (AssetPolicy[])policiesCollection.toArray(new
	AssetPolicy[policiesCollection.size()]);
	return policies; 
}

以下のメソッドは、ポリシー管理プログラムの表示名を返します。

public String getDescription() {
 	return "A sample governor with a few policies.";
}

以下のメソッドは、ポリシー ID を使用して単一のポリシーを返します。

public Policy getPolicy(String id) {
 	return (Policy)getPolicies().get(id);
}

以下のメソッドは、プライベート・ポリシー・ストアを戻します。 この戻り値は、管理プログラムに定義された使用可能なすべてのポリシーをリストした配列です。 ポリシーはマップ内に保管されます。ポリシーは、getPolicies().get(id) メソッドを使用することで取り出せます。

private Map getPolicies(){
 	if(policies == null){
 		initPolicies();
 	}
	return policies; 
}

この管理プログラムは、以下のポリシーから構成されています。

//Policy = Set up policy store
private synchronized void initPolicies(){
 	policies = new HashMap();

//Policy = My XML Policy
Policy policy = new MyPolicy(this);
 	policies.put(policy.getID(), policy);

//Policy = Odd MinutePolicy
policy = new OddMinutePolicy(this);
 	policies.put(policy.getID(), policy);

//Policy = Asset Level Messages Policy
policy = new AssetMessagesPolicy(this);
 	policies.put(policy.getID(), policy);

//Policy = Artifact Level Messages Policy
policy = new ArtifactMessagesPolicy(this);
 	policies.put(policy.getID(), policy);

//WS-I WSDL Policy
policy = new WSIPolicy(this);
 	policies.put(policy.getID(), policy); 	
}

フィードバック