2016-07-15 4 views
1

Jaspersoft StudioとDeployRスクリプトを組み合わせようとしています。私はこのチュートリアルをMicrosoft hereから使用しています。これは実際にはiReport(Jaspersoft Studioの以前のソリューション)です。チュートリアルのように必要なjarファイルをクラスパスに追加し、DeployRにRスクリプトをデプロイしました。DeployRのJaspersoft Studioの新しいクエリ実行者

ジャスパーでレポートを実行した後、レポートに何も表示されず、エラーは表示されません。しかし、私は警告があります:No query executer factory class registered for deployrScript queries.このクラスjRQueryExecuter2はクラスパスにありますが、Jaspersoft StudioがdeployrScriptのクラスを見つけることができないことが問題だと思います!

<queryString language="deployrScript"> 
     <![CDATA[<deployr url="http://127.0.0.1:8000/deployr"> 
      <script filename="Cluster_Demo_Jasperserver.R" directory="root" author="testuser"/> 
     </deployr>]]> 
    </queryString> 

全体jrxmlがある:あなたが宣言を見ることができますjrxmlで

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="deployrSample" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5a314889-9cd2-4943-ad5f-13ef1bd6ca74"> 
    <parameter name="RRP_plotwidth" class="java.lang.Double" isForPrompting="false"> 
     <defaultValueExpression><![CDATA[555]]></defaultValueExpression> 
    </parameter> 
    <parameter name="RRP_plotheight" class="java.lang.Double" isForPrompting="false"> 
     <defaultValueExpression><![CDATA[555]]></defaultValueExpression> 
    </parameter> 
    <parameter name="RRP_dataset" class="java.lang.String"> 
     <defaultValueExpression><![CDATA["iris"]]></defaultValueExpression> 
    </parameter> 
    <parameter name="RRP_clusters" class="java.lang.Integer"> 
     <defaultValueExpression><![CDATA[3]]></defaultValueExpression> 
    </parameter> 
    <parameter name="RRP_clustering_type" class="java.lang.String"> 
     <defaultValueExpression><![CDATA["hclust"]]></defaultValueExpression> 
    </parameter> 
    <queryString language="deployrScript"> 
     <![CDATA[<deployr url="http://127.0.0.1:8000/deployr"> 
    <script filename="Cluster_Demo_Jasperserver.R" directory="root" author="testuser"/> 
</deployr>]]> 
    </queryString> 
    <field name="REPORT1" class="java.lang.String"> 
     <fieldDescription><![CDATA[file:cluster_output.png]]></fieldDescription> 
    </field> 
    <pageHeader> 
     <band height="63" splitType="Stretch"> 
      <image> 
       <reportElement x="30" y="10" width="50" height="37" uuid="4ce16c2b-5680-48b6-86e8-ce992c543a40"/> 
       <imageExpression><![CDATA["C:/Users/aort.png"]]></imageExpression> 
      </image> 
     </band> 
    </pageHeader> 
    <detail> 
     <band height="600" splitType="Stretch"> 
      <image scaleImage="RetainShape" hAlign="Center"> 
       <reportElement positionType="Float" x="100" y="40" width="353" height="218" uuid="f2294c37-5751-41f9-a3b4-fcfe80b69fec"/> 
       <imageExpression><![CDATA[$F{REPORT1}]]></imageExpression> 
      </image> 
     </band> 
    </detail> 
</jasperReport> 

およびRスクリプト:

library(cluster) 

#uncomment these lines to test in standalone mode 
dataset <- "mtcars" 
clusters <- 4 
clustering_type <- 'hclust' 
plotwidth<-555 
plotheight<-555 


if (dataset == 'iris') { 
    data <- iris[,1:4] 
    df <-data.frame(data$Sepal.Length, data$Sepal.Width) 

} else if (dataset == 'mtcars') { 
    data <- mtcars 
    df <-data.frame(data$drat, data$disp) 
} else { 
    stop("Enter a valid dataset") 
} 

if (clustering_type == 'kmeans') { 

    fit <- kmeans(df, clusters) 
    png("cluster_output.png", width=plotwidth, height=plotheight); 
    clusplot(df, fit$cluster, color=TRUE, shade=TRUE, labels=0, lines=0, main = dataset) 
    dev.off() 

} else if (clustering_type == "hclust") { 

    d <- dist(as.matrix(df)) 
    fit <-hclust(d) 
    png("cluster_output.png", width=plotwidth, height=plotheight); 
    plot(fit, main = dataset) 
    dev.off() 

} else { 
    stop ("enter a valid clustering type") 
} 

DeployRコード:

library(cluster) 

#uncomment these lines to test in standalone mode 
#dataset <- "iris" 
#clusters <- 4 
#clustering_type <- 'hclust' 
#plotwidth<-555 
#plotheight<-555 
if (dataset == 'iris') { 
    data <- iris[,1:4] 
    df <-data.frame(data$Sepal.Length, data$Sepal.Width) 

} else if (dataset == 'mtcars') { 


data <- mtcars 
    df <-data.frame(data$drat, data$disp) 
} else { 
    stop("Enter a valid dataset") 
} 

if (clustering_type == 'kmeans') { 

    fit <- kmeans(df, clusters) 
    png("cluster_output.png", width=plotwidth, height=plotheight); 
    clusplot(df, fit$cluster, color=TRUE, shade=TRUE, labels=0, lines=0, main = dataset) 
    dev.off() 

} else if (clustering_type == "hclust") { 

    d <- dist(as.matrix(df)) 
    fit <-hclust(d) 
    png("cluster_output.png", width=plotwidth, height=plotheight); 
    plot(fit, main = dataset) 
    dev.off() 

} else { 
    stop ("enter a valid clustering type") 
} 

Narcisによって提案されているように、プロパティにnet.sf.jasperreports.query.executer.factory.deployrScript=com.revo.deployr.client.jasper.factory.RQueryExecuterFactoryを追加しましたが、REPORT1フィールドは空ですが、レポートには何も表示されません。
私の質問は、Jaspersoft StudioにDeployRを追加する方法です。

+0

iReportで同じレポートをチェックしましたか? –

+0

いいえ、jaspersoft Studioのみを使用しています – Iman

答えて

1

このチュートリアルでは、クエリー実行者(DeployRカスタムクライアントライブラリセクションの9番めのポイント)の登録方法について詳しくはわかりません。

クラスパスにjarファイルを追加するだけでなく、あなたはまた、Jaspersoft Studioでこのようなプロパティを設定する必要があります:あなたのケースで

net.sf.jasperreports.query.executer.factory.[your_query_language_name]=[the_canonical_name_of_your_query_executer_factory_class] 

あなたが持っている必要があります。

net.sf.jasperreports.query.executer.factory.deployrScript=com.revo.deployr.client.jasper.factory.RQueryExecuterFactory 

をあなたが計画している場合これをJasperReports Serverインスタンスで使用するには、<webapp-path>/WEB-INF/classes/jasperreports.propertiesファイルのwebappと同じプロパティを設定する必要があります。この場合、アプリケーションの再起動が必要です。

+0

あなたが書いたとおりにしました。まだ報告書は出ていません!ジャスパーは、作成した画像を取得してREPORT1フィールドに入れる方法を知っていますか? – Iman

+0

image要素の代わりにテキストフィールドを使用すると、テキストフィールドの値がNULLになります – Iman

+0

申し訳ありませんが、誤ってプロパティキーに誤植が挿入されました。私はこれを修正するために私の答えを編集しました。これにより、クエリ実行者の登録が修正されるはずです。最初のコメントであなたの質問に答えるために、私はDeployR Clientコードを見て調べる必要があります。これはJasperReportsコード(JasperSoft Studioのコア)です。 – Narcis

関連する問題