diff --git a/application/Espo/Core/DataManager.php b/application/Espo/Core/DataManager.php index 0907116647..af74795ffb 100644 --- a/application/Espo/Core/DataManager.php +++ b/application/Espo/Core/DataManager.php @@ -198,15 +198,14 @@ class DataManager */ public function rebuildScheduledJobs(): void { - $metadata = $this->metadata; - - $entityManager = $this->entityManager; - - $jobs = $metadata->get(['entityDefs', 'ScheduledJob', 'jobs'], []); + $jobDefs = array_merge( + $this->metadata->get(['entityDefs', 'ScheduledJob', 'jobs'], []), // for bc + $this->metadata->get(['app', 'scheduledJobs'], []) + ); $systemJobNameList = []; - foreach ($jobs as $jobName => $defs) { + foreach ($jobDefs as $jobName => $defs) { if (!$jobName) { continue; } @@ -217,8 +216,8 @@ class DataManager $systemJobNameList[] = $jobName; - $sj = $entityManager - ->getRepository('ScheduledJob') + $sj = $this->entityManager + ->getRDBRepository('ScheduledJob') ->where([ 'job' => $jobName, 'status' => 'Active', @@ -230,15 +229,15 @@ class DataManager continue; } - $job = $entityManager - ->getRepository('ScheduledJob') + $existingJob = $this->entityManager + ->getRDBRepository('ScheduledJob') ->where([ 'job' => $jobName, ]) ->findOne(); - if ($job) { - $entityManager->removeEntity($job); + if ($existingJob) { + $this->entityManager->removeEntity($existingJob); } $name = $jobName; @@ -247,21 +246,17 @@ class DataManager $name = $defs['name']; } - $job = $entityManager->getEntity('ScheduledJob'); - - $job->set([ + $this->entityManager->createEntity('ScheduledJob', [ 'job' => $jobName, 'status' => 'Active', 'scheduling' => $defs['scheduling'], 'isInternal' => true, 'name' => $name, ]); - - $entityManager->saveEntity($job); } - $internalScheduledJobList = $entityManager - ->getRepository('ScheduledJob') + $internalScheduledJobList = $this->entityManager + ->getRDBRepository('ScheduledJob') ->where([ 'isInternal' => true, ]) @@ -271,7 +266,9 @@ class DataManager $jobName = $scheduledJob->get('job'); if (!in_array($jobName, $systemJobNameList)) { - $entityManager->getRepository('ScheduledJob')->deleteFromDb($scheduledJob->id); + $this->entityManager + ->getRDBRepository('ScheduledJob') + ->deleteFromDb($scheduledJob->id); } } } diff --git a/application/Espo/Resources/metadata/app/scheduledJobs.json b/application/Espo/Resources/metadata/app/scheduledJobs.json index eae7a8797a..1a1f3caada 100644 --- a/application/Espo/Resources/metadata/app/scheduledJobs.json +++ b/application/Espo/Resources/metadata/app/scheduledJobs.json @@ -1,7 +1,39 @@ { "ProcessJobGroup": { + "name": "Process Job Group", + "isSystem": true, + "scheduling": "* * * * *", "isPreparable": true }, + "ProcessJobQueueQ0": { + "name": "Process Job Queue q0", + "isSystem": true, + "scheduling": "* * * * *" + }, + "ProcessJobQueueQ1": { + "name": "Process Job Queue q1", + "isSystem": true, + "scheduling": "*/1 * * * *" + }, + "ProcessJobQueueE0": { + "name": "Process Job Queue e0", + "isSystem": true, + "scheduling": "* * * * *" + }, + "Dummy": { + "isSystem": true, + "scheduling": "1 */12 * * *" + }, + "CheckNewVersion": { + "name": "Check for New Version", + "isSystem": true, + "scheduling": "15 5 * * *" + }, + "CheckNewExtensionVersion": { + "name": "Check for New Versions of Installed Extensions", + "isSystem": true, + "scheduling": "25 5 * * *" + }, "CheckEmailAccounts": { "isPreparable": true }, diff --git a/application/Espo/Resources/metadata/entityDefs/ScheduledJob.json b/application/Espo/Resources/metadata/entityDefs/ScheduledJob.json index 447e242b0c..bde4c5218c 100644 --- a/application/Espo/Resources/metadata/entityDefs/ScheduledJob.json +++ b/application/Espo/Resources/metadata/entityDefs/ScheduledJob.json @@ -76,41 +76,5 @@ "AuthTokenControl": "*/6 * * * *", "SendEmailNotifications": "*/2 * * * *", "ProcessWebhookQueue": "*/5 * * * *" - }, - "jobs": { - "Dummy": { - "isSystem": true, - "scheduling": "1 */12 * * *" - }, - "CheckNewVersion": { - "name": "Check for New Version", - "isSystem": true, - "scheduling": "15 5 * * *" - }, - "CheckNewExtensionVersion": { - "name": "Check for New Versions of Installed Extensions", - "isSystem": true, - "scheduling": "25 5 * * *" - }, - "ProcessJobGroup": { - "name": "Process Job Group", - "isSystem": true, - "scheduling": "* * * * *" - }, - "ProcessJobQueueQ0": { - "name": "Process Job Queue q0", - "isSystem": true, - "scheduling": "* * * * *" - }, - "ProcessJobQueueQ1": { - "name": "Process Job Queue q1", - "isSystem": true, - "scheduling": "*/1 * * * *" - }, - "ProcessJobQueueE0": { - "name": "Process Job Queue e0", - "isSystem": true, - "scheduling": "* * * * *" - } } }