시스템을 가지고 있는 통합된 규칙 엔진 적이 진정으로 성공?[마감]

StackOverflow https://stackoverflow.com/questions/206425

  •  03-07-2019
  •  | 
  •  

문제

리 시스템(이국적인 파생 상품 거래를 캡처하고 위험 관리)는 재개발이 진행되고 있습니다.하나 제안서는 내가 들어있는 규칙 엔진을 통한 최종 사용자가(상품의 상인,그래서 상당히 세련된)특정 내용을 변경하는 비즈니스 논리입니다.

나는 조금의 회의 규칙 엔진이 있습니다.이 agilist 에서 나오는 그들은 단지 기술적 솔루션은 프로세스 문제는...ie.그것은 너무 오래 걸리에 대한 우리의 개발자에 대응하는 비즈니스에 필요한 변경합니다.그 문제의 해결책은 있어야 더욱 협력적인 접근 방식을 개발,테스트 범위,더 agile 모든 주위입니다.

청각 상황에 대한 규칙 엔진 진정한 혜택(특히 무역 환경에)것을 확실히 도움이됩니다.

도움이 되었습니까?

해결책

나는 Fair ISSAC의 Blaze Rete 엔진을 사용한 두 가지 응용 프로그램을 보았습니다.

하나의 응용 프로그램이 수천 개의 규칙을 단일 지식 기반으로 비난했으며, 기억 문제가 있었으며, 거의 이해하지 못하는 블랙 박스가되었습니다. 나는 그것을 성공이라고 부르지 않지만 생산에서 진행되고 있습니다.

다른 응용 프로그램은 의사 결정을 사용하여 의료 형태로 처분 고객에게 수백 가지 질문을 표현했습니다. 비즈니스 사람들이 개발자를 참여시키지 않고도 필요에 따라 규칙을 업데이트 할 수 있도록 우아하게 이루어졌습니다. (그래도 여전히 하나에 의해 배치되어야합니다.) 나는 그것을 큰 성공이라고 부릅니다.

따라서 문제가 얼마나 집중되어 있는지, 규칙 세트의 크기, 개발자에 대한 지식에 달려 있습니다. 저의 편견은 단순히 규칙 엔진을 단일 실패 지점으로 만들고 규칙을 덤핑하는 것이 좋은 접근법이 아니라는 것입니다. 데이터 중심 또는 테이블 중심 접근 방식으로 시작하여 규칙 엔진이 필요할 때까지 성장합니다. 또한 객체의 동작의 일부로 규칙 엔진을 캡슐화하려고 노력합니다. 사용자로부터 규칙 엔진을 숨기고 규칙 공간을 도메인 모델로 분할하려고합니다.

다른 팁

내가 알지 못하는 경우 나는 그들이 진정으로 이익이지만,나는 생각한 그들은 확실히 가치가있다.근무 시스템에서 몇 년 동안에는 보험 산업,는 규칙은 엔진이 고용되었다 아주 성공적으로 허용하는 비즈니스 사용자는 규칙을 만드는 무엇 결정 정책을 법률에 따라 상태가 됩니다.

예를 들어,만약 당신이 있어야 했는 본인 부담액은 특정 국가에서,또는 특정 조합의 공제 및 본인 부담액은 허용되지 않았기 때문에 제품의 고려사항이나 되었기 때문에 단순히 불법으로 인해 국가 법률입니다.

의 개수는 운영 회사에서 함께 지속적인 변화에서 규칙(분기별)이 어지럽게 코딩습니다.더 중요한 것은,그것은에서의 전문성 프로그래머입니다.그것은 추가적인 무의미한 통신을 최종 사용자가를 설명하는 규칙에 넣을 수 효과를 프로그래머지 보험 산업 전문가가 다음과 같 그들이 있습니다.

설계 올바르게 규칙 엔진할 수 있는 여전히 워크플로 사용할 수 있는 시스템이 좋은 테스트합니다.이 경우에는 규칙에 저장된 데이터베이스가 있었 QA 및 PROD 데이터베이스가 있습니다.그래서 바륨의 수 있는 테스트는 자신의 규칙에 QA 및 그들에게 홍보 PROD.

아무것도와 마찬가지로,그것의 일반적으로 구현에 대해,그리고 실제적인 기술입니다.

예, Microsoft는 Biztalk에 BRE (Business Rule Engine)를 보유하고 있으며 수년 동안 성공적으로 사용되었습니다. 나는 그들이 고객이 BRE를 위해 Biztalk (매우 비싸다)를 구매하도록했다고 들었습니다.

내 경험상, 비즈니스 사용자를 업데이트하는 실용성은 규칙에 따라 적습니다. 일반적으로 비즈니스 규칙 편집자를 작업하려면 기술자가 필요합니다.

규칙 엔진은 선언문을 실행하는 것 이상의 것입니다. 그들은 두 가지 주요 장점이 있습니다 (내가 보는).

  1. 비즈니스 로직은 응용 프로그램 코드 전체에 뿌려지는 대신 단일 장소에서 유지됩니다. 기술적으로, 잘 설계된 응용 프로그램은 규칙 엔진이 존재하는지 여부에 관계없이 이미 아키텍처 에서이 작업을 수행해야합니다.
  2. 선언문 간의 종속성에 대해 [적은] 걱정해야합니다. 규칙 엔진은 종속성에 따라 규칙을 실행하기위한 순서를 결정할만큼 똑똑해야합니다. 일부 규칙 엔진은 특정 순서로 규칙 세트 내에서 규칙 세트 (규칙 그룹)를 호출하는 규칙 세트 (규칙 그룹)를 순차적으로 주문하는 것을 알 수 있지만, 이는 실제로 선언적 프로그래밍의 정신이 아닙니다. 많은 규칙 엔진은 Rete (알고리즘)를 사용하여 선언문 실행을 예약 할시기를 결정합니다.

규칙 엔진을 사용하지 않는 최상의 프로그램을 작성하는 것보다 룰 엔진이 더 많은 오버 헤드를 추가한다고 생각합니다. 이는 어셈블리에서 코드를 작성하는 것이 일반적으로 컴파일러보다 빠릅니다 (그러나 더 높은 수준의 추상화를 사용하는 것이 더 편리하고 생산적이기 때문에 어셈블리를 작성하지 않습니다).

여기서 멈추려면 프로그래머를 사용하여 규칙을 유지하고 규칙 엔진을 응용 프로그램에서 비즈니스 로직 계층을 구축하는 편리한 방법으로 사용될 것입니다. 일부 규칙 엔진은 규칙에 대한 템플릿을 정의 할 수있는 템플릿이라는 것을 제공합니다. 여기서 장점은 비 기술적 사용자가 자신의 규칙을 작성하고 기존 규칙을 수정할 수 있다는 것입니다.

규칙 엔진은 도구 상자에 하나의 도구입니다. 제대로 사용할 때 가치가 있습니다.

이러한 많은 규칙 엔진의 문제점은 속도가 부족하고 규칙을 교체하거나 증강하면 기존의 작업 규칙을 미묘한 방식으로 위반할 수 있다는 사실입니다. 따라서 각 규칙 변경 후에도 시스템을 철저히 다시 테스트해야합니다. 따라서 기본적으로 하나의 컴퓨터 언어를 다른 컴퓨터 언어로 교환하고 있습니다. 다른 포스터가 언급했듯이, 나는 아직 비즈니스 분석가가 규칙 엔진을 성공적으로 사용하는 것을 보지 못했습니다. 어쨌든 프로그래머가 필요합니다.

나는 확실히 가지고 있지만 공개적으로 그들에 대해 이야기 할 수는 없지만 올해 여러 번 상호 작용했을 가능성이 높습니다.)

나는 2 개의 캠프에서 그것을 봅니다 : 로직 프로그래머와 비즈니스 사용자. 다른 도구는 다른 세트를 대상으로합니다. 비즈니스 사용자의 성공적인 사례는 논리의 하위 집합 일 때만 작동했으며 테스트 사례를 정의하고 스스로 실행할 수있는 방법이있었습니다 (그리고 논리적으로 생각할 준비가되어 있음). 논리 프로그래머는 드물지만 종종 필수적인 프로그래밍 배경에서 나오는 것을 발견 할 수 있습니다 (또한 기능적 프로그래밍 직관적 인 사람들이기도합니다).

시각적 도구를 사용하면 하루가 끝날 때도 명심하십시오. 컴퓨터에 무언가를하도록 지시하는 경우 여전히 프로그래밍 중입니다.

나는 우주에서 많은 공급 업체와 함께 일하고 있으며 이것에 대한 가장 큰 장점 중 하나는 많은 고객과 대화하는 것입니다. 그렇습니다. 수백 개의 회사가 있습니다 바로 그거죠 그들이 약속 한 이점 - 민첩성 증가, 비즈니스/IT 협업, 더 쉬운 규제 준수, 의사 결정 일관성, 유지 보수 비용 절감, 시장에 대한 시간이 빠른 시간 등.

모든 주요 공급 업체와 오픈 소스 플레이어에서 반복해서, 나는 올바르게 사용되는 것을 알 수 있습니다. 비즈니스 도메인 컨텐츠 - 비즈니스 규칙 관리 시스템이 작동합니다.

진짜.

나의 경험은 (i)별로 (ii) 프롤로그; 그러나 규칙 엔진이 절차 코드보다 훨씬 깨끗한 제안 개념을 표현하는 데 도움이 될 수 있다고 안전하게 말할 수 있습니다.

규칙 엔진은 보험 사업에서 일상적으로 사용됩니다. 저는 규칙 엔진에서 구현 된 수백 (600ish) 규칙을 가진 시스템에서 작업했습니다. 아주 잘 작동했습니다.

신용 등급이 있습니까? ㅏ 피코 아마 점수? 그게 에프공기 SAAC 공동Blaze Rules Engine의 개발자 인 Rporation.

한동안 나는 대규모 대량 대기 데이터를 계산하기위한 시스템을 개발하는 Peate Distributed Computing Project에서 근무했습니다. 시스템에는 데이터 관리자, 스케줄러 및 알고리즘 실행 구성 요소의 세 부분이 있습니다. 이러한 구성 요소가 모두 웹 서비스를 통해 수행 될 수 있지만, 다른 연구자들이 다른 연구자들이 임의의 데이터에 대해 임의의 작업을 실행하는 것이 었으며, 요구 사항이 변경 될 때 다른 스케줄링 메커니즘을 연결할 수 있도록 허용했습니다.

나는 프로젝트가 너무 멀리 떨어져 있기 전에 프로젝트를 떠났지만, 이것은 시나리오에 잠재적으로 맞을 수 있고 어떤 종류의 규칙 엔진의 또 다른 예가 될 수있는 것처럼 보입니다. 그러나 원래 개발자가 여전히 실행할 알고리즘을 만들고 있다면 각 규칙이나 알고리즘이 발생할 수있는 실질적인 오버 헤드를 처리하지 않는 한 규칙 엔진을 갖는 데 너무 많은 이점을 볼 수 없습니다. 그것은 자신의 것입니다.

이것은 간단한 규칙 엔진보다 조금 더 관여하지만 이러한 아키텍처는 규칙 엔진에도 적용 할 수 있습니다.

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