You need to sign in to do that
Don't have an account?
ALEX YAN 7
apex job to add picklist values
Hello,I want to define a job to add picklist values every day,
when execute the job ,the field picklist values is not created, there is something wrong?
The code is sample,
// @future(callout = TRUE)
public static void updatePicklistField( )
{//TEST
MetadataService.MetadataPort service = createService();
MetadataService.CustomField customField = new MetadataService.CustomField();
customField.fullName = 'Case.casetest__c'; // your object. fields name
customField.label = 'casetest'; // label of field.
customField.type_x = 'Picklist'; // type
metadataservice.Picklist pt = new metadataservice.Picklist();
pt.sorted= false;
String day = string.valueOf(system.now().day());
String hour = string.valueOf(system.now().hour());
String minute = string.valueOf(system.now().minute() );
String second = string.valueOf(system.now().second());
metadataservice.PicklistValue two = new metadataservice.PicklistValue();
two.fullName= 'a'+second + '_' + minute + '_' + hour + '_' + day ;// 'second1rd';
two.default_x=false ;
metadataservice.PicklistValue three = new metadataservice.PicklistValue();
three.fullName= 'B'+second + '_' + minute + '_' + hour + '_' + day ; //'third1rd';
three.default_x=false ;
pt.picklistValues = new list<metadataservice.PicklistValue>{two,three};
customField.picklist = pt ;
system.debug('add success ');
List<MetadataService.SaveResult> results =
service.updateMetadata(
new MetadataService.Metadata[] { customField });
handleSaveResults(results[0]);
}
global class SyncProductSubSegment implements Schedulable {
global void execute(SchedulableContext SC) {
try
{
// AddSegment.updateSegmentValues();
AddSegment.updatePicklistField();
String day = string.valueOf(system.now().day());
String month = string.valueOf(system.now().month());
String hour = string.valueOf(system.now().hour());
String minute = string.valueOf(system.now().minute() + 10);
String second = string.valueOf(system.now().second());
String year = string.valueOf(system.now().year());
String strJobName = 'Job-' + second + '_' + minute + '_' + hour + '_' + day + '_' + month + '_' + year;
String strSchedule = '0 ' + minute + ' ' + hour + ' ' + day + ' ' + month + ' ?' + ' ' + year;
System.schedule(strJobName, strSchedule, new SyncProductSubSegment());
}
catch(Exception e)
{
system.debug('create Exception: ' + e.getMessage());
}
}
}
when execute the job ,the field picklist values is not created, there is something wrong?
The code is sample,
// @future(callout = TRUE)
public static void updatePicklistField( )
{//TEST
MetadataService.MetadataPort service = createService();
MetadataService.CustomField customField = new MetadataService.CustomField();
customField.fullName = 'Case.casetest__c'; // your object. fields name
customField.label = 'casetest'; // label of field.
customField.type_x = 'Picklist'; // type
metadataservice.Picklist pt = new metadataservice.Picklist();
pt.sorted= false;
String day = string.valueOf(system.now().day());
String hour = string.valueOf(system.now().hour());
String minute = string.valueOf(system.now().minute() );
String second = string.valueOf(system.now().second());
metadataservice.PicklistValue two = new metadataservice.PicklistValue();
two.fullName= 'a'+second + '_' + minute + '_' + hour + '_' + day ;// 'second1rd';
two.default_x=false ;
metadataservice.PicklistValue three = new metadataservice.PicklistValue();
three.fullName= 'B'+second + '_' + minute + '_' + hour + '_' + day ; //'third1rd';
three.default_x=false ;
pt.picklistValues = new list<metadataservice.PicklistValue>{two,three};
customField.picklist = pt ;
system.debug('add success ');
List<MetadataService.SaveResult> results =
service.updateMetadata(
new MetadataService.Metadata[] { customField });
handleSaveResults(results[0]);
}
global class SyncProductSubSegment implements Schedulable {
global void execute(SchedulableContext SC) {
try
{
// AddSegment.updateSegmentValues();
AddSegment.updatePicklistField();
String day = string.valueOf(system.now().day());
String month = string.valueOf(system.now().month());
String hour = string.valueOf(system.now().hour());
String minute = string.valueOf(system.now().minute() + 10);
String second = string.valueOf(system.now().second());
String year = string.valueOf(system.now().year());
String strJobName = 'Job-' + second + '_' + minute + '_' + hour + '_' + day + '_' + month + '_' + year;
String strSchedule = '0 ' + minute + ' ' + hour + ' ' + day + ' ' + month + ' ?' + ' ' + year;
System.schedule(strJobName, strSchedule, new SyncProductSubSegment());
}
catch(Exception e)
{
system.debug('create Exception: ' + e.getMessage());
}
}
}