Подтвердить что ты не робот

Управление сложными веб-формами

Я работаю над приложением, ядром которого является очень сложный набор веб-форм. Источник этой сложности

  • некоторые формы содержат около 50 страниц, на каждой странице которых задано до 30 вопросов.
  • сложные правила, например. если пользователь отвечает "нет" на вопрос 4, тогда вопросы 5-15 не применяются, поэтому их следует удалить из формы

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

У меня нет большого опыта работы с программированием на основе правил, но мне кажется, что это может обеспечить лучший способ управления правила между полями формы. Например, используя подход, основанный на правилах, мы могли бы определить правила, связанные с каждым полем формы, и механизм правил мог бы использовать их, чтобы определить, какое поле отображать следующее. Используя наш нынешний подход, мы достигаем этого с помощью огромного количества обязательного JavaScript, который практически невозможно проверить и поддерживать.

Если у кого-то есть опыт разработки таких сложных веб-форм, мне было бы интересно узнать об их опыте, например. инструменты/библиотеки, которые они могли бы порекомендовать. Наш текущий стек основан на JDK (Java, Groovy, Grails) и JavaScript (Angular, Node), поэтому инструменты/библиотеки/фреймворки, которые работают на этих платформах, будут представлять особый интерес.

4b9b3361

Ответ 1

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

Я написал инструмент времени разработки для эксперта, чтобы задать вопросы. Этот инструмент представлял вопросы как дерево и позволял группировать вопросы в блоки, чтобы упростить управление правилами show/hide для автора. Эти правила были закодированы как простые "Q10 > 123", что означает, что когда ответ на Q10 больше 123, тогда отобразите этот вопрос (или блок вопросов). Ответ, который задают вопросы, может быть вводом текста, выпадающим выбором и т.д.

Результатом времени разработки проекта было определение XML-дерева вопроса, подробные сведения (подсказка, обязательный, тип, параметры и т.д.) и правила видимости.

Во время выполнения я подал это на JavaScript-плеер, встроенный в веб-страницу. Игрок использовал определения вопросов, создал модель, создал необходимые элементы отображения и т.д., Создав HTML-код, необходимый для отображения страницы. Это включало проверку видимости на основе этих правил. Эта проверка повторялась снова, когда был дан ответ, чтобы любые зависимые вопросы могли быть скрыты/представлены на основе данного ответа.

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

Я построил свое первоначально в VBScript (IE был браузером тогда!), затем переместил его на JavaScript и совсем недавно обновил с помощью JQuery. Он использовался миллионы раз и кажется надежным и практичным.

Итак, вам нужен инструмент, который поможет вашим специалистам задавать вопросы для форм; вам нужны средства для сохранения и передачи этой информации; вам нужен способ обработки формы и определения вопроса для пользователя; вам нужен способ хранения ответов; и вам нужен способ быстро повторно отобразить результаты, не требуя повторного вычисления show/hide по всем вопросам.

Ответ 2

Если вы хотите использовать механизм правил, задайте себе эти вопросы. Если используются ответы, используйте его.

Является ли ваш алгоритм множеством вычислений или есть ли существенные возможности принятия решений?

  • Если у вас много условий, или ваши правила не очень табличные (вы можете хранить правила в БД), вы можете использовать смешанный подход, но его немного сложнее поддерживать, потому что у вас есть правила в разных разделах, но проще программировать, потому что вы программируете только определенные правила.

Насколько сложны ваши решения?

  • Если у вас есть несколько паролей условных операторов

  • Вы можете четко определить правила

Насколько волатильны ваши правила?

  • Вы еще не знаете свои правила, или ваши правила должны быть гибкими и со временем меняться.

Требуется ли вашему алгоритму пользовательское tweeking?

  • Если вам не нужно tweek для таких вещей, как производительность, используйте механизм правил