0

MEF 用于流程定义的动态加载

我们有一个由几个部分组成的应用程序:

  • ModelBuilder:允许构建 ProcessDefinition(活动、网关、事件等)和任务的域模型。
  • 具体的 ProcessDefinitions:解决特定业务的 ProcessDefinitions 的集合。每个程序集都包含一组具体的 ProcessDefinitions、Tasks 等。
  • 运行时:我们希望它动态加载包含 Concrete ProcessDefinitions 的程序集,并能够通过一个简单的服务 FindProcessDefinition(proceedingId,versionPolicy) 找到它们,该服务将查看所有 Concrete ProcessDefinition 部分。ProcessDefinition 必须被缓存/单例。

你认为 MEF 可以解决这个问题吗?我见过 MEF 的示例,但它们用于实现接口,而不是用于这种“构建”模式。

任何提示如何做到这一点?还有其他选择吗?谢谢。

4

1 回答 1

0

如果您的具体流程定义和实例化这些类的构建器没有通用接口,那么 MEF 似乎不是正确的工具 (imo)。

也许您可以让每个构建器实现一个通用接口。但是每个具体的流程定义也需要一个公共接口。情况似乎并非如此。在您的代码中,您不这样做:

new ConcreteProcessDefinition1.run() 

new ConcreteProcessDefinition2.run(), 

在您的代码中,您执行类似的操作

ConcreteProcessDefinition1.doXYZ(input1, input2)

ConcreteProcessDefinition2.doSomethingTotallyDifferent(input3)

为什么需要动态加载流程定义?您的客户(无法访问您的源代码)会创建流程定义吗?

于 2012-06-13T12:51:37.287 回答