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.";
}
以下方法通过使用策略标识来返回单个策略:
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);
}