0

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

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

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

4

1 回答 1

-1

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

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

class ServiceLocator:IServiceLocator
{

public FileStream GetFile(string path){
}

}

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

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

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

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

于 2012-07-23T08:46:51.533 回答