From e67b078ca48751b4c7112c950c04b89dcb9761da Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 10 Jan 2019 17:22:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D1=81=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=81=D0=B1=D1=80=D0=BE=D1=81=20=D0=B0=D1=82?= =?UTF-8?q?=D1=83=D0=B5=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20(?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=BD=D0=B0=D1=8F=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/PKG_EXS.pck | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/db/PKG_EXS.pck b/db/PKG_EXS.pck index 8b40862..cf84d13 100644 --- a/db/PKG_EXS.pck +++ b/db/PKG_EXS.pck @@ -124,6 +124,10 @@ create or replace package PKG_EXS as NIS_ORIGINAL_NO constant number(1) := 0; -- Оригинал NIS_ORIGINAL_YES constant number(1) := 1; -- Не оригинал + /* Константы - признак принудительного исполнения действия */ + NFORCE_NO constant number(1) := 0; -- Не выполнять принудительно (нормальный уровень проверок исполения) + NFORCE_YES constant number(1) := 1; -- Выполнить принудительно (пониженный уровень проверок исполнения) + /* Константы - ожидаемый интерфейс процедуры обработки сообщения очереди на стороне БД */ SPRC_RESP_ARGS constant varchar2(80) := 'NIDENT,IN,NUMBER;NEXSQUEUE,IN,NUMBER;'; -- Список параметров процедуры обработки @@ -350,7 +354,8 @@ create or replace package PKG_EXS as /* Помещение задания на аутентификацию (начало сеанса) сервиса в очередь обмена */ procedure SERVICE_AUTH_PUT_INQUEUE ( - NEXSSERVICE in number -- Рег. номер сервиса обмена + NEXSSERVICE in number, -- Рег. номер сервиса обмена + NFORCE in number := NFORCE_NO -- Флаг принудительной отмены аутентификации, без проверки текущей аутентификации (см. константы NFORCE_*, null - без принудительной отмены аутентификации) ); /* Помещение задания на отмену аутентификации (завершение сеанса) сервиса в очередь обмена */ @@ -1493,7 +1498,8 @@ create or replace package body PKG_EXS as /* Помещение задания на аутентификацию (начало сеанса) сервиса в очередь обмена */ procedure SERVICE_AUTH_PUT_INQUEUE ( - NEXSSERVICE in number -- Рег. номер сервиса обмена + NEXSSERVICE in number, -- Рег. номер сервиса обмена + NFORCE in number := NFORCE_NO -- Флаг принудительной отмены аутентификации, без проверки текущей аутентификации (см. константы NFORCE_*, null - без принудительной отмены аутентификации) ) is pragma autonomous_transaction; @@ -1503,10 +1509,17 @@ create or replace package body PKG_EXS as begin /* Считаем запись сервиса */ REXSSERVICE := GET_EXSSERVICE_ID(NFLAG_SMART => 0, NRN => NEXSSERVICE); + /* Проверим, что корректно указан флаг принудительного помещения задания в очередь */ + if (NVL(NFORCE, NFORCE_NO) not in (NFORCE_NO, NFORCE_YES)) then + P_EXCEPTION(0, + 'Значение "%s", признака принудительной отмены аутентификации, не поддерживается', + TO_CHAR(NFORCE)); + end if; /* Работаем только для сервисов отправки сообщений */ if (REXSSERVICE.SRV_TYPE = NSRV_TYPE_SEND) then /* Проверим, что сервис ещё не аутентифицирован */ - if (SERVICE_IS_AUTH(NEXSSERVICE => REXSSERVICE.RN) = PKG_EXS.NIS_AUTH_NO) then + if ((NVL(NFORCE, NFORCE_NO) = NFORCE_YES) or + ((NVL(NFORCE, NFORCE_NO) = NFORCE_NO) and (SERVICE_IS_AUTH(NEXSSERVICE => REXSSERVICE.RN) = PKG_EXS.NIS_AUTH_NO))) then /* Ищем функцию осуществляющую аутентификацию */ SERVICE_AUTH_FN_FIND(NFLAG_SMART => 0, NEXSSERVICE => REXSSERVICE.RN, REXSSERVICEFN => REXSSERVICEFN_AUTH); /* Проверяем, что в очереди ещё пока нет запросов на аутентификацию */