2012-11-20 2 views
0

JBoss EAP 5.3 내에 배포 된 내린 저울 엔진을 관리하기 위해 Guvnor (JBoss BRMS)를 사용하고 있습니다. Oracle 용 11g 인스턴스를 RDBMS로 사용하도록 Guvnor를 변경했습니다. Guvnor를 사용하여 새 repository.xml을 생성하고이를 JBoss 디렉토리의 'bin'폴더에 저장했습니다. Guvnor와 Drools는 잘 돌아 갔고 Oracle 11g 인스턴스에 연결하는 것이 행복해 보였습니다.Oracle 11g를 사용하기 위해 JBoss BRMS (Drools) 변경 : 패키지를 빌드 할 수 없습니다.

그런 다음 패키지를 만들고 새 규칙을 추가했습니다. 내가 추가 한 규칙은 다음과 같습니다.

dialect "mvel" 

rule "TimeToClearRule" 
when 
    #conditions 
then 
    #actions 
end 

이 규칙의 유효성을 검사 한 다음 패키지를 다시 작성했습니다. 다 잘 됐어!

그러나 규칙에서이 함수를 사용하려는 의도로 규칙 위에 함수를 추가했습니다. 규칙이 다음과 같이 변경되었습니다.

dialect "mvel" 

function double logNormalPdf(double mu, double sigma, double timeT) { 
    return 0.0; 
} 

rule "TimeToClearRule" 
when 
    #conditions 
then 
    #actions 
end 

이 규칙의 유효성을 검사하고 패키지를 다시 작성했습니다. 그러나 오류가 발생했습니다. 아이템을 저장할 수 없습니다. 내 보스 로그에 다음 오류가 표시되었습니다

17:59:51,815 ERROR [BundleWriter] Error while storing blob. id=9d26c61c-4dde-4009-a518-1f226431aa80/{http://www.jboss.org/drools-repository/1.0}compiledPackage idx=0 size=4353 
java.lang.IllegalStateException: Unable to insert index for string: compiledPackage 
at org.apache.jackrabbit.core.persistence.pool.NGKDbNameIndex.insertString(NGKDbNameIndex.java:66) 
at org.apache.jackrabbit.core.persistence.pool.DbNameIndex.stringToIndex(DbNameIndex.java:95) 
at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager$DbBlobStore.createId(BundleDbPersistenceManager.java:1334) 

Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("DROOLS"."PM_WS_DEFAULT_NAMES"."ID") 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) 
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879) 

Drools가/우두머리는 규칙의 유효성을 검사 기본 DBMS 솔루션을 사용하고 (참고하지 전체 스택 트레이스 만 나는 근본 원인을 생각하는 것을 추가) 괜찮아. DBMS를 오라클 11g으로 옮긴 이래로이 규칙은 더 이상 유효성을 검사 할 수 없으며 패키지가 구축되었습니다.

나는 왜 이런 일이 일어나고 있는지를 놓치고 있습니다. 제공되는 모든 도움을 많이 주시면 감사하겠습니다.

감사

UPDATE 오른쪽, 나는 내가 믿는 것은 문제가 발견했다. 위의 예에서 내가 놓친 뭔가가 오류의 원인으로 밝혀졌습니다. '수학'함수 (java.lang.Math)를 사용하고 있는데 위의 오류가 발생한 것 같습니다. 내가 만들고있는 규칙은 다음과 같습니다 :

import java.lang.Math 

dialect "mvel" 

function double logNormalPdf(double mu, double sigma, double timeT) { 
    return Math.log(2); 
} 

rule "TimeToClearRule" 
when 
    #conditions 
then 
    #actions 
end 

수학 함수는 drools/guvnor로 처리 할 수 ​​있습니까? 그렇지 않다면 어떻게 사용합니까? 오라클 저장소에 필요한 모든 테이블을 생성하지 못할 수도 있습니다 DB를 구성, 챔피언들/잭 래빗에 문제가있는 것처럼

감사

+0

repository.xml을 내보내고 bin 폴더의 원래 repository.xml을 바꾸지 않고 가져 왔습니까? – uaarkoti

+0

안녕하세요. jBug, 저장소를 가져 오는 옵션을 찾을 수 없습니다. 내보내기 만 있습니다. – ScreamingMage

답변

0

는 것 같습니다. 새 oracle 스키마에 대한 새로운 db 연결을 시도하십시오.

+0

안녕하세요 alikox, 내가이 소용돌이 줄게하고 문제를 해결하는 방법을 참조하십시오. – ScreamingMage

+0

한 가지, 나는 새로운 스키마를 만들었고 모든 테이블을 생성 한 것 같습니다. 예외에서 참조 된 테이블이 있습니다. 어떤 이유로 든 null을 테이블에 삽입하려고합니다. – ScreamingMage

+0

나는 당신이 alikox를 제안한 것을 시도했으나 효과가 없었습니다. Guvnor가 제공 한 기본 JackRabbit 솔루션을 사용하기 시작한 것 같습니다. – ScreamingMage

관련 문제