Jasper レポートの入力ページのカスタマイズ
目的
Windchill Business Reporting (WBR) システムで、Jasper レポートのパラメータ入力ページを提供します。
バックグラウンド
Windchill Business Reporting (WBR) ソリューションでは、パラメータ付きのレポートがサポートされています。Windchill のビューアでは、レポートの実行時にパラメータ値を収集するための基本的な入力ページがユーザーに表示されます。多くの場合、この入力ページは、エンドユーザーによる操作性を改善するためにカスタマイズが必要です。入力ページをカスタマイズするには、標準の Windchill Java サーバーページ (JSP) 機能を使用します。
範囲/適用可能性/前提条件
このドキュメンテーションでは、Jasper レポート用にカスタム JSP を作成する方法について説明します。
Windchill サーバー JSP ディレクトリ <Windchill_ホーム>/codebase/wtcore/jsp へのアクセス権限があり、関連するサブディレクトリ <マイ入力ページパッケージ> に JSP 入力ページ <マイ入力ページ> を作成できることを前提とします。
サイトコンテキストで既存の Windchill レポートオブジェクト <マイレポート> を編集するアクセス権限があることを前提とします。
ソリューション
レポートのカスタム入力ページを構築および指定します。
手順 - オプションのパラメータの指定
カスタマイズポイント
Windchill データソースを使用する Jasper レポートでは、すべてのパラメータ値を指定する必要があります。ただし、ユーザーがオプションでパラメータ値を未設定のままにしておき、レポートによって関連基準が無視されるか、適切なデフォルト値が暗黙的に使用される場合、レポートはより役立つものになることがあります。この動作を実現するには、1 つのスペース (" ") からなるパラメータ値を渡すことができます。また、入力ページで 1 つのスペースをパラメータのデフォルト値にすることによって、ユーザーはパラメータ入力フィールドに何も入力する必要がなくなります。この方法を使用する場合は、基になるデータソースによって、渡されるスペースの値が必ず適切に処理されるようにする必要があります。
手順 - 省略するパラメータの指定
デフォルトでは、データソースパラメータのみが Windchill からの Jasper リクエストに含まれます。ただし、パラメータは、「parametersToOmit」リクエスト属性を使用して明示的に除外できます。これはサーブレットリクエストオブジェクト属性リストです。レポートのデータソースに対するパラメータのリストにある名前 "param1" を持つパラメータを省略するとします。この指定の例は次のとおりです。
<%
request.setAttribute("parametersToOmit",
Arrays.asList("param1"));
%>
制限事項
なし。
サンプルコード
<%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%>
<%@page import="java.net.URL"%>
<%@page import="com.ptc.windchill.enterprise.report.ReportHelper"%>
<%!private static void executeReport(final HttpServletRequest request, final
HttpServletResponse response, String reportName) throws Exception {
System.out.println("DemoInputPage.jsp:executeReport() :" + reportName);
if(request.getParameter("username") == null) {
throw new Exception("Authentication Needed");
}
response.sendRedirect("/");
}
%>
<%
String state = request.getParameter("PartReportTemplate_stateParameter");
if(state!=null)
{
try {
executeReport(request, response, "DemoReport");
}catch (Exception e) {
e.printStackTrace();
}
}%>
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Demo input page</title>
</head>
<body>
<form action="#" name="mainform" id="mainform" method="post" >
<br>
<center>
<h1>
Demo Input JSP for Report
</h1>
</center>
<br>
<br>
<br>
<h2> Parameter for PartReportTemplate</h2>
<hr/>
<table frame="box">
<th>Parameter Name</th>
<th>Parameter Value</th>
<tr>
<td>State(upper case e,g APPROVED)</td>
<td><input type="text" name="PartReportTemplate_stateParameter" /></td>
</tr>
</table>
<input type=hidden name="USER" id ="USER" value="<%=state %>">
<button type="submit">Generate Report</button>
</form>
</body>
</html>
Windchill コードでの使用例
すべての定義済みレポートでは Windchill JSP 入力ページを使用します。
これは役に立ちましたか?