1. 描述
1)管理系统的节点只有在开启了分级授权的情况下才能使用。
2)权限管理,去掉了所有部门、所有职务。
3)用户的加密方式:如果以前用户存的是明文,升上来以后,不再能登录上了,只能去重置了。
4)升级后,权限配置半选状态 升级后将没有权限。
5)浏览器兼容,平台只支持 IE9 及以上的(IE8 只兼容登录与目录看板功能,管理系统中的功能需要 IE9 及以上版本)。
6)单点登录兼容:单点登录的客户升级到 10.0 要进行重新适配。
7)外置数据库支持说明。
8)容器支持说明,10.0 支持的容器:
Tomcat7 及以上,( Tomcat7 编码修改为 UTF-8,Tomcat8 不需要修改)
JBoss6.0.0 及以上
WebLogic12c 及以上
WebSphere8.5.5.9 及以上
Jetty8.0 及以上
GlassFish3.0 及以上
Resin4.0.4 及以上
9)日志存储抛弃了 HSQL,使用帆软自主研发的 Swift 引擎进行替换
10)错误日志:进行了梳理,平台里能看到大部分,会随着需求的增加而增加;另外在日志文件里可以看到所有的日志。
11)插件兼容:好多插件需要用 10.0 版本。
12)XML 兼容:由于升级到了 Servlet3.0 标准所以,老的 web.xml 自定义的内容将不再兼容。
13)定时调度 9 升级 10,可能含有 8.0 的任务,升级后 8 和 9 的任务都可以编辑。
升级上来的用户组数据构成(优先级排序):
选了移动端推送的用户作为用户组
选了邮件推送的用户(角色除外)作为用户组
选了下拉用户的作为用户组。
任务重新入库后,开始执行时间推后1小时,避免在升级过程中任务立即执行一次。(这个对任务的执行不会有影响)
8.0 的任务,设置了明细频率执行,升级后,会转换成 cron 表达式形式,执行周期不变,不影响使用
14)2018-07-31 的 JAR 包版本不支持移动端(APP/HTML5)
15)HTML 解析暂不支持 table
16)$fr_username、$fr_authority、$fr_userposition,在 10.0 里分别对应 $fine_username、$fine_role、$fine_position,这 3 个都做了兼容
17)JS 进行页面跳转:9.0 中 JS 页面跳转 ${servletURL}?reportlet=WorkBook2.cpt ,在 10.0 中使用 FR.doHyperlinkByPost 进行 POST 传参可能会导致参数无法正常传递 ,需将 reportlet 改为 10.0 中的 viewlet 。
18)9 升级 10 版本后,8.0 和 9.0 工程中带参数的 URL 不兼容,标准的 URL 格式可以自动兼容。
19)9 升10 ,FineDB 表结构会有较大差异,所以涉及到 finedb 表的查询语句和公式函数可能会失效。
20)9 升10 后,平台访问 URL 发生变化,需要访问 9.0 默认的 URL 或10.0 支持的 URL ,如本地服务器可修改为:http://localhost/WebReport/ReportServer?op=fs 或 http://localhost/WebReport/decision 。
2. 移动端兼容说明
9.0 中进行微信/钉钉集成后,通过升级工具进行升级说明:
1)升级工具要求采用 2018 年 11 月 12 号及之后的版本。
2)升级后,App 端服务器地址需手动修改为 10.0 平台地址。
3)升级后微信/钉钉的配置会保留。但由于 10.0 平台访问路径调整,升级后需要打开微信/钉钉管理界面,将服务器地址修改为 10.0 平台地址。
4)打开微信/钉钉管理>应用快捷配置,重新生成链接,进入微信/钉钉管理后台修改新的链接。
5)9.0 中开启模板权限时访问单个模板需要用 WeiXinServer,10.0 中已不再需要,直接采用生成的模板链接即可,注意修改微信管理后台绑定的模板链接及定时调度推送的自定义链接。
6)第三方 App 集成 H5 时,如果调用平台 URL,路径格式为 :http://localhost:8075/webroot/decision/url/mobile,调用单张模板仍然为路径后加上op=h5参数。
3. 模板兼容说明
若 FR10.0 继续沿用 FR9.0 设计出来的模板,由于文件路径及访问路径的调整,部分模板需要单独处理,下面列举具体操作。
3.1 文件路径
10.0 中调整了各个文件的路径,文件对比如下图所示:
在模板中进行引用时,需要修改为新的地址,详情参考:引用 CSS
3.2 接口说明
9.0 中 JS 页面跳转链接地址为:${servletURL}?reportlet=WorkBook2.cpt
在 10.0 中使用FR.doHyperlinkByPost进行 post 传参可能会导致参数无法正常传递 ,需将 reportlet 改为 10.0 中的 viewlet。
详情参见:组织树传参
4. 图表兼容说明
4.1 地图文件的处理
10.0 的地图调整了目录结构,新增「world」目录,且置于「中国」目录之上,形成钻取关系,如下图所示:
而用户制作的 9.0 模板中地图路径为类似的绝对路径:'assets/map/geographic/中国/上海市.json'
按照 10.0 中的默认目录结构,模板中地图路径必须为'assets/map/geographic/world/中国/上海市.json'才可正常识别。
以下提供两种图表升级方案:
方案一:使用9-10升级工具升级
1)2019 年 8 月 16 日之前升级的用户,需要下载并替换该地图文件%FR9.0_HOME%\WebReport\WEB-INF\assets\map下的geographic文件。如下图所示:
点击下载文件: geographic.rar
2)2019 年 8 月 16 日之后升级的用户,无需进行任何处理,升级工具会自动升级地图文件
方案二:手动迁移模板
直接下载的 10.0 exe 进行安装之后,迁移 9.0 模板至 10.0 工程目录下后,还需将 9.0 地图目录(assets/map/geographic下以及assets/map/image下的文件)迁移到 10.0 同一目录下。
4.2 老图表的相关说明
关于老图表需注意以下几点:
1)10.0 不再提供新增老图表的功能,不过老模板中已经存在的老图表依然支持设置和预览。
切换图表类型的下拉框灰化。其余数据,样式等设置项可正常设置并生效。
注:如需使用旧图表,请安装 图表(旧版本)插件
老图表兼容到 10.0 后,取消图表切换的新增按钮。图表切换中已经存在的各图表,数据、样式等设置项可正常设置并生效。
2)10.0 不再支持位图地图插件。
5. 插件兼容说明
5.1 官方插件
官方插件 | 兼容状态 |
---|---|
FineBI数据转移 | 9.0 版本有此插件,10.0 版本废弃此插件 |
决策平台使用infromix | |
浏览器兼容性设置 | |
本地软件打印 | |
平台数据迁移 | |
FineIndex数据集 | |
登录决策平台增加验证码功能 | |
阿里云OTS数据集 | |
集群部署 | |
分级权限管理 | |
输出离线HTML报表 | |
决策平台升级更新 | 9.0 版本使用插件,10.0 已内置此功能 |
扫码控件 | |
多级上报集成 | |
报表自适应插件 | |
内置推送插件 | |
模板版本控制 | |
设计器更新升级 | |
水印插件 | |
高级系统监控 | |
工程迁移 | 未兼容,需下载对应版本插件 |
自定义OdbcDialect | |
星环直连 | |
只支持中文搜索的下拉框控件 | |
自定义JtdsDialect | |
权限导出 | |
邮件排序 |
5.2 第三方插件
第三方插件 | 兼容状态 |
---|---|
图标可自定义插件 | 9.0 版本有此插件,10.0 版本废弃此插件 |
第三方插件 | 主题类插件无法兼容,需下载对应版本插件 |
蓝绿主题 | |
天空主题 | |
平台主题切换 | |
Mac扁平主题 | |
酷黑侧滑导航 | |
Metro主题 | |
酷炫主题 | |
Varied Minton | |
琉璃主题 | |
青绿主题 | |
Simple主题 | |
Material Design 主题 | |
酷黑主题 | |
嵌入部署主题 | 未兼容,需下载对应版本插件 |
思维导图 | |
韦恩图 | |
马赛克图表 | |
卡通折线图 | |
彩色3D折线图 | |
3D里程碑 | |
登录增强接口 | |
渐变折线图 | |
导出OFD | |
数据查询事件版 | |
自定义模板目录 | |
自定义邮件发送人 |
6. 开发兼容说明
相关功能 | 9.0 写法 | 10.0 新写法 |
---|---|---|
国际化 | Inter.getLocText(key) | 设计器:com.fr.design.i18n.Toolkit.i18nText(key) 服务器:InterProviderFactory.getProvider().getLocText(key) |
日志打印方式 | FRLogger.getLogger() FRContext.getLogger() FRLoggerFactory.getLogger() | FineLoggerFactory.getLogger() |
日志接口 | FRLoggerProvider | FineLoggerProvider |
模板访问路径 | ?reportlet=xxx.cpt?formlet=xxx.frm | /view/form?viewlet=xxx.frm/view/report?viewlet=xxx.cpt |
env 接口 | Env | Workspace |
env 获取方式 | FRContext.getCurrentEnv() | WorkContext.getCurrent() |
session 信息类名修改 | SessionIDInfor | SessionIDInfo |
session 操作类 | SessionDealWith | SessionPoolManager |
获取当前登录用户方式 | FSAuthentication/getUserInfo() | LoginService.getInstance().getCurrentUserNameFromRequest(req) |
管理员的判断 | FSAuthentication/isRoot() | 需要通过获取用户 id 并和 AuthorityStaticItemId.SUPER_USER_CUSTOM_ROLE 比较 |
配置文件的写法修改 | 继承 XMLFileManager 读取和写入 xml | 继承 Configuration 写入数据库和从数据库读取 |
sessionid 的传送 | 在前台通过 post 方式传递 sessionid | 将 sessionid 添加到 header 中传递,也可以使用 get 方式传递 sessionid |
平台消息接口 | com.fr.base.platform.msg.Message | com.fr.decision.system.bean.message.Message |
系统消息发送 | SystemMessageDeal.getInstance().save(message) | SystemContext.getInstance().getMessageController().saveMessage(message) |
module 启动方式 | ModuleContext.startModule("XXModule.class") | 定义 activator 的方式,并将声明的 activator 注册到 xml 中 |
参数 map 转字符串 | FRLogger.createParamString(para) FRLogger.createParamString(para,excludeParas) | TextUtils.createParamString(para) TextUtils.createParamString(para,excludeParas) |
后台 http 连接 | HttpClient(String url) HttpClient(String url,HashMap<String, String> para) HttpClient(String url, HashMap<String, String> para, boolean encode) | HttpToolbox.get(url) HttpToolbox.appendQuery(prefix, new String[]{xxx}, new String[]{}) |
平台所有配置邮箱用户获取 | ConfigManager.getProviderInstance() .getEmailManager().getAllMailUsers(true) | UserService.getInstance().getAllUsers(currentUsername, userSearchBean, true) userSearchBean 是用户搜索附加的一些属性(分页、关键字、部门职位等) |
多报表访问 | ({reportlet:/k1.cpt},{reportlet:/k2.cpt}) | encodeURIComponent("[{reportlet:k1.cpt}, {reportlet:k2.cpt}]") |
插件访问数据库的方式 | 自定义 DAO ,可参考 MessageDataAccessObject | 使用 DBAccessProvider 注册 DAO |
平台请求处理 | 通过注册 service 和 action 实现请求的分发和处理 | 使用 spring 通过添加 @Controller 和 @RequestMapping 注解实现请求的映射和处理 |