Ние също имахме изискването да управляваме зависимостите между множество задачи на агенти - след като разгледахме различни инструменти на трети страни и ги отхвърлихме по различни причини (главно до вътрешните ограничения, свързани с използването на софтуер на трети страни), решихме да създадем наше собствено решение.
Решението се съсредоточава около конфигурационна база данни, която съдържа подробности за процесите (задачи), които трябва да се изпълняват и как са групирани (партиди), заедно със зависимостите между процесите.
Обобщение на използваните конфигурационни таблици:
Партида - дефиниция на високо ниво на група от свързани процеси, включва метаданни като максимални едновременни процеси и текуща партидна инстанция и т.н. Процес - метаданни, свързани с процес (задача), като име, максимално време на изчакване, най-ранно време на изпълнение, статус ( активиран / деактивиран), партида (към коя партида принадлежи процесът), име на задача на процеса и т.н. Партиден екземпляр - активният екземпляр на дадена партида Процесен екземпляр - активни екземпляри на процеси за даден пакет Процес Зависимост - матрица на зависимости Състояние на партиден екземпляр - търсене за състояние на партиден екземпляр Състояние на екземпляр на процеса - цикъл за състояние на екземпляр на процеса
Всяка партида има 2 контролни задачи - НАЧАЛО НА ПАРТИЯ и АКТУАЛИЗИРАНЕ НА ПАРТИЯ. Първият се занимава със стартирането на всички процеси, които му принадлежат, а вторият е последният, който се изпълнява във всяка дадена партида и се занимава с актуализирането на статусите на резултатите.
Всеки процес има задание на агент, свързано с него, което се изпълнява от заданието START BATCH - процесите имат ограничена едновременност (дефинирано в конфигурацията на пакета), така че процесите се стартират до максимум x наведнъж и след това START BATCH изчаква, докато свободен слот става достъпен преди започване на следващия процес.
Стъпките на работата на агента на процеса извикват шаблонен SSIS пакет, който се занимава с действителната работа на ETL и с вземането на решение дали процесът трябва да се изпълнява и трябва да изчака зависимости и т.н.
В момента търсим да преминем към решение на Service Broker за по-голяма гъвкавост и контрол.
Както и да е, вероятно твърде много подробности и недостатъчен пример тук, така че проектът VS2010 е наличен при поискване.
person
Dewi
schedule
15.01.2013