public static async Task <Guid> RegisterRfmModelTrainingTaskChainAsync( this ITaskManager taskManager, ModelTrainingTaskOptions modelTrainingOptions, IDataSourceOptionsCollection dataSourceOptions, TimeSpan expiresAfter, IEnumerable <Guid> prerequisiteTaskIds) { var projectionDictionary = new ProjectionWorkerOptionsDictionary( modelTrainingOptions.ModelEntityTypeString, modelTrainingOptions.ModelTypeString, expiresAfter, modelTrainingOptions.SchemaName, modelTrainingOptions.ModelOptions); Guid guid = await taskManager.RegisterDistributedTaskAsync(dataSourceOptions, projectionDictionary, prerequisiteTaskIds, expiresAfter).ConfigureAwait(false); var mergeTasks = new List <Task <Guid> >(); foreach (var targetTableNames in modelTrainingOptions.SourceTargetTableNamesMap) { var optionsDictionary1 = new MergeWorkerOptionsDictionary(targetTableNames.Value, targetTableNames.Key, expiresAfter, modelTrainingOptions.SchemaName); ITaskManager taskManager1 = taskManager; var optionsDictionary2 = optionsDictionary1; Guid[] guidArray = { guid }; TimeSpan expiresAfter1 = expiresAfter; mergeTasks.Add(taskManager1.RegisterDeferredTaskAsync(optionsDictionary2, guidArray, expiresAfter1)); } await Task.WhenAll(mergeTasks).ConfigureAwait(false); var trainTaskId = await taskManager.RegisterDeferredTaskAsync(new RfmTrainingWorkerOptionsDictionary(modelTrainingOptions.ModelEntityTypeString, modelTrainingOptions.ModelTypeString, modelTrainingOptions.SchemaName, modelTrainingOptions.SourceTargetTableNamesMap.Values.ToList(), modelTrainingOptions.ModelOptions), mergeTasks.Select(t => t.Result), expiresAfter).ConfigureAwait(false); return(trainTaskId); }
public static Task <Guid> RegisterRfmModelTrainingTaskChainAsync( this ITaskManager taskManager, ModelTrainingTaskOptions modelTrainingOptions, IDataSourceOptionsCollection dataSourceOptions, TimeSpan expiresAfter) { return(taskManager.RegisterRfmModelTrainingTaskChainAsync(modelTrainingOptions, dataSourceOptions, expiresAfter, Enumerable.Empty <Guid>())); }