2013-03-20 3 views
2

프로그래밍 된 기능이 복잡하고 사용자에게 제공되므로 기존 기술에 대한 대안을 요청하고 싶습니다. 따라서 가능한 한 간단해야합니다. 프런트 엔드에 있어야합니다. Java 기반 기술이 필요합니다.사용자가 수정 한 복잡한 결정 시스템 - Java

내가해야 할 일 : 많은 데이터가있는 기본 구조가 있습니다. 이러한 데이터는 대부분 정수, 날짜, 부울 등으로 작성되므로 쉽게 비교할 수 있습니다.

내부 비즈니스 프로세스 및 정부 법률과 같은 여러 소스에서 정의 및 변경할 수있는 일괄 처리 요구 사항을 모델링해야합니다.

그래서 사용자들에게 스크립팅 능력을 부여하려고합니다. (대부분 대학 학위가 있으므로 다소 복잡합니다.)
간단한 예를 보겠습니다.
A를 다음과 같은 구조로합니다.
A.budget - 정수
A.bankRelatedDebt - 정수
A.privateRelatedDebt - 정수
A.deadLine - 날짜
A.hasPermissionFromGovernment - 부울
A.hasProblematicContracts - 부울

내가하는 규칙이 필요 규칙이 서 있는지 또는 내릴지를 결정하기 위해 정의하므로 부울 값이 필요합니다.
규칙 1 : 예산이 1 백만 유로입니다.
규칙 2 : 문제가되는 문서가 없거나 정부로부터 허가를 받았습니다.
규칙 3 : 기한이 월 범위에 포함되지 않습니다.
규칙 4 : 전체 부채 (로컬 + 개인)가 100,000을 초과하지 않습니다.

이 규칙은 다른 경우 하드 코딩 될 수 있지만 주어진 다이나믹을 기반으로해야합니다.

우리는 당신이 언급 할 수 있다면 내가 대안을 필요이 샘ANTLR의 옵션이 있습니다. 또는 피할 기술을 언급 할 수 있다면 도움이되고 환영받을 수 있으므로 피할 수 있습니다.

+0

는,이 정말 도움이 될 것입니다, 권장 사항 여러분 모두 감사합니다 당신의 이익에있을 것입니다 필요에 맞는 것을 찾으면 답을 받아 들일 것입니다. – CsBalazsHungary

답변

0

데이터베이스에 레코드가있는 경우 SQL 구문과 일치하는 레코드를 선택할 수 있습니다. 예를 들어

: 그것은 가치가 무엇인지에 대한

SELECT * FROM data 
    WHERE budget > 100000 
     AND privatCredits < 50000 
+0

흠, 간단한 예를 들어 설명해 주시겠습니까? 당신은 sql select로 규칙을 대체하는 것을 의미합니까? 수정 가능성을 사용자에게 어떻게 전달할 수 있습니까? – CsBalazsHungary

+0

추가 정보 주셔서 감사합니다! 문제는 코드에서 불타거나 사용자가 작성해야한다는 것입니다. 그들 중 누구도 슬프게 받아 들일 수 없습니다. 나는 사용자가 데이터베이스를 직접 사용하게하지 않을 것이다. 주어진 모든 가능한 규칙을 알고 있지만이 규칙은 유연합니다 (월 단위로 변경). 사용자가 새 규칙을 만들 수 있어야합니다. – CsBalazsHungary

1

. 나는 그런 전문가 시스템을 너무 좋아하고 싶다. 그래서 내 말을 듣는다. 먼저 무엇을 피하기 위해 어떤 부정적인 점을 물었습니다.

많은 함정이 있습니다.

"프로그래밍"은 사용자가 수행합니다. 복원을위한 버전 제어 시스템이 없을 수 있습니다. 준비 시스템은 없지만 프로덕션 시스템에서 작업 중일 수 있습니다. 공통 라이브러리 규칙 테스트를 현명하게 확장한다고 생각하십시오. 단위 테스트가 없습니까?

사용자 동의가 있습니다. 특히 경쟁자 인 Excel 프로그래밍이 필요합니다.인간이 선택할 수있는 텍스트 블록, 다이어그램으로 보고서를 생성합니다.

귀하의 수다쟁이 규칙은 여전히 ​​부족합니다. 시스템은 다음 중에서 선택할 카테고리를 제공하는 데 도움을 줄 수 있습니다 : Rule1 - 화폐 자원에 대한 제한. (a) 규칙 1, (b) ....

또한 이점은 무엇입니까? 목표는 무엇입니까? 보고서 : 제한된 리소스를 제한하고 싶습니까? ., 계산 시나리오

나는 확실히 처음 위의 라인을 따라 기술 문서를 작성합니다 (어떤-IFS를 통해 계산 된 허용 오차), 및보다 은 도구를 검색 -. 당신이 일을 할 것 같은 Drools가 너무 기본이다 DSL에 대한 ANTLR 위험하다고 본다.

도구

데이터 마이닝는 검색하는 키워드의 것 같습니다.

JVM 프로그래밍 언어 인 Scala (쉽게 얻을 수없는)는 DSL을 파싱하는 데 효과적입니다. 많은 기능 언어가 조금 더 쉬우 며 스크립팅도 제공합니다 (Java 스크립팅 API).

임베디드 웹 서버로 jetty를 사용하는 웹 프로젝트는 어떻습니까? 따라서 HTML과 JavaScript를 적용 할 수 있습니다. HTML5?

리치 클라이언트 플랫폼 (eclipse 또는 NetBeans)은 빠른 개발 경험이 필요합니다. 좋은 그래픽, 아마도 JavaFX (너무 일찍).

+0

+1 데이터 마이닝 키를 위해, 나는 그것을 고발 할 것이다, 고마워! 문제는 작업이 꽤 복잡하다는 것입니다. 미안하지만 정확하지 않은 경우 문제를 설명하는 500 줄 이상의 사람들에게 부담을주고 싶지는 않습니다. 그렇게 많이 읽지는 ​​않을 것입니다. 나는 아직 운이 좋지 않다.이 임무는 아직 마감일이 없기 때문에, 어리석은 해결책에 뛰어 들어 그걸로 살아 가기보다 나은 해결책을 생각할 시간이있다. – CsBalazsHungary

+0

내 경험으로는 솔루션 기술을 찾는 것이 어쩌면 지능적인 * aha * 효과가있는 방법이 먼 길을 간다. 좋은보고와 함께. 성공. –

+0

대부분의 경우 나는 동의합니다! 그러나 지금은 처음에는 규칙이 있고 규칙을 수행하는 "자동 결정"시스템이 필요하기 때문에이 레벨에 대한보고는 아직 미미한 수준입니다. 그리고 이러한 규칙은 수정하기 쉽지만보다 복잡한 논리를 생성 할 수 있어야합니다. – CsBalazsHungary

1

Groovy 또는 Scala을 사용하여 필요에 맞게 DSL을 개발하십시오.

CodeMirror을 사용하여 웹 페이지에서 구문 강조를 제공합니다. Groovy에서 훌륭하게 작동합니다.

1

마치 strategy pattern처럼 다른 모든 규칙이 컨텍스트 (A)에 적용되는 알고리즘이 다르므로 런타임에 알고리즘을 선택할 수 있습니다.

필터 체인 디자인 패턴을 추가하면 다른 알고리즘 (규칙)을 동시에 선택할 수 있습니다.

Roolie 당신이 자바로 작성 규칙을 사용하는 매우 간단한 자바 규칙 엔진 (비 JSR 94)이다

Roolie는이 .as Roolie 말한다 도움이 될 meight 매우 간단한 자바 규칙 엔진입니다. 간단히 기본 규칙을 만들고 각각에 대해 단일 "통과"방법을 구현 한 다음 XML 파일에 함께 묶어 더 복잡한 규칙을 만듭니다.

+0

감사합니다! 이것은 나의 첫 번째 생각 이었지만, 나는 고려할 것이다. 그러나 그것이 내가 필요로하는 것보다 덜 동적일지도 모른다. 가능한 한 사용자가 최대한 간단하게 제어 할 수 있어야합니다. 물론 가능한 한 프로그래밍 시간을 피하고 싶습니다. – CsBalazsHungary

1

나는 끔찍한 경험이 있기 때문에 졸음에 반대 할 것이지만, 어떤 사람들은 그것을 좋아합니다.
나는 이미 자바 : 자바 스크립트에 통합 된 언어를 제안 할 것이다. 왜?

  • 간단하고 충분히 자바 빈에 액세스 할 수 있습니다. budget.getDealLine() 대신 예산을 사용할 수 있습니다.마감
  • 당신은 당신이 더 쉽게

을 사용할 수 있도록 간단한 기능을 추가 할 수있는 정보

  • 를 확인하기 위해 장소의 톤을 가지고하지만 당신은 자바 스크립트, 파이썬, Drools가를 선택하는 경우, ANTLR 기억 :

    • 사용자는 SVN/GIT와 같은 버전 제어 시스템을 가지고 있지 않으므로 에 해당합니다.
    • 작성한 모든 스크립트의 모든 버전을 자동으로 저장하는 도구 (웹 페이지 또는 기타)를 제공하십시오.
    • 아무 것도 손상시키지 않고 쓴 내용을 테스트 할 수있는 방법을 제공하십시오.
    • 변경 사항을 롤백 할 수있는 도구를 제공하십시오.
    • 코드를 실행하기 전에 코드를 커밋 한 후 최대한 많은 정적 테스트를 수행하십시오.
    • 구문 강조 표시로 인해 더 행복해집니다.

    기억해 : 그들은 예상치 못한 방식으로 도구를 사용하고 대부분의 스크립트를 작성 (또는 다시 작성)하게됩니다. 대학 학위가 없으면 그들이 무엇을하고 있는지 이해할 수 있습니다. 이 시스템이 덜 동적으로 만들 수 있다면 (심지어 CS는!)

    그래서, 나는 다음 주에 무언가를 보면

  • +0

    당신이 말했듯이, 우리는 drools에도 문제가 있습니다. 우리는 다른 모듈에서 그것을 사용하고 있습니다. 우리는 전체 개념의 유용성에 대해 모호한 감정을 가지고 있습니다. 주로 이것이 내가 질문을 한 이유입니다. antlr 스크립트가 다소 나아졌습니다. 내가 말한 것들을 확인해 볼 것입니다. +1 – CsBalazsHungary

    +0

    IDE는 Eclipse/NetBeans와 같이 매우 협박적입니다. 가장 중요한 점을 잊어 버렸습니다. 우리는 (프로그래머) * 사용자가 단순/복합/좋음/좋지 않음/도움/성가신 것을 찾은 것을 일관되게 나쁘게 추측합니다. 그들에게 그들이 원하는 것을 폭로 할 기회를주십시오. 어쩌면 멋진 행렬 필드/조건과 스크립트가없는 문제를 해결할 수 있습니다.아마 Excel이 당신의 친구가 될 수 있습니다. 어쩌면 그들이 더 좋은 생각을 가지고 있을지도 모른다. –

    +0

    정확합니다. 우리는 프로그래머들이이 규칙을 만들지는 모르겠지만 사용자들은 지나치게 복잡하거나 논리에 너무 낯선 것을 알 수 있습니다. 나는이 프로그램이 대학에서 탈회 한 사람들을 위해 고안 될 것이라는 것을 의미하므로 좋은 설명서와 많은 예제를 통해 최소한의 논리적 사고를 기대할 수 있습니다. – CsBalazsHungary