2016-06-02 2 views
-1

내 문제는 다음과 같습니다PHP 클라이언트를 통해 재스퍼에 도메인을 만드는 방법

내가 재스퍼 커뮤니티에서 PHP 클라이언트 http://community.jaspersoft.com/wiki/php-client-sample-code#About_the_Class있어. Jasper Repository에 PHP가있는 도메인을 추가하고 싶습니다. 레이블 등 .xml에 필요한 데이터가 있습니다. 이 PHP 클라이언트에서 SemanticLayerDataSource 클래스를 사용하여 도메인을 만들어야합니다. 이 클래스에는 공용 변수 스키마가 있습니다. 하지만이 스키마가 작동해야하는 것을 찾을 수 없으며 올바른 도메인을 저장소에 추가 할 수 없습니다. 웹 사이드 나 수업에 정보가 없습니다.

$semLayer = new SemanticLayerDataSource(); 
$semLayer->schema = ????? 
$semLayer->label = (string)$xml->label; //SimpleXml 
. 
. 
. 

어떤 데이터에 스키마가 필요합니까? 배열, 리소스 또는 다른 것? 고맙습니다. 또한 PHP 클라이언트를 사용하는 코드 샘플이 실제로 좋을 것이므로이 시점에서 문서가 좋지 않을 수 있습니다.

편집 :이 XML의 URI에 대한 스키마 집합에 대한 로컬 파일로 xml을 만들려고했습니다. XML을 만들려면 다음을 사용했습니다. http://community.jaspersoft.com/wiki/php-client-sample-code#Creating_Binary_Resources 도메인을 만들 수 있지만이 도메인의 AdHoc보기가 작동하지 않습니다. 나는 벽옥에서 널 예외를 얻는다.

답변

0

글쎄, 해결책을 찾았습니다. PHP 클라이언트 당 스키마를 만들려면 새 파일 객체를 만듭니다.

$file = new \Jaspersoft\Dto\Resource\File(); 
$file->type = "xml"; 
$file->label = "MyDomain_schema"; 
$file->content = base64_encode((string)$schemaXML); 

파일 내용은 base64로 인코딩 된 (유효한) 도메인 스키마입니다. 이제 $semLayer->schema = $file으로 설정하십시오. 이 방법은 오히려 잘 작동합니다. 또한 다중 요청을 통해 도메인을 만드는 방법이 있지만이 방법은 PHP 클라이언트에서 다소 복잡합니다. PHP 클라이언트에는 multipartrequest 함수가 있지만이 함수는 레거시 코드로 구성되어있는 것으로 보입니다.

1

당신이 스키마 ressource 제공하는 데 필요한 REST API docs에 따르면

: (도메인 스키마 작업 단락 아래) domain metadata service description에 기록 된대로,

<schemaFileReference> 
    <uri>{schemaFileResourceUri}</uri> 
</schemaFileReference> 

이 ressource는 전체 구조를 나타냅니다를

v2/domains/metadata 서비스는 내부 정의가 아닌 도메인에 대한 표시 정보 만 반환합니다. 도메인의 내부 구조를 정의하는 필드, 조인, 필터 및 계산 된 필드는 도메인 디자인을 구성합니다. 도메인 디자인의 XML 표현을 도메인 스키마라고합니다.

현재 도메인 스키마와 상호 작용하는 REST 서비스는 없지만 v2/resources 서비스를 사용하여 원시 스키마를 검색 할 수 있습니다. 먼저, 도메인에 대한 자원 설명자를 검색하십시오.

GET http://<host>:<port>/jasperserver-pro/rest_v2/resources/Domains/supermartDomain 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<semanticLayerDataSource> 
<creationDate>2013-10-10 15:30:31</creationDate> 
<description>Comprehensive example of Domain (pre-joined table sets for complex reporting, custom query based dataset, column and row security, I18n bundles)</description> 
<label>Supermart Domain</label> 
<permissionMask>1</permissionMask> 
<updateDate>2013-10-10 15:30:31</updateDate> 
<uri>/organizations/organization_1/Domains/supermartDomain</uri> 
<version>1</version> 
<dataSourceReference> 
    <uri>/organizations/organization_1/analysis/datasources/FoodmartDataSourceJNDI</uri> 
</dataSourceReference> 
<bundles> 
    <bundle> 
     <fileReference><uri>/organizations/organization_1/Domains/supermartDomain_files/supermart_domain.properties</uri></fileReference> 
     <locale></locale> 
    </bundle> 

(중략) [...]

도메인 스키마가 XML 파일은 예를 들어, 사용 (jasperadmin로 로그인)는 다음 요청을 supermart의 도메인에 대한 설명을 보려면 JasperReports Server User Guide에 설명 된 구조로 구성됩니다. 프로그래밍 방식으로 스키마를 수정하려면 자체 구문 분석기를 작성하여 해당 필드와 정의에 액세스해야합니다. 그런 다음 도메인의 스키마 파일을에서 설명 된 파일 업데이트 방법 중 하나로 바꿀 수 있습니다.

+0

답변 해 주셔서 감사합니다. 슬프게도 나는 PHP로 무엇을 코딩 해야할지 전혀 모른다. 좀 더 명확하게 만들 수 있습니까? – Mehno

+0

도메인 메타 데이터 설명 페이지를 확인하여 XML이 어떻게 보이는지 파악하십시오. 그런 다음 도메인 구조로 XML 파일을 만듭니다. 파일을 만들었 으면 파일을 가리 킵니다 (예 :'schema = "/myfolder/schema.xml"'). – tobi6

+0

글쎄, 내가 여기에 약간 바보일지도 모르지만 도메인을 만들지 않으면 도메인을 사용하여 XML을 어떻게 만듭니 까? – Mehno

관련 문제