Kraken Cron
Kraken Cron provides job scheduling.
Requirements
- kraken api 1.0.0
- slf4j api 1.5.6
- hsqldb 1.8.0.7
Commands
- cron.usage
kraken> cron.usage SYNTAX: * * * * * Runnable instance.name - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) EXAMPLES: Run once a year | 0 0 1 1 * Run once a week | 0 0 * * 0 Run every five minute | */5 * * * * Run once a day from monday to friday | 0 0 * * 1-5 Run once a day on saturday and sunday | 0 0 * * 0,6
- cron.register [rule] [instance.name]
kraken> cron.register * * * * * sample new schedule [1] registered.
- Run 'sample' service instance (must be Runnable) every minutes.
- cron.unregister [schedule id]
kraken> cron.unregister 1 schedule unregistered.
- Unregister schedule.
- cron.list
- List all schedules.
- cron.queue
- View current state of scheduling queue.
- cron.run [instance.name]
- Run now
- cron.runnables
- List all active Runnable instances.
Schedule Syntax
- The comma (',') operator specifies a list of values.
- For example, "1,3,4,7,8" (space inside the list must not be used)
- The dash ('-') operator specifies a range of values.
- For example, "1-6", which is equivalent to "1,2,3,4,5,6"
- The asterisk ('*') operator specifies all possible values for a field.
- For example, an asterisk in the hour time field would be equivalent to 'every hour' .
- The slash ('/') operator (called "step"), which can be used to skip a given number of values.
- For example, "*/3" in the hour time field is equivalent to "0,3,6,9,12,15,18,21".
- http://en.wikipedia.org/wiki/Cron#crontab_syntax
How to create Runnable OSGi service instance?
- All iPOJO component instances have instance.name OSGi service property.
- Create Runnable component using by ipojo.create command. (requires kraken ipojo bundle)
- Check if OSGi service is registered as you want.
- Use osgi.services and osgi.properties [service.id] commands. (requires kraken core above 1.1.0)
- instance.name property must be exist.
Cron API
How to build Schedule object?
- Run every minute.
Schedule sample = new Schedule.Builder("sample").build(); - Run every day.
Schedule sample = new Schedule.Builder("sample").buildDaily(); - Run every week.
Schedule sample = new Schedule.Builder("sample").buildWeekly(); - Run every month.
Schedule sample = new Schedule.Builder("sample").buildMonthly(); - Run every year.
Schedule sample = new Schedule.Builder("sample").buildYearly(); - 0 0 1 1 3-6 sample
Schedule sample = new Schedule.Builder("sample").build("0 0 1 1 3-6");- If you have specified any field using .set(CronField.Type, expression) before calling .build(expression), the former specification will be ignored.
- 0,3,5,9 4-10 */10 * 0 sample
Schedule sample = new Schedule.Builder("sample") .set(CronField.Type.DAY_OF_WEEK, "0") .set(CronField.Type.DAY_OF_MONTH, "*/10") .set(CronField.Type.HOUR, "4-10") .set(CronField.Type.MINUTE,"0,3,5,9") .build();- If there is no explicit specificaton of a field, default value will be *(wild).
How to get CronService reference?
- OSGi standard way
ServiceReference ref = bundleContext.getServiceReference(CronService.class.getName()); CronService cronService = (CronService) bundleContext.getService(ref);
- iPOJO way
- use @Requires annotation or metadata.xml configuration.
- iPOJO will inject CronService for you.
Schedule Registration
Schedule schedule = new Schedule.Builder("sample").build();
int id = cronService.registerSchedule(schedule);
Schedule Unregistration
cronService.unregisterSchedule(id);
Class Diagram
History
- 1.0.0 release: initial release (2009-10-19)


