forked from ProcessMaker/processmaker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathKernel.php
More file actions
108 lines (91 loc) · 3.53 KB
/
Kernel.php
File metadata and controls
108 lines (91 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
namespace ProcessMaker\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [];
/**
* Define the application's command schedule.
*
* @param Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('bpmn:timer')
->everyMinute()
->onOneServer()
->withoutOverlapping(config('app.scheduler.bpmn_timer_overlap_minutes', 5));
$schedule->command('processmaker:sync-recommendations --queue')
->daily()
->onOneServer();
$schedule->command('package-data-sources:delete-logs')
->weekly();
$schedule->command('processmaker:sync-default-templates --queue')
->daily();
$schedule->command('processmaker:sync-guided-templates --queue')
->daily();
$schedule->command('processmaker:sync-screen-templates --queue')
->daily();
$schedule->command('cache:metrics --format=json > storage/logs/processmaker-cache-metrics.json')
->daily();
if (class_exists('\ProcessMaker\Packages\Connectors\Slack\Services\SlackNotificationService')) {
$slackOverDueTaskInterval = config('slack.overdue_tasks.check_interval');
$slackOverDueTaskBatchSize = config('slack.overdue_tasks.batch_size');
// Only schedule if interval is valid
if ($slackOverDueTaskInterval > 0) {
$slackOverDueTaskCommand = "connector-slack:check-overdue-tasks --batch-size={$slackOverDueTaskBatchSize} --queue";
$command = $schedule->command($slackOverDueTaskCommand);
$command->cron("*/{$slackOverDueTaskInterval} * * * *");
}
}
$clearInterval = config('metrics.clear_interval', 10);
switch ((int) $clearInterval) {
case 1:
$schedule->command('metrics:clear')->everyMinute();
break;
case 2:
$schedule->command('metrics:clear')->everyTwoMinutes();
break;
case 5:
$schedule->command('metrics:clear')->everyFiveMinutes();
break;
case 10:
$schedule->command('metrics:clear')->everyTenMinutes();
break;
case 15:
$schedule->command('metrics:clear')->everyFifteenMinutes();
break;
case 30:
$schedule->command('metrics:clear')->everyThirtyMinutes();
break;
case 60:
$schedule->command('metrics:clear')->hourly();
break;
case 1440:
$schedule->command('metrics:clear')->daily();
break;
default:
$schedule->command('metrics:clear')->cron("*/{$clearInterval} * * * *");
break;
}
// 5 minutes is recommended in https://laravel.com/docs/12.x/horizon#metrics
$schedule->command('horizon:snapshot')->everyFiveMinutes();
}
/**
* Register the Closure based commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
}