Skip to main content

Продвинутая работа с очередями

В этом примере показано, как собирать сложные сценарии на базе Queue:
  • разбивать процесс на этапы и добавлять задачи динамически;
  • реагировать на выбор пользователя и результат задач;
  • обрабатывать ошибки и повторные попытки без выхода из TUI.
Все примеры используют публичный API пакета ziva. Их можно поместить в отдельный пакет examples и запускать по мере необходимости.

Шаблон многоэтапного сценария

Ключевые идеи

  • Два запуска очереди. Первая очередь собирает ввод и сохраняет задачи для повторного использования. Вторая очередь формируется динамически.
  • Summary-функция. FuncTask с WithSummaryFunction позволяет отобразить итог прямо под задачей и лучше информировать пользователя.
  • Таймауты. WithTimeout гарантирует, что сценарий не зависнет в headless-среде.

Повторные попытки с подтверждением пользователя

Когда пригодится

  • интеграция с нестабильными сервисами;
  • обновления прошивок на устройствах с малонадежной связью;
  • выполнение длительных действий, которые стоит перезапустить по согласию пользователя.

Построение задач на лету

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

Мини-чеклист для сложных сценариев

  • Сохраняйте ссылки на задачи, чьи результаты понадобятся позже.
  • Используйте отдельные очереди для разных этапов — это упрощает логику и вывод.
  • Вызывайте AutoConfigure() при старте CLI, чтобы Ziva подобрал безопасные настройки.
  • Для встроенных устройств комбинируйте EnableEmbeddedMode() и WithOutResultLine() — так вывод остаётся компактным.
  • Помните, что очередь последовательно выполняет задачи; если нужна «параллельность», запускайте отдельные очереди из FuncTask.
Следующий пример показывает, как использовать валидаторы для надёжных форм ввода.