MethodName: String;
Свойство MethodName определяет наименование .NET-метода, который необходимо выполнить при запуске задачи.
В качестве значения свойства необходимо указать наименование какого-либо .NET-метода, объявленного с модификаторами Public и Shared. .NET-метод может иметь параметры. Параметры могут иметь один из следующих типов:
Integer (System.Int32);
String (System.String);
DateTime (System.DateTime);
Boolean (System.Boolean);
Double (System.Double);
Тип IMetabase может иметь только первый параметр метода, при этом для задачи в свойстве FirstParamIsMetabase необходимо установить значение True.
Если указываемый .NET-метод имеет параметры, тип которых отличен от IMetabase, то в коллекции Params объекта, соответствующего задаче, необходимо создать такое же количество параметров. Типы параметров должны соответствовать типам параметров .NET-метода. Значения параметров можно будет указать в свойстве ParamValues.
Для выполнения примера предполагается наличие в репозитории контейнера запланированных задач с идентификатором "TASK_CONTAINTER" и сборки Fore.NET "NETSCHEDULE". В сборке содержится модуль/форма с описание класса "MyClass". В данном классе описана процедура "Run", имеющая три параметра:
Параметр Mb. Тип: IMetabase;
Параметр IterationCount. Тип: Integer;
Параметр IterationCount. Тип: Double;
Sub UserProc;
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
ForeNetExe: IExecuteForeNetMethodScheduledTask;
Per: IScheduledTaskPeriodOneTimeOnly;
Prop: IScheduledTaskProperties;
Params: IMetabaseObjectParams;
Param: IMetabaseObjectParam;
ParamValues: IMetabaseObjectParamValues;
Begin
MB := MetabaseClass.Active;
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_TASK_EXECUTENETMETHOD;
CrInfo.Id := "NETSCHEDULE";
CrInfo.Name := "Выполнение сборки Fore.NET";
CrInfo.Parent := MB.ItemById("TASK_CONTAINTER");
MObj := MB.CreateObject(CrInfo).Edit;
//Параметры для .NET-метода, через которые будут передаваться значения
Params := MObj.Params;
Param := Params.Add;
Param.Id := "IterationCount"; Param.Name := "Количество итераций";
Param.DataType := DbDataType.Integer;
Param := Params.Add;
Param.Id := "Error"; Param.Name := "Погрешность";
Param.DataType := DbDataType.Float;
//Запускаемый .NET-метод
ForeNetExe := MObj As IExecuteForeNetMethodScheduledTask;
ForeNetExe.Assembly := MB.ItemById("NETSCHEDULE").Bind As IForeNETAssembly;
ForeNetExe.TypeName := "NETSCHEDULE.MyClass";
ForeNetExe.MethodName := "Run";
ForeNetExe.FirstParamIsMetabase := True;
//Параметры выполнения задачи
Prop := ForeNetExe.Properties;
Per := Prop.CreatePeriod(ScheduledTaskPeriodType.OneTimeOnly) As IScheduledTaskPeriodOneTimeOnly;
Per.StartMode := TaskPeriodOneTimeStartMode.OnLogon;
Prop.Period := Per;
//Значения параметров для .NET-метода
ParamValues := Prop.ParamValues;
ParamValues.FindById("IterationCount").Value := 10000;
ParamValues.FindById("Error").Value := 0.0000001;
Prop.ParamValues := ParamValues;
MObj.Save;
End Sub UserProc;
После выполнения примера в контейнере запланированных задач будет создана новая задача выполнения сборки Fore.NET. Сборка будет запущена один раз при подключении к репозиторию. При запуске будет выполнен метод «Run» с передачей в него указанных значений параметров.
См. также: