Система взаимодействия в 1С
Система взаимодействия — это механизм появившийся в технологической платформе 8.3.10. Это механизм позволяет клиентским приложениям, серверу и пользователям взаимодействовать между собой. В этой статье я попробую рассказать обо всем этом более подробно.
Общая информация
Итак, как уже было сказано выше, система взаимодействия позволяет осуществлять различные виды взаимодействия между приложениями, сервером и пользователями. Цель создания такой системы — упростить автоматизацию бизнес-процессов и предоставить пользователям простое средство коммуникации.
По видам, взаимодействия можно разделить на:
- Не интерактивные — когда информацией обмениваются только подсистемы прикладного решения (без участия живых людей);
- Только интерактивные — когда все участники взаимодействия являются живыми людьми;
- Смешанные — когда человек общается с подсистемой прикладного решения (своего рода робот, отвечающий на запросы).
Интерактивное взаимодействие происходит посредством текстовых сообщений и видеозвонков (обычный звонок — это видеозвонок без, собственно, видео).
Сообщения пользователей связанные одной темой называются обсуждениями, тема при этом может быть абсолютно любой. Сами же обсуждения бывают двух видов:
Неконтекстные обсуждения — не привязанные к какому-либо объекту информационной базы. Участвовать могут любые пользователи выбранные инициатором обсуждения. Обсуждений такого вида может быть сколько угодно.
Контекстные обсуждения — привязаны к конкретному объекту информационной базы. Доступ к обсуждению имеют те пользователи, которые имеют доступ к обсуждаемому объекту. Для каждого объекта может существовать только одно обсуждение.
К сообщениям можно прикреплять файлы, правда для этого, сервер взаимодействия должен быть настроен на работу с внешним хранилищем, работающим по протоколу Amazon S3.
Система реализована в клиент-серверной архитектуре и состоит из, внезапно, клиентской и серверной части. В качестве серверной части можно использовать либо сервер предоставляемый сервисом 1cDialog.com, либо самостоятельно установить и настроить экземпляр продукта «1С:Сервер взаимодействия».
Обмен сообщениями между клиентом и сервером осуществляется по протоколу WebSocket, что обеспечивает надлежащий уровень безопасности.
Доступ к сообщениям возможен посредством программного интерфейса, реализованного свойством глобального контекста — СистемаВзаимодействия.
Сервер взаимодействия
Как уже было сказано выше, сервер взаимодействия может предоставляться сервисом 1cDialog.com или отдельным продуктом, который можно скачать и установить на подходящем компьютере. Первый вариант не требует дополнительных действий поэтому и описывать там нечего, следовательно рассмотрим второй вариант — установку и настройку продукта «1С:Сервер взаимодействия».
Для начала раздобудем все, что потребуется (устанавливать в этом же порядке):
Кроме этого потребуется 1С:Предприятие (8.3.10-8.3.14). Ring и сам сервер взаимодействия можно скачать с https://users.v8.1c.ru/:
Ring и сервер взаимодействия
Сервер взаимодействия включает в себя севера Hazelcast и Elasticsearch, которые можно скачивать и устанавливать отдельно, но в нашем случае я выбрал общий вариант.
Во время установки потребуется ввести логин и пароль от учетной записи PostgreSQL.
После установки (если все пройдет нормально) все необходимые сервисы будут запущены, проверить это можно зайдя по адресу http://localhost:8087/rs/health . Если все нормально, то результат будет примерно таким:
Проверка состояния сервера взаимодействий
Запустить и остановить компоненты системы можно как и все остальные службы:
Службы сервера взаимодействий
А также при помощи утилиты Ring:
ring hazelcast —instance service start(stop)
ring elasticsearch —instance service start(stop)
ring cs —instance service start(stop)
, , — название экземпляра соответствующего сервера.
Настройки сервера взаимодействий в моем случае находятся тут:
В этой папке находится достаточно много файлов и соответственно немало настроек, описывать которые в этой статье я не буду, ибо статья обзорная. Небольшие изменения внесу только в файл com._1c.ecs.websocket.yml :
Настройка WebSocket
Изменить параметры можно при помощи утилиты Ring. Подробнее об имеющихся параметрах можно узнать на сайте ИТС или из справки утилиты Ring:
Утилита Ring
Подключение и использование
Для подключения к сервису 1cDialog.com нужно пройти в меню «Все функции»-«Стандартные»-«Управление системой взаимодействия». В открывшемся окне нужно указать адрес эл. почты (валидный), на него пришлют код регистрации, этот код нужно вставить в соответствующее поле и нажать кнопку «Зарегистрировать».
Регистрация в сервисе 1cDialog.com
Для подключения к собственному серверу взаимодействий потребуется специальная обработка — CollaborationSystemRegister.epf , которую можно скачать там же, где и сам сервер. В этой обработке нужно указать адрес для подключения (который настраивается в файле com._1c.ecs.websocket.yml ) и адрес эл. почты:
Регистрация на сервере взаимодействия
Очевидное использование системы взаимодействия (разнообразное общение между пользователями) нас не интересует. Рассмотрим возможности которые предоставляет свойство глобального контекста СистемаВзаимодействия. В качестве примера рассмотрим создание простого каркаса для бота, который реагирует на команды пользователей. Под командами пользователей подразумеваются сообщения какого-то определенного вида. Итак, в модуль исполняемый на клиенте поместим код такого вида:
Источник
Настройка 1С:Сервера взаимодействия
Что необходимо
- PostgreSQL – https://releases.1c.ru/project/AddCompPostgre (версия >=» 9.5)
- Сервер системы взаимодействия — https://releases.1c.ru/project/CollaborationSystem
Минимальный размер оперативной памяти – 4 Гб.
Для выбора версии сервера рекомендуем воспользоваться таблицей
Версия 1С:Сервера взаимодействия | Версия платформы 1С:Предприятие |
---|---|
7.0.25 | 8.3.16 |
6.0.47 | 8.3.15 |
5.0.43 | 8.3.14 |
4.0.73 | 8.3.13 |
Установка на «Linux» (на примере CentOS 7)
$ sudo yum install -y java-1.8.0-openjdk
$ tar xvzf centos_7.7.1908.x64.tar.gz
$ tar xvjf postgresql_11.5_19.1C_x86_64_rpm.tar.bz2
Установка пакетов сервера взаимодействия:
Копировать в буфер обмена
# rpm -ihv 1ce_cs_elasticsearch_5.6.12_12.x86_64.rpm 1ce_cs_server_7.0.25_1.x86_64.rpm 1ce_cs_hazelcast_3.9.4_1.x86_64.rpm 1c_enterprise_ring_0.8.2_1.x86_64.rpm
# rpm -ihv libicu-50.2-3.el7.x86_64.rpm libxslt-1.1.28-5.el7.x86_64.rpm
# rpm -ihv postgresql11-1c-11.5-19.el7.x86_64.rpm postgresql11-1c-libs-11.5-19.el7.x86_64.rpm postgresql11-1c-contrib-11.5-19.el7.x86_64.rpm postgresql11-1c-server-11.5-19.el7.x86_64.rpm
Задать пароль “postgres” пользователю postgres:
Копировать в буфер обмена
$ /usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data
$ psql
postgres=»# CREATE DATABASE cs_db;
postgres=# \c cs_db
postgres=# CREATE EXTENSION IF NOT EXISTS «uuid-ossp»;
postgres=# \q
$ exit
# systemctl enable postgresql-11
# systemctl start postgresql-11
Установка сервера взаимодействия
Копировать в буфер обмена
# useradd cs_user
# mkdir -p /var/cs/cs_instance
# chown cs_user:cs_user /var/cs/cs_instance
# /opt/1C/1CE/x86_64/ring/ring cs instance create —dir /var/cs/cs_instance —owner cs_user
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance service create —username cs_user —java-home $JAVA_HOME —stopped
# useradd hc_user
# mkdir -p /var/cs/hc_instance
# chown hc_user:hc_user /var/cs/hc_instance
# /opt/1C/1CE/x86_64/ring/ring hazelcast instance create —dir /var/cs/hc_instance —owner hc_user
# /opt/1C/1CE/x86_64/ring/ring hazelcast —instance hc_instance service create —username hc_user —java-home $JAVA_HOME —stopped
# useradd elastic_user
# mkdir -p /var/cs/elastic_instance
# chown elastic_user:elastic_user /var/cs/elastic_instance
# /opt/1C/1CE/x86_64/ring/ring elasticsearch instance create —dir /var/cs/elastic_instance —owner elastic_user
# /opt/1C/1CE/x86_64/ring/ring elasticsearch —instance elastic_instance service create —username elastic_user —java-home $JAVA_HOME —stopped
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc set-params —url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc set-params —username postgres
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc set-params —password postgres
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc-privileged set-params —url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc-privileged set-params —username postgres
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance jdbc-privileged set-params —password postgres
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance websocket set-params —hostname
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance websocket set-params —port 8087
— имя или IP-адрес компьютера, на котором установлен сервер взаимодействия и к которому будет подключаться клиентское приложение системы взаимодействия (система «1С:Предприятие»).
# /opt/1C/1CE/x86_64/ring/ring hazelcast —instance hc_instance service start
# /opt/1C/1CE/x86_64/ring/ring elasticsearch —instance elastic_instance service start
# /opt/1C/1CE/x86_64/ring/ring cs —instance cs_instance service start
/var/cs/cs_instance/logs/
/var/cs/hc_instance/logs/
/var/cs/elastic_instance/logs/
# firewall-cmd —zone=»public —add-port=8087/tcp» —permanent
Настройка обмена файлами в системе взаимодействия
Для обмена файлами в системе взаимодействия необходимо подключиться на сервере взаимодействия к хранилищу файлов.Хранилище должно поддерживать протокол S3 (V2 или V4).
Можно развернуть собственное хранилище:
Или подключиться к существующим:
- Amazon
- Amazon CDN
- Google Cloud
- Google Cloud CDN
- Croc Cloud
- Техносерв
Необходимо выбрать только один вариант использования хранилища файлов:
$ sudo mkdir -p /opt/minio
$ sudo chown user:user /opt/minio
$ sudo mkdir -p /var/minio
$ sudo chown user:user /var/minio
$ cd /opt/minio
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
$ sudo chmod +x minio
$ sudo firewall-cmd —zone=»public —add-port=9000/tcp» —permanent
$ sudo firewall-cmd —reload
Для доступа к серверу хранилища, необходимо задать логин и пароль в переменных среды MINIO_ACCESS_KEY и MINIO_SECRET_KEY, соответственно. Чтобы значения этих переменных устанавливалиь при старте, занесем их инициализацию в /etc/default.
$ sudo vi /etc/default/minio
MINIO_VOLUMES=»»/var/minio/&»quot;
MINIO_ACCESS_KEY=» minio
MINIO_SECRET_KEY=» minio123
$ sudo vi /etc/systemd/system/minio.service
[Unit]
Description=»MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/opt/minio/minio
[Service]
WorkingDirectory=/usr/local/
User=user
Group=user
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c «if [ -z \»$
ExecStart=/opt/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no
$ sudo systemctl enable minio.service
$ sudo systemctl start minio.service
В браузере перейдите по ссылке:
Создайте новое хранилище, например cs-bucket
Логин: значение переменной MINIO_ACCESS_KEY,
Пароль: значение переменной MINIO_SECRET_KEY
Для хранилища укажите, что оно работает в режиме «Read and Write».
Для добавления хранилища файлов в базу сервера взаимодействия:
$ su postgres
$ vi /tmp/create_bucket.sql
INSERT INTO public.storage_server(id, type, base_url, container_url, container_name, region, access_key_id, secret_key, signature_version, is_deleted, upload_limit, download_limit, file_size_limit, created_at, updated_at, cdn_url, cdn_key_id, cdn_secret_key, state, cdn_enabled, path_style_access_enabled, bytes_to_keep, days_to_keep, pricing_url)
VALUES(
uuid_generate_v4(), ‘AMAZON’, ‘http://ИМЯ СЕРВЕРА ИЛИ IP:9000’,’http://ИМЯ СЕРВЕРА ИЛИ IP:9000/$
‘cs-bucket’,
»,
‘minio’,
‘minio123’,
‘V2’, false, 1073741824, 1073741824, 104857600, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, ‘ACTIVE’, false, true, 0, 0, NULL);
$ psql -U postgres —dbname=cs_db —file=/tmp/create_bucket.sql
Если вы планируете работать в web-клиенте, то необходимо настроить CORS:
- Откройте хранилище в браузере (или перейдите по ссылке https://console.aws.amazon.com/s3/buckets/ /?region=»eu-west-1)
- Permissions / CORS Configuration
- Настройка с максимальным уровнем доступа: Копировать в буфер обмена
Для добавления хранилища файлов в базу сервера взаимодействия:
Источник