
क्रोन एक्सप्रेशन को पार्स करने, मान्य करने, माइग्रेट करने और वर्णन करने के लिए जावा लाइब्रेरी, जो कई फॉर्मेट (Unix, Quartz, Spring) और मानव-पठनीय लोकेल-विशिष्ट आउटपुट का समर्थन करती है।
हम crons परिभाषित करते हैं। और उनका समर्थन करते हैं।
cron-utils एक Java लाइब्रेरी है जो crons को परिभाषित करने, पार्स करने, मान्य करने, स्थानांतरित करने और उनके लिए मानव-पठनीय विवरण प्राप्त करने के लिए है। यह परियोजना Semantic Versioning Convention का पालन करती है, OSGi मेटाडेटा प्रदान करती है और Apache 2.0 लाइसेंस का उपयोग करती है।
डाउनलोड
cron-utils Maven central रिपॉजिटरी पर उपलब्ध है।
<dependency>
<groupId>com.cronutils</groupId>
<artifactId>cron-utils</artifactId>
<version>9.2.1</version>
</dependency>
Android डेवलपर्स के लिए, cron-utils 7.0.0 Android 26+ मानता है। पुराने Android संस्करणों के लिए cron-utils 6.0.6 का उपयोग करने पर विचार करें। Java EE से ScheduleExpression का उपयोग करते समय, इसे रनटाइम निर्भरता के रूप में प्रदान किया जाना चाहिए।
वर्तमान विकास
हम वर्तमान में JDK 16 की ओर कोडबेस को अपडेट करने पर काम कर रहे हैं, ताकि यह सुनिश्चित हो सके कि जारी होने पर JDK 17 के साथ पूरी तरह से संगत होगा।
अब हम न्यूरल-ट्रांसलेशन का उपयोग करके cron-descriptors की एक नई पीढ़ी विकसित कर रहे हैं! किसी भी प्रकार का योगदान स्वागत योग्य है: डेटासेट जनरेशन में मदद से लेकर मशीन लर्निंग मॉडल प्रशिक्षण और उन्हें लोड करने के लिए उपयोगिताएँ! यदि रुचि हो, तो कृपया #3 मुद्दे का अनुसरण करें।
विशेषताएँ
उपयोग उदाहरण
नीचे हम कुछ उदाहरण प्रस्तुत करते हैं। आप इन्हें और अन्य को हमारे द्वारा बनाए गए एक नमूना रिपो में पा सकते हैं जो cron-utils लाइब्रेरीज़ को प्रदर्शित करता है!
cron परिभाषाएँ बनाएँ
// अपना स्वयं का cron परिभाषित करें: मनमानी फ़ील्ड की अनुमति है और अंतिम फ़ील्ड वैकल्पिक हो सकता है
CronDefinition cronDefinition =
CronDefinitionBuilder.defineCron()
.withSeconds().and()
.withMinutes().and()
.withHours().and()
.withDayOfMonth()
.supportsHash().supportsL().supportsW().and()
.withMonth().and()
.withDayOfWeek()
.withIntMapping(7, 0) //हम गैर-मानक गैर-शून्य-आधारित संख्याओं का समर्थन करते हैं!
.supportsHash().supportsL().supportsW().and()
.withYear().optional().and()
.instance();
// या एक पूर्व-परिभाषित उदाहरण प्राप्त करें
cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
एक cron अभिव्यक्ति बनाएँ
// एक cron अभिव्यक्ति बनाएँ। CronMigrator यह सुनिश्चित करेगा कि आप cron प्रदाता-अज्ञेय बने रहें
import static com.cronutils.model.field.expression.FieldExpressionFactory.*;
Cron cron = CronBuilder.cron(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ))
.withYear(always())
.withDoM(between(SpecialChar.L, 3))
.withMonth(always())
.withDoW(questionMark())
.withHour(always())
.withMinute(always())
.withSecond(on(0))
.instance();
// स्ट्रिंग अभिव्यक्ति प्राप्त करें
String cronAsString = cron.asString(); // 0 * * L-3 * ? *
पार्स करें
// प्रदान की गई परिभाषा के आधार पर एक पार्सर बनाएँ
CronParser parser = new CronParser(cronDefinition);
Cron quartzCron = parser.parse("0 23 * ? * 1-5 *");
... यहाँ तक कि मल्टी-क्रॉन अभिव्यक्तियाँ भी! कई crons को एक पंक्ति में समेटने के बारे में क्या ख्याल है? 0 0 9 * * ? *, 0 0 10 * * ? *, 0 30 11 * * ? * और 0 0 12 * * ? * लिखने के बजाय हम इसे 0 0|0|30|0 9|10|11|12 * * ? * में लपेट सकते हैं
वर्णन करें
// किसी विशिष्ट Locale के लिए एक डिस्क्रिप्टर बनाएँ
CronDescriptor descriptor = CronDescriptor.instance(Locale.UK);
// कुछ अभिव्यक्ति पार्स करें और डिस्क्रिप्टर से विवरण पूछें
String description = descriptor.describe(parser.parse("*/45 * * * * ?"));
// विवरण होगा: "हर 45 सेकंड"
description = descriptor.describe(quartzCron);
// विवरण होगा: "प्रति घंटा मिनट 23 पर, सोमवार और शुक्रवार के बीच हर दिन"
// जो नीचे दिए गए cron के लिए समान विवरण है:
descriptor.describe(parser.parse("0 23 * ? * MON-FRI *"));
स्थानांतरित करें
// क्रॉन लाइब्रेरीज़ के बीच स्थानांतरण इतना आसान कभी नहीं रहा!
// CronMapper का उपयोग करके cron अभिव्यक्तियों को दूसरे प्रारूप में बदलें:
CronMapper cronMapper = CronMapper.fromQuartzToCron4j();
Cron cron4jCron = cronMapper.map(quartzCron);
// और इसका स्ट्रिंग प्रतिनिधित्व प्राप्त करने के लिए, हम इसका उपयोग कर सकते हैं
cron4jCron.asString(); // वापसी: 23 * * * 1-5
सत्यापित करें
cron4jCron.validate()
निष्पादन से/तक समय की गणना करें
// अंतिम निष्पादन के लिए तिथि प्राप्त करें
ZonedDateTime now = ZonedDateTime.now();
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("* * * * * ? *"));
ZonedDateTime lastExecution = executionTime.lastExecution(now);
// अगले निष्पादन के लिए तिथि प्राप्त करें
ZonedDateTime nextExecution = executionTime.nextExecution(now);
// अंतिम निष्पादन से समय
Duration timeFromLastExecution = executionTime.timeFromLastExecution(now);
// अगले निष्पादन तक का समय
Duration timeToNextExecution = executionTime.timeToNextExecution(now);
लाइब्रेरीज़ के बीच स्थिरांक मैप करें
// Quartz से JodaTime में सप्ताह के दिन का मान मैप करें
int jodatimeDayOfWeek =
ConstantsMapper.weekDayMapping(
ConstantsMapper.QUARTZ_WEEK_DAY,
ConstantsMapper.JODATIME_WEEK_DAY
);
मनुष्यों के लिए दिनांक और समय स्वरूपण!
htime का उपयोग करें - Java के लिए मानव-पठनीय दिनांक समय स्वरूपण! हालाँकि यह कार्यक्षमता एक ही jar में बंडल नहीं है, यह एक cron-utils प्रोजेक्ट है जो आपको उपयोगी लग सकता है।
// आपको अब "YYYY-MM-dd KK a" पैटर्न याद रखने की आवश्यकता नहीं है।
DateTimeFormatter formatter =
HDateTimeFormatBuilder
.getInstance()
.forJodaTime()
.getFormatter(Locale.US)
.forPattern("June 9, 2011");
String formattedDateTime = formatter.print(lastExecution);
// formattedDateTime "दिन का नाम, माह दिन, वर्ष" प्रारूप में lastExecution होगा
cron-utils CLI
हम एक सरल CLI इंटरफ़ेस प्रदान करते हैं ताकि cron-utils का उपयोग सीधे कंसोल से, बिना कोई नया प्रोजेक्ट लिखे किया जा सके! CLI एक उपग्रह परियोजना है, जो cron-utils-cli पर उपलब्ध है।
उपयोग: java -jar cron-utils.jar com.cronutils.cli.CronUtilsCLI --validate -f [CRON4J|QUARTZ|UNIX] -e '<cron expression>'
उदाहरण: java -jar cron-utils.jar com.cronutils.cli.CronUtilsCLI --validate -f UNIX -e '* 1 * * *'
यदि आप 'cp' की आवश्यकता के बिना एक स्टैंडअलोन jar चाहते हैं, तो इसके साथ एक uber jar बनाएँ:
mvn assembly:assembly -DdescriptorId=jar-with-dependencies
फिर, cli-utils ('target' निर्देशिका में निर्मित) को इसके साथ लॉन्च करें:
java -jar cron-utils-<version>-jar-with-dependencies.jar com.cronutils.cli.CronUtilsCLI --validate -f [CRON4J|QUARTZ|UNIX] -e '<cron expression>'`
योगदान दें और समर्थन करें!
योगदान स्वागत योग्य हैं! आप निम्नलिखित तरीकों से योगदान कर सकते हैं:
हमारा पेज देखें! परियोजना के आँकड़ों के लिए, आप हमारी OpenHUB प्रोफ़ाइल पर जा सकते हैं।
अन्य cron-utils परियोजनाएँ
आप निम्नलिखित cron-utils परियोजनाओं पर जाने और उपयोग करने के लिए स्वागत हैं: