项目配置

教学视频

简介

目前baskreport总共提供了四个包:

包名 说明
baskreport-core 核心包
baskreport-designer 报表设计器
baskreport-console 报表控制台
baskreport-font 报表字体库

它们之间依赖关系如下:

image-20210521150605348

从使用角度来看,我们可以分不同环境决定需要的包:

  • 开发环境: baskreport-designer,baskreport-font
  • 正式运行环境(没有管理需求): baskreport-core, baskreport-font
  • 正式运行环境(有管理需求): baskreport-console, baskreport-font

下面的配置我们默认以开发环境的需求进行说明。

配置baskreport.home参数

系统初始化需要指定一个home文件夹,首先我们在当前项目下添加一个home目录,本例该目录为:

D:/baskreport-test/home

然后可以选择如下的一种方式指定这个路径:

  • 通过VM参数指定
  • 通过系统环境变量指定
  • 利用bask report-init.properties配置文件指定

配置项目启动VM参数

配置项目启动VM参数:

-Dbaskreport.home=D:/baskreport-test/home

配置操作系统的环境变量

配置系统的环境参数:

BASKREPORT_HOME=D:/baskreport-test/home

配置baskreport-init.properties

项目的resources目录或src目录下添加baskreport-init.properties属性文件,并设置baskreport.home属性,参考:

baskreport.home=D:/baskreport-test/home

配置pom.xml的依赖

如果是Maven项目,则在pom.xml文件中添加baskreport相关的依赖包,配置如下:

<dependency>
    <groupId>com.basksoft.report</groupId>
    <artifactId>baskreport-font</artifactId>
    <version>${baskreport-font.version}</version>
</dependency>
<dependency>
    <groupId>com.basksoft.report</groupId>
    <artifactId>baskreport-designer</artifactId>
    <version>${baskreport-designer.version}</version>
</dependency>

其中baskreport-designer主要包含了报表设计工具,它依赖于baskreport-console这个Jar包,其中包含了报表管理控制台,基础的用户角色权限等功能设计。它们最终都依赖baskreport-core这个jar包,包含了baskreport 规则包的核心执行引擎。baskreport-font包是和报表打印预览的字体设置有关的jar包,也是基础包。 baskreport-font文件比较大,也可以自己下载安装。

在实际的使用过程当中,如果需要用到某个版本的SNAPSHOT,那么就需要在pom.xml当中添加一个repository信息,告诉Maven该到这里去下载SNAPSHOT版本的包,snapshot的仓库配置如下:

<repository>
    <id>sonatype</id>
    <url>https://s01.oss.sonatype.org/content/groups/public/</url>
</repository>

配置web.xml

如果你的项目是标准的web项目,有web.xml文件,则需要在web.xml中添加如下的filter:

<filter>
    <filter-name>baskreport</filter-name>
    <filter-class>com.basksoft.report.console.BaskReportFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>baskreport</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

相关的依赖jar,可以通过百度网盘直接下载: 链接: https://pan.baidu.com/s/1Zz-C0hjMA_Y4Sqn9MAx6Gg 提取码: i8em

SpringBoot项目配置

如果是spring-boot项目,则可以在项目中添加一个ReportConfig类,用以注册BaskReportFilter类给web容器,代码如下:

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.basksoft.report.console.BaskReportFilter;

@Configuration
public class ReportConfig implements WebMvcConfigurer {

    @Bean
    public FilterRegistrationBean<BaskReportFilter> registerReportFilter() {
        FilterRegistrationBean<BaskReportFilter> registration = new FilterRegistrationBean<BaskReportFilter>(new BaskReportFilter());
        registration.addUrlPatterns("/*");
        registration.setName("baskreportFilter");
        registration.setOrder(1);  
        return registration;
    }
}

另外baskreport也支持报表的文导入功能,由于SpringBoott的默认文件处理机制,我们需要再添加一个类:

import javax.servlet.http.HttpServletRequest;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Configuration
public class ReportMultipartResolver extends CommonsMultipartResolver{

    @Override
    public boolean isMultipart(HttpServletRequest request) {
        //如果是baskreport请求则不执行spring默认的MultipartHttpServletRequest转换
        if (request.getRequestURI().contains("/baskreport")) {
            return false;
        }

        return super.isMultipart(request);
    }

    @Override
    public MultipartHttpServletRequest resolveMultipart(final HttpServletRequest request){
        return super.resolveMultipart(request);
    }

}

利用spring配置属性设置baskreport的默认系统属性

在spring-boot环境下,如果不希望通过baskreport_home目录存储默认的配置,而是希望直接读取spring的属性,则可以利用SPI机制配置一个ApplicationConfigLoader的实现类:

package com.basksoft.report.core.config.bootstrap;

import com.basksoft.report.core.config.ApplicationConfig;

public interface ApplicationConfigLoader {
    ApplicationConfig load();
}

记得在resources目录下添加META-INF/services/com.basksoft.report.core.config.bootstrap.ApplicationConfigLoader文件,并且配置好ApplicationConfigLoader的实现类。 利用该实现类可以实现jdbc,jndi或自定义connection的数据源配置,参考代码:

package com.basksoft.baskreport.demo.config;

import com.basksoft.baskreport.demo.ToolSpring;
import com.basksoft.report.core.config.ApplicationConfig;
import com.basksoft.report.core.config.ConfigType;
import com.basksoft.report.core.config.bootstrap.ApplicationConfigLoader;

public class BaskConfigLoader implements ApplicationConfigLoader {

    @Override
    public ApplicationConfig load() {
        ApplicationConfig config = new ApplicationConfig();
        //可以读取自定义配置,例如spring相关配置信息
        config.getProperties().setProperty("baskreport.store.database.platform", "mysql");
        //ConfigType.jdbc
        config.setConfigType(ConfigType.jdbc.name());
        config.getProperties().setProperty("baskreport.store.database.driver", getProperty("baskserver.sampledb.driverClassName"));
        config.getProperties().setProperty("baskreport.store.database.url", getProperty("baskserver.sampledb.url"));
        config.getProperties().setProperty("baskreport.store.database.username", getProperty("baskserver.sampledb.username"));
        config.getProperties().setProperty("baskreport.store.database.password", getProperty("baskserver.sampledb.password"));
        config.getProperties().setProperty("baskreport.store.database.initialsize", "0");
        config.getProperties().setProperty("baskreport.store.database.maxTotal", "50");
        config.getProperties().setProperty("baskreport.store.database.minIdle", "2");
        config.getProperties().setProperty("baskreport.store.database.validationQuery", "select 1");
        config.getProperties().setProperty("baskreport.store.database.maxIdle", "10");

        //ConfigType.jndi
//        config.setConfigType(ConfigType.jndi.name());
//        config.getProperties().setProperty("baskreport.store.database.jndiname", "java:comp/env/sample");

        //ConfigType.connection
//        config.setConfigType(ConfigType.connection.name());
//        config.getProperties().setProperty("baskreport.store.database.classname", "com.basksoft.baskreport.demo.service.TestConnectionProvider");

        return config;
    }
    private static String getProperty(String key) {
        return ToolSpring.getEnvironment().getProperty(key);
    }
}

具体实现办法可以参考项目: https://gitee.com/xiaodaodao/baskreport-boot

results matching ""

    No results matching ""