Выбор способа интеграции с Creatio
Glossary Item Box
Общие сведения
Creatio предлагает широкие возможности для интеграции со сторонними программными продуктами. Выбор способа интеграции зависит от потребностей клиента, типа и архитектуры сторонних программных продуктов, компетенции разработчика. Сравнение основных характеристик поддерживаемых способов интеграции с Creatio приведено в таблице 1.
Табл. 1. — Сравнение основных способов интеграции с Creatio
DataService | OData | ProcessEngineService | Пользовательский конфигурационный сервис | |
---|---|---|---|---|
Поддерживаемые форматы обмена данными |
||||
XML, JSON, JSV, CSV | XML, JSON | XML, JSON | XML, JSON | |
Решаемые задачи |
||||
CRUD-операции с объектами Creatio, фильтрация данных и использование встроенных макросов Creatio |
CRUD-операции с объектами, добавление и удаление связей, получение метаданных, коллекций, полей объектов, сортировка и др. |
Запуск бизнес-процессов, передача и получение параметров запускаемого бизнес-процесса, запуск отдельных элементов бизнес-процеса | Любые требуемые пользовательские задачи, которые можно решить в рамках открытого API Creatio | |
Сложность использования |
||||
Высокая | Средняя | Низкая | Средняя | |
Способы аутентификации |
||||
Forms | Forms | Forms | Anonymous, Forms — в зависимости от реализации сервиса. | |
Наличие вспомогательных клиентских библиотек |
||||
Можно использовать .dll-библиотеки Creatio только для .NET приложений |
Есть |
Не нужны | Не нужны | |
Разработчик |
||||
Creatio | Microsoft | Creatio | Creatio |
Краткое описание, основные преимущества и недостатки каждого из способов представлены ниже.
Интеграция с помощью DataService
Веб-служба DataService — основное связующее звено клиентской и серверной частей Creatio. Именно с ее помощью выполняется передача данных, введенных пользователем с помощью пользовательского интерфейса, в серверную часть приложения для последующей обработки и сохранения в базу данных. Подробное описание DataService и основные операции, выполняемые этой службой, приведены в статье "Веб-служба DataService".
Основные преимущества и возможности интеграции
- Обмен данными с помощью XML, JSON, JSV, CSV.
- Доступны операции создания, чтения, обновления и удаления объектов Creatio (CRUD-операции). При этом можно использовать встроенные макросы и фильтровать данные. Сложные запросы можно выполнять пакетно.
- Для доступа необходима авторизация пользователя.
Недостатки
- Высокая сложность построения запросов.
- Необходимость глубоких знаний для разработки.
- Отсутствие вспомогательных библиотек для популярных прикладных и мобильных платформ.
Пример
Пример исходного кода простого приложения для отправки запроса на добавление данных к веб-службе DataService приведен ниже. В нем выполняется формирование запроса для создания нового контакта, для которого заполняются основные колонки. Подробно этот пример рассмотрен в статье "DataService. Создание записи. Пример".
using System; using System.Text; using System.IO; using System.Net; using System.Collections.Generic; using Terrasoft.Nui.ServiceModel.DataContract; using Terrasoft.Core.Entities; using System.Web.Script.Serialization; namespace DataServiceInsertExample { class Program { private const string baseUri = @"http://userapp.сreatio.com"; private const string authServiceUri = baseUri + @"/ServiceModel/AuthService.svc/Login"; private const string insertQueryUri = baseUri + @"/0/DataService/json/reply/InsertQuery"; private static CookieContainer AuthCookie = new CookieContainer(); private static bool TryLogin(string userName, string userPassword) { bool result = false; // TODO: Реализация аутентификации. return result; } static void Main(string[] args) { if (!TryLogin("User1", "User1")) { return; } // Формирование JSON-объекта для запроса на добавление данных. // Используется контракт данных InsertQuery. var insertQuery = new InsertQuery() { RootSchemaName = "Contact", ColumnValues = new ColumnValues() }; var columnExpressionName = new ColumnExpression { ExpressionType = EntitySchemaQueryExpressionType.Parameter, Parameter = new Parameter { Value = "Иванов Иван Иванович", DataValueType = DataValueType.Text } }; var columnExpressionPhone = new ColumnExpression { ExpressionType = EntitySchemaQueryExpressionType.Parameter, Parameter = new Parameter { Value = "+12 345 678 00 00", DataValueType = DataValueType.Text } }; var columnExpressionJob = new ColumnExpression { ExpressionType = EntitySchemaQueryExpressionType.Parameter, Parameter = new Parameter { Value = "11D68189-CED6-DF11-9B2A-001D60E938C6", DataValueType = DataValueType.Guid } }; insertQuery.ColumnValues.Items = new Dictionary<string, ColumnExpression>(); insertQuery.ColumnValues.Items.Add("Name", columnExpressionName); insertQuery.ColumnValues.Items.Add("Phone", columnExpressionPhone); insertQuery.ColumnValues.Items.Add("Job", columnExpressionJob); var json = new JavaScriptSerializer().Serialize(insertQuery); byte[] jsonArray = Encoding.UTF8.GetBytes(json); // Отправка Http-запроса. var insertRequest = HttpWebRequest.Create(insertQueryUri) as HttpWebRequest; insertRequest.Method = "POST"; insertRequest.ContentType = "application/json"; insertRequest.CookieContainer = AuthCookie; insertRequest.ContentLength = jsonArray.Length; using (var requestStream = insertRequest.GetRequestStream()) { requestStream.Write(jsonArray, 0, jsonArray.Length); } using (var response = (HttpWebResponse)insertRequest.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { Console.WriteLine(reader.ReadToEnd()); } } } } }
Интеграция с помощью протокола OData
Протокол Open Data (OData) — это открытый веб–протокол для запроса и обновления данных, базирующийся на архитектурном подходе REST с применением стандартов Atom/XML и JSON. Доступ к данным и объектам Creatio по протоколу OData может получить любое стороннее приложение, которое поддерживает обмен сообщениями HTTP и может обрабатывать данные XML или JSON. При этом данные доступны в виде ресурсов, адресуемых через URI. Доступ к данным и их изменение осуществляется с помощью стандартных HTTP–команд GET, PUT/MERGE, POST и DELETE.
Основные преимущества и возможности интеграции
- Обмен данными с помощью XML, JSON.
- Множество операций с объектами Creatio, в том числе CRUD-операции.
- Удобные функции работы со строками, датами и временем.
- Большое количество клиентских библиотек по работе с OData для популярных прикладных и мобильных платформ.
- Для доступа необходима авторизация пользователя.
Недостатки
- Сложность построения запросов.
- Необходимость глубоких знаний для разработки.
Пример
Пример запроса для добавления новой записи контакта с помощью OData приведен ниже. Подробно примеры работы с OData рассмотрены в разделе "Интеграция по протоколу OData".
POST /0/odata/Contact HTTP/1.1 Host: mycreatio.com Accept: application/json Content-Type: application/json; charset=utf-8 ForceUseSession: true BPMCSRF: OpK/NuJJ1w/SQxmPvwNvfO Content-Type: application/json { // Добавить в поле Name значение New User. "Name": "New User", // Добавить в поле JobTitle значение Customer manager. "JobTitle": "Customer manager" }
Интеграция с помощью сервиса запуска бизнес-процессов ProcessEngineService
Одной из задач интеграции внешнего приложения с Creatio является запуск бизнес-процессов. С этой целью в сервисной модели Creatio реализован web-сервис ProcessEngineService.svc, позволяющий запускать бизнес-процессы извне.
Основные преимущества и возможности интеграции
- Запуск созданных в Creatio бизнес-процессов из внешних приложений.
- Обмен данными между Creatio и внешними приложениями.
- Для доступа необходима авторизация пользователя.
Подробнее возможности интеграции с помощью протокола перечислены в статье "Веб-сервис ProcessEngineService.svc".
Недостатки
- Умение работать с бизнес-процессами в Creatio.
- Неудобный формат передачи данных в приложение.
Пример интеграционного решения приведен в статье "Как запускать процессы Creatio через веб-сервис".
Интеграция с помощью пользовательского конфигурационного веб-сервиса
В Creatio существует возможность создавать пользовательские веб-сервисы в конфигурации, с помощью которых можно реализовать специфические интеграционные задачи. Конфигурационный веб-сервис представляет собой RESTful-сервис, реализованный на базе технологии WCF. Создание пользовательского конфигурационного веб-сервиса подробно описано в статье "Создание пользовательского конфигурационного сервиса".
Основные преимущества и возможности интеграции
- Обмен данными реализуется разработчиком любым удобным способом.
- Возможность реализации разработчиком любых операций с объектами Creatio, в том числе CRUD-операций.
- Для доступа пользователя авторизация не обязательна.
Недостатки
- Необходимость разработки абсолютно всей функциональности сервиса.
- Необходимость глубоких знаний для разработки.
Пример
Пример исходного кода конфигурационного сервиса приведен ниже. Сервис добавляет к входящему параметру операции слово "changed!" и отправляет новое значение в HTTP- ответе. Подробно этот пример рассмотрен в статье "Создание пользовательского конфигурационного сервиса".
namespace Terrasoft.Configuration.CustomConfigurationService { using System; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class CustomConfigurationService { [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] public string GetTransformValue(string inputParam) { // Изменение значения входящего параметра. var result = inputParam + " changed!"; return result; } } }