1. 概述
2. 插件介绍
2.1 插件安装
点击下载插件:下载
设计器插件安装方法请参见:设计器插件管理
服务器安装插件方法请参见:服务器插件管理
2.2 操作方法
程序模板:安装定时调度程序模板插件后,打开数据决策管理系统,进入“管理系统->定时调度”页面,添加任务后,可以看到在“调度对象”界面,出现了“程序模板”选择界面,如下图所示:
原“模板选择”位置出现“选择程序”下拉框,可以选择一个放置在WEB-INF/classes中的自定义java类程序模板,以便在任务中执行。
其中,java类继承自com.fr.form.main.Form、com.fr.web.core.Reportlet、com.fr.main.impl.WorkBook三个系统类(请参考程序报表和java API)
其他配置和“报表模板”配置相同。文件名称默认使用java类的全名。
2、多选程序模板:安装定时调度程序模板插件后,打开数据决策管理系统,进入“管理系统->定时调度”页面,添加任务后,可以看到在“调度对象”界面,出现了“多选程序模板”选择界面,如下图所示:
此时,可以选择多个程序报表模板和多个普通模板,以便在任务中执行。其他配置和“多选报表模板”配置相同。程序报表模板文件名称默认使用java类的全名。
3. 示例
3.1 设计报表
继承com.fr.web.core.Reportlet:
public class MyReportlet extends Reportlet {
@Override
public TemplateWorkBook createReport(ReportletRequest req) {
WorkBook workbook = new WorkBook();
ReportWebAttr web = new ReportWebAttr();
web.setTitle(getClass().getSimpleName());
workbook.setReportWebAttr(web);
WorkSheet sheet = new WorkSheet();
//p1为模板参数,可在调用时传递
DefaultTemplateCellElement cell = new DefaultTemplateCellElement(0, 0, "Hello World, " + req.getParameter("p1"));
sheet.addCellElement(cell);
Formula f = new Formula("now()");
// 设置导出编辑结果时是否保留公式
f.setReserveInResult(false);
// 设置填报时计算后是否保留公式
f.setReserveOnWriteOrAnaly(true);
cell = new DefaultTemplateCellElement(1, 1, f);
sheet.addCellElement(cell);
workbook.addReport(sheet);
return workbook;
}
}继承com.fr.main.impl.WorkBook:
public class MyTemplateWorkBook extends WorkBook {
public MyTemplateWorkBook() {
super();
ReportWebAttr web = new ReportWebAttr();
web.setTitle(getClass().getSimpleName());
setReportWebAttr(web);
WorkSheet sheet = new WorkSheet();
DefaultTemplateCellElement cell = new DefaultTemplateCellElement(0, 0, "Hello World, ");
sheet.addCellElement(cell);
Formula f = new Formula("now()");
// 设置导出编辑结果时是否保留公式
f.setReserveInResult(false);
// 设置填报时计算后是否保留公式
f.setReserveOnWriteOrAnaly(true);
cell = new DefaultTemplateCellElement(1, 1, f);
sheet.addCellElement(cell);
addReport("sheet", sheet);
}
}继承com.fr.form.main.Form
public class MyForm extends Form {
public MyForm() {
super();
WBorderLayout layout = new WBorderLayout();
layout.setWidgetName("form");
WFitLayout body = new WFitLayout();
layout.addCenter(body);
body.setWidgetName("body");
body.setLayoutType(WBodyLayoutType.FIT);
/*
* 图表
*/
ChartEditor chartEditor = new ChartEditor();
chartEditor.setWidgetName("chart0");
chartEditor.getBorderStyle().setBackground(ColorBackground.getInstance(Color.white));
PiePlot4VanChart plot = new PiePlot4VanChart();
plot.setRoseType(ChartRoseType.PIE_DIFFERENT_ARC);
OneValueCDDefinition data = new OneValueCDDefinition();
data.setTableData(new NameTableData("ds1"));
data.setCategoryName("无");
data.setSeriesColumnName("产品类型");
data.setValueColumnName("销量");
data.setDataFunction(new SumFunction());
VanChart chart = new VanChart(plot);
chart.setFilterDefinition(data);
chart.getTitle().setTitleVisible(false);
chartEditor.resetChangeChartCollection(new ChartCollection(chart));
WTitleLayout chartLayout = new WTitleLayout();
chartLayout.setWidgetName("chart0");
chartLayout.addBody(chartEditor, new Rectangle(0, 0, 400, 180));
com.fr.form.ui.Label titleLabel = new com.fr.form.ui.Label();
titleLabel.setWidgetName("Title_chart0");
titleLabel.setWidgetValue(new WidgetValue(""));
chartLayout.addTitle(titleLabel, new Rectangle(0, 20, 400, 20));
BorderPacker borderStyle = chartEditor.getBorderStyle();
borderStyle.setType(LayoutBorderStyle.TITLE);
TitlePacker t = borderStyle.getTitle();
t.setTextObject("测试图表");
t.setPosition(Constants.CENTER);
body.addWidget(new WAbsoluteLayout.BoundsWidget(chartLayout, new Rectangle(0, 0, 400, 200)));
setContainer(layout);
// 模板数据集
DBTableData db = new DBTableData(new NameDatabaseConnection("FRDemo"), "select * from 销量");
putTableData("ds1", db);
}
}
3.2 效果预览
结果见下图:
4. 模板下载
5. 注意事项
java类更新后需重启管理系统