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 にマップする方法については、 『外部ポリシー管理プログラムの定義』を参照してください。
public class MyGovernor extends PolicyGovernor {
以下のコードは、ポリシー管理プログラムで使用できるすべてのアセット・ポリシーのリストを返します。
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);
}