Замените задачу «Отправить почту» на задачу «Сценарий» как вызов функции - PullRequest
0 голосов
/ 14 января 2020

У меня есть проект с 10 плюс пакетами. Каждый пакет имеет уведомление об успехе, отказе и ошибке по почте, настроенное с помощью задачи «Отправить почту» Я могу заменить это заданием сценария для отправки почтового уведомления, поскольку мне приходится многократно повторять попытку отправки почтового уведомления.

Я подготовил логи c, как показано ниже в моей задаче сценария.

int attempts = 0;
int times =3;
int delayMs =1000;
            do
            {
                try
                {
                    attempts++;

                    <Actual Code>

                    //throw new NullReferenceException("Exception Thrown Manually.");

                    Dts.TaskResult = (int)ScriptResults.Success;
                    break; // Sucess! Lets exit the loop!
                }
                catch (Exception e)
                {
                    if (attempts == times)
                    {
                        Dts.Events.FireError(-1, "Task Name", "The process tried to send mail notification " + attempts.ToString() + " times but exception caught on the final attempt as well.Hence failed to send Mail notification.Please see the error message - " + e.Message,String.Empty, 0);
                        Dts.TaskResult = (int)ScriptResults.Failure;
                        break; // Failure! Lets exit the loop!
                    }

                    Dts.Events.FireError(-1, "Task Name", "Exception caught on attempt " + attempts.ToString() + " - Will retry after delay " + delayMs.ToString() + " MilliSeconds " 
                        //+ e.Message
                        , String.Empty, 0);
                    System.Threading.Thread.Sleep(delayMs);

                }
            } while (true);

Я вручную заменяю задачу отправки почты на задачу сценария для каждого пакета. Это отнимает много времени и может привести к человеческим ошибкам. Я не уверен, смогу ли я разместить эти логи c где-нибудь и попытаться вызвать эти логи c как функцию из всех моих пакетов, например, возможность повторного использования кода.

Я пытаюсь найти какое-то решение этой проблемы ,

1 Ответ

0 голосов
/ 15 января 2020

Создайте пакет, который просто отправляет электронную почту.

Вы передаете ему информацию через параметры пакета из пакета, вызывающего пакет электронной почты. Обработайте сборку тела, субъекта и т. Д. c в пакете, который вызывает адрес электронной почты.

На данном этапе вы по существу рассматриваете пакет электронной почты как функцию.

...