4

フローチャートのようなシナリオを開発/コーディングする最善の方法を調査しています。

たとえば、次の図が与えられた場合、その下に疑似コードを記述して要件を満たすことができます。ただし、フローチャートが変更されると、これを維持するのが難しくなります。また、かなりの量の重複がありますが、これもまた、フローチャートがより複雑になると悪化するだけです。

私が解決しようとしている問題は、まさに Windows Workflow Foundation の目的ですか? それとも、目の前のタスクに対してあまりにも手荒なアプローチでしょうか?

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

(PS .NET ベースのソリューションを探していることを言及する必要があります)

代替テキスト

..そして疑似コード...

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
4

3 に答える 3

2

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

于 2011-01-19T17:50:48.980 に答える
0

Workflow Foundationは、あるコンピューターで「スリープ状態」になり、別のコンピューターで「ウェイクアップ」する可能性のある長時間実行プロセス(数日、数週間、数か月)を対象としています。例として、トラブルチケットシステムがあります。ワークフローは、問題を報告している人のワークステーションで開始され、サーバー内で「ウェイクアップ」して、どの部門がそれを処理するかを決定し、その部門のシステムで再びウェイクアップし、さらに進む可能性があります。マネージャー、QA部門、請求部門などによって処理されます。

問題の詳細がなければ、探しているものはWWFが設計されているもののようには聞こえません。また、WWFを使用しようとすると、システムが複雑すぎて保守できなくなる可能性があります。

保守可能であり続けるような方法でコードを書くことの問題は古いものであり、それはほとんどのCS流行語が解決しようとしていることです:トップダウンプログラミング、オブジェクト指向プログラミング、CASE、UML、依存性注入など。

あなたの場合、トップダウンプログラミング(フローチャートから始めて、それを擬似コードとして記述し、それを実行可能なコードに変換する)とリファクタリングの組み合わせが必要なだけかもしれません。

言い換えれば、最初にそれを書いてから、コードを再検討して、それを改善する機会を探し、複製されたコードを抽象化とライブラリに統合し、孤立したコードを削除するなどです。定期的なリファクタリングにより、コードベースを次のような形式に保つことができます。 WWFのような大きな抽象化や、WWFがもたらすすべての複雑さを必要とせずに、保守が容易です。

于 2011-01-19T17:51:29.683 に答える
0

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

于 2011-01-19T18:23:06.187 に答える