如何在Windows工作流基础4中的活动之间共享全局资源

时间:2012-07-23 01:07:28

标签: workflow-foundation-4

我想创建一组可以在共享资源(如文件)上运行的自定义活动。这些自定义活动将在许多工作流中使用,每个工作流都将共享此共享资源。我的目标是尽可能简化创建这些工作流程,因为每个工作流程只是一些基本活动的重新安排。

我设法使用InArgument并将此资源传递给每个活动,但由于这很乏味,我想知道如何简化它以便不需要参数。

此外,是否可以在一个地方初始化此资源,以便所有工作流都可以认为它已经存在?

1 个答案:

答案 0 :(得分:-1)

如果您愿意,可以浏览Workflow Extensions的使用。基本上你利用“服务定位器”模式。

定义一个知道如何访问/修改您拥有的文件的类。假设这个名为ResourceLocator的类实现了一个IResourceLocator接口。然后,当您创建工作流主机时,请执行此操作

class ServiceLocator:IServiceLocator
{

public FileStream GetFile(string path){
}

}

//在这里发起WF主机     host.Extensions.Add(()=> {new ResourceLocator();});

然后,您可以在自定义活动中执行

context.GetExtension<IResourceLocator>().GetFile(pathToFile);

基本上,此扩展程序成为您在工作流之间共享公共代码的方法。您可以将其拆分为不同的程序集,并在不同的工作流程项目之间共享。