|
![]() |
#1 |
Модератор
|
Рекомендую посмотреть тем кто уже использует AIF в AX 2012, но не знаком с change tracking
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#2 |
Модератор
|
Если кто-то решит использовать change tracking на инстансе с несколькими partitions \ legal entities, сразу надо править
\Classes\AifChangeTracking\createJoinClausesAndPredicates \Classes\AifSqlCtChangeTracking\createRootTableJoin на предмет потерянных джойнов по Partition и DataAreaId полям. Иначе гарантированы тормоза и местами некорректные результаты выборки в getChangedKeys()
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Logger (5). |
![]() |
#3 |
Участник
|
Цитата:
Из позитива - быстро, надежно, не надо думать кто и где поменял, добавил или удалил данные, т.к. CT отслаживает все. То что МС двигается (меееедленно) в сторону использования существующих технологий это очень даже хорошо. SQL должен такие дела отслеживать, а не AX. CT существует с 2008 года, почему не встроили его в AX раньше непонятно.... Насколька я знаю, на данный момент CT используется в -
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
За это сообщение автора поблагодарили: mazzy (2), macklakov (3), Vadik (1), Logger (1). |
![]() |
#4 |
Модератор
|
Спасибо
Цитата:
CT существует с 2008 года, почему не встроили его в AX раньше непонятно...
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#5 |
Участник
|
Цитата:
Очевидно, для POS реализован отдельный механизм включения CT, поэтому AIF про таблицы для POS ничего не знает и в итоге происходит такой вот сюрприз. Видимо, над AIF и POS работали разные команды, в итоге имеем то что имеем ![]() А вообще, это повод запостить багу в MS, ибо на продакшене может вылезти неприятный такой "ой"... |
|
![]() |
#6 |
NavAx
|
Хм... Так для чего же тупые датчане в AX всю логику перенесли в AOT и использовали богопротивные табличные методы вместо таких привычных триггеров?
![]()
__________________
Isn't it nice when things just work? |
|
![]() |
#7 |
Участник
|
Цитата:
представляешь какая каша в голове у молодежи? Аксапта появилась ОЧЕНЬ давно. http://axapta.mazzy.ru/lib/names/ (внизу историческая справка) (ударил по гулсям и закатил глаза... затянул глухим глоосом) в те времена: 1. SQL еще не был стандартом 2. не было одного-двух лидеров на рынке платформ баз данных 3. аксапта поддерживала несколько баз данных - я видел перечисление на 12 баз. в том числе DBF, mySQL, postgreSQL... был и собственный формат базы данных (он сейчас остался до 2009 в виде AOD файлов, c 2012 и его прибили) 4. "привычных" триггеров еще не было (если кто помнит времена MS SQL 6.5, oracle 7...) а в ранних mySQL триггеров вообще не было. не говоря уже о DBF (нормальным голосом) в связи с этим и были сделаны собственные унифицированные триггеры. а потом пошла эволюция и коэволюция вместе с платформами баз данных. например, skip-методы появились относительно недавно, уже при MS вроде. Upd: ну, а решение, что Аксапта не поддерживает Oracle, а работает только на одном MS SQL, вообще было принято очень кроваво и только начиная с ax2009 Последний раз редактировалось mazzy; 25.06.2015 в 12:03. |
|
![]() |
#8 |
NavAx
|
Не настолько давно. Как раз когда начинал вершился легендарный проект, где логику на триггеры переписывали.
__________________
Isn't it nice when things just work? |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от makbeth
![]() для POS реализован отдельный механизм включения CT, поэтому AIF про таблицы для POS ничего не знает и в итоге происходит такой вот сюрприз.
Видимо, над AIF и POS работали разные команды, в итоге имеем то что имеем ![]() А вообще, это повод запостить багу в MS, ибо на продакшене может вылезти неприятный такой "ой"... разные команды... не то слово! блин... ![]() |
|
![]() |
#10 |
Участник
|
Цитата:
пока их купили, пока встроили в аксапту, пока ужаснулись и пока таки решили что надо что-то делать... наоборот, очень быстро ![]() |
|
![]() |
#11 |
NavAx
|
Цитата:
Но очень полезно знать о ее существовании, чтобы знать где еще стоит рыть, когда SQL сервер неожиданно ляжет.
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 23.06.2015 в 10:31. |
|
|
За это сообщение автора поблагодарили: trud (1). |
![]() |
#12 |
Модератор
|
Цитата:
![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Ivanhoe (5). |
![]() |
#13 |
NavAx
|
Цитата:
Цитата:
Сообщение от Vadik
![]() [*]если у нас сущность многоуровневая (см. к примеру клиентов\поставщиков с их адресами и контактами), не надо везде пропихивать код для отслеживания изменений на нижних уровнях или собирать эти изменения по всем уровням. Пример: клиенту добавился номер факса в GAB, и весь клиент теперь виден как измененная сущность. Удобно, нет ?
Цитата:
Сообщение от Vadik
![]() [*]очень удобно когда подписчиков на изменения много. Вернее, нам вообще фиолетово сколько их, этих подписчиков. Мы просто выставили наружу порт и объявляем в течение какого максимального периода в нем видны измененные данные (допусти, две недели). А подписчики уже сами решают как забирать эти изменения. Допустим, утягивать изменения за последний час каждый час или изменения за неделю каждый день. Нам - все равно. Мы не пропихиваем свои изменения каждому подписчику, мы не отслеживаем доставку каждого изменения отдельным сообщением, мы не должны заботиться о доставке каждого сообщения каждому подписчику и правильном порядке их доставки. Подключение нового подписчика происходит абсолютно прозрачно
Цитата:
Сообщение от Vadik
![]() [*]при включении change tracking начинают работать Document filters (какая связь между ними - не спрашивайте, не знаю, скорее всего "так получилось"). Пример - отдавать внешней системе только определенные группы клиентов или отдавать курсы только определенного типа для USD. Возможности по настройке фильтров - те же что и у стандартного Query в AX.
__________________
Isn't it nice when things just work? |
|
![]() |
#14 |
Модератор
|
Цитата:
Цитата:
Но я ведь правильно понимаю, что это происходит не само по себе, а специально обученный скрипт должен пройтись, проставить свойства на таблицах и прописать триггеры?
Цитата:
А как у нас с правами, компаниями, партициями?
Цитата:
при включении change tracking начинают работать Document filters
Цитата:
Это хорошо или плохо?
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#15 |
NavAx
|
Пытаюсь понять применимость нового, для меня, инструмента.
Цитата:
Цитата:
Они ведь ресурсы жрут, если правильно понимаю?
__________________
Isn't it nice when things just work? |
|
![]() |
#16 |
Участник
|
Цитата:
В чем проблема написать специально обученный скрипт(ы) один раз и использовать его для любой таблицы (что собственно в 2012 и сделано)? |
|
![]() |
#17 |
NavAx
|
Цитата:
Сообщение от makbeth
![]() Дает. Фиксируются все изменения, причем каждое изменение порождает новую версию в CT. Т.е. ровно те же возможности, что дает DatabaseLog. Особенность в том, что версии на SQL хранятся только ограниченное время (2 дня по умолчанию) и нужно периодически эти изменения считывать, чтобы они не потерялись.
Управление модификациями. Как мне перенести то, что этот скрипт нагенерил? Как откатить? Как контролировать версии?
__________________
Isn't it nice when things just work? |
|
![]() |
#18 |
Участник
|
Это как раз умеет Change Data Capture. В как я уже писал, в Aif реализованы зачатки его поддержки. Видимо еще нигде не пригодился.
Цитата:
Откат делается парным скриптом. По моему, это очевидно, когда функционал позволяет включать/отключать свои возможности для определенных объектов системы. |
|
![]() |
#19 |
Модератор
|
Ну зачем в сценариях интеграции передавать "старое значение поля" ? А что внешняя система будет делать с моим "старым" значением из AX если ее (системы) "старое" (текущее) отличается ? А какое именно "старое" значение поля передавать (и откуда его брать) в случае если у меня внешних систем несколько - отслеживать еще и версию для каждой внешней системы отдельно в AX ? Нет, я понимаю, это круто, но - ЗАЧЕМ ?
Цитата:
Управление модификациями. Как мне перенести то, что этот скрипт нагенерил? Как откатить?
Цитата:
Как контролировать версии?
Из того, что реально не хватает - это хоть какой-то инструментарий в виде пары-тройки форм для управления \ просмотра того что уже настроено (хотя репозитарий со списком таблиц со всключенным Change tracking и созданных триггеров присутствует)
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#20 |
Участник
|
да, идея та же. реализация намного мощнее и лучше
угу. потому что... помимо того, что Vadik сказал: каждый подписчик получает свой набор изменений предположим один подключается в изменениям раз в час, а другой подключается раз неделю. второй получит больший набор изменений как только подключится. и да... это работает ОООООЧЕНЬ быстро по сравнению с аксаптовскими штатными вещами. плюс масштабирование от SQL хорошее. |
|
Теги |
aif, ax2012, change tracking, mdm |
|
|