【BO-SDK】 BO InfoView embed apps (内嵌应用界面) 从InfoView登陆界面获取logonToken获得连接session: [
时间:2010-08-23 来源:xiangjinling
request ——> InfoViewConstants.INFOVIEW_SESSION——>CrystalIdentity——>LogonTokenMgr
具体代码:
<%@ page import="com.crystaldecisions.sdk.occa.infostore.IInfoStore" %>
<%@ page import="com.crystaldecisions.sdk.occa.infostore.IInfoObject" %>
<%@ page import="com.crystaldecisions.sdk.occa.infostore.IInfoObjects" %>
<%@ page import="com.crystaldecisions.sdk.exception.SDKException" %>
<%@ page import="com.crystaldecisions.sdk.plugin.desktop.report.IReport" %>
<%@ page import="com.crystaldecisions.sdk.framework.IEnterpriseSession" %>
<%@ page import="com.businessobjects.infoview.common.InfoViewConstants"%>
<%@ page import="com.businessobjects.infoview.common.Utilities"%>
<%@ page import="com.businessobjects.infoview.common.CrystalIdentity"%>
<%@ page import="com.crystaldecisions.sdk.framework.internal.SessionMgr"%>
<%@ page import="com.crystaldecisions.sdk.framework.CrystalEnterprise"%>
<%@ page import="com.crystaldecisions.sdk.framework.ISessionMgr"%>
关键语句:
String token = ((CrystalIdentity)request.getSession().getAttribute(InfoViewConstants.INFOVIEW_SESSION)).getSession().getLogonTokenMgr().getDefaultToken();
//SessionMgr sessionMgr = new SessionMgr();
ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sessionMgr.logonWithToken(token);
IInfoStore iStore=(IInfoStore)enterpriseSession.getService("InfoStore");
其他处理:
String name=((CrystalIdentity)request.getSession().getAttribute(InfoViewConstants.INFOVIEW_SESSION)).getSession().getUserInfo().getUserName();
String auth=((CrystalIdentity)request.getSession().getAttribute(InfoViewConstants.INFOVIEW_SESSION)).getSession().getUserInfo().getAuthenMethod();
long pass=((CrystalIdentity)request.getSession().getAttribute(InfoViewConstants.INFOVIEW_SESSION)).getSession().getUserInfo().getPasswordExpiry();
out.println("UserName:"+name);
out.println("auth:"+auth);
out.println("pass:"+pass);
后续处理:
IInfoObjects result;
try {
result = iStore.query( "Select * From "
+ "CI_INFOOBJECTS Where SI_ID='37048'" );//26710
IInfoObject report = (IInfoObject) result.get(0);
IReport reporto=(IReport)report;
out.println("<br>");
out.println("<hr>");
out.println("Report Name is:"+reporto.getTitle());
}
catch (SDKException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}