Creatio development guide
Это документация Creatio версии 7.8.0. Мы рекомендуем использовать новую версию документации.

Как программно вызвать конфигурационный сервис

Glossary Item Box

Вызов сервиса из кода конфигурационных схем

Для того, чтобы вызвать конфигурационный веб сервис из клиентского JavaScript-кода, необходимо:

  1. В модуль страницы, из которой вызывается сервис, подключить в качестве зависимости модуль ServiceHelper. Этот модуль предоставляет удобный интерфейс для выполнения запросов к серверу через провайдер запросов Terrasoft.AjaxProvider, реализованный в клиентском ядре.
  2. Вызвать метод callService(serviceName, serviceMethodName, callback, serviceData, scope) из модуля ServiceHelper, передав ему следующие параметры (табл. 1).

Табл. 1. — Параметры метода callService()

Параметр Описание
serviceName Имя конфигурационного сервиса. Соответствует имени класса C#, реализующего сервис.
servcieMethodName Имя вызываемого метода конфигурационного сервиса. Метод может принимать входящие параметры и возвращать результирующие значения.
callback(response)

Функция обратного вызова, в которой выполняется обработка ответа от сервиса. Функция принимает в качестве параметра объект responce. Если вызываемый метод сервиса возвращает какое-либо значение, то получить его на клиенте можно через свойство объекта response.

Имя свойства, в котором возвращается output-значение метода формируется по правилу: [Имя метода сервиса] + [Result].

Например, если вызывался метод GetSomeValue(), то возвращаемое значение будет содержаться в свойстве response.GetSomeValueResult.

scope Контекст выполнения.
 

Пример вызова сервиса из схемы конфигурации

На страницу добавления нового контакта необходимо добавить кнопку, по клику на которую будет вызываться конфигурационный веб-сервис. В результате в информационном окне страницы будет отображаться результат, возвращаемый методом веб-сервиса.

В примере используется веб-сервис из примера, описанного в статье "Как создать свой конфигурационный сервис".

Алгоритм реализации кейса

1. Создать замещающую страницу редактирования контакта и добавить на нее кнопку

Процесс добавления кнопки на страницу редактирования детально описан в статье "Как добавить кнопку в режиме добавления новой записи".

В схему замещающего модуля страницы редактирования контакта необходимо добавить локализуемую строку GetServiceInfoButtonCaption с заголовком кнопки, например "Вызвать сервис".

Дополнительно в объявлении модуля страницы редактирования необходимо подключить в качестве зависимости модуль ServiceHelper.

2. Добавить обработчик кнопки, в котором вызвать метод веб-сервиса

Для вызова веб-сервиса необходимо воспользоваться методом callService модуля ServiceHelper, в который передать в качестве параметров имя класса конфигурационного сервиса, имя вызываемого метода сервиса, объект с проинициализированными входящими параметрами для метода сервиса, функцию обратного вызова, в которой выполнить обработку результатов сервиса, а также контекст выполнения.

Программный код замещающего модуля страницы редактирования приведен ниже.

define("ContactPageV2", ["ServiceHelper"],
    function(ServiceHelper) {
        return {
            // Название схемы объекта страницы редактирования.
            entitySchemaName: "Contact",
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            // Коллекция методов модели представления страницы редактирования.
            methods: {
                // Метод проверяет, заполнено ли поле [ФИО] страницы.
                isContactNameSet: function() {
                    return this.get("Name") ? true : false;
                },
                // Метод-обработчик нажатия кнопки.
                onGetServiceInfoClick: function() {
                    var name = this.get("Name");
                    // Объект, инициализирующий входящие параметры для метода сервиса.
                    var serviceData = {
                        // Название свойства совпадает с именем входящего параметра метода сервиса.
                        inputParam: name
                    };
                    // Вызов веб-сервиса и обработка результатов.
                    ServiceHelper.callService("CustomConfigurationService", "GetTransformValue",
                        function(response) {
                            var result = response.GetTransformValueResult;
                            this.showInformationDialog(result);
                        }, serviceData, this);
                }
            },
            diff: /**SCHEMA_DIFF*/[
                // Метаданные для добавления на страницу нового элемента управления - пользовательской кнопки.
                {
                    // Указывает на то, что выполняется операция добавления элемента на страницу.
                    "operation": "insert",
                    // Метаимя родительского элемента управления, в который добавляется кнопка.
                    "parentName": "LeftContainer",
                    // Указывает на то, что кнопка добавляется в коллекцию элементов управления
                    // родительского элемента (метаимя которого указано в parentName).
                    "propertyName": "items",
                    // Метаимя добавляемой кнопки.
                    "name": "GetServiceInfoButton",
                    // Дополнительные свойства поля.
                    "values": {
                        // Тип добавляемого элемента - кнопка.
                        itemType: Terrasoft.ViewItemType.BUTTON,
                        // Привязка заголовка кнопки к локализуемой строке схемы.
                        caption: {bindTo: "Resources.Strings.GetServiceInfoButtonCaption"},
                        // Привязка метода-обработчика нажатия кнопки.
                        click: {bindTo: "onGetServiceInfoClick"},
                        // Привязка свойства доступности кнопки.
                        enabled: {bindTo: "isContactNameSet"},
                        // Настройка расположения поля.
                        "layout": {"column": 1, "row": 6, "colSpan": 2}
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    });

3. Сохранить схему в конфигурации

Результат выполнения кейса приведен на рис. 1.

Рис. 1. — Результат кейса по вызову конфигурационного сервиса

© Terrasoft 2002-2016.

Был ли данный материал полезен?

Как можно улучшить эту статью?