如何创建可重复使用的WF顺序工作流程?

时间:2010-02-18 21:36:14

标签: workflow-foundation

我有两个客户具有相同的工作流程(创建文件 - >传输文件 - >等待响应 - >向内部团队发送响应);但是每个客户的每个步骤的实施都是不同的。例如,一个客户需要通过SFTP发送平面文件,而另一个客户需要通过FTP发送XML文件。

我想使用Microsoft Workflow Foundation(WF)创建顺序工作流,并为多个供应商重用此工作流。每个动作对外部模块的调用都可以使用相同的接口,但具体实现不同。

但是,我对WF不熟悉,我不知道如何实现这一点。有人能指出我使用这种模式的正确方法吗?我选择WF 3.5还是WF 4.0会有所不同吗?

谢谢。

4 个答案:

答案 0 :(得分:0)

您可以创建编排主要工作的活动,并将实现细节推迟到外部对象。 WF3和WF4都有类似的机制,WF3中的WorkflowRuntimeService和WF4中的扩展,您可以在其中向运行时环境添加活动的插件。在您的活动中,您将传递一个上下文,您可以使用该上下文来检索要使用的实际扩展,并调用它来执行所需的工作。

答案 1 :(得分:0)

根据您的描述,很明显您正在处理不同类型的文件(xml,raw等)。我肯定会在这种情况下编写接口,因为你有相同的过程,但在每种情况下都有不同的代码细节。例如,您有使用SFTP端口或FTP发送的TransportFile“thing”。您可以在构造函数中指定端口,也可以通过任何其他方式指定端口。通过让“GetResponseActvity”实现WF4.0提供的AsynchCodeActivity,可以最好地实现“WaitForResponse”。对于每个特定任务,您可能需要一个辅助类来实现“通用”行为。 WF的优点在于,您可以通过拖放这些活动并使用这些辅助对象对其进行配置,为设计人员中的不同客户进行所有自定义。

答案 2 :(得分:0)

我想知道通过让工作流调用WCF服务并将不同的通信路径抽象为WCF通道类来更好地实现这一点......

答案 3 :(得分:0)

您可以查看strategy pattern,其中可以在运行时设置特定的实现。