This commit is contained in:
2024-10-14 00:08:40 +02:00
parent dbfba56f66
commit 1462d52e13
4572 changed files with 2658864 additions and 0 deletions

View File

@@ -0,0 +1,202 @@
# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::System::Scheduler;
use strict;
use warnings;
our @ObjectDependencies = (
'Kernel::System::Daemon::SchedulerDB',
'Kernel::System::Log',
);
=head1 NAME
Kernel::System::Scheduler - Scheduler lib
=head1 DESCRIPTION
Includes the functions to add a new task to the scheduler daemon.
=head1 PUBLIC INTERFACE
=head2 new()
create a scheduler object. Do not use it directly, instead use:
my $SchedulerObject = $Kernel::OM->Get('Kernel::System::Scheduler');
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
return $Self;
}
=head2 TaskAdd()
add a task to scheduler
my $Success = $SchedulerObject->TaskAdd(
ExecutionTime => '2015-01-01 00:00:00', # task will be executed immediately if no execution
# time is given
Type => 'GenericInterface', # e. g. GenericInterface, Test
Name => 'any name', # optional
Attempts => 5, # optional (default 1)
MaximumParallelInstances => 2, # optional, number of tasks with the same type
# (and name if provided) that can exists at
# the same time, value of 0 means unlimited
Data => { # data payload
...
},
);
=cut
sub TaskAdd {
my ( $Self, %Param ) = @_;
# check needed stuff
for my $Key (qw(Type Data)) {
if ( !$Param{$Key} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "Need $Key!",
);
return;
}
}
# get scheduler database object
my $SchedulerDBObject = $Kernel::OM->Get('Kernel::System::Daemon::SchedulerDB');
my $TaskID;
if ( $Param{ExecutionTime} ) {
$TaskID = $SchedulerDBObject->FutureTaskAdd(%Param);
}
else {
$TaskID = $SchedulerDBObject->TaskAdd(%Param);
}
return 1 if $TaskID;
return;
}
=head2 FutureTaskList()
get the list of scheduler future tasks
my @List = $SchedulerObject->FutureTaskList(
Type => 'some type', # optional
);
Returns:
@List = (
{
TaskID => 123,
ExecutionTime => '2015-01-01 00:00:00',
Name => 'any name',
Type => 'GenericInterface',
},
{
TaskID => 456,
ExecutionTime => '2015-01-01 00:00:00',
Name => 'any other name',
Type => 'GenericInterface',
},
# ...
);
=cut
sub FutureTaskList {
my ( $Self, %Param ) = @_;
my @List = $Kernel::OM->Get('Kernel::System::Daemon::SchedulerDB')->FutureTaskList(%Param);
return @List;
}
=head2 TaskList()
get the list of scheduler tasks
my @List = $SchedulerObject->TaskList(
Type => 'some type', # optional
);
Returns:
@List = (
{
TaskID => 123,
Name => 'any name',
Type => 'GenericInterface',
},
{
TaskID => 456,
Name => 'any other name',
Type => 'GenericInterface',
},
# ...
);
=cut
sub TaskList {
my ( $Self, %Param ) = @_;
return $Kernel::OM->Get('Kernel::System::Daemon::SchedulerDB')->TaskList(%Param);
}
=head2 FutureTaskDelete()
delete a task from scheduler future task list
my $Success = $Schedulerbject->FutureTaskDelete(
TaskID => 123,
);
=cut
sub FutureTaskDelete {
my ( $Self, %Param ) = @_;
# check needed stuff
if ( !$Param{TaskID} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => 'Need TaskID!',
);
return;
}
my $Success = $Kernel::OM->Get('Kernel::System::Daemon::SchedulerDB')->FutureTaskDelete(%Param);
return $Success;
}
1;
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<https://otrs.org/>).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see L<https://www.gnu.org/licenses/gpl-3.0.txt>.
=cut