문제

인사말!

웹 기반 프로젝트에 대한 작업은 비즈니스 규칙과 고객이 사용자 정의해야합니다. 시스템에 새 클라이언트를 가입 할 때마다 응용 프로그램을 다시 컴파일하지 않고도이 작업을 수행하고 싶습니다. 지금까지 설명한 아키텍처는 다음과 같습니다.

  1. Windows Workflow : 동적 워크 플로 생성 및 데이터베이스에 저장합니다.
  2. 반사 : 비즈니스 규칙 인터페이스 생성 및 반사를 사용하여 사용자 정의 클라이언트 어셈블리를로드합니다.
  3. 진정한 비즈니스 규칙 엔진
  4. 구조 맵과 같은 IOC 컨테이너 구현. [Zaff : 6/4 추가

이와 비슷한 것을 구현 한 적이 있습니까? 그렇다면 당신의 경험은 무엇입니까? 그리고 마지막으로 내가 탐색해야 할 또 다른 해결책이 있습니까?

당신의 도움을 주셔서 감사합니다!!

도움이 되었습니까?

해결책

나는 당신이 언급 한 대부분의 접근 방식을 구현했습니다. 대답은 다양한 요인에 따라 다를 수 있습니다.

비즈니스 규칙 (예 : 비즈니스 분석가, 개발자, 파워 사용자 등)을 변경하는 고객 역할은 무엇입니까? 비즈니스 분석가에 대한 의미있는 지원에는 DB와 사용 가능한 UI의 외부 규칙이있는 규칙 엔진이 필요할 수 있습니다. 개발자에 대한 의미있는 지원은 MEF와 같은 것을 활용하는 것만 큼 간단 할 수 있습니다.http://www.codeplex.com/mef).

또한 비즈니스 규칙을 얼마나 자주 변경 해야하는지, 어떤 종류의 관련 운영 요구 사항이 적용될 수 있는지를 고려할 수 있습니다 (예 : 호스트 프로세스는 계속 실행되고 앱 도메인 언로드 확인 등). 좋은 선택은 아마도 미래의 요구에 대한 신중한 생각이 필요할 수 있습니다.

다른 팁

마찬가지로 데이터 중심의 비즈니스 규칙을 수행 할 수 있습니다 이것. 의사 결정 트리도 좋은 방법이 될 수 있습니다.

또한 비즈니스 규칙을 구현하는 방법으로 Aspect-Oriented 프로그래밍에 대해 생각할 수도 있습니다.

RETE 유도 규칙 엔진을 사용한 유일한주의는 규칙 세트를 작게 유지하고 사용하는 물체에 가깝게 유지해야한다는 것입니다. 상태의 일부인 규칙 엔진에서 객체의 동작을 캡슐화 할 수 있다면 더 좋습니다. 나는 기업의 모든 부분에 의존하는 싱글 톤 규칙 엔진에 수천 개의 규칙을 덤프하는 "엔터프라이즈"솔루션을 신경 쓰지 않습니다.

이것은 최선의 접근 방식이 아닐 수도 있지만, 우리 회사는 여러 경우에 성공한 #2 옵션을 구현했습니다.

우리는 기본적으로 데이터베이스 또는 구성 파일에서 클라이언트를 구성하며 각 클라이언트의 경우 수행 할 비즈니스 운영에 대해 클래스 이름을 저장하는 조회 테이블이 있습니다. 코드가 클라이언트 A에 대한 요청을 받으면 클래스를 사용하여 사용할 클래스를 찾고 반사를 통해 실행합니다.

나는 데이터베이스에 코드 관련 물건을 넣는 열렬한 팬이 아니지만 실제로는 잘 작동 하며이 경우에는 너무 복잡하지 않습니다.

나는 1과 3의 조합을 제안한다.

그러나 워크 플로를 데이터베이스에 저장하지 말고 의사 결정 트리 또는 규칙 흐름을 저장하십시오 (우리가 부르는대로).

특정, 고객을 수용하도록 워크 플로를 변경하거나 프로필에 연합하는 것은 시각적, 액션 중심 도구가있는 경우 간단한 작업입니다. 시각적 규칙. 또한 비즈니스 분석가 나 지원 담당자가 코드를 조정하지 않고도 변경하도록하는 데 많은 이점이 있습니다.

또한 이러한 요구 사항 중 어느 것도 RETE 및 추론 순차적 논리와 같은 복잡한 AI 도구를 요구하지 않습니다.

다음 오픈 소스 .NET 비즈니스 규칙 엔진을 기반으로 동적 규칙 엔진을 만들었습니다. nxbre. 유량 엔진을 동적 규칙 엔진의 기본 예로 사용했습니다.

나는 당신의 질문에 언급 된 것과 같은 건축물을 사용했습니다.

나는 WF를 좋아하지만, 당신이 그것을보고 다른 것을 원한다고 결정했다면, 당신은 K2. 또한, 비즈 토크 BRE 지원이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top