Для интеграции с внешними сервисами можно использовать бизнес-хуки – сообщения, добавляемые в очередь Oracle при определенных событиях, которые потом можно задействовать в сторонних приложениях.
Очередь работает в многопотребительском режиме: сообщение доступно нескольким подписчикам. Сообщение остается в очереди, пока его не прочитают все подписчики, подтвердив получение.
Рекомендуется забирать сообщения во внешний сервис не напрямую из очереди Oracle, а с использованием брокеров сообщений, таких как ActiveMQ. Такой подход позволит:
Для базовой настройки передачи сообщений необходимо в конфигурационный файл брокера добавить правило маршрутизации:
<route> <from uri="oracleTopic:topic:AIS_NET.HYDRA_MESSAGES?clientId=ActiveMQ&durableSubscriptionName=HP"/> <to uri="activemq:queue:hydra_messages"/> </route> |
До
Если ActiveMQ работает не под AIS_NET, может потребоваться выдать права на очередь
После этого ActiveMQ будет забирать сообщения из Oracle и помещать в очередь hydra_messages. |
После
ActiveMQ следует подключаться к HYDRA_MESSAGES под пользователем AIS_3P_SERVICES, а не AIS_PROVISIONING, как было раньше. Для этого пользователь бд AIS_3P_SERVICES должен быть активен и привязан к приложению, а также требуется наличие права "Синхронизация со сторонними сервисами" хотя бы у одного абонента. Обратите внимание, что права на очереди выдаются и забираются пользователем AIS_NET, поэтому при выдаче права "Синхронизация со сторонними сервисами" с интерфейса ООС может потребоваться включенное задание "Отложенное исполнение задач", которое при наличии недостающих прав пользователей БД выполнит синхронизацию прав согласно указанным во внутренних настройках гидры (подобно выдачи прав на представления, таблицы и пакеты). |
Другие примеры настройки маршрутизации сообщений доступны в статье Примеры особых конфигураций ActiveMQ |
В версиях 6.0.0.172 и 6.2.0.69 была добавлена возможность отключить отправку бизнес-хуков. Соответствующий чекбокс появился в системных параметрах в ООС.
Бизнес-хуки передаются в формате XML и состоят из элементов:
payload - подробности события, состав зависит от типа сообщения:
Код типа сообщения | Событие | Состав сообщения | |
---|---|---|---|
Элемент | Описание | ||
MESSAGE_TYPE_Payment | Актуализация платёжного поручения или проведение платежа | document_id | Идентификатор платежного поручения |
account_id | Идентификатор лицевого счета, на который зачислен платеж | ||
MESSAGE_TYPE_Charge | Информация о начислении | charge_log_id | Идентификатор акта начислений |
charge_log_line_id | Идентификатор строки акта начислений | ||
change_balance_type_id | Идентификатор значения из базового справочника "Тип изменения баланса" (REF_TYPE_ChangeBalanceType) | ||
MESSAGE_TYPE_CreditLimit | Изменение суммы кредитного лимита | document_id | Документ-основание |
account_id | Идентификатор лицевого счета | ||
MESSAGE_TYPE_Correction | Проведение корректировок | account_id | Идентификатор лицевого счета |
charge_log_id | Идентификатор акта начислений по корректировке | ||
MESSAGE_TYPE_StopSrvProv | Прекращение оказания услуг | charge_log_id | Идентификатор акта начислений |
MESSAGE_TYPE_ArchiveDoc | Архивирование документа | charge_log_id | Идентификатор акта начислений |
MESSAGE_TYPE_AutoTopUp | Подписка на автоплатеж | account_id | Идентификатор лицевого счета |
auto_top_up_id | Идентификатор подписки | ||
auto_top_up_state_id | Состояние автоплатежа | ||
MESSAGE_TYPE_SubjValue | Изменение значения дополнительного параметра субъекта | subject_id | Идентификатор субъекта |
subject_type_id | Тип субъекта | ||
additional_value_type_id | Тип доп. параметра | ||
additional_value_id | Идентификатор доп. параметра | ||
additional_value | Значение доп. параметра | ||
MESSAGE_TYPE_AutoTopUpPayment | Результат проведения автоплатежа. Добавлено в 6.2.0.28 | account_id | Идентификатор лицевого счета |
request_state_id | Статус проведения автоплатежа | ||
refuse_reason_Id | Причина неуспешного проведения автоплатежа. Необязательное поле. | ||
MESSAGE_TYPE_ChangeDocState | Изменение состояния документа (6.2.0.39) | document_id | Идентификатор документа |
document_type_id | Тип документа | ||
new_state_id | Новое состояние документа | ||
old_state_id | Старое состояние документа |
<message> <message_type_id>1208</message_type_id> <message_type_code>MESSAGE_TYPE_Payment</message_type_code> <version/> <created_at>2022-01-28T12:12:00</created_at> <payload> <payment> <document_id>12811629901</document_id> <account_id>178500901</account_id> </payment> </payload> </message> |
<message> <message_type_id>2208</message_type_id> <message_type_code>MESSAGE_TYPE_Charge</message_type_code> <version/> <created_at>2022-07-14T00:08:43</created_at> <payload> <charge> <charge_log_id>289145601</charge_log_id> <charge_log_line_id>409855401</charge_log_line_id> <change_balance_type_id>3210</change_balance_type_id> </charge> </payload> </message> |
<message> <message_type_id>3208</message_type_id> <message_type_code>MESSAGE_TYPE_CreditLimit</message_type_code> <version/> <created_at>2022-07-14T00:25:48</created_at> <payload> <credit_limit> <document_id>411763901</document_id> <account_id>133193991</account_id> </credit_limit> </payload> </message> |
<message> <message_type_id>4208</message_type_id> <message_type_code>MESSAGE_TYPE_Correction</message_type_code> <version/> <created_at>2022-07-13T00:14:30</created_at> <payload> <correction> <charge_log_id>321755501</charge_log_id> <account_id>21121191</account_id> </correction> </payload> </message> |
<message> <message_type_id>5208</message_type_id> <message_type_code>MESSAGE_TYPE_StopSrvProv</message_type_code> <version/> <created_at>2022-06-22T12:05:25</created_at> <payload> <stop_service_provisioning> <charge_log_id>199968101</charge_log_id> </stop_service_provisioning> </payload> </message> |
<message> <message_type_id>6208</message_type_id> <message_type_code>MESSAGE_TYPE_ArchiveDoc</message_type_code> <version/> <created_at>2022-05-22T11:05:25</created_at> <payload> <archive_document> <charge_log_id>188983101</charge_log_id> </archive_document> </payload> </message> |
<message> <message_type_id>7208</message_type_id> <message_type_code>MESSAGE_TYPE_AutoTopUp</message_type_code> <version/> <created_at>2022-04-22T13:23:21</created_at> <payload> <auto_top_up> <account_id>188983101</account_id> <auto_top_up_id>7581101</auto_top_up_id> <auto_top_up_state_id>2195</auto_top_up_state_id> </auto_top_up> </payload> </message> |
<message> <message_type_id>8208</message_type_id> <message_type_code>MESSAGE_TYPE_SubjValue</message_type_code> <version/> <created_at>2022-07-11T08:11:36</created_at> <payload> <subject_value> <subject_id>397259401</subject_id> <subject_type_id>18001</subject_type_id> <additional_value_type_id>18101</additional_value_type_id> <additional_value_id>397259501</additional_value_id> <additional_value/> </subject_value> </payload> </message> |
<message> <message_type_id>13208</message_type_id> <message_type_code>MESSAGE_TYPE_AutoTopUpPayment</message_type_code> <version/> <created_at>2022-04-22T13:23:21</created_at> <payload> <atu_payment> <account_id>188983101</account_id> <request_state_id>3197</request_state_id> <refuse_reason_id>51198</refuse_reason_id> </atu_payment> </payload> </message> |
<message> <message_type_id>14208</message_type_id> <message_type_code>MESSAGE_TYPE_ChangeDocState</message_type_code> <version/> <created_at>2024-04-26T15:19:31</created_at> <payload> <change_doc_state> <document_id>188983101</document_id> <document_type_id>7002</document_type_id> <new_state_id>4003</new_state_id> <old_state_id>3003</old_state_id> </change_doc_state> </payload> </message> |