Panel |
---|
|
This section describes how a task can be sent to the scheduler. What does this section cover? |
...
Available Methods to Use
To schedule a process to run:run, you can use one of the following methods.
Expand |
---|
|
Code Block |
---|
language | java |
---|
title | CRMBOProcessRunDefinitionBean.java |
---|
| /**
* Schedules a process.
*
* @param processRunLogID - the process run log id
* @param processRunLogNum - the process run log number
* @param EJBName - the EJB class name containing the method call
* @param processRunFunction - the name of the method to call
* @param processRunDesc - the process run description
* @param executionDate - the date that the process run is going to be executed
* @param entityName - the entity name of entity that is being scheduled
* @param entityID - the id of entity that is being scheduled
* @throws Exception
*/
public Date scheduleProcess(String processRunLogID, String processRunLogNum, String EJBName, String processRunFunction, String processRunDesc, Date executionDate,String entityName,String entityID) throws Exception |
Note that the entityName and entityID parameters are the name and id of the entity, as they are defined in entities metadata file |
...
Expand |
---|
|
Code Block |
---|
language | java |
---|
title | CRMBOProcessRunDefinitionBean.java |
---|
| /**
* Schedules a process.
*
* @param processRunLogID - the process run log id
* @param processRunLogNum - the process run log number
* @param EJBName - the EJB class name containing the method call
* @param processRunFunction - the name of the method to call
* @param processRunDesc - the process run description
* @param cronExpression - the cron expression that defines when the process run is going to be executed
* @param entityName - the entity name of entity that is being scheduled
* @param entityID - the id of entity that is being scheduled
* @throws Exception
*/
public Date scheduleProcess(String processRunLogID, String processRunLogNum, String EJBName, String processRunFunction,String processRunDesc, String cronExpression,String entityName,String entityID) throws Exception { |
The cronExpression parameter is used for complex triggers and defines the date and time of task execution. The valid forms of cronExpression are: Expression | Meaning | 0 0 12 * * ? | Fire at 12pm (noon) every day | 0 15 10 ? * * | Fire at 10:15am every day | 0 15 10 * * ? | Fire at 10:15am every day | 0 15 10 * * ? * | Fire at 10:15am every day | 0 15 10 * * ? 2005 | Fire at 10:15am every day during the year 2005 | 0 * 14 * * ? | Fire every minute starting at 2pm and ending at 2:59pm, every day | 0 0/5 14 * * ? | Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day | 0 0/5 14,18 * * ? | Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day | 0 0-5 14 * * ? | Fire every minute starting at 2pm and ending at 2:05pm, every day | 0 10,44 14 ? 3 WED | Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. | 0 15 10 ? * MON-FRI | Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday | 0 15 10 15 * ? | Fire at 10:15am on the 15th day of every month | 0 15 10 L * ? | Fire at 10:15am on the last day of every month | 0 15 10 ? * 6L | Fire at 10:15am on the last Friday of every month | 0 15 10 ? * 6L 2002-2005 | Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 | 0 15 10 ? * 6#3 | Fire at 10:15am on the third Friday of every month |
|
How to use the available methods
In the example below, you can see how the first method is used to send a process run log to the scheduler for execution.
Expand |
---|
|
Code Block |
---|
title | Submit a process run log to the scheduler |
---|
linenumbers | true |
---|
collapse | true |
---|
| public Process submit(CRMDOProcessRunLog processRunLog) throws Exception {
Process process =null;
CRMDOProcessRunDefinition processRunDefinition = processRunLog.getProcessRunDefinition();
SchedulerTask schedulerTask = processRunDefinitionXMLUtilBean.loadScheduleSettings(processRunDefinition.getSchSettingXML());
CronExpression cron = new CronExpression(SchedulerUtil.createCronExpression(this, schedulerTask).getCron());
Date startDate = schedulerTask.getRecurrdate();
if(startDate==null || startDate.before(getCurrentDate()))
{
startDate = DateUtil.addSeconds(getCurrentDate(),5);
}else if(schedulerTask.getRunmode().equals(SchedulerUtil.RUN_MODE_RECURRENCE) || schedulerTask.getRunmode().equals(SchedulerUtil.RUN_MODE_REPEAT))
{
startDate = DateUtil.addSeconds(startDate,-5);
}
Date nextExecutionDate = cron.getNextValidTimeAfter(startDate);
Date endDate = schedulerTask.getEnddate();//schedulerTask.calculateEndDate();
if (nextExecutionDate!=null)
{
Entity entity = MetadataUtil.getEntityByClass(processRunDefinition.getClass().getName(), getCRMSession().getRealPath(), getOrganisationID());
if(endDate==null || nextExecutionDate.before(endDate))
{
processRunLogBean.save(processRunLog);
Module module = MetadataUtil.getModuleByID(
processRunDefinition.getModule(),
getCRMSession().getRealPath(),
getOrganisationID());
process = MetadataUtil.getModuleAdditionalProcess(module, processRunDefinition.getProcess());
ArrayList<Method> methods = process.getMethods();
for (int i=0; i<methods.size(); i++)
{
Method method = methods.get(i);
String dateInfo = DateUtil.getDateString(processRunLog.getCreatedDate(), "dd MM yyyy HH mm ss");
dateInfo = dateInfo.replaceAll("\\s","");
String jobName = processRunLog.getNumber() + "_" + dateInfo;
Date scheduledDate = CRMProcessRun.scheduleProcess(
processRunLog.getId(),
jobName,
method.getEjbname(),
method.getMethodname(),
processRunDefinition.getDescription(),
nextExecutionDate,
entity.getId(),
processRunDefinition.getId());
processRunDefinition.setScheduledDate(scheduledDate);
save(processRunDefinition);
}
}
}
return process;
} |
|
...