вторник, 5 января 2010 г.

Обработка Rollup сообщения плагинами в Microsoft Dynamics CRM 4.0

Как известно, сообщение Rollup отсутствует в списке поддерживаемых сообщений в SDK. Приведённый далее приём позволит разработчикам обрабатывать данное сообщение своими плагинами.


Откройте Microsoft SQL Server Management Studio, выберите базу Вашей организации в выпадающем списке доступных баз данных и выполните следующий скрипт:

Update SdkMessageFilter 
Set IsCustomProcessingStepAllowed = 1
Where SdkMessageId in
(Select SdkMessageId From SdkMessage Where Name = 'Rollup')


После этого появляется возможность регистрировать свои шаги плагинов на Rollup сообщение. Открыв plugin registrator, вы сможете сами в этом убедиться:



Первая интересная особенность, которую я заметил это то что оба свойства PrimaryEntityName и SecondaryEntityName заполнены (PrimaryEntityName - сущностью, по которой выполняется поиск - activitypointer, annotation, incident и т.п., а SecondaryEntityName - сущностью из которой Вы выполняете просмотр подчинённых записей - contact, account и т.п., все комбинации могут быть найдены в SDK).



Следующая интересная особенность это содержимое свойства InputParameters:

"Target" - это массив объектов. Первый объект это строка с названием типа родительской сущности. Второй объект это экземпляр CrmMoniker класса, который содержит название типа сущности и идентификатор записи. Третий объект это экземпляр класса QueryExpression и он содержит фильтры на основании который будет получен массив интересующих дочерних записей.

"RollupType" - дополнительный маркер на основании которого будут фильтроваться записи. Свойство типа перечисления RollupType.



Следующая интересная особенность была найдена в свойстве OutputParameters:
BusinessEntityCollection - собственно коллекция полученных записей на основании фильтров, которые переданы в свойстве InputParameters.



Каким образом это может быть использовано разработчиками? Различными. Например я наконец знаю ответ на вопрос, который мне задали тут - смогли ли Вы разобраться как перехватывать сообщение Rollup для того, чтобы посчитать количество активностей или инцидентов связанных с какой нибудь сущностью - теперь я знаю. Другой вариант использования данной функциональности - это изменение фильтров данного сообщения таким образом, каким захочет разработчик.

Но помните, что данная кастомизация неподдерживаемая!

Комментариев нет:

Отправить комментарий