2012-06-13 2 views
0

MEF를있는 정의MEF는 프로세스 정의의 동적 부하

우리가 여러 부분으로 구성 응용 프로그램 : processDefinitions를 (활동, 게이트웨이의 건물을 허용 도메인 모델 :

  • 모델 빌더 , 이벤트 등) 및 작업.
  • 콘크리트 processDefinitions를 : 특정 사업을 해결 processDefinitions를 모음. 각 어셈블리에는 구체적인 ProcessDefinitions, Tasks 등의 컬렉션이 포함되어 있습니다.
  • 런타임 : Concrete ProcessDefinitions가 포함 된 어셈블리를 동적으로로드하고 간단한 서비스 인 FindProcessDefinition (proceedingId, versionPolicy)을 통해 해당 어셈블리를 찾을 수 있어야합니다. 모든 구체적인 프로세스 정의 파트를 살펴보십시오. ProcessDefinition은/singleton 캐시되어야합니다.

은 MEF는이 문제를 갈 수있는 방법이 될 수 있다고 생각하십니까? MEF의 예를 보았지만이 "빌드"패턴이 아니라 인터페이스를 구현하는 데 사용됩니다.

을 수행하는 방법에 어떤 힌트? 다른 대안? 감사. 당신의 콘크리트 processDefinitions를 그 클래스의 인스턴스를 건축업자가 공통 인터페이스가없는 경우

답변

0

은 MEF는 올바른 도구 (IMO)을하지 않는 것 같습니다.

은 아마도 당신은 빌더 각각 공통 인터페이스를 구현있을 수 있습니다. 그러나 각각의 구체적인 프로세스 정의에는 공통 인터페이스가 필요합니다. 그럴 것 같지 않습니다. 당신의 코드에서 당신이하지 않는 : 당신의 코드에서

new ConcreteProcessDefinition1.run() 

new ConcreteProcessDefinition2.run(), 

을 당신은

ConcreteProcessDefinition1.doXYZ(input1, input2) 

ConcreteProcessDefinition2.doSomethingTotallyDifferent(input3) 

왜 당신이 뭔가를해야합니까 좋아해요 프로세스 정의를 동적으로로드하려면? 귀하의 고객 (귀하의 소스 코드에 액세스 할 수없는)이 프로세스 정의를 작성합니까?

+0

ConcreteProcessDefinition : IProcessDefinition, 그들은 공통 인터페이스를 가지고있다. 빌더는 ConcreteProcessDefinitions를 작성하기 위해 부품별로 사용되므로 인터페이스를 작성하는 데는 문제가되지 않습니다. – user1453555

+0

마지막 질문에 대해, 왜. 단순화하기 위해 Builder semnatics로 변환되는 프로세스 정의를 그릴 수있는 그래픽 도구가 있음을 언급하지 않았습니다. 우리의 계획은 이러한 정의를 런타임에서로드 할 수있는 dll로 제공하는 것입니다. – user1453555