功能调用说明-与其他应用集成
目录

功能调用说明

调用方法

安全调用模块提供了一种实现了安全机制的产品功能前台调用方法,使用步骤如下。

Step1、引入提供前台调用方法的js:

mis2/customer/js/GezEntry.js;

Step2、后台生成调用时传入参数的安全校验信息:

<%@ page import="com.customer.security.SecInfoUtils "%>
<%
         // 参数
         Map<String, String> paramMap = new HashMap<String, String>();
         paramMap.put("param1", "value1");
         String secInfo = SecInfoUtils.generate(request, paramMap);
%>

Step3、通过js中提供的前台方法调用产品功能:

new GezEntry(parttenID, params, secInfo, target).enter();

方法参数说明:

注意:上述方法在前台调用时使用了后台生成的安全校验信息,调用时参与校验的参数值要与实际传递的参数值要一致,即前后台传递的参数是一致的。这样如果用户修改了后台参与校验的参数就不能通过安全校验。此方法有效规避了前台调用的安全隐患。此外,并不是所有参数都需要加入到安全校验,需要看各个功能调用入口的具体情况。如果没有从后台传递的参数,在调用Security.generate(request, paramMap);接口时,可以使用不包含值的paramMap参数,或将paramMap设置为null值。
功能调用示例页面

产品提供了调用示例页面,供用户参考上述前台调用方法的典型应用场景与实现代码,如下图所示:

示例页面查看地址:http://localhost:8800/reportmis/mis2/showDemo/callDemo_geezn.jsp

如果产品系统不是部署在本机,则请将上面地址中的localhost更改为产品系统实际部署地址。

下面详细说明示例页面中各例子的具体功能与实现代码:

单点登录方式 

提供了两种典型的单点登录方式。可以在示例中输入登录的用户名、密码,然后点击某种登录方式完成单点登录验证。

具体各方式的特点与应用方法,分别参见:单点登录-方式1单点登录-方式2

展现一张报表

该示例展示产品报表展现功能模块的调用。

点击示例标题,可调用报表展现功能打开一张指定的报表。

示例代码:

function showReport(){
    // 访问报表所需参数,resID:资源ID(通过resID指定要展现的报表资源),username:用户名(通过username传入查看报表的用户ID)
    var params = {resID : "10046", username : "root"};
    <%
          Map<String, String> paramMap_sr = new HashMap<String, String>();
          // 生成安全校验信息
          paramMap_sr.put("resID","10046");
          paramMap_sr.put("username","root");
          String secInfo_sr = SecInfoUtils.generate(request, paramMap_sr);  
     %>
     // 调用报表展现功能,调用时各参数含义依次为:模块ID、所需参数、安全校验信息、展示位置,其中SR是报表展现模块的模式ID
     // 展示位置:_blank--新页面打开、_self--本页面打开、iframeName--在指定的iframe中打开
     new GezEntry("SR", params, "<%=secInfo_sr%>", "_blank").enter();
}

打开数据资源管理器

该示例展示产品资源管理器的调用。

点击示例标题,可调用产品的资源管理器,并且调用时传入了数据管理的根目录资源ID,可以打开资源管理器并显示数据资源管理根目录,对数据资源进行管理。如下图:

示例代码:

//打开数据资源管理器
function openResManager(){
    // 设置调用时所需参数,resID:资源ID(通过resID指定调用资源管理器时所打开的根目录)
    // 这里30829是产品中数据管理默认的根目录ID
    var params = {resID : "30829"};
    //生成安全校验信息
    <%
        Map<String, String> paramMap__resList = new HashMap<String, String>();
        paramMap__resList.put("resID","30829");
        String secInfo_resList = SecInfoUtils.generate(request, paramMap__resList);  
    %>
    //通过前台调用方法调用产品的资源管理器,其中ResList是资源管理器模块的模式ID
    new GezEntry("ResList", params, "<%=secInfo_resList%>", "_blank").enter();
}

如何获取平台资源及目录ID,请参考:获取资源/目录ID

打开任务列表

该示例展示产品调度任务管理功能的调用。

点击示例标题,可打开产品的调度任务管理页面,进行调度任务的查询、新建、修改、删除等管理维护。如下图:

示例代码:

// 打开调度任务管理列表
function showScheduleTaskList(){
    //调用时如果无需传入参数,则params可以为空
    //例如这里调用调度任务管理列表,无需传参
    var params={};
    <%
        Map<String, String> paramMap_schedule = new HashMap<String, String>();
        String secInfo_schedule = SecInfoUtils.generate(request, paramMap_schedule);
    %>
    //调用调度管理任务列表,其中ScheduleTaskList是调度任务管理模块的模式ID
    new GezEntry("ScheduleTaskList", params, "<%=secInfo_schedule %>", "_blank").enter();
}

获取用户可用的DBD的resID

该示例展示如何获取用户有权查看的管理看板资源ID,以及管理看板展现功能的调用。

点击示例标题“5、获取用户可用的DBD的resID”,将返回指定用户的可用看板ID,多个看板ID以逗号分隔,如下图:

示例代码:

// 获得指定用户可用的DBD面板的resID
function getUserOwnDBD(){
    // 发送Ajax请求获取可用DBD的resID
    // 这里用的是经过封装的Ajax,用户可根据自己的需要选择访问方式
    var ajax = new AjaxUtil();
    // 设置参数,通过username指定用户ID
    var params={username:"root"};
    // 发情请求,参数说明:请求url、所需参数、成功时调用的方法、失败访问方法
    ajax.sendAjax("http://localhost:8800/reportmis/mis2/showDemo/getDBDresID.jsp",params,success,error);
}

上面请求中getDBDresID.jsp中的代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="com.runqianapp.eds.dashboard.manage.DBDUtil"%>
<%@ page import="com.geezn.exception.GeeznException" %>
<%
     //获取用户ID
     String userName = request.getParameter("username");
     PrintWriter pw = response.getWriter();
     //获取指定用户的可用看板资源ID
     try {
         DBDUtil dbd = new DBDUtil();
         List<String> list = new ArrayList<String>();
         list = dbd.alldbdByUser(userName);
         pw.print(list.toString());
    } catch (GeeznException e) {
        e.printStackTrace();
    }
%>

点击示例标题“展现管理看板”,将调用管理看板展现功能,在下方的iframe中展现指定的看板,如下图:

示例代码:

// 打开dbd面板
function ShowDBDPanel(){
    //设置调用时需传入的参数,resID:资源ID(通过resID指定需要展现的看板资源ID)
    //例如这里表示展现ID为31857的看板
    var params={resID:'31857'};
    //生成安全校验信息
    <%
        Map<String, String> paramMap_dbd = new HashMap<String, String>();
        paramMap_dbd.put("resID","31857");
        String secInfo_dbd = SecInfoUtils.generate(request, paramMap_dbd); 
    %>
    //调用看板展现功能,其中ShowDBDPanel是管理看板展现模块的模式ID
    new GezEntry("ShowDBDPanel", params, "<%=secInfo_dbd%>", "showDBDIframe").enter();
}

进入数据管理系统菜单

该示例展示产品菜单页面的调用。

点击示例标题,可在新窗口中打开产品系统菜单页面。如下图:

示例代码:

// 打开系统菜单
function openDataManager(){
    //这里未设置传入参数,实际应用中用户可根据情况进行设置
    //例如传入用户ID,从而在打开的系统菜单页面中仅显示其有权使用的菜单
    var params={};
    <%
    Map<String, String> paramMap_data = new HashMap<String, String>();
        String secInfo_data = SecInfoUtils.generate(request, paramMap_data); 
    %>
    //通过模式ID"dc_gezMoreFunction"调用系统菜单页面
    new GezEntry("dc_gezMoreFunction", params, "<%=secInfo_data%>", "_blank").enter();
}