Программирование скриптовой программы - PullRequest
2 голосов
/ 22 декабря 2010

Я хочу разработать программу, содержащую скрипт, который мог бы использовать сотрудник колл-центра.Я хотел бы начать с некоторого набора основных полей / вопросов (Имя, Телефон, Почему вы звоните), а затем обновить доступные поля / вопросы на основе ответов на предыдущие вопросы.

Например:

Начните с полей / вопросов Имя, Телефон и Почему вы звоните (возможные ответы: «Назначить встречу», «Отменить встречу», «Офисный звонок»).После того, как абонент ответил на вопрос «Почему вы звоните», появятся дополнительные поля.Эти дополнительные поля будут зависеть от ответа.Если вызывающий абонент звонил на встречу, то мог бы отображаться календарь, если он звонил для отмены, то отображались бы любые существующие встречи и т. Д.

К сожалению, я не знаю, как это сделать.Я думаю, что XML мог бы стать способом, чтобы я мог хранить данные поля / вопроса в древовидной структуре, но не уверен, сработает ли это.

Кто-нибудь делал что-то подобное, что могло бы дать некоторые рекомендации?Я буду делать это, используя C # и WPF.

Заранее спасибо, Брайан

Ответы [ 3 ]

1 голос
/ 22 декабря 2010

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

Самым простым вариантом может быть использование VisualStateManager для отображения группы полей в зависимости от статического списка «причин вызова». Установите визуальное состояние формы при выборе причины вызова из раскрывающегося списка.

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

Если вам нужен сложный рабочий процесс, который необходимо обновлять визуально, рассмотрите Windows Workflow Foundation (WF.) Редактор WF размещается в приложении WPF, что позволяет суперпользователям создавать новые рабочие процессы.

Обратитесь к PRISM , также известному как библиотека составных приложений, для получения информации о том, как динамически создавать приложения. Prism позволит вам создавать представления, которые могут быть внедрены в UserControl во время выполнения в зависимости от бизнес-логики.

0 голосов
/ 22 декабря 2010

Я не сделал то, о чем вы спрашиваете, но если бы я сделал это, я бы выбрал подход.Во-первых, вы должны наметить все возможные пути логики.Таким образом, у вас будет набор вопросов и на каждый из этих вопросов будет набор возможных ответов.Затем к каждому из этих ответов приходят новые наборы вопросов.Таким образом, это будет логически создавать график наборов возможных вопросов и их возможных ответов.Я бы кодифицировал это отношение как объекты Вопроса и Ответа.Кроме того, вам нужно будет определиться с объектом Response, чтобы указать, что делать дальше (либо укажите новый набор вопросов, либо он завершен).Таким образом, следуя этой линии мышления, вы получите график, или, точнее, древовидную структуру.И это можно повторить просто так, используя стек:

// need to pull the Initial Set of Questions to start
List<Question> currentQuestions = GetInitalQuestions();
// a stack to track the chosen responses, so we can unwind if needed
Stack<Response> responseStack = new Stack<Response>();
// out exit condition is when currentQuestions is null
while(currentQuestions != null)
{
    // display the questions and get the user's response
    Response resp = DisplayQuestions(currentQuestions);
    // if we need to back up...
    if (resp == Response.Back)
    {
        // make sure we have something to fall back to...
        if (responseStack.Count > 0)
            resp = responseStack.Pop();
        else
            HandleAtBeginningOfStack();
    }
    else
    {
        // add the chosen response to the stack
        responseStack.Push(resp);
    }
    // get the next set of questions based on the response, unless we are at the end
    if (resp.IsFinal)
        currentQuestions = null;
    else
        currentQuestions = GetQuestionSetFromResponse(resp);
}

Поскольку это основная логика, вам нужно будет создать пользовательский интерфейс для представления Вопросов и Ответов.Я бы создал форму с одной панелью.В форме есть метод DrawPanel или что-то в этом роде, когда он передает набор Вопросов и их ответов, он очищает Panel и создает необходимые элементы управления.Таким образом, он будет динамически создавать отображение, поскольку вопросы и ответы выбираются пользователем.Так как у нас есть стек выбранных ответов, вы можете использовать его где-нибудь в форме, чтобы отобразить пользователю ранее выбранные варианты.

0 голосов
/ 22 декабря 2010

Ваше утверждение, что "вы не знаете, как это сделать", звучит так, как будто вы новичок в программировании и структурах данных?Если это так, лучше всего начать с книги C #, ориентированной на начинающего .

Помимо этого, ваш вопрос касается сокрытия и / или свертывания элементов управления в WPF,который описан в ответах на этот другой вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...