Related: #196
Companion: museumsvictoria/nodel-recipes#108
Nodel should provide a managed, cross-platform CRON scheduler in the nodehost. The retired Scheduler recipes showed the value of local scheduling without an Exchange or Office 365 dependency, but they carried their own APScheduler copy and the current UI no longer supports the format: "cron" editor described in #196.
The nodehost should own CRON parsing, validation and execution. Recipes, the nodehost UI and the Frontend node should all use the same rules so weekday, timezone and missed-run behaviour cannot drift between implementations.
Proposed scope:
- Add managed CRON scheduling to Nodel's shared timer infrastructure, without relying on an OS scheduler or creating one thread per schedule.
- Expose a Jython API with lifecycle management comparable to
Timer.
- Support standard five-field UNIX expressions, including named weekdays and months, with Sunday accepted as 0 or 7. Use the nodehost timezone by default, with an optional IANA timezone per schedule.
- Define behaviour for DST transitions, delayed execution, restarts and invalid expressions. Coalesce a delayed occurrence and invoke it once while the host remains running. After a full restart, resume from the next future occurrence rather than replaying old events.
- Expose validation, a readable description, and previous and next execution times to recipes and user interfaces.
- Restore
format: "cron" support in the nodehost UI and provide the shared browser support needed by the current Frontend/Mk2 node.
A maintained JVM library such as cron-utils appears to cover parsing, validation, descriptions and execution-time calculation, which would avoid maintaining another CRON implementation. Its dependencies, including compatibility with Nodel's current SLF4J stack, should be reviewed before adoption.
The implementation should remain JVM-based and work anywhere Nodel runs.
The companion recipe issue will add a new Scheduler recipe and any Frontend/Mk2 integration needed to consume this support. The retired scheduler and advscheduler recipes are behavioural references only.
Related: #196
Companion: museumsvictoria/nodel-recipes#108
Nodel should provide a managed, cross-platform CRON scheduler in the nodehost. The retired Scheduler recipes showed the value of local scheduling without an Exchange or Office 365 dependency, but they carried their own APScheduler copy and the current UI no longer supports the
format: "cron"editor described in #196.The nodehost should own CRON parsing, validation and execution. Recipes, the nodehost UI and the Frontend node should all use the same rules so weekday, timezone and missed-run behaviour cannot drift between implementations.
Proposed scope:
Timer.format: "cron"support in the nodehost UI and provide the shared browser support needed by the current Frontend/Mk2 node.A maintained JVM library such as cron-utils appears to cover parsing, validation, descriptions and execution-time calculation, which would avoid maintaining another CRON implementation. Its dependencies, including compatibility with Nodel's current SLF4J stack, should be reviewed before adoption.
The implementation should remain JVM-based and work anywhere Nodel runs.
The companion recipe issue will add a new Scheduler recipe and any Frontend/Mk2 integration needed to consume this support. The retired scheduler and advscheduler recipes are behavioural references only.