![]() |
#1 |
CRM
|
Отлов Assign
Добрый день.
Вот я столкнулся с первой проблемой, а может быть и глюком... В общем, надо уведомлять о назначении менеджера ответственным. Реализовал ф-ю уведомления. Есть 2 варианта: делать через callout или через WorkFlow. Далее есть 2 варианта: изменять назначение из формы или из кода. Рассмотрим ситуации: 1. Из формы - callout: сработало правило 1 раз - WorkFlow: сработало правило 1 раз 2. Из кода (назначение как меняется так и остаётся преждним, но в обоих случаях заполняем поле ownerid) - внешняя сборка, допустим консольное приложение. - callout: сработало правило 0 раз - WorkFlow: сработало правило 2 раза У кого какие мысли? Полез в SDK ![]() ЗЫ MS CRM 3.0 Последний раз редактировалось ShurikEv; 04.03.2008 в 13:27. Причина: Забыл добавить :) |
|
![]() |
#2 |
Участник
|
Я идентичную задачу у нас сделал колаутом. Работает как часики.
Конфиг должен так выглядеть. ..................... <callout entity="account" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="task" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="contact" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="opportunity" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="campaignresponse" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> </callout.config> ----------------------------------------------------------------- Пример кода колаута namespace SendMessageCallOut { publicoverridevoid PostAssign(CalloutUserContext userContext, CalloutEntityContext entityContext, string preImageEntityXml, string postImageEntityXml) { тра та та - отправка сообщения (создает письмо в CRM отправляет и удаляет его из CRM) - пример кода создания писем есть в SDK. } ............................... |
|
![]() |
#3 |
CRM
|
Т.е. никто больше глюков не наблюдал?
Уважаемы, tatra. А вы пробовали программно менять назначение? callout'ы срабатывают? Конфиг я-то прописал правильно ;-) Это видно хотя бы из того, что callout срабатывает при смене ответственного на форме. А вот из кода - фиг. Для проверки у меня сейчас стоит простая запись в лог. |
|
![]() |
#4 |
Участник
|
Ладно
![]() |
|
![]() |
#5 |
CRM
|
А может кто-нибудь кому не сложно произвести этот опыт у себя? Чтобы стало понятно, что это за такое: бага или у меня что-то где-то не то
![]() Спасибо. |
|
![]() |
#6 |
Заноза в заднице
|
Если не сложно - поясните суть проблемы более предметно. Преподнесите условие задачи более целостно - тогда не лень будет и воспроизвести.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#7 |
CRM
|
2Likefire
Еще раз объясняю ![]() 1. Из формы - callout: сработало правило 1 раз - WorkFlow: сработало правило 1 раз 2. Из кода (назначение как меняется так и остаётся преждним, но в обоих случаях заполняем поле ownerid) - внешняя сборка, допустим консольное приложение. - callout: сработало правило 0 раз - WorkFlow: сработало правило 2 раза Видно, что когда манипуляции производятся из кода, то реакция не ожиданная. |
|
![]() |
#8 |
CRM
|
Проблема то что Workflow срабатывало 2 раза на половину решилось с помощью Rollup3: приходит одно оповещение, даже если ответственный не менялся, но он был проставлен в коде
X++: account acc = new account(); acc.accountid = new Key(); acc.accountid.Value = new Guid("601D7FB6-68CD-DC11-8940-0003FF0A1ABB"); acc.ownerid = new Owner(); acc.ownerid.type = EntityName.systemuser.ToString(); acc.ownerid.Value = new Guid("B05A92E4-E97B-DC11-8490-0003FF0C1ABB"); service.Update(acc);
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() Последний раз редактировалось ShurikEv; 21.03.2008 в 10:56. |
|
![]() |
#9 |
Заноза в заднице
|
Подозреваю, что callout тне предназначен для срабатывания иначе кроме как из формы. Не боюсь показаться дремучим, но у меня есть уверенность в том, что я где-то об этом читал. Сейчас ещё раз распотрошу свою вумную книженцию и скорее всего процитирую некие выдержки.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
![]() |
#10 |
CRM
|
Всякие Pre/Post Update/Create/Delete срабатывают...
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#11 |
Moderator
|
Callout - расширения бизнес логикой платформы и с формой никак не связаны! Cрабатывать они должны всегда, например, при выходе из автономного режима.
Проблема может быть в том, что вы используете не те ф-ции. Формально событие изменения записи, смены состояния и переназначения - это разные события! Если вы просто подменяете GUID в коде, что вы и делаете, то событие будет UpDate!!! Чтобы сработало Assign надо использовать соответствующую ф-цию. Что-то вроде AccountTargetAssign, наверно - под рукой сейчас нет SDK.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
|
За это сообщение автора поблагодарили: ShurikEv (1). |
![]() |
#12 |
CRM
|
Если вы имели ввиду связку TargetOwnedAccount/AssignRequest, то это же для назначения доступа (дать доступ группе/пользователю). Это никак не меняет ответственного.
И я считаю, что всякие методы типа TargetХХХRequest/Response - это просто тоже самое, что и Create/Update/Delete, но другими словами. Кому как удобно, тот так и использует. Но я всё равно поищю подходящую функцию. ![]() ![]() ![]()
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#13 |
CRM
|
Прошу прощения за проявленную некомпетентность
![]() Связка TargetOwnedAccount/AssignRequest/AssignResponse повела как нужно: из кода и из формы вызвала ровно по 1 разу и WF и Callout. Спасибо.
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#14 |
Moderator
|
Обращайтесь.
![]() ![]()
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() Последний раз редактировалось Артем Enot Грунин; 24.03.2008 в 08:16. |
|
![]() |
#15 |
CRM
|
Вот про 4.0 тоже пока не совсем всё гладко пока для меня. Есть WF, которые теперь WF+Callout. Но там же еще есть и plugin's. Вот что это за зверь, для меня пока тайна. Тайна, т.к. с 4кой практически не работал...
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#16 |
Moderator
|
Поправлю:
Callout-ы и WF перешли на единую платформу, но это два различных способа настраивать бизнес-логику. WF задается с помощью интерфейса бизнес-процессов и расширяются с помощью WWF активностей. Plugin-ы (в 3.0 - callout-ы) работают на платформенном уровне. |
|
![]() |
#17 |
CRM
|
AndreyS вот именно так мне это и показалось. Но вечные фразы, что "Callout и WF слились воедино" наводило на мысль, что от callout отказались, а заменили WF. Теперь ясно хоть.
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|