Page 3845 Scheduled Tasks, source in 29
Source29
src/Layers/W1/BaseApp/Modules/System/JobQueue/ScheduledTasks.Page.al166 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Threading;
using System.Azure.Identity;
using System.Environment;
page 3845 "Scheduled Tasks"
{
PageType = List;
ApplicationArea = All;
UsageCategory = Administration;
SourceTable = "Scheduled Task";
Editable = false;
Extensible = true;
layout
{
area(Content)
{
group(Information)
{
field("Current Tenant ID"; Database.TenantId())
{
ApplicationArea = All;
Caption = 'Current Tenant ID';
ToolTip = 'Specifies the tenant ID of the current environment.';
}
field("Current Company"; CompanyName())
{
ApplicationArea = All;
Caption = 'Current Company Name';
ToolTip = 'Specifies the current company name.';
}
}
repeater(General)
{
field(ID; Rec.ID)
{
ApplicationArea = All;
Caption = 'ID';
Visible = false;
ToolTip = 'Specifies the ID of the scheduled task.';
}
field("Is Ready"; Rec."Is Ready")
{
ApplicationArea = All;
Caption = 'Is Ready';
ToolTip = 'Specifies whether the task has been scheduled.';
}
field("User Name"; Rec."User Name")
{
ApplicationArea = All;
Caption = 'User ID';
ToolTip = 'Specifies the username of the user who scheduled the task.';
}
field("Run Codeunit"; Rec."Run Codeunit")
{
ApplicationArea = All;
Caption = 'Codeunit ID';
ToolTip = 'Specifies the ID of the codeunit to run.';
}
field("Failure Codeunit"; Rec."Failure Codeunit")
{
ApplicationArea = All;
Caption = 'Failure Codeunit ID';
ToolTip = 'Specifies the ID of a backup codeunit to run if the codeunit specified for the task fails.';
}
field("Company Name"; Rec.Company)
{
ApplicationArea = All;
Caption = 'Company Name';
ToolTip = 'Specifies the company name for which this task was scheduled.';
}
field("Is Tenant Specific"; ScheduledTasks.IsTenantSpecific(Rec))
{
ApplicationArea = All;
Caption = 'Is Tenant Specific';
ToolTip = 'Specifies whether the scheduled task is only for the current tenant.';
}
field("Tenant ID"; Rec."Tenant ID")
{
ApplicationArea = All;
Caption = 'Tenant ID';
ToolTip = 'Specifies the ID of the tenant for which this task was scheduled.';
Visible = false;
}
}
}
area(FactBoxes)
{
part("JQ Factbox"; "Scheduled Task JQ Factbox")
{
ApplicationArea = All;
Caption = 'Job Queue';
Editable = false;
SubPageLink = "System Task ID" = field(ID);
}
}
}
actions
{
area(Processing)
{
action("Cancel Task")
{
ApplicationArea = All;
Caption = 'Cancel Task';
ToolTip = 'Cancel and delete the selected tasks. If the tasks are related to a job queue entry, the entry will be put on hold. ';
Visible = IsAdmin;
trigger OnAction()
var
ScheduledTask: Record "Scheduled Task";
begin
if not GetMarkedTasks(ScheduledTask) then
exit;
ScheduledTasks.CancelTasks(ScheduledTask);
CurrPage.Update();
end;
}
action("Set Task Ready")
{
ApplicationArea = All;
Caption = 'Set Task Ready';
ToolTip = 'Set the task as ready to run. It will run according to its schedule. If the task is related to a job queue entry, the status of the entry will also change to Ready. ';
Visible = IsAdmin;
trigger OnAction()
var
ScheduledTask: Record "Scheduled Task";
begin
if not GetMarkedTasks(ScheduledTask) then
exit;
ScheduledTasks.SetTasksReady(ScheduledTask);
CurrPage.Update();
end;
}
}
}
var
ScheduledTasks: Codeunit "Scheduled Tasks";
IsAdmin: Boolean;
trigger OnOpenPage()
var
AzureUserMgt: Codeunit "Azure AD User Management";
JobQueueManagement: Codeunit "Job Queue Management";
begin
IsAdmin := AzureUserMgt.IsUserTenantAdmin();
JobQueueManagement.TooManyScheduledTasksNotification();
end;
local procedure GetMarkedTasks(var ScheduledTask: Record "Scheduled Task"): Boolean
begin
CurrPage.SetSelectionFilter(ScheduledTask);
exit(ScheduledTask.FindSet());
end;
}