2011-01-19 8 views
4

私は、フローチャートのようなシナリオの開発/コード作成の最善の方法を調査しています。フローチャートのようなコードを書くべきですか?または、Windows Workflow Foundationのようなものを使用する必要がありますか?

たとえば、次の図を前提として、私は要件を満たすために、その下に擬似コードを書くことができました。しかし、フローチャートが変わると、これを維持するのが難しくなります。また、かなり複雑な重複があります。これは、フローチャートが複雑になると悪化します。

私はWindows Workflow Foundationの目的を正確に解決しようとしていますか?それとも、手に取っている課題のアプローチが重すぎるのでしょうか?

おそらく私は見落としている明らかな解決策がありますか? ご協力いただきありがとうございます!

(私は、.NETベースのソリューションを探していますことを言及すべきであるPS)

alt text

..and擬似コード...

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

私は一般に、叙事詩のツールを使用するのではなく、コードで作業することを奨励していますが、どちらも可能です。 – Darragh

+0

フローチャートは、ソフトウェア開発の直接実行可能なアーチファクトではなく、問題解決の援助であると考えられています。 –

答えて

2

これは、ように見えるんWF4に非常に適しています。 WF4はあなたが期待するよりもはるかに軽いです。私はミリ秒で実行するカスタムアクティビティを含む比較的複雑なワークフローを持っています。また、ワークフローの作成を容易にするカスタムアクティビティの作成も非常に簡単です。そして、WPFというデザイン面は、カスタムデザイナーを簡単に作成します。

+0

デザインサーフェイスとコード(xml - 実際の.netコードではない)の間で前後に切り替えることはできますか? – Darragh

+0

@Darragh WF4ワークフローはすべてxamlです。あなたがコードビハインドとして活動のコードを考慮しない限り、コードビハインドはありません。 – Will

0

Workflow Foundationは、1台のコンピュータで「スリープ状態」になり、別のコンピュータで「起きる」という長時間実行されるプロセス(日、週、月)を対象としています。たとえば、問題を報告している人のワークステーションでワークフローが開始され、どの部門がそれを処理するかを決定し、その部門のシステムで再び起き、さらにそれ以上になる可能性があるサーバー内で「起きる」マネージャー、QA部門、課金部門などで処理されます。

あなたの問題についての詳細がなければ、あなたが探しているものはWWFのために設計されたもののようには聞こえません.WFを使用しようとすると、 。

保守可能なままコードを書いてしまうという問題は古いものであり、CSの流行語の大部分はトップダウンプログラミング、オブジェクト指向プログラミング、CASE、UML、依存性注入等々。

あなたのケースでは、トップダウンプログラミング(フローチャートで始まり、それを擬似コードとして書いてから実行可能なコードに変換する)とリファクタリングを組み合わせるだけでよいかもしれません。

言い換えれば、あなたに来る最初の方法を書いてから、コードを見直して改善し、重複したコードを抽象とライブラリに統合し、孤立したコードを削除するなどです。通常のリファクタリングでは、 WWFのような大きな抽象化やそれらがもたらすすべての複雑さを必要とせずに、維持しやすい形で提供します。

+0

私は上記のコードをリファクタリングできることに同意します(例えば、重複コードのリファクタリング)。 Howerverは、この問題は、コードがオリジナルのフローチャートとあまり似ていないようになり、フローチャートが変更されたときに更新するのがより困難になるということです。理想的な解決策は、DSLのラインに沿ったものかもしれないと思います。 – Darragh

+0

DSLが別の解決策になるかもしれません。しかし、そこに行く前に、コードをフローチャートに似たままにしておくことが絶対必要なのですか?この道にも恐怖の物語があります。例:http://thedailywtf.com/Articles/The_Customer-Friendly_System.aspx –

0

WFがこの仕事に適したツールであるかどうかわかりません。問題の説明でわからないことは、モジュールとシステムの統合の必要性です。これは、WFを使用するためのスィートスポットです。異なる外部システムを組み合わせて単一のプロセス(「ワークフロー/フローチャート」)を組織的かつ監視可能な形で攻撃し、プロセスの現在の状態を可視化し、ノンブロッキング方式で外部システムの応答を待つ「生き続ける」ことができます。私は説明されていることがWFがもたらすオーバーヘッドの価値があるのか​​どうかだけは分かりません。

関連する問題