作为配置管理职责的一部分,我每周都会执行一个可重复的业务流程。流程不变:我将更改详细信息下载到 Excel 中,打开电子表格并根据宏复制详细信息,从议程模板创建 Word 文档,使用 Excel 数据更新议程,从 Word 文档创建 PDF,然后通过电子邮件发送出去。

这个过程很容易在序列工作流程中表示,这就是我到目前为止的方式,使用 COM 自动化来自动处理 Excel 和 Word 片段。齿轮中的扳手是,在“创建议程”和“发送议程”之间存在一个人为步骤,其中我审查变更细节并提出有关它们的问题,然后将其添加到议程中。我目前有一个暂停活动来暂停工作流程,同时我手动执行这部分流程。

我的问题是,我应该重写我的工作流程,使其成为一个状态机,以遵循业务流程中人机交互的最佳实践,还是挂起活动是一个合理的解决方案?

有帮助吗?

解决方案

不,我认为您不必为此工作流程使用状态机。但是,我建议更改暂停活动,因为:

暂停活动暂时停止执行当前工作流程。通常,您使用暂停性活动来反映管理员需要注意的错误条件。

暂停工作流实例时,记录了错误。您可以指定一个消息字符串以伴随错误,以帮助管理员用暂停性错误属性诊断问题。暂停的工作流实例仍然可以接收已排队的消息,直到重新启动工作流程为止。恢复实例(使用简历)时,将保存所有工作流实例的状态信息,并恢复。

来源: 微软软件定义网络

在工作流(序列或状态机)中添加人工任务的典型方法是定义外部数据交换接口并使用 HandleExternalEvent 活动(可能还有 CallExternalMethod 活动)。欲了解更多详情,请参阅以下文章:

其他提示

更新:Panos 对暂停活动提出了很好的观点。我同意它在工作流程自动机中有不同的用途。

如果您觉得自己更担心工作流在不同状态之间的转换,那么状态机工作流是理想的选择。否则,顺序就可以了。

您应该尝试解决的主要问题是工作流程在等待人工交互时不应占用线程(线程敏捷性)。如果工作流程在此期间闲置并持续存在(例如使用 SqlWorkflow持久服务),这应该不是问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top