Импортиране на данни в Microsoft Dynamics CRM

импортиране
Фиг. 1. Описание на класа Bik.

Някои решения, открити при разработването на инструмент за импортиране и актуализиране на данни от указателя BIC България в системата Microsoft Dynamics CRM.

По време на внедряването на решения, базирани на Microsoft Dynamics CRM, специалистите често се сблъскват със задачата да импортират различни данни в CRM системата. В повечето случаи миграцията на данни използва инструмента Microsoft CRM Data Migration Framework, който ви позволява да импортирате информация в CRM от различни източници. Има обаче друго предизвикателство: потребителите трябва бързо да актуализират големи количества информация от външни източници в интерактивен режим. За да направите това, ще трябва да разработите допълнителен компонент, което е възможно благодарение на усъвършенстваните инструменти на Microsoft CRM 3.0 Software Development Kit (SDK), предназначен да разшири функционалността на стандартната доставка на продукта. По време на внедряването на един от тези компоненти бяха намерени няколко интересни решения, които ще обсъдим в тази статия.

Накратко за задачата: Централната банка на България предоставя на банките указатели, включително „Указател на банковите идентификационни кодове на участниците в сетълмента на територията на България“ („BIC RF Справка“) в DBF файл с позната структура. Актуализира се с периодичност от 1-3 месеца. При внедряване на CRM проект в банка е необходимо да се импортират данни от тази директория в Microsoft Dynamics CRM (където е дефиниран специален обект new_bik с полета, съответстващи на структурата на DBF таблицата). За да направите това, имате нужда от компонент с автоматично импортиране на кодове от външен файл в базата данни на Microsoft Dynamics CRM, което ще ви позволи да създадете и поддържате актуален RF BIC справочник. Записи в указателясе използват при попълване на съответните данни за организации и контакти в CRM формуляри; по този начин не можете да ги въведете ръчно, което намалява вероятността от грешки при попълване.

Импортиране на данни

Импортирането трябва да се извърши съгласно следния алгоритъм:

  • добавяне на нови BIC записи от референтния файл към CRM системата;
  • актуализиране на съществуващи записи в CRM системата;
  • деактивиране на онези записи в CRM системата, които не са в директорията на Централната банка.

Трудността се състои в това, че директорията съдържа много записи и е необходимо да деактивирате тези записи, които не са в актуализираната директория.

Първото решение беше такова. Първи цикъл: получаваме набор от активни записи от CRM и го обикаляме. Ако в референтния файл бъде намерен съществуващ запис, ние го актуализираме, ако не бъде намерен, ние го деактивираме. Втори цикъл: получаваме набор от записи от файла на директорията и преминаваме през него. Ако записът в директорията не е намерен в CRM, добавете го.

Тук трябва да се отбележи, че има два начина да проверите дали даден запис съществува в CRM. Първият начин („едно извикване на CRM“): първо заредете всички активни записи в паметта и ги итерирайте (необходимо е изброяване, за да намерите желания запис, тъй като класът BusinessEntityCollection, който представлява набор от данни в CRM, не дефинира метод за бързо търсене, но можете да получите колекция в DataSet). Вторият начин („1000 и 1 заявка към CRM“): анкета на CRM със заявка за извличане за наличието на конкретен запис.

Методът Merge се използва за обединяване на два обекта DataSet, които имат подобна (но не непременно същата) схема. В повечето случаи такова сливане се използва в клиентски приложения, за да се определи какви промени са настъпили в данните. Товапозволява проследяване само на модифицирани записи [1].

В резултат импортирането на BIC директорията изглежда така.

1. Вземете съществуващи записи от Microsoft Dynamics CRM. За да оптимизираме процеса, ние ще получим набор от активни BIC записи директно от базата данни на Microsoft Dynamics CRM, препращайки към филтрирания изглед. Тази техника, напълно поддържана от системата, е най-подходяща в този случай и осигурява максимална производителност [2, 3].

2. Четене на записи на референтния файл. Извличането на данни от файл с DBF таблица също е лесно.

Имайте предвид, че стойността на параметъра Data Source на низа за свързване не е самият DBF файл, а името на директорията, в която се намира. В SQL израза обаче таблицата има същото име като файла, но без разширение (име на файл [.dbf]). Също така важен е кодовият фрагмент, който показва всички записи, които току-що са били заредени в DataSet със статус DataRowState.Added. Това е необходимо за правилното добавяне и актуализиране на записи по време на сливането.

3. Обединяване на два набора от данни. Обединяването също е проста операция. Тук основният набор от данни са записите, получени от CRM, които се актуализират с данни от директорията във формат dbf.

Актуализиране, създаване на нови записи и деактивиране

Сега ние просто итерираме записите на резултантния набор по време на сливането, проверяваме състоянието на всеки от редовете и извикваме подходящия метод: създаване, актуализиране или деактивиране. Това е възможно, защото методът Merge, когато се слива, актуализира състоянието на всеки ред от оригиналния набор от данни (с данни от CRM) в съответствие с набора от данни, подаден като източник на актуализация. Редовете, които се съдържат и в двата набора, се актуализират и воригиналния набор се добавят нови записи от директорията. Тези записи, които не са били засегнати от процеса на сливане, се считат за остарели и подлежат на деактивиране.

По този начин има едно изброяване на записи с една заявка към CRM за добавяне, актуализиране или деактивиране на необходимите данни.

Тестването показа, че на CRM сървър, внедрен като виртуална машина (4x833 MHz процесор, 1024 MB RAM; Microsoft Windows Server 2003 Enterprise Edition), са необходими 15–25 минути за импортиране на 4500 записа, което е доста приемливо, като се има предвид сравнително рядка актуализация на директорията.

Оптимизация

И сега най-важното е оптимизацията. Постигнатият резултат не изглеждаше много добър, но след малко усъвършенстване беше възможно процесът на импортиране да се ускори почти 10 пъти.

Компонентът, описан по-горе, актуализира BIK директорията в CRM от класа Bik, който дефинира методите Create(), Update() и Deactivate(), които от своя страна извикват методите Create(), Update() и Execute() съответно на уеб услугата Microsoft CRM 3.0 (от класа CrmService). За удобство екземпляр от този клас е поставен в частната собственост на класа Bik (фиг. 1).

Ето кода за свойството Service на класа Bik:

Сега нека да разгледаме промените:

Свойството UnsafeAuthenticatedConnectionSharing на класа HttpWebRequest ви позволява да поддържате отворена удостоверена връзка. Стойността по подразбиране е false, което води до затваряне на удостоверената връзка към сървъра след всяка заявка. По този начин приложението трябва да премине през процеса на удостоверяване с всяка нова заявка.

Задаването на това свойство на true ви позволява да поддържате връзката отворена за всички след първото удостоверяване.последващи заявки, които използват връзката без повторно удостоверяване. С други думи, след като потребител A е удостоверен, потребител B може да работи чрез вече удостоверена връзка на потребител A (без процес на удостоверяване), но заявката на B ще бъде направена с идентификационните данни на потребител A. Това спестява време за всички повторни удостоверявания на заявки.

Предупреждение: тъй като потребителите могат да работят с удостоверена връзка без повторен контрол, трябва да се уверите, че това няма да се превърне в уязвимост в бъдещето на разработената система. Ако приложението използва удостоверяване за всеки конкретен потребител (което е типично за 90% от приложенията за Microsoft Dynamics CRM), не е необходимо да активирате това свойство - в противен случай всички операции, извършвани в CRM, ще се извършват от едно и също отговорно лице.

Ако, за да се подобри производителността на приложението, трябва да се позволи използването на удостоверена връзка, тогава има опция за активиране на тази функция за потребителски групи. За да направите това, в допълнение към настройката на свойството UnsafeAuthenticatedConnectionSharing на true, трябва да посочите свойството ConnectionGroupName на същия клас HttpWebRequest (който CrmService наследява). С помощта на последния се организират именувани групи от тествани връзки. Това предотвратява използването на връзката от неупълномощен потребител. С други думи, потребител A има уникално име за своята група за свързване, различно от това на потребител B, което осигурява определен слой на изолация за изпълнение на заявките на всеки от потребителите.

Така че добавянето само на два реда към вече съществуващ компонент ви позволява да импортирате 4500записва за 2,5-3 минути, което е почти десетократно увеличение на производителността.

Източници на допълнителна информация

  1. Подробно описание на метода Merge на класа DataSet в MSDN (http://msdn2.microsoft.com/en-us/library/system.data.dataset.merge.aspx).
  2. Microsoft Dynamics CRM 3.0 – Отчитане и филтрирани изгледи (http://msdn2.microsoft.com/en-us/library/aa681626.aspx).
  3. Блог на екипа на Microsoft Dynamics CRM – Писане на CRM допълнителни описания с филтрирани изгледи (http://blogs.msdn.com/crm/archive/2007/05/21/writing-crm-callouts-with-filtered-views.aspx).
  4. HttpWebRequest.UnsafeAuthenticatedConnectionSharing Property (http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.unsafeauthenticatedconnectionsharing.aspx)
  5. Microsoft Dynamics CRM 3.0: Групово импортиране – Най-добри практики за производителност (http://msdn2.microsoft.com/en-us/library/bb291036.aspx#mbs_crmbulkim_topic4).
  6. Методи на CrmService (http://msdn2.microsoft.com/en-us/library/aa680899.aspx).

Други статии от раздела

Други свързани статии

  • Принудителен конструктор на уеб интерфейс за PostgreSQL
  • Microsoft Visual Studio 2019 е наличен
  • Сертифицирано от Veeam решение за SAP HANA
  • Среда за разработка Red Hat, ориентирана към Kubernetes
  • Нова версия на интеграционната шина на Galaxy
Публикувайте в блог
Коментари на статията

Рекламни връзки

dynamics
ChlorideChloride Trinergy DemonstrationЗа първи път в България Chloride Rus демонстрира система за непрекъсваемо захранванеChloride Trinergy® и Chloride 80-NET™, NXC и NX UPS за нашите партньори и клиенти.

Видеоклипове

Многофункционален принтер с възможност за печат Panasonic DP-MB545RU A3Искате ли да подобрите ефективността на офиса? Новият #Panasonic DP-MB545RU MFP ще ви помогне. Устройството изпълнява

Adaptec от PMCAdaptec серия 5Z RAID контролери със защита на кеша без батерииОпитните мрежови администратори знаят, че използването на кеша на RAID контролера осигурява значителни предимства в производителността...

ХлоридТрифазен UPS хлорид от 200 до 1200kW: TrinergyTrinergy е ново UPS решение на пазара, първото, което предлага динамична работа, мащабируемост до 9,6 MW и ефективност до 99%. Уникална комбинация…