Каковы преимущества отделения «результата» от «статуса»

11

Допустим, у вас есть некоторые автоматизированные процессы, которые обычно проходят через следующие состояния; запланировано - инициировано - проверено - выполняется - выполнено

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

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

отметка
источник

Ответы:

12

Состояние, которое вы назначаете своим процессам, должно отражать то, что ваша программа (или пользователи, если вы просто визуализируете состояния) будут делать с этой информацией. Итак, у вас есть требование оценивать / показывать состояние ваших процессов, пока они работают и не показывают ошибок? Затем отделите результат от статуса . Если вам просто нужен статус после завершения процесса, не разделяйте его.

Вы не должны моделировать что-либо только ради моделирования. Лучше проверьте ваши требования. И если вы не уверены, что вам может понадобиться позже, выберите самое маленькое и простое решение для требований, которые вы точно знаете. Если вы просто «угадываете», то в 90% случаев вы будете угадывать неправильно, поэтому вам все равно придется изменить свою модель позже.

Док Браун
источник
1

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

Существует большое преимущество в детализации прогресса и определении точек отказа (в разумных пределах), как в вашем случае. Я думаю, что путаница проистекает из терминов «статус» и «состояние» - мы должны квалифицировать эти термины. Например, «Состояние задачи», даже если оно не очень точное, поэтому мы можем захотеть использовать «Состояние выполнения задачи», однако это неправильно, поскольку у вас уже есть шаг выполнения. Мы можем использовать имя «Статус обработки задачи», и значения: «инициировано - проверено - выполняется - выполнено» имеют смысл. Действительно, мы могли бы добавить «Отменено» в список. Тем не менее, «Ошибка» не отвечает на такой вопрос, как: Каков статус обработки задачи очень хорошо. Похоже, «Ошибка» является под-статусом Завершено . Так что же нам делать? Мы могли бы переименовать Завершено, чтобы бытьЗавершено ОК, а затем мы можем добавить Завершено с ошибкой в список. Итак, окончательный список значений статуса обработки задач :

  • Начатый,

  • Подтверждено,

  • Выполнение,

  • Отменено,

  • Завершено ОК,

  • Завершено с ошибкой

Изменить: теперь приведенный выше список все еще требует некоторой работы. Первые 4 элемента не содержат слова «ОК». Так что, если это будет лучше, чтобы соответствовать состоянию "Завершено ОК". Другое дело, что первые 4 элемента не имеют «с ошибкой» - что это значит? Что происходит, когда «Выполнение» ненормально заканчивается - Требует ли это нового состояния «Выполнено с ошибкой»? На этом этапе может потребоваться дополнительная информация и анализ.

Без шансов
источник