Panel | ||
---|---|---|
| ||
This section describes how a task can be sent to the scheduler.
What does this section cover?
|
...
Expand | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
processRunLogID: the process run log id processRunLogNum: the process run log number EJBName: the EJB class name containing the method call processRunFunction - the name of the method to call processRunDesc - the process run description executionDate - the date that the process run is going to be executed entityName - the name of the entity as it is defined in entities metadata file entityID - the id of the entity as it is defined in entities metadata file
| ||||||||
Expand | ||||||||
| ||||||||
processRunLogID: the process run log id processRunLogNum: the process run log number EJBName: the EJB class name containing the method call processRunFunction - the name of the method to call processRunDesc - the process run description cronExpression - the cron expression that defines when the process run is going to be executed entityName - the name of the entity as it is defined in entities metadata file entityID - the id of the entity as it is defined in entities metadata file
Note that the entityName and entityID parameters are the name and id of the entity, as they are defined in entities metadata file |
Expand | |||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||
The cronExpression parameter is used for complex triggers and defines the date and time of task execution. The valid forms of cronExpression are:
|
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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; } |
processRunLogID: the process run log id
processRunLogNum: the process run log number
EJBName: the EJB class name containing the method call
processRunFunction - the name of the method to call
processRunDesc - the process run description
executionDate - the execution Date
entityName - the name of the entity as it is defined in entities metadata file
entityID - the id of the entity as it is defined in entities metadata file
The only difference between the first and the second method is their sixth parameter. The first method accepts a date and the second one a cron expression.
public Date scheduleProcess(String processRunLogID, String processRunLogNum, String EJBName, String processRunFunction, String processRunDesc, Date executionDate)
The cronExpression parameter is used for complex triggers which defines date and time of task execution. The following forms are valid for cronExpression :
...
As example, we perform a normal billing run which is send to the scheduler as a task. In the beginning, we create a new normal billing run (BILLING>BILLING>PERFORM NORMAL BILLING RUNS>NEW), we define when it will be billed and also to the filter tab at subscription sub section, we choose random subscription to execute the normal billing. After we save the new normal billing run, we choose to execute up to formatting action and send the task to the scheduler. In addition, going to the scheduled tasks (FOUNDATION>UTILITIES>MANAGE SCHEDULED TASKS), we can see the billing task that been processed. As we can see below, some of the parameters which are passed in the methods are also illustrated as fields.
Expand | ||
---|---|---|
| ||
|
...