4

我正在研究如何最好地开发/编码类似场景的流程图。

例如,给定下图,我可以在其下方编写伪代码来满足要求。但是,随着流程图的变化,这将变得难以维护。此外,还有相当多的重复,当流程图变得更复杂时,这只会变得更糟。

我正在尝试解决的问题正是 Windows Workflow 基础的用途吗?或者这对于手头的任务来说是否过于严厉?

也许我忽略了一个明显的解决方案?谢谢你的帮助!

(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 那样的大抽象以及它们带来的所有复杂性。

于 2011-01-19T17:51:29.683 回答
0

我不确定 WF 是否适合这项工作。我在您对问题的描述中没有看到需要在模块和系统之间进行集成。这就是使用 WF 的最佳点,尝试利用不同的外部系统以有组织和可监控的方式攻击单个流程(“工作流/流程图”),从而可以看到流程的当前状态并被能够以非阻塞方式“保持活力”等待外部系统响应。我只是不确定所描述的内容是否值得 WF 带来的开销。

于 2011-01-19T18:23:06.187 回答