Rational Developer for System z

處理自訂參數

RAM 開發人員具有自訂現有 CARMA 動作或建立全新動作的能力。這些動作可能會有 CARMA 主機配置定義的自訂參數或回覆值。

有數個 Helper 類別可用,讓您可以輕鬆利用這些自訂動作:

CustomActionParameterManager
針對 Meta 資料查詢預設值、所儲存的值及鏈結值(依 CARMA 喜好設定中指定的順序擷取)
CustomActionParameterDialog
便利對話框,用於簡單要求使用者輸入自訂參數的值
CustomActionUtil
Helper 類別,用於提供各種便利方法

使用自訂動作 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 開發人員定義的參數名稱。


使用條款 | 意見

本資訊中心採用 Eclipse 技術。(http://www.eclipse.org)