Should I use a state machine or a sequence workflow in WF?作为配置管理职责的一部分,我每周执行一次可重复的业务流程。流程不会改变:我将更改细节下载到Excel中,打开电子表格并基于宏复制细节,从议程模板创建Word文档,使用Excel数据更新议程,从Word文档创建PDF,以及给他们发电子邮件。 这个过程很容易在序列工作流中表示,到目前为止,我就是用COM自动化来自动处理Excel和Word片段的。关键在于,在"创建议程"和"发送议程"之间需要人为的步骤,其中,我查看更改细节并提出有关这些问题的问题,这些问题已添加到议程中。我目前有一个Suspend活动,可以在我手动执行此过程时暂停工作流程。 我的问题是,我应该重写工作流程以使其成为状态机,以遵循业务流程中人与人之间交互的最佳实践,还是暂停活动是合理的解决方案? 更新:Panos很好地说明了挂起活动。我同意它在工作流自动机中具有不同的目的。 如果您感到担心的是工作流在各种状态之间的转换,那么状态机工作流就是理想的选择。否则,顺序就好了。 您应该尝试解决的主要问题是,在等待人工交互(线程敏捷性)时,工作流不应占用线程。如果工作流在此期间处于空闲状态并持续存在(例如使用SqlWorkflowPersistenceService),则应该没有问题。 不,我认为您不必为此工作流使用状态机。但是,我建议更改"挂起"活动,因为:
在工作流(序列机或状态机)中添加人工任务的典型方法是定义一个外部数据交换接口并使用HandleExternalEvent活动(可能还包括CallExternalMethod活动)。有关更多详细信息,请参阅以下文章:
|