StartMode: TaskPeriodOneTimeStartMode;
Свойство StartMode определяет, когда будет производиться одноразовый запуск задачи.
Для выполнения примера предполагается наличие в репозитории контейнера запланированных задач с идентификатором «TASK_CONTAINTER» и модуля с идентификатором «Module_1». В модуле имеется процедура «Main».
Sub UserProc;
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exe: IExecuteSubScheduledTask;
Period: IScheduledTaskPeriodOneTimeOnly;
Prop: IScheduledTaskProperties;
Begin
MB := MetabaseClass.Active;
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_TASK_EXECUTESUB;
CrInfo.Id := "MODULE_EXECUTOR";
CrInfo.Name := "Выполнение модуля";
CrInfo.Parent := MB.ItemById("TASK_CONTAINTER");
MObj := MB.CreateObject(CrInfo).Edit;
Exe := MObj As IExecuteSubScheduledTask;
Exe.Assembly := (MB.ItemById("Module_1").Bind As IModule).Assembly;
Exe.SubName := "Main";
Prop := Exe.Properties;
Period := Prop.CreatePeriod(ScheduledTaskPeriodType.OneTimeOnly) As IScheduledTaskPeriodOneTimeOnly;
Period.StartMode := TaskPeriodOneTimeStartMode.OnLogon;
Prop.Period := Period;
MObj.Save;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Etl;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exe: IExecuteSubScheduledTask;
Period: IScheduledTaskPeriodOneTimeOnly;
Prop: IScheduledTaskProperties;
Begin
MB := Params.Metabase;
CrInfo := MB.CreateCreateInfo();
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_TASK_EXECUTESUB As Integer;
CrInfo.Id := "MODULE_EXECUTOR";
CrInfo.Name := "Выполнение модуля";
CrInfo.Parent := MB.ItemById["TASK_CONTAINTER"];
MObj := MB.CreateObject(CrInfo).Edit();
Exe := MObj As IExecuteSubScheduledTask;
Exe.Assembly := (MB.ItemById["Module_1"].Bind() As IModule).Assembly;
Exe.SubName := "Main";
Prop := Exe.Properties;
Period := Prop.CreatePeriod(ScheduledTaskPeriodType.stptOneTimeOnly) As IScheduledTaskPeriodOneTimeOnly;
Period.StartMode := TaskPeriodOneTimeStartMode.tpotsmOnLogon;
Prop.Period := Period;
MObj.Save();
End Sub;
После выполнения примера в контейнере запланированных задач будет создана новая задача выполнения модуля. Модуль будет запущен один раз при подключении к репозиторию.
См. также: