07.05.2015, 18:19 | #1 |
Участник
|
Доброго времени суток!
Не совсем конечно по программированию на C/AL вопрос, но не знаю куда лучше поместить. А вопрос собственно к тем, кто знаком с таким зверем как MS Dynamics Adapter. Скачал, установил, настроил, скачал SDK, пытаюсь посмотреть как это работает, а оно нифига не работает. Подробнее. В SDK есть XMLAdapter и TextAdapter. TextAdapter у меня вообще никакого мэппинга не показывает, т.е. показывает только какой-то Exception, а полей которые в нём прописаны, не показывает. В XMLAdater не удаётся настроить мэппинг, если константу прописываю, то он срабатывает и записывает это значение в НАВ. Если же пытаюсь прописать мэппинг, выдаёт ошибку на поле Field contains error preventing succesfull transform generation. Как эта хреновина должна работать? |
|
08.05.2015, 16:08 | #2 |
Участник
|
В общем, сутуёвина слегка проясняется. Несколько дней плясок с бубном, несколько полных сносов и установок по новой и Adapter зашевелился. Удалось подружить между собой XMLAdapter и TextApdapter. А вот как бы задружить любой из них с NAV Адаптером? Если пытаюсь дружить Нав с Текстом, то настраивается всё вроде норм. Но в логе Адаптера пишется ошибка: Exception occurred in Microsoft Dynamics NAV
Если же дружить Нав с XML, то даже меппинг настроить не удаётся. Ошибки всё те же, что и постом выше. |
|
12.05.2015, 14:09 | #3 |
Участник
|
Тихо сам с собою, я веду беседу...
Пока все молчат, я продолжаю биться о стену. Письменное изложение мысли помогает самому разобраться в проблеме. Частично удалось задружить NAV с Text. Для начала выяснилось, что преднастроенные страницы интеграции нифига не работают, нужно использовать свои, со своей страницей удалось выгрузить из НАВа в Текст. Почему частично? Потому что НАВ отдаёт записи по одной, в то время как Текст ожидает пачку записей. Это приводит к тому, что каждая отданная НАВом запись просто перезаписывает предыдущую. В итоге мы имеет в файле не пачку изменений, а только последнее изменение. С одной стороны даже логично, ведь тип страницы у нас Card, давай попробуем сделать List. Хм, если тип страницы List, то НАВ вообще не отдаёт изменений, это уже далековато от логики... Это всё наталкивает на мысль, что и XML с НАВом подружить не получается потому, что XML хочет отдать пачку записей, в том время как НАВ ждёт только одну. А что бы пачку отправить, надо по идее ещё и контейнеры смапить, а не только поля. В пользу этой теории говорит то, что при попытке смапить контейнеры, ошибки на полях исчезают, но появляется ошибка на мапинге контейнера. Дескать, а вот нельзя мапить Contact с Dictionary 2. Почему 2, не понятно, но если расковырять адаптер НАВа, то можно увидеть как решили проблему того, что код адаптера статичен, а вебсервисы динамические на всю голову. А решили это тем, что для записей не создаются классы-контейнеры, вместо этого используются словари (тот самый Dictionary) у которых ключ - текстовое название поля, а значение, есть значение поля. Подводя итог: То что НАВ выплёвывает записи по одной, очень грустно и печально, надеюсь что я просто не знаю как заставить его выплёвывать пачку записей. Кстати, судя по внутренностям dll НАВ адаптера, он таки должен уметь плеваться пачками. Если конечно в клиенте Адаптера чего-нить такого не захардкодили, что ведёт к тому, что из НАВа записи обрабатываются только по одной. Хотя, тут наверное тоже может иметь место быть проблема с различными типами контейнеров... То что в НАВ нужно отправлять словари, а не экземпляры классов (это ещё проверить надо, как бы по одной записи не пришлось фигачить), тоже грустно, тут судя по всему нужно либо передавать данные построчно, тогда и контейнеры мапить скорее всего не нужно будет, но это как-то убого с точки зрения архитектуры. Либо отдающий адаптер кодить так, что бы он словарь отдавал, а не экземпляр класса. Либо же, ИМХО, наилучшим вариантом будет заюзать функционал расширения мэппинга, написав функции, которые будут конвертить словари в объекты и объекты в словари. Тоже конечно не идеальный подход (вся динамичность идёт лесом), но других вариантов я пока не вижу. |
|
|
За это сообщение автора поблагодарили: mira (1). |
12.05.2015, 16:05 | #4 |
Участник
|
Predatore, ты лучше скажи, для чего ты вообще затеял эту тягомотину, и что это за зверь? я честно - гуглил, но не нашел, что за адаптер и для чего он?
|
|
12.05.2015, 17:25 | #5 |
Участник
|
|
|
12.05.2015, 17:28 | #6 |
Участник
|
Цитата:
Затеял я эту тягомотину потому что с одной стороны, дружба через посредника - это правильный подход, особенно если дружат между собой больше чем две системы. С другой стороны, мне нужно дружить НАВ с вебом, причем в обе стороны. И если дружба NAV->WEB вопросов практически не вызывает, то вот WEB->NAV вызывает множество вопросов в инфраструктуре сети в общем и в инфраструктуре безопасности в частном. Особенно если WEB принадлежит одной компании, а NAV - другой; и это как раз мой случай. Поэтому посредник, который с одной стороны дружит с вебом, а с другой стороны дружи с НАВом, который можно как угодно изолировать и обезопасить, лишь бы ему был виден веб и НАВ, это то что архинужно в данной ситуации. |
|
12.05.2015, 17:36 | #7 |
Участник
|
Цитата:
|
|
12.05.2015, 18:17 | #8 |
Участник
|
Цитата:
Честно, в году этак 2010-2011-м, когда появилась эта недоделка-"фича", я ее тестировал на демо виртуалках от майкрософта. У меня легко получалось просто играясь в CRM и NAV их рассинхронизировать. Точнее, это делалось очень легко. Без возможности синхронизировать. Без логов синхронизации. В связи с тем, что в инете по этой фиче почти не было ни отзывов, ни замечаний (как и сейчас) я бы в промышленной эксплуатации это бы использовать не стал, от слова совсем - случись чего, вряд ли получится решить проблему. После этого, желание изучать микро-недо-аналог BizTalk пропал. Единственный плюс этого коннектора - что он идет бесплатно в комплекте, насколько я помню. Все остальное - сплошные минусы. Готовых промежуточных слоев для NAV, конечно же нет (за исключением biztalk адаптера для квот/заказов продажи и покупки - работоспособность которых я не проверял). проще и правильнее смотреть в сторону сервисных шин предприятия (ESB) - если есть деньги - то bizTalk) нет денег (на начальном этапе) - MuleESB. Либо писать самому, благо .NET способствует простому написанию подобных коннекторов - возможностей для дальнейшего маневра будет на порядок больше. Например: http://www.codeproject.com/Articles/...ng-Soap-Router |
|
13.05.2015, 10:47 | #9 |
Участник
|
Цитата:
Сообщение от Kashin
Цитата:
Честно, в году этак 2010-2011-м, когда появилась эта недоделка-"фича", я ее тестировал на демо виртуалках от майкрософта. У меня легко получалось просто играясь в CRM и NAV их рассинхронизировать. Точнее, это делалось очень легко. Без возможности синхронизировать. Без логов синхронизации. В связи с тем, что в инете по этой фиче почти не было ни отзывов, ни замечаний (как и сейчас) я бы в промышленной эксплуатации это бы использовать не стал, от слова совсем - случись чего, вряд ли получится решить проблему. После этого, желание изучать микро-недо-аналог BizTalk пропал. Единственный плюс этого коннектора - что он идет бесплатно в комплекте, насколько я помню. Все остальное - сплошные минусы. Готовых промежуточных слоев для NAV, конечно же нет (за исключением biztalk адаптера для квот/заказов продажи и покупки - работоспособность которых я не проверял). проще и правильнее смотреть в сторону сервисных шин предприятия (ESB) - если есть деньги - то bizTalk) нет денег (на начальном этапе) - MuleESB. Либо писать самому, благо .NET способствует простому написанию подобных коннекторов - возможностей для дальнейшего маневра будет на порядок больше. Например: http://www.codeproject.com/Articles/...ng-Soap-Router До конца с этой штуковиной разобраться наверное стоит как минимум потому, что она таки используется. И используется не где-то, а у меня под носом Писать свой коннектор... я как раз думал об этом, когда мне показали MS Dynamics connector, мол вот, всё уже написано, бери и пользуйся В любом случае, спасибо за наводку на MuleESB. |
|
13.05.2015, 12:50 | #10 |
Участник
|
О как.
Можешь по подробнее рассказать - какие подводные камни есть? Бывает ли рассинхронизация данных? (может это у меня в демо базе были проблемы?) как решается? данные в обе стороны перегружаются? (клиенты/контакты, и заказы)? как часто обновляются данные? . просто я натыкался на какие-то невероятные косяки синхронизации, когда в CRM пытался заказы набивать - в NAV попадала какая-то ересь - и я плюнул |
|