2012-06-25 4 views
0

org.pentaho.reporting.engine.classic.core.DataFactory와 더 구체적으로는 (이전에는 ContextAwareDataFactory의 일부였던) initialize 메소드를 살펴보면서 어떤 리소스/컨텍스트는 인터페이스를 통해 액세스 할 수 있습니다. ResourceManager를 통해.DataFactory 인터페이스를 통해 액세스 할 수있는 리소스

예를 들어 보고서에 정의 된 "리소스"에 액세스 할 수 있습니까? 예 : 데이터 소스 또는 수식 (쿼리 메서드를 통해 액세스 할 수있는 보고서 매개 변수 제외)? 미리 감사드립니다!

답변

1

resource-manager를 사용하면 zip/prpt 파일에 저장된 원시 데이터에 액세스 할 수 있지만 분석 된 보고서 나 구문 분석 된 구성 요소에는 액세스 할 수 없습니다.

리소스 관리자를 사용하면 포함 된 XML 또는 다른 파일을로드하고 쿼리 프로세스의 일부로 파싱 할 수 있습니다.

당신은 보고서 정의와 그 콘텐츠에 대한 액세스를 필요로 추가 불쾌한 무언가, 당신은 야생 해킹 사용하여 하위 보고서를 통해 이득 액세스 할 수 수행하는 경우 :

  1. 새 보고서 기능 만들기를 (코드를 통해). 이 함수에서 "reportInitialized"메서드를 재정 의하여 보고서 인스턴스 ("event.getState(). getReportDefinition()")을 가져옵니다. 해당 객체를 함수에 저장하고 함수의 "getValue()"메소드를 통해 반환하십시오.

  2. 해당 함수의 결과를 매개 변수로 서브 보고서에 전달하십시오.

  3. 이제 하위 리포트의 데이터 팩토리가 마스터 리포트 기능에서 반환 한 리포트 개체 인 매개 변수에 액세스 할 수 있습니다.

이 프로세스는 의도적으로 복잡하고 재미있는 작업이 아닙니다. 우리는 데이터를 쿼리하는 과정에서 보고서를 사용하는 것을 강력히 반대합니다.

P.S : 스크립팅 가능한 데이터 소스에서 SQL/MQL/MDX 데이터 소스에 액세스하려는 경우 PRD-3.9 이후에 이러한 데이터 소스에 내장 된 스크립트 확장을 사용하기 만하면됩니다. 정교한 및 신속한 대응을위한

http://www.sherito.org/2011/11/pentaho-reportings-metadata-datasources.html

+0

토마스, 감사합니다. 필자의 주요 의도는 보고서 내에 정의 된 다른 모든 데이터 소스 (SQL/Table/...)에 실제로 액세스 할 수있는 데이터 소스를 개발 한 후 각각의 TableModels를 활용할 수 있다는 것입니다 (queryData 그들 각각에). 위의 대답에서 나는 데이터 소스에 접근 할 수있는 직접적인 방법이 없다고 결론을 내렸다. (당연히, 내가 제안한 야생의 & 미친 해킹을 제외하고) 또는 prpt에 중첩 된 데이터 소스 xml 정의를 액세스한다. 내가 맞습니까? – oktrennen

관련 문제