0

Jasperserver 4.5.0 Pro を使用しています。いくつかの追加機能用にカスタム データ ソースを開発しました。このカスタム DS を使用するすべてのレポートは適切に実行され、手動で実行すると正しい出力が表示されます。ただし、Jasper のレポート ジョブ スケジューラを使用して同じレポートをスケジュールすると、セッションの開始に問題が発生し、レポートが実行されません。

これについて少し説明させてください。

  1. レポートを手動で実行する場合 -

カスタム DS の一部として、次の 2 つの xml を更新する必要がありました -

viewReportFlow.xml : アクション状態「runReport」を更新して、カスタム DS 実行アクション Bean メソッド「xmlHttpDsExecuterAction.setUpSession」を使用してセッションを開始しました。以下の runReport のタグを参照してください -

<action-state id="runReport" xmlns:b="http://www.springframework.org/schema/webflow" xmlns:xi="http://www.w3.org/2001/XInclude">
<on-entry>
    <evaluate expression="xmlHttpDsExecuterAction.setUpSession"/>
</on-entry>
<evaluate expression="viewReportActionBean"/>
<transition on="success" to="reportOutput"/>
<on-exit>
    <evaluate expression="xmlHttpDsExecuterPageAction.setIndex"/>
</on-exit>

viewReportBeans.xml : 上記のフロー xml で使用される実行者アクション Bean をここで定義しました -

<bean id="xmlHttpDsExecuterAction" class="com.sigma.reporting.xmlhttpds.XmlHttpDsExecuterAction" xmlns:xsi="http://www.w 3.org/2001/XMLSchema-instance"/> <bean id="xmlHttpDsExecuterPageAction" class="com.sigma.reporting.xmlhttpds.XmlHttpDsExecuterPageAction" xmlns:xsi="http://www.w 3.org/2001/XMLSchema-instance">
<property name="requestParameterPageIndex" value="pageIndex"/>
<property name="flowAttributePageIndex" value="pageIndex"/>
<property name="xmlHttpDataSourceName" value="com.sigma.reporting.xmlhttpds.XmlHttpDsExecuterDataSourceService"/>
<property name="repository">
    <ref bean="repositoryService"/>
</property>
<property name="jasperPrintName" value="jasperPrintName"/>
<property name="reportUnitObject" value="reportUnitObject"/> </bean>
  1. レポートのジョブスケジューリングの場合:スケジューラを使用して上記と同様に実装したい。調査中に、スケジューラ フローを分析し、変更を適用しようとしましたが、今のところうまくいきません。スケジューラを介してレポートを実行するために使用されるフローを教えてください。また、上記のカスタム DS を構成する場所を推奨してください。
4

1 に答える 1

0

最後に、japserサーバースケジューラのフローを理解した後、私はこれに対する解決策を手に入れました。カスタムデータソースBeanを設定して関数を呼び出すには、でBeanの宛先を指定する必要があります。$JASPER_HOME/apache-tomcat/weaaps/jasperserver-pro/WEBINF/flows/reportJobBeans.xmlこのBeanは、reportJobFlow.xmljobOutputタグで使用できます。

 <view-state id="jobOutput" view="modules/reportScheduling/jobOutput">
        <on-entry>
            <set name="flowScope.prevForm" value="'jobOutput'"/>
            <evaluate expression="reportOptionsJobEditAction.setOutputReferenceData"/>
            <evaluate expression="xmlHttpDsExecuterAction.setUpSession"/>
        </on-entry>
 </view-state>
于 2012-07-03T13:31:52.353 に答える