public void ExecuteTest() { var etl = new ETLProcess(); var body = "<Contract>InHealth001</Contract>"; var message = new QueueMessage { Body = body }; etl.Execute(message); }
public object GetRegistry(string id) { ETLProcess prc = Program.Manager.Pumps.FirstOrDefault(p => p.ProgramID == id); if (prc != null) { return(WebAPI.Success(prc.ConfigData)); } return(WebAPI.Error("Отсутствует закачка с заданным идентификатором.")); }
private ETLUpdateRecord AddUpdateRecord(string file) { string extension = Path.GetExtension(file).Replace(".", string.Empty); string fileName = Path.GetFileName(file); // На программу подразумевается одна конфигурация и один модуль ETLProcess prc = pumps.FirstOrDefault(p => extension.IsMatch("json") ? p.Config == fileName : p.Module == fileName); // В реестре закачка отсутствует, есть только программный модуль if (prc == null && extension.IsMatch("dll")) { return(null); } ETLUpdateRecord rec = null; switch (extension) { case "json": JObject data = JsonCommon.Load(file); string programID = prc == null ? data["id"].ToString() : prc.ProgramID; rec = new ETLUpdateRecord { Config = fileName, Module = data["module"].ToString(), ProgramID = programID }; Updates[programID] = rec; break; case "dll": // Если записи нет, то добавляем, иначе нужный модуль уже должен быть прописан в обновление if (!Updates.ContainsKey(prc.ProgramID)) { rec = new ETLUpdateRecord { ProgramID = prc.ProgramID, Module = fileName }; Updates.Add(prc.ProgramID, rec); } break; } return(rec); }
/// <summary> /// Применение обновлений /// </summary> public void ApplyUpdate(ETLUpdateRecord rec, ETLHistory history) { ETLProcess prc = pumps.FirstOrDefault(p => p.ProgramID == rec.ProgramID); // Копирование файлов в необходимые директории if (!string.IsNullOrEmpty(rec.Config)) { MoveFile(rec.Config, settings.UpdatesPath, settings.ProgramsPath); // Обноление конфигурации загруженных в реестр закачек или добавление новой string configFile = Path.Combine(settings.ProgramsPath, rec.Config); if (prc == null) { pumps.Add(new ETLProcess(configFile, history)); } else { prc.Init(configFile); } } if (!string.IsNullOrEmpty(rec.Module)) { // Модуль MoveFile(rec.Module, settings.UpdatesPath, settings.ModulesPath); // Отладочные данные MoveFile(rec.Module.Replace("dll", "pdb"), settings.UpdatesPath, settings.ModulesPath); } // Удаление применённого обновления из списка доступных Updates.Remove(rec.ProgramID); // Событие обновления OnUpdate?.Invoke(this, new UpdateEventArgs { UpdateInfo = rec }); }