AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Рейтинг: 5.00. Голосов: 2.

Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Автоматическая публикация правил

Запись от Артем Enot Грунин размещена 06.06.2013 в 16:34

В одном из своих прошлых постов Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Как это работает и почему правила иногда автоматически становятся черновиками? я писал о проблеме, которая иногда портит жизнь администраторам систему. Суть в том, что проблема автоматической деактивации правил не неизлечима, так как является функционалом "by design" (так и задумано), однако можно попробовать автоматизировать повторную публикацию правил.

Сегодня мне надоело тренировать бдительность при обновлении решения и я решил написать плагин, который будет публиковать нужные мне правила при публикации всех настроек:
X++:
            QueryExpression query = new QueryExpression
            {
                EntityName = "duplicaterule",
                ColumnSet = new ColumnSet("duplicateruleid"),
                Criteria = new FilterExpression
                {
                    Conditions = {
                        new ConditionExpression
                        {
                            AttributeName = "name",
                            Operator = ConditionOperator.BeginsWith,
                            Values = { "AlwaysOn:" }
                        },
                        new ConditionExpression
                        {
                            AttributeName = "statuscode",
                            Operator = ConditionOperator.Equal,
                            Values = { 0 }
                        }
                    },
                    FilterOperator = LogicalOperator.And
                }
            };

            EntityCollection rules = localContext.OrganizationService.RetrieveMultiple(query);

            ExecuteMultipleRequest publishRulesRequest = new ExecuteMultipleRequest
            {
                Settings = new ExecuteMultipleSettings
                {
                    ContinueOnError = true,
                    ReturnResponses = false
                },

                Requests = new OrganizationRequestCollection()
            };

            foreach (Entity rule in rules.Entities)
            {
                publishRulesRequest.Requests.Add(new PublishDuplicateRuleRequest()
                    {
                        DuplicateRuleId = rule.Id
                    });
            }

            ExecuteMultipleResponse publishRulesResponse =
                (ExecuteMultipleResponse)localContext.OrganizationService.Execute(publishRulesRequest);

            if (publishRulesResponse.IsFaulted == true)
            {
                String message = String.Format("{0} rules where not published. First error: {1}",
                    publishRulesResponse.Responses.Count,
                    publishRulesResponse.Responses[0].Fault.Message);

                throw new InvalidPluginExecutionException(message);
            }
В идеале плагин должен стартовать при установке и обновлении решения (solution), но, к сожалению, система не поддерживает это сообщение.

Как он работает? Плагин ищет правила в состоянии черновиков, название которых начинается с "AlwaysOn:" и публикует их. Его следует регистрировать на шаге пост обработки события "PublishAll" в асинхронном режиме. Результат работы можно увидеть в системном журнале:

Нажмите на изображение для увеличения
Название: jobs.png
Просмотров: 2444
Размер:	21.5 Кб
ID:	326
Размещено в CRM
Просмотров 24330 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:12.