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



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

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

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

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

有什么提示怎么做吗?还有其他选择吗?谢谢。

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

也许你可以让构建器各自实现一个通用接口。但是,每个具体的流程定义也需要一个通用接口。情况似乎并非如此。在代码中,您不执行以下操作:

new ConcreteProcessDefinition1.run() 

new ConcreteProcessDefinition2.run(), 

在你的代码中,你做类似的事情

ConcreteProcessDefinition1.doXYZ(input1, input2)

ConcreteProcessDefinition2.doSomethingTotallyDifferent(input3)

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

最新更新