历史版本3 :定时调度程序模板 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本插件版本
11.0.5V1.0

1.2 应用场景

数据决策管理系统中的定时调度,在“调度对象”设置的步骤,可以选择程序报表执行。

说明1.png

2. 插件介绍编辑

2.1 插件安装

点击下载插件:XXXX(此处要添加插件市场该插件的链接)

设计器插件安装方法请参见:设计器插件管理

服务器安装插件方法请参见:服务器插件管理

2.2 操作方法

  1. 程序模板:安装定时调度程序模板插件后,打开数据决策管理系统,进入“管理系统->定时调度”页面,添加任务后,可以看到在“调度对象”界面,出现了“程序模板”选择界面,如下图所示:

说明2.png

原“模板选择”位置出现“选择程序”下拉框,可以选择一个放置在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. 示例编辑

程序模板文件:custom.zip


3.1 设计报表

  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;
    }
    }
  2. 继承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);
    }
    }
  3. 继承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. 注意事项

java类更新后需重启管理系统