2011-01-19 1 views
4

나는 흐름 차트와 같은 시나리오를 개발/코딩하는 최선의 방법을 연구 중이다.플로우 차트와 같은 코드는 어떻게 작성해야합니까? 또는 Windows Workflow Foundation과 같은 것을 사용해야합니까?

예를 들어 다음 다이어그램에서 주어진 요구 사항을 만족할 수 있도록 아래에 의사 코드를 작성할 수 있습니다. 그러나 흐름 차트가 변경되면 유지 관리가 어려워집니다. 또한, 플로우 차트가 더욱 복잡 해지면 더 악화 될 정도의 중복이 있습니다.

문제는 무엇입니까? Windows Workflow Foundation의 목적을 정확히 해결하려고합니까? 아니면 가까운 장래에 대한 접근 방식이 너무 무거울까요?

아마도 내가 간과하고있는 분명한 해결책이 있을까요? 도움 주셔서 감사합니다.

(나는 내가 .NET 기반의 솔루션을 찾고 있어요 언급해야 PS)

alt text

.. 그리고 의사 코드 ...

Public Function Inbox() as Result 

    If IsItImportant() Then 
     If IsItUrgent() Then 
      If IsItBestUseOfMyTime() Then 
       If WillItTakeMoreThan15Mins() Then 
        Return Result.ProjectList 
       Else 
        If CanDoItNow() Then 
         Return Result.Now 
        Else 
         If DoesItHaveDeadline() Then 
          Return Result.Calendar 
         Else 
          Return Result.NextAction 
         End If 
        End If 
       End If 
      Else 
       Return Result.Delegate 
      End If 
     Else 
      If IsItActionable() Then 
       If IsItBestUseOfMyTime() Then 
        If WillItTakeMoreThan15Mins() Then 
         Return Result.ProjectList 
        Else 
         If CanDoItNow() Then 
          Return Result.Now 
         Else 
          If DoesItHaveDeadline() Then 
           Return Result.Calendar 
          Else 
           Return Result.NextAction 
          End If 
         End If 
        End If 
       Else 
        Return Result.Delegate 
       End If 
      Else 
       If IsItReferenceMaterial() Then 
        Return Result.File 
       Else 
        Return Result.Trash 
       End If 
      End If 
     End If 
    Else 
     If IsItWant() Then 
      Return Result.Someday 
     Else 
      Return Result.Trash 
     End If 
    End If 

End Function 
+0

그래픽 도구 또는 규칙 엔진을 찾으십니까? – Oded

+0

나는 일반적으로 grahical 도구를 사용하는 대신 코드로 작업하는 것을 선호하지만, 두 가지 가능성에 똑같이 열려 있습니다. – Darragh

+0

흐름도는 소프트웨어 개발의 직접 실행 가능 아티팩트가 아니라 문제 해결 지원이라고 여겨집니다. –

답변

2

이처럼 보인다 WF4에 매우 적합합니다. WF4는 기대했던 것보다 훨씬 가볍습니다. 밀리 초 단위로 실행되는 사용자 지정 작업을 포함하는 비교적 복잡한 워크 플로가 있습니다. 또한 워크 플로를보다 쉽게 ​​만들 수있는 사용자 지정 활동을 만드는 것이 매우 쉽습니다. WPF라는 디자인 표면은 사용자 정의 디자이너를 쉽게 만듭니다.

+0

디자인 화면과 코드 (xml - 실제 .net 코드가 아님)간에 앞뒤로 전환 할 수 있습니까? – Darragh

+0

@Darragh WF4 워크 플로우는 모두 xaml입니다. 활동 코드를 코드 숨김으로 간주하지 않는 한 코드 숨김이 없습니다. – Will

0

워크 플로 파운데이션은 한 컴퓨터에서 "잠자기"되고 다른 컴퓨터에서 "잠자기"될 수있는 장기 실행 프로세스 (일, 주, 개월) 용입니다. 예를 들어 문제 티켓 시스템이 있습니다. 워크 플로는 문제를보고하는 사람의 워크 스테이션에서 시작하고 어떤 부서에서 처리하는지 결정하는 서버에서 "깨어나"해당 부서의 시스템에서 다시 깨어나고 더 나아질 수 있습니다 관리자, QA 부서, 청구 부서 등에서 처리합니다.

문제에 대한 자세한 정보가 없으면 찾고있는 것이 WWF의 용도와 비슷하지 않으며 WWF를 사용해 보려는 경우 유지 관리가 너무 복잡 할 수 있습니다. .

유지 보수가 가능한 방식으로 코드를 작성하는 문제는 오래된 것입니다. CS 버즈 워드의 대부분이 해결하려고하는 것 : 하향식 프로그래밍, 객체 지향 프로그래밍, CASE, UML, 종속성 삽입 등등.

경우에 따라 하향식 프로그래밍 (순서도로 시작한 다음 의사 코드로 작성한 다음 실행 코드로 변환)과 리팩토링을 조합하면됩니다.

다른 말로하면, 당신에게 오는 첫 번째 방법으로 작성한 다음, 코드를 다시 방문하여 개선 할 기회를 찾고, 복제 된 코드를 추상화 및 라이브러리로 통합하고, 고아가 된 코드를 삭제하는 등의 작업을 수행합니다. 일반 리펙토링은 코드베이스를 유지할 수 있습니다 WWF와 같은 큰 추상화를 필요로하지 않고 유지 보수가 쉬운 형태로 제공됩니다.

+0

나는 위의 코드 (예 : 중복 코드 리팩토링)를 리펙토링 할 수 있다는 것에 동의합니다. Howerver, 그때 문제는 코드가 원래의 흐름 차트와 덜 유사하게되고 흐름 차트가 수정 될 때 업데이트하는 것을 어렵게 만듭니다. 이상적인 솔루션은 DSL의 라인을 따라 뭔가있을 거라고 생각합니다. – Darragh

+0

DSL이 다른 솔루션 일 수도 있습니다. 그러나 거기에 가기 전에 코드를 순서도와 유사하게 유지하는 것이 필수적입니까? 이 경로 아래에는 공포 이야기가 있습니다. 예 : http://thedailywtf.com/Articles/The_Customer-Friendly_System.aspx –

0

WF가이 직업에 적합한 도구인지 잘 모르겠습니다. 문제에 대한 설명에서 볼 수없는 것은 모듈과 시스템 간의 통합이 필요하다는 것입니다. WF를 사용하기에 적합한 곳은 다른 외부 시스템을 단일 프로세스 ("워크 플로우/플로우 차트")를 조직적으로 모니터 할 수있는 방식으로 공격하여 프로세스의 현재 상태와 가시성을 확인할 수있게하는 것입니다 비 - 블로킹 방식으로 외부 시스템 응답을 기다리는 "생존"할 수 있어야합니다.나는 단지 WF가 가져올 오버 헤드의 가치가 무엇인지 설명하지 못하고 있습니다.

관련 문제