Моя проблема заключается в том, что у меня есть приложение, которое дает пользователю возможность определять рабочий процесс (состояния, переходы, события и т. Д.), И мое приложение знает, как он реагирует (переходы) на основе на рабочем процессе пользователей.Нужно прояснить использование машины в режиме Ruby
Я посмотрел на нескольких государственных машин драгоценных камней, таких как AASM, и я вижу, как я мог бы использовать камень, чтобы заранее определить состояние машины но если состояние машины нужно изменить, это выглядит, как я бы для изменения кода и повторного развертывания. Я спорил с моим коллегой о том, как мы могли/не могли использовать драгоценный камень в государственном компьютере, чтобы делать то, что хотим, но для меня все они, как представляется, определяют статический конечный автомат, а изменения этого состояния требуют изменения кода.
Его предложение динамически изменяет класс Ruby для соответствия изменениям рабочего процесса пользователей. Моя мысль состоит в том, что состояния, переходы, события, охранники и т. Д. Являются постоянными объектами, которые пользователь модифицирует через наш API. Ни одна из наших нынешних мыслей, похоже, не работает с current Ruby state machines без каких-либо существенных изменений поверх этих драгоценных камней.
Место, в котором я рассматриваю как примерное решение, - это JIRA и то, как вы можете динамически определять состояния, переходы и другие атрибуты рабочего процесса для проекта.
Я кратко посмотрел на драгоценный камень AASM, и похоже, что правила состояния машины хранятся в классах. Разве вы не могли бы просто создавать новый класс каждый раз, когда изменяются правила конечного автомата? – Adrian
Динамично, то есть. (Извините за дополнительный комментарий, этот сайт не позволит мне редактировать комментарии по какой-то причине) – Adrian
Это, кажется, один из аргументов. Мы создаем конфигурационный файл или объект, который определяет конечный автомат и который преобразуется в динамический класс Ruby, который может быть интерпретирован AASM (или любым другим конечным автоматом). Другая половина аргумента состоит в том, чтобы моделировать классы состояний машины, чтобы они могли сохраняться и использовать эти объекты для управления конечным автоматом. Мы не знаем, как лучше всего это сделать, но все государственные машины, похоже, хотят, чтобы конечный автомат статически определялся и сохранял только текущее состояние объекта. – Jon