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;
}
Данный регулятор состоит из следующих стратегий:
// Настройка хранилища стратегий
private synchronized void initPolicies(){
policies = new HashMap();
//Стратегия XML
Policy policy = new MyPolicy(this);
policies.put(policy.getID(), policy);
//Стратегия OddMinutePolicy
policy = new OddMinutePolicy(this);
policies.put(policy.getID(), policy);
//Стратегия сообщений уровня ресурса
policy = new AssetMessagesPolicy(this);
policies.put(policy.getID(), policy);
//Стратегия сообщений уровня артефакта
policy = new ArtifactMessagesPolicy(this);
policies.put(policy.getID(), policy);
//Стратегия WS-I WSDL
policy = new WSIPolicy(this);
policies.put(policy.getID(), policy);
}