У многих компаний есть важное требование - проверять документы своих пользователей. Это может быть, когда пользователь покупает билет на самолет, регистрируется на криптовалютной бирже, в банке и т. Д. В этой статье показано, как можно легко реализовать рабочий процесс проверки документов с помощью Зенатона, без каких-либо крон, конечного автомата, системы очередей и т. Д. модификации - просто чистый и простой код.

Следующие примеры представлены на PHP, но похожи на другие языки, поддерживаемые Zenaton. Если вы чего-то не понимаете, прочтите документацию и / или оставьте нам комментарий ниже.

Сценарий использования

  • Пользователь регистрируется и открывает учетную запись. После ввода необходимой информации ему открывается страница, на которую он должен импортировать свои документы.
  • Во-первых, мы собираемся получить названия необходимых документов, которые он должен импортировать в соответствии с типом его учетной записи. В этом примере мы предположим, что он должен импортировать 2 документа, ID и подтверждение адреса.
  • По истечении 3 дней, если пользователь не импортировал документы, мы отправляем ему напоминание о том, что ему необходимо импортировать оставшиеся документы.
  • Поскольку мы не хотим быть настойчивыми, мы отправим максимум 3 напоминания с интервалом в 3 дня.
  • После этих напоминаний, если пользователь не импортирует свои документы, учетная запись не будет открыта, и мы отправим пользователю электронное письмо, сообщая ему, что ему нужно снова войти в систему и создать учетную запись.
  • Когда пользователь импортирует документ, мы проверяем, действительно ли доказательство.
  • Если документы недействительны, мы предупредим его по электронной почте с указанием причины.
  • Когда все документы будут проверены, мы сообщим пользователю, что все доказательства действительны.

Вариант использования можно резюмировать в виде блок-схемы следующим образом:

Давайте погрузимся в код

После запроса пользователя наше веб-приложение запустит DocumentValidationWorkflow с $requestId:

Шаблон класса рабочего процесса

Ожидание проверки

После получения необходимых документов для этого пользовательского запроса первое действие этого рабочего процесса - дождаться, пока пользователь импортировал необходимые документы. Для этого мы используем класс Wait, предоставленный Zenaton.

В текущей реализации мы будем ждать бесконечно, поскольку мы не добавили механизм для завершения ожидания события или уменьшения количества оставшихся документов. Вот почему мы собираемся сосредоточиться на методе onEvent.

Взаимодействовать с событиями

Когда пользователь импортирует документ через веб-интерфейс, он отправляет DocumentImportedEvent со связанными данными.

Это событие будет получено методом onEvent нашего рабочего процесса:

  • Когда пользователь импортирует документ, мы проверим, действительно ли доказательство.
  • Если документ недействителен, мы предупредим его по электронной почте с указанием причины.

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

Напоминания

Отправка напоминаний нашему пользователю очень важна для удержания, но мы также должны заботиться о наших пользователях и не должны быть слишком настойчивыми, поэтому мы решили:

  • Через 3 дня отправьте пользователю напоминание о том, что ему необходимо импортировать оставшиеся документы.
  • Мы отправим максимум 3 напоминания с интервалом в 3 дня.
  • После этих напоминаний, если пользователь не импортировал свои документы, мы закроем учетную запись, отправив ему электронное письмо.

Окончательная реализация

Мне потребовалось очень короткое время, чтобы реализовать эту логику рабочего процесса от идеи до текущей реализации. Выполнение этого без Zenaton потребовало бы намного больше времени и выполнения рутинных задач, таких как миграция базы данных, crons, очередь и т. Д.

Благодаря панели инструментов Zenaton я также могу отслеживать и отлаживать рабочий процесс в случае сбоев.

Как только клиент регистрируется и открывает учетную запись, запускается рабочий процесс.

Zenaton (https://zenaton.com) предназначен для технических команд, которые понимают, что их основная миссия - улучшить бизнес за счет быстрых итераций и новых идей, не тратя большую часть своего времени на решение чисто технических проблем. Если у вас есть дополнительные вопросы (или другие варианты использования), не стесняйтесь обращаться ко мне в louis по адресу zenaton.com или задать их ниже 👇