Scheduler

Scheduler एक Space में पंजीकृत की जाने वाली, दोहराई जाने वाली निष्पादन शेड्यूल है। जब आप एक Script को उसके चलने के समय के साथ जोड़ देते हैं, तो हर बार वह समय आने पर सर्वर उस Script को निष्पादित करता है। उदाहरण के लिए, किसी कपड़े की दुकान वाले ऑनलाइन स्टोर में स्टॉक 0 वाले उत्पादों को ढूँढकर आपूर्तिकर्ता के ऑर्डर विंडो को कॉल करने वाले Script को रोज़ एक बार चलाने के लिए, उस Script की ओर इशारा करने वाला एक Scheduler बना दें।

Scheduler, CMA द्वारा प्रबंधित एक Space का उप-संसाधन है, और इसका पथ /spaces/{spaceId}/schedulers पर आधारित है। इसमें प्रकाशन (publish) की अवधारणा नहीं है और sys.version भी नहीं है। बनाते ही यह तुरंत शेड्यूल में शामिल हो जाता है, और संशोधन के लिए वर्ज़न हेडर की ज़रूरत नहीं होती। इसके बजाय दो बातें अन्य संसाधनों से अलग हैं। निष्पादित होने वाला Script बनाने के बाद बदला नहीं जा सकता, और इसे बनाने या बदलने के लिए Space की सेटिंग अनुमति के अलावा उस Script की निष्पादन अनुमति अलग से चाहिए। निष्पादन का परिणाम SchedulerLog के रूप में रहता है, और सफल निष्पादन 1 घंटे बाद तथा विफल निष्पादन 3 दिन बाद मिट जाता है।

संसाधन संरचना

नीचे Scheduler बनाने पर मिलने वाली प्रतिक्रिया दी गई है। sys में पहचानकर्ता और संदर्भ होते हैं, और मुख्य भाग में नाम, चलने का समय और चालू है या नहीं यह जानकारी होती है।

{
  "sys": {
    "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ",
    "type": "Scheduler",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "script": { "sys": { "id": "3trmXRMKq7bd0Prbef1NcZ", "type": "Refer", "targetType": "Script" } },
    "createdBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-08-26T01:20:07.442Z",
    "updatedBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "updatedAt": "2026-08-26T01:20:07.442Z"
  },
  "name": "स्टॉक ऑर्डर",
  "cronExpression": "0 0 * * *",
  "activated": true
}

मुख्य कुंजियाँ:

  • sys.id: Scheduler का विशिष्ट पहचानकर्ता। एकल पठन, संशोधन और विलोपन पथ के {schedulerId} में जाता है।
  • sys.script: यह शेड्यूल जिस Script को निष्पादित करेगा वह। इसे केवल बनाते समय ही तय किया जा सकता है और बाद में बदला नहीं जा सकता। किसी अन्य Script को चलाने के लिए नया Scheduler बनाएँ।
  • name: कंसोल में दिखने वाला लेबल। निष्पादन में इसका उपयोग नहीं होता।
  • cronExpression: चलने का समय। पाँच खाने (मिनट, घंटा, दिन, महीना, सप्ताह का दिन) होते हैं और इसे UTC में समझा जाता है। नीचे चलने का समय लिखना देखें।
  • activated: चालू है या नहीं। false होने पर सहेजा गया रहता है पर केवल निष्पादन नहीं होता।

sys.version नहीं है। संशोधन अनुरोध में X-Weegloo-Version हेडर नहीं भेजा जाता।

सिस्टम गुण (sys)

space, script, createdBy, updatedBy Refer आकार ({ "sys": { "id", "type": "Refer", "targetType" } }) में आते हैं।

गुणप्रकारविवरण
idstringसंसाधन का विशिष्ट पहचानकर्ता।
typestringसंसाधन का प्रकार। Scheduler हमेशा "Scheduler"
spaceRefer<Space>यह शेड्यूल जिस Space का है।
scriptRefer<Script>निष्पादित होने वाला Script। बनाने के बाद अपरिवर्तनीय।
createdByRefer<User>बनाने वाला उपयोगकर्ता। निष्पादन इसी उपयोगकर्ता की अनुमति से होता है।
createdAtstring (date-time)बनाने का समय।
updatedByRefer<User>अंतिम बार संशोधित करने वाला उपयोगकर्ता।
updatedAtstring (date-time)अंतिम संशोधन का समय।

मुख्य भाग के गुण:

गुणप्रकारविवरण
namestring (1~64)कंसोल में दिखने वाला लेबल। निष्पादन में उपयोग नहीं होता।
cronExpressionstring (1~128)चलने का समय। पाँच खाने (मिनट, घंटा, दिन, महीना, सप्ताह का दिन), UTC व्याख्या।
activatedbooleanचालू है या नहीं। false होने पर शेड्यूल से हट जाता है और निष्पादित नहीं होता।

चलने का समय लिखना

पाँच खानों को बाएँ से मिनट, घंटा, दिन, महीना, सप्ताह का दिन के क्रम में लिखा जाता है। सेकंड वाला खाना नहीं होता।

मानअर्थ
0 0 * * *हर दिन 00
30 9 * * *हर दिन 09
0 * * * *हर घंटे के शुरू में
*/10 * * * *हर 10 मिनट में
0 0 * * 1हर सोमवार 00
0 0 1 * *हर महीने की 1 तारीख को 00

*(सभी), ,(सूची), -(परास), /(अंतराल) का उपयोग किया जा सकता है, और सप्ताह का दिन संख्या (07, जहाँ 0 और 7 रविवार हैं) या नाम (SUNSAT) से लिखा जाता है।

सभी मान UTC में समझे जाते हैं। आपको स्थानीय समय के अंतर की गणना करके डालना होगा, और जिन समयों में तारीख या सप्ताह का दिन तय किया गया है, वहाँ इस अंतर के कारण वास्तव में चलने का दिन बदल सकता है।

जो मान कभी नहीं चलता उसे सहेजा नहीं जाता। 0 0 30 2 *(30 फ़रवरी) की तरह प्रारूप सही होने पर भी कभी न आने वाले दिन की ओर इशारा करने पर अस्वीकार कर दिया जाता है।

स्थिति और प्रतिबंध

लक्ष्यप्रतिबंध
name1~64 अक्षर, आवश्यक।
cronExpression1~128 अक्षर, आवश्यक। पाँच खाने होने चाहिए और कम से कम एक बार चलना चाहिए।
activatedआवश्यक।
sys.scriptबनाते समय आवश्यक। बनाने के बाद अपरिवर्तनीय (संशोधन के मुख्य भाग में स्वीकार नहीं किया जाता)।

व्यवहार और अनुमति से संबंधित नियम:

  • दो अनुमतियाँ एक साथ आवश्यक हैं। भूमिका (SpaceRole) के settings में SETTING_SCHEDULER होना चाहिए, और उससे अलग लक्ष्य Script पर Execute अनुमति होनी चाहिए। यह केवल बनाने में ही नहीं, बल्कि संशोधन और आंशिक संशोधन में भी जाँची जाती है। इसका कारण यह है कि चलने का समय बदलना यह तय करना है कि उस Script को कब निष्पादित किया जाए, और बंद को चालू करना निष्पादन को शुरू करना है। इन दोनों में से एक भी न हो, तो अनुरोध अस्वीकार कर दिया जाता है।
  • निष्पादन sys.createdBy की अनुमति से होता है। Script के भीतर का :self फ़िल्टर भी उसी उपयोगकर्ता के रूप में समझा जाता है। संशोधन करने वाला अलग होने पर भी निष्पादन कर्ता नहीं बदलता।
  • रचयिता के निष्पादन अनुमति खो देने पर यह स्वतः बंद हो जाता है। अगले निष्पादन समय पर सर्वर जाँच करके निष्पादित नहीं करता और activated को false कर देता है। अनुमति बहाल हो जाने पर भी यह स्वतः चालू नहीं होता।
  • संख्या की एक सीमा है। एक Organization के पास कितने Scheduler हो सकते हैं यह प्रत्येक योजना के अनुसार तय है (Free 1, Basic 5, Pro 30, Enterprise असीमित)। उस सीमा के पार जाने पर नया Scheduler बनाना अस्वीकार कर दिया जाता है।
  • निष्पादन गिनती Script के साथ साझा होती है। हर बार चलने पर योजना की Script निष्पादन गिनती में से एक खर्च होती है। Scheduler के लिए कोई अलग निष्पादन सीमा नहीं है। उस सीमा के पार होने पर Organization का Script निष्पादन रुक जाए, तो उसके बाद जिनका निष्पादन समय आता है, वे Scheduler निष्पादित नहीं होते और activated false हो जाता है। ऐसी स्थिति में एक SchedulerLog बनता है और sys.error में कारण दर्ज होता है। वह Scheduler बंद हो जाने के बाद फिर से शेड्यूल नहीं किया जाता।
  • छूटे हुए निष्पादन की भरपाई नहीं की जाती। कोई चक्र निष्पादित न हो पाने पर भी बाद में इकट्ठा करके नहीं चलाया जाता, अगले समय से फिर से चलता है।
  • उपयोग में मौजूद Script को हटाया नहीं जा सकता। किसी Scheduler द्वारा संदर्भित Script को हटाने का प्रयास करने पर वह विलोपन अस्वीकार कर दिया जाता है (Script की त्रुटियाँ देखें)।
  • प्रकाशन नहीं होता। किसी स्थिति-मान या प्रकाशन चरण के बिना बनाते ही यह सीधे शेड्यूल में शामिल हो जाता है, और विलोपन भी बिना किसी पूर्व-चरण के सीधे हो जाता है।

SchedulerLog

Scheduler जब भी एक बार चलता है, तब एक निष्पादन रिकॉर्ड बनता है। यह केवल पठन के लिए है और इसमें बनाने, संशोधन या विलोपन के एंडपॉइंट नहीं हैं। इसका पथ /spaces/{spaceId}/schedulers/{schedulerId}/logs है।

{
  "sys": {
    "id": "5nRt8YcVm2Qb7WxZpK4dGhJ9sL",
    "type": "SchedulerLog",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "requestId": "3trmXRM8dNvQ2LbYpK7fHsJ3gWc4Rt",
    "success": true,
    "createdBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
    "createdAt": "2026-09-03T00:00:02.503Z",
    "updatedBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
    "updatedAt": "2026-09-03T00:00:02.503Z"
  }
}

सभी मान sys के अंदर होते हैं और कोई मुख्य-भाग गुण नहीं होता। जिन कुंजियों का मान नहीं होता वे प्रतिक्रिया से हट जाती हैं (ऊपर के उदाहरण में error नहीं है)।

गुणप्रकारविवरण
idstringरिकॉर्ड का विशिष्ट पहचानकर्ता। एकल पठन पथ के {schedulerLogId} में जाता है।
typestringहमेशा "SchedulerLog"
spaceRefer<Space>यह रिकॉर्ड जिस Space का है।
requestIdstringइस चक्र के निष्पादन का पहचानकर्ता। यही मान ScriptLog के sys.requestId में जाता है।
successbooleanसफलता या नहीं।
erroranyयह केवल उस चक्र में दर्ज होता है जो निष्पादन गिनती समाप्त हो जाने के कारण शुरू ही नहीं हो सका। इसके अलावा की स्थितियों में यह विफल चक्र से भी हट जाता है। चलते-चलते विफल होने का कारण उसी requestId वाले ScriptLog के sys.value में होता है।
createdByRefer<Scheduler>यह रिकॉर्ड बनाने वाला Scheduler उपयोगकर्ता नहीं।
createdAtstring (date-time)रिकॉर्ड बनने का समय।
updatedByRefer<Scheduler>createdBy जैसा ही Scheduler
updatedAtstring (date-time)createdAt के समान।

scheduler फ़ील्ड नहीं है। यह रिकॉर्ड किस Scheduler का है, यह sys.createdBy बताता है, और उसका targetType "Scheduler" होता है। sys.updatedBy भी वही Scheduler है।

startedAt, endedAt, result और लगे समय वाले फ़ील्ड भी नहीं हैं। एक चक्र में कितना समय लगा और Script ने क्या मान लौटाया, यह उसी requestId वाले ScriptLog में होता है (sys.durationMs, sys.value, sys.statusCode)। फ़ील्ड की बनावट Script संसाधन और एंडपॉइंट में दी गई है।

एक चक्र दो लॉग छोड़ता है। एक यह पतला SchedulerLog है, और दूसरा उस निष्पादन को स्वयं समेटे हुआ ScriptLog (ScriptLog का sys.trigger इस Scheduler की ओर इशारा करता है)। दोनों एक ही requestId से जुड़े होते हैं।

रिकॉर्ड निष्पादन समाप्त होने के बाद एक बार लिखा जाता है और बदलता नहीं। सफल निष्पादन 1 घंटे बाद और विफल निष्पादन 3 दिन बाद मिट जाता है। समाप्ति का समय रखने वाला कोई फ़ील्ड प्रतिक्रिया में नहीं होता, और समय आने पर रिकॉर्ड मिट जाता है। उससे अधिक समय तक रखने योग्य मानों को Script के भीतर Content के रूप में सहेजें।

त्रुटियाँ

ये कोड Scheduler के साथ काम करते समय मिलते हैं। सभी संसाधनों में समान रूप से मिलने वाले कोड के लिए सामान्य त्रुटियाँ देखें।

कोडशर्त
WGL400069cronExpression का प्रारूप सही होने पर भी वह ऐसे समय की ओर इशारा करता है जो कभी नहीं चलता।
WGL403001कॉल करने वाले की भूमिका में SETTING_SCHEDULER सेटिंग अनुमति नहीं है। यह अनुमति Scheduler बनाने और बदलने के अलावा उसे पढ़ने, हटाने और निष्पादन रिकॉर्ड पढ़ने के लिए भी आवश्यक है। Scheduler बनाते या बदलते समय लक्ष्य Script की Execute अनुमति भी साथ चाहिए, और इन दोनों में से एक भी न हो तो अनुरोध इसी कोड से अस्वीकार हो जाता है।
WGL429001Organization के Scheduler की संख्या योजना की सीमा तक पहुँच चुकी है, और उसी स्थिति में नया Scheduler बनाने का प्रयास किया गया।

API

नीचे दिए गए सभी एंडपॉइंट का आधार URL https://cma.weegloo.com/v1 है, और Authorization हेडर में CMA को प्रमाणित करने वाला Bearer टोकन चाहिए। Scheduler में sys.version नहीं है, इसलिए संशोधन में X-Weegloo-Version हेडर नहीं भेजा जाता।

  • Script: वह संसाधन जिसे Scheduler निष्पादित करता है। परिभाषा संरचना और statement के प्रकार को कवर करता है।
  • Webhook: वह संसाधन जो Script को समय के बजाय घटना पर निष्पादित करता है।
  • SpaceRole: वह भूमिका जो SETTING_SCHEDULER सेटिंग अनुमति और Script की Execute अनुमति रखती है।
  • Scheduler (अवधारणा): यह किस काम के लिए है और इसे कंसोल में संभालने का तरीका।