...

Создание автоматизации на базе процессов

Тема в разделе "Вопросы по функционалу", создана пользователем mrogov, 2 фев 2018.

  1. mrogov

    mrogov New Member

    Решил попробовать сделать задачку "Экспорт данных" с помощь процесса.
    Задачка звучит так: выгружать ежедневный отчет о продажах во внешнюю систему.

    По моему мнению процесс простой (пока без обработки ошибок) и должен выглядеть так:

    upload_2018-2-2_11-10-21.png

    Таймер запускается ежедневно (в 1:00) и запускает скрипт экспорта за прошлые сутки.

    Сам скрипт делает выборку данных, упаковывает их в протокол и отправляет во внешнюю систему.

    Вопросы с которыми я столкнулся:

    1. Имеет место такой подход автоматизации к этой задаче?

    2. В какой зоне ответственности должен выполняться процесс и как его правильно настроить?

    3. От имени какого пользователя должен выполняться такой процесс?

    4. Как передать в скрипт "плановую" дату запуска процесса. Существует вероятность, что процесс реально не запуститься в плановую дату, а будет запущен позже (например сервер был выключен), поэтому использование DateTime.Now() в скрипте будет неверным. Нужно использовать дату в которую скрипт "планировал" запуститься.
     
  2. pushkarev

    pushkarev Active Member

    Прокомментирую ваши вопросы:
    1. Данный вполне приемлемый и часто используется для подобных задач. Но так же может применяться и обратный подход, когда внешняя система получается необходимые ей данный из ELMA, такой подход может быть более удобен, если у вас например используется отдельная аналитическая система, собирающая данные из разных источников, в таких системах как правило есть мощные инструменты импорта данных, и использовать их будет проще и быстрее. К данным ELMA можно будет обратиться либо через WebAPI, либо напрямую а БД. Какой способ лучше зависит от вашей конкретной ситуации.
    2. Процесс с таймером должен выполняться в статической зоне ответственности, с указанием статической должности.
    3. Как правило для служебных задач создают отдельного служебного пользователя, в оргструктуре заводится специальная должность "служебный пользователь" (подчиняющаяся например руководителю IT подразделения) и служебному пользователю дается эта должность. В веб интерфейсе настраиваются необходимые для права, лишние забираются). В результате автоматические процессы будут выполняться от имени данного пользователя.
    4. Если я не ошибаюсь, то в случае если сервер был выключен, в момент наступления времени старта процесса по таймеру, то процесс позже не запускается, а запустится уже в следующую плановую дату. В качестве даты запуска я бы рекомендовал использовать дату запуска процесса: context.WorkflowInstance.StartDate.
     
  3. mrogov

    mrogov New Member

    Алексей, большое спасибо

    Такой подход к архитектуре экспорта данных был выбран мной, чтобы снизить связанность систем (ELMA и внешней системы).

    Экспорт проходит через сервер очереди RabbitMQ. ELMA ежедневно отправляет в очередь сообщения с данными, а внешняя система их загружает. Таким образом мне как менеджеру удалось разделить задачи по профилям разработчиков (один разработчик выгружает данные, другой разработчик загружает) и две системы получили низкую связанность в архитектуре
     

Поделиться: