25.10.2012

WF: Валидация параметров

API процедур PL/SQL, ассоциированных с функциями процесса Workflow, предусматривают несколько режимов работы (параметр funcmode)
 procedure wf_custom_proc ( itemtype    in varchar2
                            , itemkey   in varchar2
                            , actid     in number
                            , funcmode  in varchar2
                            , resultout in out nocopy varchar2)  is

begin
 if funcmode = 'VALIDATE' then
   /* валидация параметров */ 
 end if; 
 if funcmode = 'RUN' then
   /* блок, выполняемый в случае
       отсутствия исключений в процессе валидации */ 
 end if; 
end;
Функция запускается машиной WF последовательно в двух режимах: сначала VALIDATE, затем RUN. Если функция привязана к сущности WF Message, то она выполняется после нажатия любой из кнопок с действием (Result Type в сущности WF). При этом, если при проверке атрибутов пользователю требуется показать какие-либо диагностические сообщения, то это должно делаться в блоке VALIDATE. Если это будет исключение, то пользователь увидит его сразу же, а секция RUN выполнена не будет.
Ниже приведен пример получения значений атрибутов в блоке VALIDATE
 if funcmode = 'VALIDATE' then
      -- Получение notification_id
      l_nid := wf_engine.context_nid;
      -- Получение значения атрибута по имени
      l_attr_val := wf_notification.GetAttrText(l_nid, 'SOME_ATTR');
      if length(l_attr_val) = 0 then
          raise_application_error(ERROR_NUMBER,
             fnd_message.get_string(APPS, 'XXXX_CUSTOM_MESSAGE'));
 end if 

Комментариев нет :