비즈니스 규칙 / 검증 엔진에 Windows Workflow를 성공적으로 사용한 사람이 있습니까?


11

누군가가 BusinessRules / Validation 엔진에 Windows Workflow Foundation을 성공적으로 사용했는지 또는 이에 대한 샘플 코드 나 기사를 알고 있는지 궁금합니다.

이전에 사용한 적이 있다면 어떻게 생각하십니까? 다른 BusinessRule / Validation 시스템과 어떻게 비교됩니까?

나는 같은 규칙을 생각하고 있습니다

if (A, B, and C) 
    AllowAccess();

또는

if (Value between X and Y)
    return true;

답변:


6

몇 달 전에 WWF WCF를 사용하여 엔진을 구축하기 시작했습니다. 나는 당신의 룰베이스가 얼마나 복잡한 지 모르겠지만 우리의 룰베이스는 꽤 컸습니다. 40,000 개의 지점과 같은 가능성이있는 경우 WWF는 적합하지 않습니다. 대안으로, SQL에서 논리 예외 테이블을 사용하는 엔진을 구축했습니다. 행은 기본 값과 예외 사이에 다양한 수식의 형식화 된 문자열을 저장합니다. 동적 언어 (래퍼가 포함 된 내장형 Ironpython 엔진을 사용하고 포함 된 JScript 엔진을 사용할 수 있음)와 결합하면 로직이 매우 추상적 인 수준에서 즉시 결정될 수 있습니다. 이 길을 갔다 니 너무 기뻐요.끌어서 놓기 논리는 훌륭해 보이지만, 마케팅에도 불구하고 비즈니스 사람들은이를 사용할 수 없으며 개발자가 IMHO 속도를 늦추고 빠르게 쥐의 둥지가 됩니다.

업데이트 : 여전히 관심이 있다면 초보자 안내서 입니다. 확실히 광대하지는 않지만 괜찮은 비디오가 있습니다. 설정에 관해서는 네트워크 엔지니어가 서버 유지 관리, 보안 등의 회사 정책에 대한 설정을 수행했지만 기본 WCF 서비스 설정과 거의 동일했습니다. 기본적으로 ISS의 가상 디렉토리에 버립니다. 일반적으로 장기 실행 프로세스이므로 서비스를 작성하는 동안 메모리 관리에 특히주의하십시오. 6 개월 동안 일부 리소스를 반복해서 폐기하지 않으면 실제로 추가 될 수 있으며 서버는 만족스럽지 않습니다.


어떻게 설정 했습니까? 온라인으로 시작하거나 샘플 코드가 포함 된 기사를 알고 있습니까?
Rachel

감사. 비즈니스 규칙 실행 성능은 어땠습니까?
Rachel

그리고 솔직히 말해서, 나는 이것을 WWF를 사용한다는 생각에 반대하지만, 내 팀원은 그것을 위해 적어도 기회를주고 싶습니다 :)
Rachel

1
@ Rachel- 성능은 합리적이었습니다 (이것이 의미가 있다면 약간의 멀티 스레딩으로 UI 설정에서 실행할 수있을 정도로 빠릅니다). 미친 듯이 빠르지는 않지만 분산 WCF 서비스가있는 것도 아무것도 아닙니다.
Morgan Herlocker

인터넷에서 논리 엔진과 IronPython 방식을 보여주는 자료가 여전히 있습니까? "초보자 안내서"링크가 더 이상 작동하지 않습니다.
Robert Harvey

1

Ironcode에 동의해야합니다. 우리는 새로운 Biztalk가 나오기 몇 년 전에 (드물게) 끌어서 놓기 순서도 스타일 시스템을 작성했습니다. 비 프로그래머가 프로그래밍 할 수 있고 시스템을 쉽게 유지 관리하고 변경할 수 있다는 아이디어가있었습니다.

결과 : 프로그래머처럼 고도로 훈련을 받아야하지만 WWF 시스템의 새로운 '언어'에 대해서는 여전히 '비즈니스 분석가'가 필요했습니다. 그래서 당신은 전혀 얻지 못했습니다. 디버거는 실제 개발 시스템만큼 좋은 곳이 아니기 때문에 잃어 버렸습니다. 또한 데이터 및 GUI 처리의 핵심이었던 까다로운 모듈을 작성하려면 프로그래머가 필요했습니다. 확장 성도 매우 빠르게 떨어졌습니다. 간단한 비즈니스 규칙은 쉽게 정리할 수 있었지만 12 개가 넘으면 스파게티를 먹었습니다.

나는 그것이 약간의 이점을 가지고 있다고 생각하지만, 기본적으로 스크립팅 엔진을 사용하여 사용자 정의 작성 모듈을 함께 묶는 것이 좋습니다.

그것은 훌륭한 데모를 위해 만들어졌지만 마케팅 유형에 정말 멋지게 보였습니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.