Les développeurs RAM ont la possibilité de personnaliser des actions CARMA existantes ou de créer des actions entièrement nouvelles. Ces actions peuvent comporter des paramètres ou des valeurs de retour personnalisé(e)s tel(le)s que définis par la configuration de l'hôte CARMA.
Plusieurs classes d'aide sont disponibles pour vous permettre d'utiliser facilement ces actions personnalisées :
La façon la plus simple d'obtenir des valeurs pour un paramètre personnalisé consiste à utiliser l'une des méthodes de CustomActionUtil. Par exemple, getCustomParameters :
CustomActionUtil.getCustomParameters(resource, "101");
Cette méthode extrait les paramètres personnalisés de l'action avec un ID action de 101 pour la ressource donnée. Si vous prévoyez d'utiliser de façon répétitive la même tâche pour différentes ressources similaires, vous pouvez utiliser getCustomParametersForTask de la façon suivante :
CARMAContent[] resources = getResources();
CarmaTaskMemento taskMemento = new CarmaTaskMemento();
for (int i = 0; i < resources.length; i++) {
CustomActionUtil.getCustomParametersForTask(taskMemento, resources[i], "101");
}
Dans l'exemple ci-dessus, taskMemento est utilisé pour stocker les informations entrées par l'utilisateur pour une utilisation entre des invocations d'action. Si taskMemento n'était pas utilisé ici, l'utilisateur devrait répondre aux mêmes invites pour chaque ressource.
Si vous préférez utiliser un autre mécanisme pour extraire des valeurs de paramètre (une interface utilisateur différente, par exemple), vous pouvez intéragir directement avec la classe CustomActionParameterManager, comme dans l'exemple suivant :
CustomActionParameterManager manager = CustomActionParameterManager.getManager();
Object[] paramsToPass = manager.getCustomParameters(resource, actionId); // parameters to pass to the command
//this method will tell us whether or not the manager has all the information it needs
if (manager.isPromptNeeded(resource, actionId)) {
final Action action = resource.findActionFor(actionId);
Iterator parameters = action.getParameters().iterator();
//find the parameter you want to change this way, or look for it to be null in paramsToPass
int index = 0;
while (it.hasNext()) {
Parameter param = (Parameter) it.next();
if (param.getName().equals(targetName))
break;
index++;
}
paramsToPass[index] = new Boolean(false);
//optionally store the parameter for later
Object[] paramsToStore = new Object[paramsToPass.length];
for (int i = 0; i < paramsToStore.length; i++) {
paramsToStore[i] = null;
if (i == index)
paramsToStore[i] = new Boolean(false);
}
manager.setUserStoredParamValues(resource.getRepository(), paramsToStore);
}
Dans l'exemple ci-dessus, targetName correspond au nom du paramètre tel qu'il est défini par le développeur de logiciel RAM.