Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для интеграции с внешними сервисами можно использовать бизнес-хуки – сообщения, добавляемые в очередь Oracle при определенных событиях, которые потом можно задействовать в сторонних приложениях.

Очередь работает в многопотребительском режиме: сообщение доступно нескольким подписчикам. Сообщение остается в очереди, пока его не прочитают все подписчики, подтвердив получение.

Рекомендуется забирать сообщения во внешний сервис не напрямую из очереди Oracle, а с использованием брокеров сообщений, таких как ActiveMQ. Такой подход позволит:

...

Code Block
        <route>
            <from uri="oracleTopic:topic:AIS_NET.HYDRA_MESSAGES?clientId=ActiveMQ&amp;durableSubscriptionName=HP"/>
            <to uri="activemq:queue:hydra_messages"/>
        </route>

До 

Jira
serverJIRA
serverId7e385121-fe81-3ba6-a338-f18d15a6b63a
keyAIS-8849

Note
titleДо версий ядра 6.0.0.178 / 6.2.0.79

Если ActiveMQ работает не под AIS_NET, может потребоваться выдать права на очередь

Code Block
BEGIN
  DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE(
    GRANTEE => 'AIS_PROVISIONING',
    PRIVILEGE => 'MANAGE_ANY'
  );

  DBMS_AQADM.grant_queue_privilege (
   privilege     =>     'DEQUEUE',
   queue_name    =>     'AIS_NET.HYDRA_MESSAGES',
   grantee       =>     'AIS_PROVISIONING',
   grant_option  =>      TRUE);
END;
/
GRANT EXECUTE ON DBMS_AQIN TO AIS_PROVISIONING;
/

После этого ActiveMQ будет забирать сообщения из Oracle и помещать в очередь hydra_messages.

После 

Jira
serverJIRA
serverId7e385121-fe81-3ba6-a338-f18d15a6b63a
keyAIS-8849

Tip
titleПосле версий ядра 6.0.0.178 / 6.2.0.79

ActiveMQ следует подключаться к HYDRA_MESSAGES под пользователем AIS_3P_SERVICES, а не AIS_PROVISIONING, как было раньше. Для этого пользователь бд AIS_3P_SERVICES должен быть активен и привязан к приложению, а также требуется наличие права "Синхронизация со сторонними сервисами" хотя бы у одного абонента.

Обратите внимание, что права на очереди выдаются и забираются пользователем AIS_NET, поэтому при выдаче права "Синхронизация со сторонними сервисами" с интерфейса ООС может потребоваться включенное задание "Отложенное исполнение задач", которое при наличии недостающих прав пользователей БД выполнит синхронизацию прав согласно указанным во внутренних настройках гидры (подобно выдачи прав на представления, таблицы и пакеты).


Info

Другие примеры настройки маршрутизации сообщений доступны в статье Примеры особых конфигураций ActiveMQ

Отключение бизнес-хуков

В версиях 6.0.0.172 и 6.2.0.69 была добавлена возможность отключить отправку бизнес-хуков. Соответствующий чекбокс появился в системных параметрах в ООС.

Структура сообщений

Бизнес-хуки передаются в формате XML и состоят из элементов:

  • message_type_id - идентификатор записи из базового справочника "Тип сообщения" (REF_TYPE_MessageType)
  • message_type_code - код записи из базового справочника "Тип сообщения" (REF_TYPE_MessageType)
  • version - (пустое значение, зарезервировано для будущих версий)
  • created_at - время отправки сообщения в таймзоне БД
  • 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.28account_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Старое состояние документа



Примеры сообщений

Code Block
languagexml
titleMESSAGE_TYPE_Payment
collapsetrue
<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>

...

Code Block
languagexml
titleMESSAGE_TYPE_SubjValue
collapsetrue
<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>


Code Block
languagexml
titleMESSAGE_TYPE_AutoTopUpPayment
collapsetrue
<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>


Code Block
languagexml
titleMESSAGE_TYPE_ChangeDocState
collapsetrue
<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>