Помогите спроектировать движок деревьев диагностики
От: opposer  
Дата: 28.07.07 21:36
Оценка:
Требуется разработать движок для работы с деревьями вопросов для диагностики. Ну грубо говоря как в "Помощи" в ХР — "У вас на принтере горит лампочка? — Да, горит. Тогда есть ли бумага? Да, есть. — Понятно, у вас в принтер залез жук".

Я буду использовать Windows Workflow Foundation. Вариант: выполняется Воркфлоу дерева шаг за шагом, на каждом шаге дёргается интерфейс и предлагаеся ответить на вопрос. это определяет кондишен и воркфлов выполняется дальше в нужную ветвь. Типа это будет "бизнеслоджик-driven выполнение". Вопрос такой: какие можете дать рекомендации по проектированию такого движка, который будет работать с деревьями и обходить их, основываясь на результатах взаимодействия с интерфейсом? Как вообще концептуально проектируют такие штуки? Никогда просто не сталкивался с такой задачей, хотелось бы структуру нормальную придумать. Помогите рекомендациями пожалуйста
Re: Помогите спроектировать движок деревьев диагностики
От: cvetkov  
Дата: 29.07.07 12:02
Оценка:
Здравствуйте, opposer, Вы писали:

O>Требуется разработать движок для работы с деревьями вопросов для диагностики. Ну грубо говоря как в "Помощи" в ХР — "У вас на принтере горит лампочка? — Да, горит. Тогда есть ли бумага? Да, есть. — Понятно, у вас в принтер залез жук".


O>Я буду использовать Windows Workflow Foundation. Вариант: выполняется Воркфлоу дерева шаг за шагом, на каждом шаге дёргается интерфейс и предлагаеся ответить на вопрос. это определяет кондишен и воркфлов выполняется дальше в нужную ветвь. Типа это будет "бизнеслоджик-driven выполнение". Вопрос такой: какие можете дать рекомендации по проектированию такого движка, который будет работать с деревьями и обходить их, основываясь на результатах взаимодействия с интерфейсом? Как вообще концептуально проектируют такие штуки? Никогда просто не сталкивался с такой задачей, хотелось бы структуру нормальную придумать. Помогите рекомендациями пожалуйста


Если я вас правильно понял, то не надо так делать.
Зашивать данные в прогамму так жостко не стоит. Потом менять трудно.

Не говоря уж о том что у микрософта предусмотрен третий вареант ответа: "не знаю" что вы с ним делать будете?

Правильнее будет зделать так.
Завести список возможных неисправностей. Список возможных симптомов.
И таблицу соответствия.

Затем спросить о каком нибуть симптоме (можно их заранее отсортировать в порядке понятности пользователю) и отфильтровать не подходящие неисправности. Если пользователь скажет что не знает ответа, просто перейти к следующему симптому.

Повторять пока не останеться одна неисправность.

Дальше можно добавить логику по выбору следующего вопроса.
Re[2]: Помогите спроектировать движок деревьев диагностики
От: opposer  
Дата: 29.07.07 12:26
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>Если я вас правильно понял, то не надо так делать.

C>Зашивать данные в прогамму так жостко не стоит. Потом менять трудно.

C>Не говоря уж о том что у микрософта предусмотрен третий вареант ответа: "не знаю" что вы с ним делать будете?


C>Правильнее будет зделать так.

C>Завести список возможных неисправностей. Список возможных симптомов.
C>И таблицу соответствия.

C>Затем спросить о каком нибуть симптоме (можно их заранее отсортировать в порядке понятности пользователю) и отфильтровать не подходящие неисправности. Если пользователь скажет что не знает ответа, просто перейти к следующему симптому.


C>Повторять пока не останеться одна неисправность.


C>Дальше можно добавить логику по выбору следующего вопроса.


просто там не совсем так. Там диагностика, структура железно зашита, деревья вопросов давно составлены, третьих вариантов там быть не может. Меняться ничего не будет. Так что сейчас вопрос, из каких частей должен будет состоять такой engine и из каких activities делать custom activities.
Re: Помогите спроектировать движок деревьев диагностики
От: Miroff Россия  
Дата: 31.07.07 12:25
Оценка: +2
Здравствуйте, opposer, Вы писали:

O>Вопрос такой: какие можете дать рекомендации по проектированию такого движка, который будет работать с деревьями и обходить их, основываясь на результатах взаимодействия с интерфейсом? Как вообще концептуально проектируют такие штуки? Никогда просто не сталкивался с такой задачей, хотелось бы структуру нормальную придумать. Помогите рекомендациями пожалуйста


Ключевое слово для гугления: экспертные системы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.