
过去十年,得益于信息技术的快速发展,企业积累了越来越多的数据,能否充分利用已积累的数据资源是关系到任何一个业务系统能否持续有效地发挥作用的重要问题,因此,商业智能受到了越多越多的关注。与此同时,从传统BI到探索式BI,商业智能也经历了一次产品模式和理念上的巨大改变,这种改变不仅使得业务人员可以参与甚至主导整个数据分析流程,同时也加速了企业由IT驱动转向数据驱动(DT)的进程。 毫无疑问,随着企业对数据价值的认识更加深刻,以及市场的竞争的激烈,让企业的所有员工都可以参与到分析工作中成为了非常紧迫的工作,因此,探索式BI逐步取代传统BI的市场位置。 但在实际应用场景中,数据分析工作往往不是靠业务人员单打独斗,而是由企业的不同部门或团队通过写着一起来完成,这也就意味着,在未来,商业智能产品还应具备业务数据协作功能 所谓协作式分析,应该是让企业内的相关业务人员,基于数据进行分析的协同和决策。也就是说,协作式分析让企业的数据分析工作不再是“一个业务人员的战斗”,而是以协作的方式,让分析和决策变得更加简单高效。比如,销售团队可以同市场团队进行分析协作,共同找出新的增长机会;运营团队也可以同生产团队协作分析,基于实时的生产数据对库存进行及时调整。 国际知名咨询厂商Gartner在2018分析和商业智能魔力象限中就特别提到,基于分析内容的发布、共享和协作已经成为BI平台的关键功能之一。在此之前,Gartner首席分析师Dan Sommer也曾表示,随着越来越多的BI厂商向更广泛的用户群提供分析功能,有能力为这些用户群解决基于数据的协作分析将变得至关重要。 一方面,从Gartner的报告中我们可以读出,探索式BI的市场渗透率越来越高,用户对于分析协作的需求愈发强烈。 另一方面,随着IT基础设施的逐步完善,积累了越来越多的数据,市场的竞争更加激烈,商业智能成为企业经营中必不可少的一个工具。 所以笔者认为,基于这样的诉求和企业的竞争状况,商业智能产品的未来,一定探索式分析+协作式分析的有机融合。 另外,由于中国市场的竞争更加激烈,独特的文化影响,导致国内的商业智能发展,呈现出了很多的中国特色(例如:很多企业都是从报表系统跳过传统BI,直接切入了探索式BI)。一些国外的产品对中国市场并不适合。这就为一些国产软件厂商创造了有利的条件,尤其是拥有“中国式报表”+“探索式分析”产品组合的厂商,例如:帆软(finereport + fineBI)、皕杰(BIOS Report + BIOS iLook)。 笔者也相信,在不久的将来,国产厂商在商业智能的市场上会有更大的作为。
一、maven构建项目 1、访问http://start.spring.io/ 2、选择构建工具Maven Project、Spring Boot版本2.0.5以及一些工程基本信息,点击“Switch to the full version.”java版本选择8,可参考下图所示: 3、点击Generate Project下载项目压缩包 4、解压后,使用eclipse,Import -〉 Existing Maven Projects -〉 Next -〉选择解压后的文件夹-〉 Finsh,OK done! 二、引入web模块 1、pom.xml中添加支持web的模块: 〈dependency〉、 〈groupId〉org.springframework.boot〈/groupId〉 〈artifactId〉spring-boot-starter-web〈/artifactId〉 〈/dependency〉 pom.xml文件中默认有两个模块: spring-boot-starter:核心模块,包括自动配置支持、日志和YAML; spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito。 2、编写controller内容 @RestController public class HelloWorldController { @RequestMapping("/hello") public String index() { return "Hello World"; } } @RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了! 3、启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果了,有木有很简单! 三、皕杰web应用嵌套springboot项目 1、在springboot项目src/main文件夹下创建webapp目录 2、将皕杰报表demoserver/webapps/report下的bios_demo、bios_jsp、bios_web_res、WEB-INF文件夹复制到springboot项目src/main/webapp下 3、更改springboot项目的pom.xml 在〈dependencies〉〈/dependencies〉节点里添加 〈dependency〉 〈groupId〉org.springframework.boot〈/groupId〉 〈artifactId〉spring-boot-devtools〈/artifactId〉 〈optional〉true〈/optional〉 〈/dependency〉 〈dependency〉 〈groupId〉javax.servlet〈/groupId〉 〈artifactId〉jstl〈/artifactId〉 〈/dependency〉 〈dependency〉 〈groupId〉bijet-license〈/groupId〉 〈artifactId〉bijet-license-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bijet-license.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-cos〈/groupId〉 〈artifactId〉bios-cos-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-cos.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-cos〈/groupId〉 〈artifactId〉bios-cos-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-cos.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-ehcache-1.6.2〈/groupId〉 〈artifactId〉bios-ehcache-1.6.2-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-ehcache-1.6.2.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-iText-2.1.7〈/groupId〉 〈artifactId〉bios-iText-2.1.7-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-iText-2.1.7.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-poi-3.9〈/groupId〉 〈artifactId〉bios-poi-3.9-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-poi-3.9.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-poi-ooxml-3.9〈/groupId〉 〈artifactId〉bios-poi-ooxml-3.9-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-poi-ooxml-3.9.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉bios-report〈/groupId〉 〈artifactId〉bios-report-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/bios-report.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉dom4j-1.6.1〈/groupId〉 〈artifactId〉dom4j-1.6.1-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/dom4j-1.6.1.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉commons-logging-1.0.4〈/groupId〉 〈artifactId〉commons-logging-1.0.4-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/commons-logging-1.0.4.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉iTextAsian〈/groupId〉 〈artifactId〉iTextAsian-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/iTextAsian.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉javax.wsdl_1.5.1.v200806030408〈/groupId〉 〈artifactId〉javax.wsdl_1.5.1.v200806030408-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/javax.wsdl_1.5.1.v200806030408.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉javax.xml_1.3.4.v200902170245〈/groupId〉 〈artifactId〉javax.xml_1.3.4.v200902170245-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/javax.xml_1.3.4.v200902170245.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉org.apache.xerces_2.9.0.v200909240008〈/groupId〉 〈artifactId〉org.apache.xerces_2.9.0.v200909240008-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/org.apache.xerces_2.9.0.v200909240008.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉poi-ooxml-schemas-3.9-20121203〈/groupId〉 〈artifactId〉poi-ooxml-schemas-3.9-20121203-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/poi-ooxml-schemas-3.9-20121203.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉stax-api-1.0.1〈/groupId〉 〈artifactId〉stax-api-1.0.1-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/stax-api-1.0.1.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉xmlbeans-2.3.0〈/groupId〉 〈artifactId〉xmlbeans-2.3.0-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/xmlbeans-2.3.0.jar〈/systemPath〉 〈/dependency〉 〈dependency〉 〈groupId〉server〈/groupId〉 〈artifactId〉server-sdk〈/artifactId〉 〈version〉1.0〈/version〉 〈scope〉system〈/scope〉 〈systemPath〉${basedir}/src/main/webapp/WEB-INF/lib/server.jar〈/systemPath〉 〈/dependency〉 在〈build〉〈/build〉节点里添加 〈resources〉 〈resource〉 〈directory〉src/main/webapp/WEB-INF/resources〈/directory〉 〈includes〉 〈include〉**/*.properties〈/include〉 〈include〉**/*.yml〈/include〉 〈include〉**/*.xml〈/include〉 〈include〉**/*.tld〈/include〉 〈/includes〉 〈filtering〉false〈/filtering〉 〈/resource〉 〈/resources〉 4、新建reportConfig类配置皕杰报表servlet访问 package com.example.demo; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.*; import org.springframework.context.annotation.*; import bios.report.engine.output.*; @Configuration public class reportConfig { @Bean public ServletRegistrationBean servletRegistrationBean() { ServletRegistrationBean re = new ServletRegistrationBean(new ReportEmitter()); re.setLoadOnStartup(2); re.setName("reportServlet"); re.addInitParameter("reportConf", "config.xml"); re.addUrlMappings("/ReportEmitter"); return re; } public ServletRegistrationBean servletRegistrationBean1() { ServletRegistrationBean re = new ServletRegistrationBean(new ImageServlet()); re.setName("imageServlet"); re.addUrlMappings("/ImgServlet"); return re; } public ServletRegistrationBean servletRegistrationBean2() { ServletRegistrationBean re = new ServletRegistrationBean(new FillinServlet()); re.setName("fillinServlet"); re.addUrlMappings("/FillinServlet"); return re; } } 5、启动springboot项目,访问报表 http://localhost:8080/ReportEmitter?rpt=Demo/图文展现/动态色彩.brt
控制皕杰报表web端工具条有两个方案 1、全局控制 控制所有报表的工具条显示位置、是否显示和工具条按钮的是否显示。在web应用/[size=13.3333px]WEB-INF/resources/report_config.xml中控制。 〈!-- toolbar节点用于页面工具条配置--〉 〈toolbar〉 〈toolbardisplay〉below〈/toolbardisplay〉〈!--工具条显示信息(表格底部、下方、上方、不显示),bottom | below | top | none--〉 〈xlsbtn〉true〈/xlsbtn〉 〈!--是否显示整页导出excel按钮--〉 〈xlsbtn1〉true〈/xlsbtn1〉 〈!--是否显示分页导出excel按钮--〉 〈pdfbtn〉true〈/pdfbtn〉〈!--是否显示导出PDF按钮--〉 〈printbtn〉true〈/printbtn〉 〈!--是否显示打印按钮--〉 〈docbtn〉true〈/docbtn〉 〈!--是否显示导出WORD按钮--〉 〈/toolbar〉 2.单独控制 只控制一个报表的工具条显示位置、是否显示和工具条按钮的是否显示。这个可以在帮助文档-开发指南-Servlet介绍和taglib标签中查看参数,然后在访问报表url或标签里添加参数进行控制。
在使用皕杰报表的时候经常遇到特殊字符的输入,比如显示小方块或小方块里带√号,那么这些特殊符合如何输入呢? 1、用输入法自带的特殊字符输入,比如:搜狗输入法的特殊字符输入 2、利用char函数来处理,比如:用char(9744)来显示小方块,用char(9745)来显示带√号的小方块
在设计器里预览报表时出现错误,见图: 报表每个数据集单独运行都可以查出数据,但是点击总的浏览 报这个错是为什么?单从这个里还看不出到底是什么错误,这时你需要打开另一个预览看看。 这是设计器的临时授权到期了 查看设计器版本 : 设计器-帮助-关于 这个界面会提示设计器版本,然后去皕杰技术交流群-群文件-授权中,下载对应的授权文件。 然后根据授权文件这个文档替换相对于的授权jar包就可以了。