06.06.2013, 17:11 | #1 |
Участник
|
axforum blogs: Правила поиска дубликатов (Duplicate Detection Rules) CRM 2011. Автоматическая публикация правил
Источник: http://axforum.info/forums/blog.php?b=405
============== В одном из своих прошлых постов Правила поиска дубликатов (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" в асинхронном режиме. Результат работы можно увидеть в системном журнале: Источник: http://axforum.info/forums/blog.php?b=405
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
За это сообщение автора поблагодарили: Prok (1). |
|
|