Purge nas Notificações de e-mail no Workflow Queue do E-Business Suite R12
Olá pessoal !
Hoje eu vou mostrar como dar um purge nas notificações de e-mail no Workflow queue do E-Business Suite R12.
Primeiramente, vamos parar o componente Workflow Notification Mailer. Você pode fazer isso através do caminho abaixo:
Clicar em Notification Mailer, e depois parar o componente.
Ou simplesmente rodar o script abaixo:
-- Start/Stop Component
DECLARE
p_retcode NUMBER;
p_errbuf VARCHAR2(100);
v_ID FND_SVC_COMPONENTS.component_id%TYPE;
v_CS FND_SVC_COMPONENTS.component_status%TYPE;
v_CN FND_SVC_COMPONENTS.component_name%TYPE := 'Workflow Notification Mailer';
BEGIN
SELECT a.component_id,a.component_status
INTO v_ID
,v_CS
FROM fnd_svc_components a
WHERE a.component_name = v_CN;
-- Stop Component
IF v_CS IN ('STOPPED','DEACTIVATED_USER')
THEN
DBMS_OUTPUT.put_line('Starting ' || v_CN || '...');
FND_SVC_COMPONENT.start_component
(
v_ID
,p_retcode
,p_errbuf
);
ELSIF v_CS IN ('RUNNING')
THEN
DBMS_OUTPUT.put_line('Stopping ' || v_CN || '...');
FND_SVC_COMPONENT.stop_component
(
v_ID
,p_retcode
,p_errbuf
);
ELSE
DBMS_OUTPUT.put_line('No Action to ' || v_CN || '...');
END IF;
COMMIT;
END;
Esse script server para parar e para iniciar o componente. Vamos executar o bloco PL/SQL e pará-lo.
Stopping Workflow Notification Mailer...
Vamos verificar se o componente já está parado, para isso, rode a consulta SQL abaixo:
-- Verify Component Status
SELECT b.component_name
,b.startup_mode
,b.component_status
FROM APPS.fnd_concurrent_queues_vl a
,fnd_svc_components b
WHERE b.concurrent_queue_id = a.concurrent_queue_id(+)
ORDER BY b.component_status
,b.startup_mode
,b.component_name;
Observe que o serviço foi desativado. Agora vamos descobrir quais e-mails estão na fila de notificação:
Observe que existem 2 e-mails no queue. Se não houver erros ao reiniciar, o componente irá enviá-los assim que for ativado novamente. Para evitar isso, vamos mudar o MAIL_STATUS para SENT.
-- Update Mail Status
UPDATE wf_notifications
SET mail_status = 'SENT'
WHERE mail_status = 'MAIL'
AND notification_ID IN(2148588,2148590);
2 rows updated.
Vamos verificar novamente o status:
SELECT notification_id,status,mail_status,begin_date
FROM wf_notifications
WHERE status = 'OPEN'
AND notification_id IN (2148588,2148590);
Pronto ! Assim que o componente for iniciado, esses e-mails que estavam no queue não serão mais enviados.
Vamos reiniciar o componente. Para isso, execute o mesmo script que utilizamos para pará-lo.
Starting Workflow Notification Mailer...
Vamos verificar o status do componente e ver se já foi iniciado…
Chegamos ao fim do nosso procedimento !