Microsoft CRM интеграция: доступ к Oracle базе из MS CRM

Борис Макушкин

 

Alba Spectrum Technologies

(095) 918-3314, (095) 918-3111, help@albaspectrum.com  

Alba Spectrum Technologies

 

 

Целью нашей сегодняшней статьи будет демонстрация возможностей кастомизации пользовательского веб-интерфеса MS CRM. В качестве примера, мы будем использовать интеграцию MS CRM с ASP.NET приложением, осуществляющего доступ к данным покупателей, хранящимся в базе данных Oracle 10g. Итак, давайте начнем:

  1. Первым делом, нам надо создать таблицу, хранящую данные о покупателях, в Oracle Database. Воспользуемся веб-приложением iSQL для манипуляций с метаданными таблицы:

 

 

  1. Таблица создана и состоит из четырех полей – CUSTOMER_ID, FIRST_NAME, LAST_NAME и ADDRESS. Заполним ее тестовыми данными:

  1. Теперь приступим к организации доступа к Oracle данным из ASP.NET приложения. Для этого нам надо скачать с сайта http://www.oracle.com Windows Instant Client. Нам не надо его устанавливать – достаточно распаковать все файлы в какой-либо каталог, например c:\oracle и установить переменную окружения TNS_ADMIN, указывающую в этот каталог.
  2. В каталоге c:\oracle (или туда, куда указывает переменная окружения TNS_ADMIN) создадим файл tnsnames.ora следующего содержания (замените имя хоста и имя сервиса на необходимые значения):

ORCL1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oraclehost.youtdomain.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ORCL1)

    )

  )

  1. Поправим windows registry для корректной работы MS SQL Linked Server с Oracle OLE DB Provider. В ветке KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI необходимо внести следующие изменения:

     

OracleXaLib = "oracleclient8.dll"
OracleSqlLib = "orasql8.dll"
OracleOciLib = "oci.dll"

 

  1. Теперь приступим к созданию Linked Server в MS SQL Server 2000:

 

Необходимое замечание – на вкладке Security необходимо использовать security context с теми credentials, с которыми мы хотим осуществлять доступ к Oracle Database.

  1. Linked Server готов – проверим его функционирование, открыв список таблиц. В нем мы без труда найдем нашу таблицу покупателей:

  1. Теперь создадим хранимую процедуру для доступа к данным Oracle:

SET ANSI_NULLS ON

SET ANSI_WARNINGS ON

GO

 

CREATE PROCEDURE MyCustomersList AS

 

SELECT * FROM OPENQUERY(ORACLE, 'SELECT * FROM Customer')

 

RETURN

 

  1. Следующим шагом будет изменение пользовательского интерфейса MS CRM. Мы добавим кнопку получения списка покупателей в Toolbar окна отображения Quote. Отредактируем, как показано ниже, файл isv.config:

<quote>

       <ToolBar ValidForCreate="0" ValidForUpdate="1">

       <Button Title="Customers" ToolTip="Show customers list from Oracle DB" Icon="/_imgs/ico/16_convert.gif" Url="http://APOLLO/MyCustomersList.aspx" PassParams="1" WinParams="" WinMode="1"/>

       </ToolBar>

       <NavBar ValidForCreate="0" ValidForUpdate="1">

       </NavBar>

</quote>

Замените Url значение на нужное имя хоста, где будет располагаться страница выборки данных.

  1. Для создания ASPX страницы воспользуемся RAD средой ASP.NET WebMatrix:

  1. Создадим новую страницу доступа к данным:

  1. Изменим ее код в соответствии с нашими данными:

Sub Page_Load(Sender As Object, E As EventArgs)

 

    Dim ConnectionString As String = "server=(local);database=Albaspectrum;trusted_connection=true"

    Dim CommandText As String = "EXEC MyCustomersList"

 

    Dim myConnection As New SqlConnection(ConnectionString)

    Dim myCommand As New SqlCommand(CommandText, myConnection)

 

    myConnection.Open()

 

    DataGrid1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

    DataGrid1.DataBind()

End Sub

  1. Проверим работу нашего приложения с вызовом из MS CRM:

 

Счастливого программирования, имплементации и модификации! Если вы хотите чтобы мы сделали работу – позвоните нам 1-630-961-5918, 1-866-528-0577! help@albaspectrum.com

 

Борис Макушкин – ведущий девелопер в Alba Spectrum Technologies – компании – партнере Microsoft Business Solutions в городах Москва, Петербург, Екатеринбург, Казань, Ростов и обслуживающей всю Российскую Федерацию (www.albaspectrum.com), Борис является Microsoft CRM SDK, C#, VB.Net, SQL, Oracle, Unix девелопером.

Россия: (095) 918-3314, (095) 918-3111, USA: 1-630-961-5918, 1-866-528-0577

Alba Spectrum Technologies