![]() |
#12 |
Боец
|
Буквально недавно была такая же задача. Как сделали:
1. Представляем себе, что CustTable+Addresses+Contacts и прочее прилепленное - это XML документ для выгрузки, где CustTable - верхняя запись 2. Каждый раз, когда изменяестя CustTable (либо любая из дочерних) мы формируем этот XML и выгружаем куда-то там во вне. Но при этом, мы храним последнюю выгруженную версию XML где-то в отдельной таблице. 3. Естетсвенно, каждый раз, когда мы хотим выгрузить XML, мы сравниваем его с последней выгруженной версией. Выгружаем только, если отличаются. 4. Важно, что непосредственно выгрузка делается в Batch на основании таблицы-очереди. Т.е. п.2,3 формируют очередь на выгрузку, когда whereas отдельный Batch расталкивает её. Это развяжет по транзакциям, обезопасив работу пользователей и SQL. 4.1 В таблице-очереди мы храним не сам XML, а ссылку на запись верхнюю запись, что изменилась,т.к. ввиду периодичности работы Batch, хранимый XML может потенциально устареть. Из некрасивого: ============= - триггеры придется повесить на все таблицы, изменения которых влечёт формирование нового XML - придется хранить последнюю версию XML (или его хэш) - нужно покодить Из красивого: =========== - Гантированно выгружаете только в том случае, когда изменились нужные для выгрузки поля - Никаких завязок на modifiedDate\SystemLog, что ведёт приямиков в АД - Будет работать в любой версии AX. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
Теги |
aif, ax2012, change tracking, интеграция, как правильно |
|
|