La vérification d'une expression cron est valable en Java
Je suis en train d'écrire une application de programmation en Java à l'aide de Quartz. Je suis à l'aide de la crontrigger, en anglais, mais mon cron expressions sont entrées dans une base de données avant qu'elles soient planifiées et sont fonction de l'entrée utilisateur.
Est-il un moyen pour que je puisse vérifier que le cron expressions sont valables quand je les capturer? Je préfère le faire et donner à l'utilisateur un message d'erreur approprié que d'attendre jusqu'à ce que le planificateur est la course et je reçois un ParseException quand je l'ai essayer et créer le déclencheur. Ce qui pourrait être des jours après que l'utilisateur saisit les données.
Vous devez vous connecter pour publier un commentaire.
Ne pouvez-vous pas simplement créer un déclencheur sans réellement l'exécuter? Vous pouvez simplement donner de la rétroaction appropriée dans le cas d'une ParseException. Si l'expression est d'accord, persistent l'expression de DB.
Edit: ou simplement faire ceci:
isValidExpression("0 0 12 1/2 * MON-FRI *")
retourne vrai, mais à l'exécution, il jetteUnsupportedOperationException: Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.
CronExpression
et attrape toutes lesParseException
. Donc il ne devrait pas être différent.J'ai modifié les suivantes code ajouté par @ph4r05 pour générer une regex ainsi, en voici la regex:
Voici le code java:
Je ne suis pas une regex expert, mais au moins, cela semble fonctionner sur tous les exemples donnés par le quartz la documentation
Vous pouvez utiliser cron-utils
Non seulement vérifier le cron est valide, mais vous pouvez convertir à partir de différents cron formats à la cible (ex.: si les entrées de l'utilisateur Unix expression cron, vous pouvez facilement convertir de Quartz et de persister à DB).
Ci-dessous, nous donnons quelques extraits:
J'ai trouvé l'expression régulière suivante dans le "QuartzNet" projet sur Github. Je pense que c'est peut-être ce Quartz utilise pour valider les cron expressions.
Lien: https://github.com/quartznet/quartznet/blob/master/src/Quartz/Xml/job_scheduling_data_2_0.xsd