2010-12-22 2 views
2

콜센터 담당자가 사용할 수있는 스크립트가 포함 된 프로그램을 개발하려고합니다. 몇 가지 기본 필드/질문 (이름, 전화, 이유는 무엇입니까?)으로 시작한 다음 이전 질문에 대한 대답을 기반으로 사용 가능한 필드/질문을 업데이트하고 싶습니다. 예를 들어스크립트 프로그램 프로그래밍

:

시작 필드/이름, 전화 및 왜의 질문 당신은 (가능한 대답은 "일정 예약", "약속을 취소", "사무실 전화"가 될 것입니다)를 호출한다. 발신자가 "왜 전화 하시겠습니까?"라고 대답하면 추가 필드가 표시됩니다. 이 추가 필드는 주어진 대답에 따라 달라집니다. 호출자가 약속을 요구하면 약속을 취소하기 위해 전화를 걸면 일정이 표시 될 수 있습니다.

불행히도, 나는 어떻게 해야할지 잘 모릅니다. XML을 사용하면 필드/질문 데이터를 구조와 같은 트리에 저장할 수 있지만 제대로 작동하는지 확실하지 않을 수 있습니다.

어떤 지침을 제공 할 수있는 유사한 작업을 한 사람이 있습니까? C# 및 WPF를 사용하여이 작업을 수행 할 것입니다. 사전에

감사합니다, 브라이언

답변

1

당신은 간단한 워크 플로우를 설명하고 있습니다. 복잡성에 따라이 방법에는 여러 가지가 있습니다.

"호출 원인"의 정적 목록에 따라 VisualStateManager를 사용하여 필드 그룹을 표시하는 것이 가장 간단한 옵션 일 수 있습니다. 호출 이유가 드롭 다운에서 선택되면 양식의 시각적 상태를 설정하십시오.

여러 경로와 화면이있는 곳에서 데이터 기반 워크 플로를 디자인 할 수 있어야하는 경우 사용자가 페이지를 탐색하는 마법사 스타일 인터페이스를 고려해야합니다. 나타나는 다음 페이지는 이전 페이지의 대답에 따라 다릅니다.

시각적으로 업데이트 할 수 있어야하는 복잡한 워크 플로가 필요한 경우 Windows Workflow Foundation (WF)을 고려하십시오. WF 편집기는 WPF 응용 프로그램에서 호스팅되므로 수퍼 유저가 새 워크 플로를 디자인 할 수 있습니다.

응용 프로그램을 동적으로 작성하는 방법에 대한 자세한 내용은 복합 응용 프로그램 라이브러리라고도하는 PRISM을 찾으십시오. Prism을 사용하면 비즈니스 논리에 따라 런타임에 UserControl에 삽입 할 수있는 뷰를 작성할 수 있습니다.

+0

+1 다양한 복잡도에 대한 다양한 솔루션을 제공합니다. 워크 플로/플로우 차트를 나타내는 것과 같은 소리가 OP 솔루션의 핵심입니다. –

+0

WF는 내가 원하는 바로 그 모양입니다. 나는이 패키지에 대해 몰랐다. 당신의 도움을 주셔서 감사합니다! – BrianKE

-1

당신이 "이것에 대해 어떻게 해야할지 모르겠다"는 말은 프로그래밍과 데이터 구조에 익숙하지 않은 것처럼 들리 네요? 그렇다면 C# book geared toward the absolute beginner을 시작하는 것이 좋습니다.

그 외에도 질문은 this other question에 대한 답변에서 다루는 WPF의 컨트롤 숨기기 및/또는 축소에 관한 것입니다.

0

나는 당신이 묻고있는이 일을하지 않았지만 내가 여기에서 한 것은 내가 취할 접근법입니다. 먼저, 가능한 모든 로직 경로를 찾아야합니다. 따라서 일련의 질문을하고 각각의 질문에 대해 가능한 답변을 얻을 것입니다. 그런 다음 각각의 답변에 새로운 질문 세트를 보냅니다. 따라서 논리적으로 가능한 질문 집합과 가능한 응답 집합의 그래프를 만듭니다. 나는이 관계를 질의 및 응답 객체로 성문화 할 것이다. 또한 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); 
} 

, 당신은 질문과 응답을 제시 할 수있는 UI를 구성해야합니다. 나는 하나의 패널로 Form을 만들 것이다. 폼에는 DrawPanel이라는 메소드가 있거나 질문과 응답 세트가 전달되면 Panel을 지우고 필요한 컨트롤을 그립니다. 따라서 질문과 응답이 사용자에 의해 선택되면 동적으로 디스플레이가 생성됩니다. 선택된 응답의 스택이 있으므로 사용자는 이전에 선택한 옵션을 사용자에게 표시하기 위해 양식의 어딘가에서 사용할 수 있습니다.

관련 문제