有數個 Helper 類別可用,讓您可以輕鬆利用這些自訂動作:
取得自訂參數值最簡單的方法,就是使用 CustomActionUtil 中的其中一個方法,例如,getCustomParameters:
CustomActionUtil.getCustomParameters(resource, "101");
針對給定資源,這會擷取動作識別碼為 101 的動作的自訂參數。如果您計劃針對不同但類似的資源反覆使用同一作業,則可以使用 getCustomParametersForTask,如下所示:
CARMAContent[] resources = getResources();
CarmaTaskMemento taskMemento = new CarmaTaskMemento();
for (int i = 0; i < resources.length; i++) {
CustomActionUtil.getCustomParametersForTask(taskMemento, resources[i], "101");
}
在上述範例中,taskMemento 用於儲存使用者輸入的用於動作呼叫之間的資訊。 如果不在這裡使用 taskMemento,則針對每個資源,都會對使用者查詢相同的提示。
如果您想要使用不同的機制(例如,不同的使用者介面)來提取參數值,則您可以直接與 CustomActionParameterManager 類別互動,如下列範例所示:
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);
}
在上述範例中,targetName 是 RAM 開發人員定義的參數名稱。