- Create a Schedulable Interface using the following example to call the Compliance namespace.
 
global class ScheduleAudit implements Schedulable {
  global void execute(SchedulableContext sc){
    String objectName = 'Case'; // or pass another object name
    pcify__Manager__mdt manager = pcify.Manager.getManager(objectName);
    pcify.Batch batchJob = new pcify.Batch();
    batchJob.objectName = manager.MasterLabel;
    batchJob.fieldNames = manager.pcify.Manager.getMaskFields(objectName);
    batchJob.startDate = manager.pcify__BatchStartDate__c; // or pass your own datetime value
    batchJob.endDate = manager.pcify__BatchEndDate__c; // or pass your own datetime value
    batchJob.filterField = manager.pcify__BatchFilterField__c;
    batchJob.queryLimit = Integer.valueOf(manager.pcify__BatchQueryLimit__c);
    batchJob.batchSize = Integer.valueOf(manager.pcify__BatchSize__c);
    batchJob.action = manager.pcify__AuditAction__c;
    batchJob.loadQuery();
    database.executebatch(batchJob, batchJob.batchSize);
  }
}
- 
From Setup, enter Apex Classes in the Quick Find box, select Apex Classes, and then click Schedule Apex.

 - 
Specify the name of a class that you want to schedule (i.e. "ScheduleAudit").
 - 
Specify how often the Apex class is to run.
- For Weekly—specify one or more days of the week the job is to run (such as Monday and Wednesday).
 - For Monthly—specify either the date the job is to run or the day (such as the second Saturday of every month).
 
 - 
Specify the start and end dates for the Apex scheduled class. If you specify a single day, the job only runs once.
 - 
Specify a preferred start time. The exact time the job starts depends on service availability.
 - 
Click Save.
