Creatio development guide
PDF
Документация по разработке
Описание платформы

ClientMessageBridge. Механизм сохранения истории сообщений

Glossary Item Box

Общие положения

В идеальном случае на момент публикации сообщения внутри системы присутствует обработчик (рис. 1).

Рис. 1. — Идеальный процесс взаимодействия

Но возможна ситуация, когда обработчик еще не загружен (рис. 2).

Рис. 2. — Процесс взаимодействия с отсутствующим обработчиком

Чтобы не потерять необработанные сообщения, реализована возможность ожидания появления слушателя перед публикацией. В случае отсутствия слушателя, сообщения сохраняются в истории. Перед публикацией каждого сообщения проверяется наличие слушателя. Когда слушатель загружен, ему публикуются все сохраненные сообщения в порядке их получения. После публикации сообщений из истории вся история очищается.

Пример конфигурирования обработки сообщения с сохранением в историю

Для реализации описанной возможности необходимо, добавляя новый конфигурационный объект, указать в нем признак isSaveHistory равным true.

init: function() {
   // Вызов родительского метода init().
   this.callParent(arguments);
   // Добавление нового конфигурационного объекта в коллекцию конфигурационных объектов.
   this.addMessageConfig({
       // sender — имя сообщения, получаемого по WebSocket.
       sender: "OrderStepCalculated",
       // messageName — имя сообщения, с которым оно будет разослано внутри системы.
       messageName: "OrderStepCalculated",
       // isSaveHistory — признак, указывающий на необходимость сохранения истории.
       isSaveHistory: true
    });
},

Механизм сохранения истории

Класс ClientMessageBridge является наследником абстрактного класса BaseMessageBridge, в котором присутствуют абстрактные методы saveMessageToHistory, getMessagesFromHistory, deleteSavedMessages. В ClientMessageBridge сохранение истории сообщений реализовано с использованием localStorage браузера, а реализация абстрактных методов позволяет манипулировать данными в хранилище. Для работы с localStorage используется класс Terrasoft.LocalStore.

Методы :

  • saveMessageToHistory — обеспечивает сохранение нового сообщения в коллекции сообщений;
  • getMessagesFromHistory — обеспечивает получение массива сообщений по передаваемому имени;
  • deleteSavedMessages — удаляет все сохраненные сообщения по передаваемому имени.

В случае если есть потребность реализовать работу с другим типом хранилища, необходимо создать наследника класса BaseMessageBridge и реализовать все абстрактные методы (saveMessageToHistory, getMessagesFromHistory, deleteSavedMessages).

 

 

© Terrasoft 2002-2019.

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

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