예제 #1
0
        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);
        }
예제 #2
0
 public static Task <Guid> RegisterRfmModelTrainingTaskChainAsync(
     this ITaskManager taskManager,
     ModelTrainingTaskOptions modelTrainingOptions,
     IDataSourceOptionsCollection dataSourceOptions,
     TimeSpan expiresAfter)
 {
     return(taskManager.RegisterRfmModelTrainingTaskChainAsync(modelTrainingOptions, dataSourceOptions, expiresAfter, Enumerable.Empty <Guid>()));
 }