Разработка
12
Дек
0

ITracingService

ITracingService это служба, которая позволяет Вам выводить дополнительную информацию в лог ошибки диалоговое окно Exception’а CRM. Что позволить Вам более эффективно отлаживать плагины.

Посмотрим как ее использовать…

using System;
using System.ServiceModel;
// Microsoft Dynamics CRM namespace(s)
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;

namespace TraceTestPlugin
{
    public class TracePlugin : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // Получаем Tracing Service
            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            if (tracingService == null)
                throw new InvalidPluginExecutionException("Неудалось вернуть Tracing Service.");

            // Получаем Execution context
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            try
            {
                // Получаем ссылку на Organization service
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

                // Выводим в лог трассировки свои значения
                tracingService.Trace("Начинаем трассировку...");
                tracingService.Trace("Выводим значения QueryExpression:");

                // Формируем запрос
                QueryExpression query = new QueryExpression()
                {
                    EntityName = "account",
                    ColumnSet = new ColumnSet("name", "accountid")
                };
                DataCollection<Entity> entityCollection = service.RetrieveMultiple(query).Entities;

                // Просматриваем полученный ответ и добавляем в трассировку
                foreach (Entity acct in entityCollection)
                {
                    tracingService.Trace(acct.Attributes["name"] + ": " + acct.Attributes["accountid"].ToString());
                }

                tracingService.Trace("Трассировка закончена!");

                // Принудительно вызываем фиктивную ошибку
                throw new InvalidPluginExecutionException("Ошибочка, знете ли :)");
            }
            catch (FaultException<OrganizationServiceFault> ex)
            {
                throw new InvalidPluginExecutionException("Ошибка.", ex);
            }            
        }
    }
}

Ну, тут все вроде как обычно, за исключением одной детали – мы используем метод tracingService.Trace() чтобы поместить дополнительную информацию в лог трассировки. И в самом конце принудительно вызываем исключение, чтобы получить доступ к логу журнала трассировки.



Комментарии (0)

*

code