Примеры регулятора стратегии

На основе примера регулятора стратегий можно создавать пользовательские стратегии. Инструкции по созданию стратегий приведены в разделе Создание пользовательских стратегий с помощью API проверки пользовательских стратегий.
Примеры пользовательских стратегий из примера регулятора стратегий находятся в каталоге WebServerPath/extensionExamples/customPolicyGovernor/SampleGovernor.jar, где WebServerPath - это путь к веб-серверу хранилища Rational Asset Manager.
Файл архива 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).

Следующий код возвращает список стратегий ресурсов, доступных регулятору стратегии:

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); 	
}

Комментарии