<
  • Главная
Статьи

Як викликати конфігураційний сервіс за допомогою ServiceHelper

  1. 1. Створити конфігураційний сервіс
  2. 2. Створити замещающую сторінку редагування
  3. 2. Додати кнопку на сторінку редагування
  4. 3. Додати обробник кнопки, в якому викликати метод веб-сервісу

Щоб викликати конфігураційний веб сервіс з клієнтського JavaScript-коду необхідно:   У модуль сторінки, з якої викликається сервіс, підключити в якості залежно модуль ServiceHelper

Щоб викликати конфігураційний веб сервіс з клієнтського JavaScript-коду необхідно:

  1. У модуль сторінки, з якої викликається сервіс, підключити в якості залежно модуль ServiceHelper. Цей модуль надає зручний інтерфейс для виконання запитів до сервера через провайдер запитів Terrasoft.AjaxProvider, реалізований в клієнтському ядрі.
  2. Викликати метод callService (serviceName, serviceMethodName, callback, serviceData, scope) з модуля ServiceHelper, передавши йому наступні параметри (табл. 1).

Табл. 1. - Параметри методу callService ()

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

Функція зворотного виклику, в якій виконується обробка відповіді від сервісу. Функція приймає як параметр об'єкт response. Якщо викликається метод сервісу повертає якесь значення, то отримати його на клієнті можна через властивість об'єкта response.

Ім'я властивості, в якому повертається output-значення методу формується за правилом: [ім'я методу сервісу] + [Result].

Наприклад, якщо викликався метод GetSomeValue (), то повертається значення міститиметься у властивості response.GetSomeValueResult.

serviceData

Об'єкт з проініціалізувати входять параметрами для методу сервісу. scope Контекст виконання. Об'єкт з проініціалізувати входять параметрами для методу сервісу

ДО ВІДОМА

Існує другий спосіб виклику методу callService (config), де config - це конфігураційний об'єкт, з властивостями:

  • serviceName - ім'я конфігураційного сервісу;
  • methodName - ім'я викликається методу конфігураційного сервісу;
  • callback - функція зворотного виклику, в якій виконується обробка відповіді від сервісу;
  • data - об'єкт з проініціалізувати входять параметрами для методу сервісу;
  • scope - контекст виконання.

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

Пакет з реалізацією прикладу можна скачати за посиланням .

1. Створити конфігураційний сервіс

У прикладі використовується веб-сервіс з прикладу, описаного в статті " Як створити свій конфігураційний сервіс ". У сервісі параметр Method атрибута WebInvoke змінений на POST.

Вихідний код сервісу:

namespace Terrasoft.Configuration.UsrConfigurationService {using System; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; using Terrasoft.Core; using Terrasoft.Web.Common; using Terrasoft.Core.Entities; [ServiceContract] [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class UsrConfigurationService: BaseService {// Посилання на екземпляр UserConnection, необхідний для звернення до бази даних. private SystemUserConnection _systemUserConnection; private SystemUserConnection SystemUserConnection {get {return _systemUserConnection ?? (_SystemUserConnection = (SystemUserConnection) AppConnection.SystemUserConnection); }} // Метод, який повертає ідентифікатор контакту з його імені. [OperationContract] [WebInvoke (Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] public string GetContactIdByName (string Name) {// Результат за замовчуванням. var result = ""; // Примірник EntitySchemaQuery, який звертається до таблиці Contact бази даних. var esq = new EntitySchemaQuery (SystemUserConnection.EntitySchemaManager, "Contact"); // Додавання колонок в запит. esq.AddColumn ( "Id"); var colName = esq.AddColumn ( "Name"); // Фільтрація даних запиту. var esqFilter = esq.CreateFilterWithParameters (FilterComparisonType.Equal, "Name", Name); esq.Filters.Add (esqFilter); // Отримання результату запиту. var entities = esq.GetEntityCollection (SystemUserConnection); // Якщо дані отримані. if (entities.Count> 0) {// Повернути значення колонки "Id" першого запису результату запиту. result = entities [0] .GetColumnValue (colId.Name) .ToString (); // Також можна використовувати такий варіант: // result = entities [0] .GetTypedColumnValue <string> (colId.Name); } // Повернути результат. return result; }}}

2. Створити замещающую сторінку редагування

У призначеному для користувача пакеті створіть заміщає клієнтський модуль, в якому в якості батьківського об'єкта вкажіть [Схема відображення картки контакту] ([Display schema - Contact card], ContactPageV2). Процес створення замісної сторінки описаний в статті " Створення клієнтської схеми ".

В оголошенні модуля сторінки редагування підключіть як залежності модуль ServiceHelper.

2. Додати кнопку на сторінку редагування

Процес додавання кнопки на сторінку редагування детально описаний в статтях " Як додати кнопку в режимі додавання нового запису "І" Як додати кнопку на сторінку редагування в суміщеному режимі ".

У схему заміщає модуля сторінки редагування контакту додайте локалізуемое рядок з заголовком кнопки, наприклад:

  • [Назва] ([Name]) - "GetServiceInfoButtonCaption";
  • [Значення] ([Value]) - "Викликати сервіс" ( "Call service").

3. Додати обробник кнопки, в якому викликати метод веб-сервісу

Для виклику веб-сервісу скористайтеся методом callService () модуля ServiceHelper, в який передайте в якості параметрів:

  • ім'я класу конфігураційного сервісу (UsrCustomConfigurationService),
  • ім'я викликається методу сервісу (GetContactIdByName),
  • об'єкт з проініціалізувати входять параметрами для методу сервісу (serviceData),
  • функцію зворотного виклику, в якій виконайте обробку результатів сервісу,
  • контекст виконання.

Вихідний код заміщає модуля сторінки редагування:

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 = {// Назва властивості збігається з ім'ям входить параметра методу сервісу. Name: name}; // Виклик веб-сервісу і обробка результатів. ServiceHelper.callService ( "UsrConfigurationService", "GetContactIdByName", function (response) {var result = response.GetContactIdByNameResult; 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, "rowSpan": 1}}}] / ** SCHEMA_DIFF * /}; });

Після збереження схеми і оновлення сторінки додатка на сторінці редагування контакту з'явиться кнопка [Викликати сервіс] ([Call service]), при натисканні на яку буде викликатися метод конфігураційного сервісу (рис. 1).

Мал. 1. - Демонстрація результату

- Демонстрація результату

Private SystemUserConnection _systemUserConnection; private SystemUserConnection SystemUserConnection {get {return _systemUserConnection ?
Get ( "Name")?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью