2010-02-18 27 views
1

我有两个拥有相同工作流程的客户(创建文件 - >传输文件 - >等待响应 - >向内部团队发送响应);然而,每个客户的每个步骤的实施方式都不相同。例如,一个客户需要通过SFTP发送平面文件,而另一个客户需要通过FTP发送XML文件。如何创建可重复使用的WF顺序工作流程?

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

但是,我不熟悉WF,我不知道如何实现这一点。有人能指出我使用这种模式的正确方法吗?无论我选择WF 3.5还是WF 4.0,它都会产生影响吗?

谢谢。

回答

0

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

0

从你所描述的,很明显你正在处理不同类型的文件(xml,raw等)。我肯定会在这种情况下编写接口,因为您有相同的过程,但每种情况下都有不同的代码详细信息。例如,您具有使用SFTP端口或FTP发送的TransportFile“事物”。您可以在构造函数中或通过任何其他方式指定端口。 “WaitForResponse”可以通过让你的“GetResponseActvity”实现WF4.0提供的AsynchCodeActivity来实现。对于每一个特定的任务,你可能需要一个助手类为你的“一般目的”行为。 WF的好处在于,您可以通过拖放这些活动并使用这些帮助对象配置它们来为设计者中的不同客户完成所有定制。

0

我不知道这是否会通过使工作流程只是调用WCF服务和不同的通信路径将被抽象成WCF通道类可以更好地实现......

0

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

相关问题