Версия модуля триггеров 17.Х и выше работает только c версией системы ADVANTA 3.23 и выше.
Пример для ОС Ubuntu 22+ (репозитории-источники указанных пакетов должны быть настроены в ОС, необходимые зависимости будут установлены автоматически)
sudo apt update && \ sudo apt install -y postgresql aspnetcore-runtime-6.0 nginx
Версия модуля Триггеров 17.x может корректно работать только с версиями ADVANTA 3.23 и выше.
Начиная с версии 17 модуль Триггеров является многокомпонентным. Каждая компонента должна разворачиваться отдельно.
Перечень компонент:
restart
для управляющего Агента.Подробная настройка БД MS SQL представлена на странице Настройка базы данных MS SQL.
psql
, запущенной под админом сервера БДCREATE USER user_name WITH PASSWORD 'user_password';
)CREATE DATABASE db_name;
)GRANT ALL PRIVILEGES ON DATABASE db_name TO user_name;
)Advanta/Database/MigrateOnStartup = true
в конфигурационных файлах компонентов Сайт и Движок. Последующие запуски могут осуществляться с любым значением данного ключа.Подробная настройка БД PostgreSQL представлена на странице Настройка базы данных PostgreSQL.
su - postgres psql CREATE USER user_tr WITH PASSWORD 'P@ssw0rd'; CREATE DATABASE db_tr; GRANT ALL PRIVILEGES ON DATABASE db_tr TO user_tr;
Веб-приложение Панели управления триггерами
На примере Nginx в ОС Ubuntu 22+ (документация).
sudo service nginx start
nano/etc/nginx/sites-available/advanta_triggers
map $http_connection $connection_upgrade { "~*Upgrade" $http_connection; default keep-alive; } server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://127.0.0.1:5000/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
listen
и server_name
указываем корректные данные порта и адреса домена(ов), по которым будет доступно веб-приложение. При необходимости, настройте иные параметры самостоятельно стандартными средствами конфигурирования веб-сервера (например, SSL-шифрование трафика).proxy_pass
в разделе location
содержит указание на локальный адрес и порт сервера http://127.0.0.1:5000/
, на котором будет работать компонент модуля триггеров Сайт после его запуска. Изменяйте данный параметр только при скорректированных параметрах работы компонента Сайт, отличных от установленных по умолчанию. Обеспечьте средствами сервера (например, используя firewall) защиту указанного порта (5000) от доступа к нему извне, т.к. он должен быть доступен только локально для работы приложений в рамках одного сервера.sudo nginx -t
sudo ln -s /etc/nginx/sites-available/advanta_triggers /etc/nginx/sites-enabled/advanta_triggers
sudo nginx -s reload
server_name:listen
, указанным в конфигурационном файле веб-сервера, но только после запуска на сервере компонента Сайт (см. далее)
/home/<username>/triggers/
в домашней папке пользователя сервера , под которым планируется запуск приложения. Для размещения файлов компонента можно использовать и любую другую папку на ваш выбор. Главное, чтобы она была доступна запускающему приложение пользователю ОС.Advanta.Triggers.WebClient.dll
appsettings.json
и находим секцию ConnectionStrings
. Меняем в ней тип подключения, адрес SQL-сервера, название БД, логин и пароль пользователя, созданные на этапе настройки Базы данных для модуля триггеров. appsettings.json
(см. ниже раздел «Описание настроек Сайта»)dotnet Advanta.Triggers.WebClient.dll
appsettings.json
в разделе Logging/File/BasePath
.web.config
найти секцию aspNetCore
и поменять параметр stdoutLogEnabled
на значение true
Настройки компонента приложения Сайт осуществляются в файле appsettings.json
, размещенном в рабочей папке компонента. Так как приложение можно запустить в различных конфигурациях, то в проекте есть несколько файлов типа: appsettings.ConfigurationName.json
.
При получении архива для распространения с исполняемыми файлами используется файл с настройками appsettings.json
для запуска компонента в режиме Production
.
WorkingDirectory – относительный или абсолютный путь, по которому размещается рабочая папка компонента.
Необязательный параметр. Значение по умолчанию: "<external>"
(относительный путь к рабочей папке от размещения файла appsettings.json
).
"Logging": { "File": { "RootPath": "/home/<username>/triggers", "BasePath": "Logs", "LogLevel": { "Default": "Information" } } },
Данный раздел настраивается в соответствии с правилами ведения журнала в .NET Core.
RootPath – абсолютный путь по которому будет размещаться папка с логами. По умолчанию - полный путь до рабочей папки с компонентом приложения
BasePath – относительный от RootPath путь к папке, в которой будут создаваться файлы с логами. По умолчанию - "Logs"
. Конечный путь до папки с файлами логов будет сформирован объединением путей: [RootPath]/[BasePath]
LogLevel – набор фильтров сообщений поступающих в лог. Формируется по правилам стандартного логирования в Asp.Net Core. По умолчанию - "Default": "Information"
. Для полного отключения логов работы компонента, необходимо внутри данной секции указать параметр "Default": "None"
.
"RuntimeUser": { // "Token": "your_token", // или "Login": "your_login", "Password": "your_password" }, "Host": "https://your_instance_domain.ru/", "ApiRequestTimeout": 300, //секунд "ObjectsSyncTimeout": 60, //минут
RuntimeUser – логин и пароль (или токен с версии системы ADVANTA 3.27) пользователя, от чьего имени будут вестись запросы в API системы ADVANTA при исполнении триггеров (указываются либо параметры Login
и Password
, либо параметр Token
). Под этим пользователем через API также осуществляется запрос на извлечение данных о типах объектов.
Host – URL-адрес сервера для осуществления запросов в API системы ADVANTA.
ApiRequestTimeout – период ожидания ответа от SOAP API системы ADVANTA. Задаётся в секундах. Параметр необязательный. Если параметр не задан или его значение равно 0, то будет использовано значение по умолчанию равное 3600 (т.е. 3600 секунд, что равно одному часу).
ObjectsSyncTimeout – период синхронизации типов объектов с системой ADVANTA. Задаётся в минутах. Параметр необязательный. Значение по умолчанию 15 (т.е. 1 раз в 15 минут)
"Alerts": { "Emails": "admin_email@my_email_hosting.ru; admin_email2@my_email_hosting.ru", "SmtpServer": { "Address": "smtp.my_email_hosting.ru", "Login": "mylogin@my_email_hosting.ru", "Password": "12345", "Port": "587", "UseSSL": "true" } },
Emails – список почтовых адресов, на которые необходимо рассылать уведомления о перезапуске или сбое в работе триггеров. Список необходимо указать через любой из разделителей: запятая, точка с запятой, пробел.
SmtpServer - содержит настройки smtp сервера для отправки email уведомлений:
В данном разделе указываются параметры подключения к Базе данных системы ADVANTA к шине обмена сообщениями Rebus.
Вид транспорта и строка подключения к БД ConnectionString
должны быть идентичны параметрам, используемым в настройках системы ADVANTA.
"Rebus": { //Варианты транспорта: "MSSQL", "PostgreSql" "Transport": "PostgreSql", // пример строки подключения для транспорта "MSSQL" //"ConnectionString": "Data Source = SqlServerName;Database=AdvantaRebus;Trusted_Connection=True;MultipleActiveResultSets=true", // пример строки подключения для транспорта "PostgreSql" "ConnectionString": "User ID=username;Password=userpwd;Host=localhost;Port=5432;Database=AdvantaRebus;", "InputQueueName": "bus_triggers_queue", // "Bus_TriggersInputQueue" - для транспорта "MSSQL" "SubscriptionsTableName": "bus_triggers_input_queue_subscriptions", // "Bus_TriggersInputQueue_Subscriptions" - для транспорта "MSSQL" "PostgreSqlMessagesTableName": "bus_triggers_messages" //используется только для транспорта "PostgreSql" }
Transport – тип транспорта для Rebus-шины сообщений. Возможные варианты: "MSSQL"
и "PostgreSql"
. Если параметр не указан или пустой, то по умолчанию используется значение "MSSQL"
.
Возможен также вариант "Emulator"
, который используется для запуска приложения без привязки к Rebus.
ConnectionString – строка подключения к базе данных ADVANTA, через которую публикуются сообщения шины Rebus.
InputQueueName – название очереди сообщений (канала), через которую будут поступать сообщения для данного instans-а. Для транспорта "MSSQL"
по умолчанию будет "Bus_TriggersInputQueue"
, для "PostgreSql"
по умолчанию будет "bus_triggers_queue"
.
SubscriptionsTableName – название таблицы БД, в которую будет размещена информация о подписках. Для "MSSQL"
по умолчанию будет "Bus_TriggersInputQueue_Subscriptions"
, для "PostgreSql"
по умолчанию будет "bus_triggers_input_queue_subscriptions"
(должно совпадать с настройками публикующего сервиса).
PostgreSqlMessagesTableName – название таблицы БД, через которую будет вестись обмен сообщениями в случае "PostgreSql"
транспорта. По умолчанию будет использоваться "bus_triggers_messages"
(должно совпадать с настройками публикующего сервиса).
Для "MSSQL"
этот параметр игнорируется, так как для "MSSQL"
Rebus автоматически использует (и при необходимости создаёт) таблицу с именем, совпадающим с названием входящей очереди сообщений (InputQueueName).
В этом разделе указываются настройки подключения к собственной служебной Базе данных модуля Триггеров, отдельной от БД системы ADVANTA.
"Database": { //Варианты провайдеров: "MSSQL", "PostgreSql" "Provider": "PostgreSql", // пример строки подключения для провайдера "MSSQL" //"ConnectionString": "Data Source = SqlServerName;Database=AdvantaTriggers;Trusted_Connection=True;MultipleActiveResultSets=true", // пример строки подключения для провайдера "PostgreSql" "ConnectionString": "User ID=username;Password=userpassword;Host=localhost;Port=5432;Database=AdvataTriggers;", "MigrateOnStartup": "true" },
Provider – определяет тип СУБД, используемой для модуля триггеры. Возможные варианты:
"MSSQL"
и "PostgreSql"
. Если параметр не указан или пустой, то по умолчанию используется значение "MSSQL"
.
Возможен так же вариант "Memory"
. В этом варианте СУБД использоваться не будет, а все данные модуля будут храниться в памяти до завершения работы приложения. Данный режим удобно использовать в процессе разработки и тестирования.
ConnectionString – строка подключения к базе данных, в которой размещается информация о настроенных триггерах и их работе.
MigrateOnStartup – признак автоматической миграции структуры базы данных при запуске приложения. Принимаемые значения "true"
или "false"
. Параметр необязательный. Значение по умолчанию "false"
.
Флаг "true"
может потребоваться, только если есть возможность обновления и развёртывания схемы данных через миграции (например, во время разработки или создания локальной базы).
Если значение флага установлено в “true”, пользователю базы данных потребуются права на создание, изменение, удаление таблиц и индексов.
"Module": { "InstanceName": "My Triggers Module" },
InstanceName – наименование запускаемого инстанса модуля Триггеры. Данное наименование добавляется к логам и в тему email-уведомлений.
Консольное приложение, которое обрабатывает события системы ADVANTA, поступающие в Модуль триггеров через шину данных Rebus
Engine
общего дистрибутива при публикации всех компонентов Модуля триггеров. Engine
может быть целиком перенесено в любую другую папку сервера (например, в папку /home/<username>/triggers_engine
- в имени каталогов рекомендуется использовать буквы только в нижнем регистре).dotnet Advanta.Triggers.Engine.dll
appsettings.json
, который расположен в корне рабочей папки данного компонента. Так как приложение можно запустить в различных конфигурациях, то в проекте есть несколько файлов типа: appsettings.ConfigurationName.json
. appsettings.json
для запуска компонента Движок в режиме "Production"
.appsettings.json
, которые используются для запуска компонента Сайт. Logging
. При отсутствии в настройках данного раздела журналы событий компонента создаются по умолчанию в подкаталоге logs
рабочей папки компонента."Database"
, "Advanta"
, "Rebus"
конфигурационных файлов appsettings.json
Движка и Сайта, они не смогут «найти» друг друга в процессе инициализации канала коммуникации по UDP-протоколу."Integration"
, отвечающий за его подключение к очереди сообщений RabbitMQ. "Integration": { "RabbitMQ": { "Endpoints": [ { "EndpointName": "publisher", // Название точки подключения "EndpointMode": "Publish", // Варианты: Publish, Consume "ConnectionString": null, // Необходимо указать либо ConnectionString, либо Connection "Connection": { // Если указаны оба параметра, то будет использован ConnectionString "Host": "localhost", "Port": 5672, "VirtualHost": null }, "Channel": { "Exchange": "test", "Queue": "test" }, "RoutingKey": null, "ReconnectTimeoutInMinutes": 1 }, { "EndpointName": "consumer", // Название точки подключения "EndpointMode": "Consume", // Варианты: Publish, Consume "ConnectionString": null, // Необходимо указать либо ConnectionString, либо Connection "Connection": { //Если указаны оба параметра, то будет использован ConnectionString "Host": "localhost", "Port": 5672, "VirtualHost": null }, "Channel": { "Exchange": "test", "Queue": "test" }, "RoutingKey": null, "ReconnectTimeoutInMinutes": 1 } ] } }
RabbitMQ - подраздел описывает параметры точек подключения Движка модуля триггеров к очередям брокера сообщений Endpoints - массив точек подключения с параметрами публикации и получения сообщений. Информацию для заполнения конфигурации необходимо получить от администратора RabbitMQ
Приложение для автоматического перезапуска Движка (Engine) модуля триггеров при обновлении связанной с ним системы ADVANTA
Agent
общего дистрибутива при публикации всех компонентов Модуля триггеров. Содержимое папки Agent
может быть целиком перенесено в любую другую папку сервера (например, в папку /home/<username>/triggers_agent
).dotnet Advanta.Triggers.Agent.dll
Ctrl+C
.dotnet Advanta.Triggers.Agent.dll -console
"ModulesPaths"
файла настроек appsettings.json
, которая расположена в корне рабочей папки компонента Агент.Настройки приложения осуществляются в файле appsettings.json. Так как приложение можно запустить в различных конфигурациях, то в проекте несколько файлов типа: appsettings.ConfigurationName.json. При получении архива для распространения с исполняемыми файлами используется файл с настройками appsettings.json.
Данный раздел настраивается в соответствии с правилами ведения журнала в .NET Core.
RootPath – абсолютный путь по которому будет размещаться папка с логами. По умолча-нию полный путь до папки с приложением.
BasePath – относительный путь до папки, в которой будут создаваться файлы с логами. По умолчанию Logs. Конечный путь до папки с файлами логов будет сформирован объедине-нием путей: [RootPath]\[BasePath]
LogLevel – набор фильтров сообщений поступающих в лог. Формируется по правилам стан-дартного логирования в Asp.Net Core. Для полного отключения логов, необходимо внутри данной секции указать параметр “Default”: “None”.
ModulesPaths – массив относительных или абсолютных путей, по которым размещаются ра-бочие папки управляемых Engine модулей.
Данный раздел файл appsettings.json мониторится агентом динамически, поэтому пути до управляемых Engine могут быть прописаны как до старта, так и после старта агента.
При добавлении очередного пути, агент пытается определить есть ли Engine по этому пути. Если есть, то определяет стартовал ли Engine, если нет, то стартует его.
При удалении пути агент посылает соответствующему Engine модулю команду shutdown.
Для получения информации по текущему состоянию агента, необходимо в папку агента положить файл “status” без расширения. Содержимое файла не читается. После того как агент обнаружит файл, он сформирует информацию о текущем состоянии движков и создаст или обновит файл output.txt. Информация о статусе так же будет записана в лог. Файл “status” будет автоматически удалён.
“ Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted.”