本章节主要讲述如何通过页面方式访问乐创者多维透视分析(lczPivot)的透视模型。

1 集成说明

透视模型需要以独立页面方式呈现,根据业务情景不同,可分为以下两种情景:

1.1 通过浏览器直接访问

包括以下几种方式:
1)、在新开页面中打开
2)、从当前页面跳转到透视模型页面
以上方式直接通过URL地址即可访问透视模型页面,PC支持,移动端暂不支持。

1.2 将透视模型页面作为业务系统页面的一部分

当把透视模型页面作为子页面集成到业务系统的某个页面中(常见的业务系统左边是菜单,点击菜单项时,右边显示透视模型内容)时,需要通过iframe标签方式进行加载。

<iframe src="透视模型访问URL" style="width:100%;height:600px;border:0px;" border="0" frameborder="0" ></iframe>

2 访问规范

透视模型页面URL规范:

Request Method:GET
Request URL:{http}://{ip}:{port}/{lczServer}/hrServlet?type=pivotReport&请求参数

组成说明
  {http}   网络协议名称,支持http或https两种协议
  {ip}    乐创者服务部署所在的 Internet 主机名,支持ip地址或域名
  {port}   乐创者服务部署所在Web应用服务器的访问端口。如果是80或443端口,可缺省
  {lczServer} 乐创者服务应用名,乐创者服务部署时的应用上下文根目录(Web Context-root),可根据业务需要调整为其他名称。当乐创者服务代码发布在“ROOT”目录下时,内容为空即可。

3 请求参数

支持明文密文两种传参方式。

注意:
参数值包含中文或特殊字符时需URL编码。
javascript代码示例:url += ‘&variants=’ + encodeURIComponent(‘年份=2019;月份=1’)
java代码示例:url += “&variants=” + java.net.URLEncoder.encode(“年份=2019;月份=1”, “UTF-8”)

3.1 通过明文方式访问

必选参数

参数名
类型
默认值
说明
targetVolume string 透视模型模板文件所属应用的内部名称。
fileName string 透视模型模板文件的内部名称。
authId string 可使用登录乐创者服务成功后返回的authId或匿名authId。
非匿名方式访问:&authId=xxxxxxxxxxxx
如果系统配置中开启了‘允许匿名登录’,则可通过匿名方式直接查看透视模型。
匿名方式访问:&authId=anonymous_admin

可选参数

参数名
类型
默认值
说明
variants string
拼接格式:&variants=参数1=参数值1;@参数1=参数显示值1;参数2={year()};…参数n=参数值n;
注意:
1、参数值使用”{“、”}”括起来的代表支持脚本解析,如:年份={year()}。
2、通过variants传入的同名参数将默认不在参数页面显示,如需要显示则
需要通过displayVarNames传入要显示的参数名。
fileAlias string
缺省使用模板文件的显示名称作为标题。
显示在浏览器或窗体上的标题内容,允许通过传参进行个性化显示。
displayVarNames string
在参数区域显示的参数名称。
如果通过variants传递了参数或变量的默认值,某些参数需求在参数页面中显示出来的,则通过本参数指定。
值格式:参数1,参数2,…参数n
showParamPanel boolean true 是否显示参数面板
acceptLanguage string 【v7.3.0版本新增】强制指定客户端访问语言,中文:zh_CN,英文: en
注意:未传递此参数时仍默认按照浏览器语言进行处理。

3.2 通过密文方式访问(推荐使用)

通过密文方式情况,安全性比较高,可以有效的防止用户恶意访问或随意篡改传参值。

参数说明

参数名
类型
默认值
说明
v string 加密后的请求参数串。
注意:v的参数值,需要通过privilege_type参数传入解密处理的认证类,缺省为:default。
privilege_type string
缺省使用乐创者门户中指定的认证类型
【可选】传入第三方认证的认证类型。
validateVariants string
【可选】传入第三方认证相关参数。
可传递多个参数,格式如下:
&validateVariants=认证参数1=参数值;认证参数2={year()};…认证参数n=参数值

4 前端事件

Web端在页面渲染、操作过程中触发的各类事件,便于二次开发比较方便的进行一些个性化的业务处理。

事件名
说明
loadReportBefore 透视模型加载前事件。
loadReportAfter 透视模型加载完成后事件。
loadParamsAfter 参数面板加载后事件。

5 整合示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>二次示例</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <script type="text/javascript" src="js/jquery.min.js" ></script>
    <script type="text/javascript" src="所属目录路径/ER_toolkit.js" ></script>
</head>
<body style="-webkit-touch-callout:none;width:100%;height:100%;padding:0;overflow:hidden;margin:0;border:0 none;" >
    <iframe id="myRpt" style="width:1024px;height:650px;" ></iframe>
    <script type="text/javascript">
        ER_load_jquery_js(); //注意:标识整合页面已经加载过jQuery了 

        var url='http://127.0.0.1:8081/lczServer/hrServlet?type=pivotReport&fileName=xxxxxxx&targetVolume=xxxxxxx&authId=xxxxx';
        var pivotFrame = $('#myPivot');
        if (pivotFrame && pivotFrame.length > 0) {
            pivotFrame.attr('src', url);
            pivotFrame.bind('load', function() {
                if (this.contentWindow.ER) { //注意:整合时,如果存在跨域情况,ER对象将访问不到。
                    var pivotFn = this.contentWindow.ER.fn;
                    var pivotEvents = this.contentWindow.ER.events;
                    if (pivotEvents && pivotFn) {
                        pivotEvents.loadReportAfter(function() {
                            //绑定透视模型加载后事件
                        });
                        rptEvents.loadParamsAfter(function() {
                            //绑定透视模型参数加载后事件
                        });
                    }
                }
            });
        }
    </script>
</body>
</html>

6 常见问题

问题1、跨域访问乐创者透视模型时有什么注意事项?
答:跨域访问时,以下功能将会受限:

 (1) 乐创者透视分析中的超链接弹窗将无法显示到Window.top中;
 (2) 第三方页面将无法调用iframe中报表对象及方法。

建议通过以下解决方案解决跨域问题:

 (1) 业务系统和乐创者服务部署到一个Web服务器中;
 (2) 通过nginx代理将业务系统和乐创者服务代理成同源。

问题2、参数值已经URL编码了,但是中文仍然显示乱码
答:检查一下Web应用服务器的配置是否符合要求。
  以Tomcat为例,需检查Tomcat安装目录下的server.xml中,对应‘Connector’配置中是否配置了‘URIEncoding’、‘useBodyEncodingForURI’选项,建议配置如下:
  1)、如果2个属性都没有配置,建议配置‘useBodyEncodingForURI=”true”即可;
  2)、如果配置了‘useBodyEncodingForURI=”false”,则需要配置URIEncoding,建议配置为‘UTF-8’;
  3)、如果配置了URIEncoding,但编码方式不是‘UTF-8’的,需要调整lczServer/WEB-INF/classes/erservice.xml配置文件中Charset值(默认为:UTF-8),应改为与URIEncoding值一致。

作者:柳杨  创建时间:2023-06-07 12:15
最后编辑:柳杨  更新时间:2025-04-22 15:31