Populate the enum values in the dropdown list box (StringType variable):
1public override void onConfigurationRetrieval(wavetemplate.WaveTemplateInfo template)2{3 Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();4 wavetemplate.VariableDefinition caseRecordTypes =5 variables.get('IncludeCaseRecordTypes');6 List<object> enums = caseRecordTypes.getVariableType().getEnums();7 RecordType [] results = [SELECT Name FROM RecordType where sobjectType = 'Case'];8 for (RecordType record : results){9 //adds the record type names to the drop down list10 enums.add((string)record.get('Name'));11 }12 caseRecordTypes.getVariableType().setEnums(enums);13}
Example
Given the following ArrayType variable:
1"OpptyRecordType":2{3 "label": "Select OpptyRecordTypes that you want to bring in to Salesforce",4 "description": "Choose OpptyRecordTypes that you want to bring in to Salesforce.",5 "required": false,6 "variableType": {7 "type": "ArrayType",8 "itemsType": {9 "type": "StringType",10 "enums": ["Test", "Test2"]11 }12 }13}
Add more values to the ArrayType variable enums:
1Map<string, wavetemplate.VariableDefinition> variables = template.getVariables();2 wavetemplate.VariableDefinition enumsTest = variables.get('OpptyRecordType');3 List<object> enums = enumsTest.getVariableType().getItemsType().getEnums();4 //create an empty list if you want to overwrite the original enums.5 RecordType [] results = [SELECT Name FROM RecordType where sobjectType6 = 'Opportunity' AND IsActive = true];7 for ( RecordType record : results ) {8 enums.add((string)record.get('Name'));9 }10 enumsTest.getVariableType().getItemsType().setEnums(enums);