java 与BO集成

Posted bluss-yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 与BO集成相关的知识,希望对你有一定的参考价值。

SAP BO说来比较曲折,BO本是一家公司,叫Business Object,同时这个公司有个产品叫Business Object,这个BO公司旨在做动态报表等商业解决方案,后被SAP收购.主要用来做Business Object Dashboard,Crystal Report,Web Intelligence等,某些功能可能与互联网上的开源框架有点距离。不做评价。

现在java成了一门大众化语言,国内java程序员也会对BO进行二次扩展开发,功能可能涉及授权,计划,查看,下载等。好多公司都会去做单点登录。想把BO给集成到一起。所以就得跳过登录。

1.bo登录(主要思想是基于session,token)

1.1 basic logon+Logon token

    讲下basic logon+Logon token,获取到session,已经成功了一大半。如果是因为网络不通原因报错,就要添加host映射,查找网络。

IEnterpriseSession basicLogon() throws SDKException

ISessionMgr sessionManager = CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sessionManager.logon("username",
"password", "<cms>:<port>", "secEnterprise");
return enterpriseSession;

有了session就能获取到token了。

String defaultToken() throws SDKException

IEnterpriseSession enterpriseSession1 =
CrystalEnterprise.getSessionMgr().logon("username", "password",
"<cms>:<port>", "secEnterprise");
ILogonTokenMgr tokenMgr = enterpriseSession1.getLogonTokenMgr();
String defaultLogonToken = tokenMgr.getDefaultToken();

当你拥有了token之后操作bo就如鱼得水了。

2. 登录CMC,BI

登录CMC,BI都可以用token操作了。

2.1 登录BI http://IP:8080/BOE/BI/logon/start.do?ivsLogonToken=defaultLogonToke

2.2 登录cmc  cmc成功后的url xxxx&bttoken=defaultLogonToke

demo会上传

3 .个人见解

    但是因为有些公司的单点登录是不会传密码的。所以用Using trusted authentication  比较好。这个需要basis或者你自己配置下信任验证

IS essionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
ITrustedPrincipal trustedPrincipal =
sessionMgr.createTrustedPrincipal("userName", "<cms>:<port>", "sharedSecret");
IEnterpriseSession enterpriseSession = sessionMgr.logon(trustedPrincipal);

 

序列化session

只能说用到的人会觉得他很重要,主要还是看系统用户(万级别)使用率,使用频率(万次/s)等等

系统优化方面的东西太多(计划优化,查询优化,用户登录优化),就不在这里举例。

代码:

public class BoLogin
     /**
         * 封装登陆逻辑,获取token;
         * @throws SDKException 
         * 如果服务器及网络均正常,那么这个问题很可能是由于未配置系统IP地址解析。可修改本机的Hosts文件修复该问题.
         */
        @SuppressWarnings("deprecation")
        public static String getWcaToken(HttpServletRequest request,HttpServletResponse response) throws SDKException
            String wcaToken = "";
            HttpSession session = request.getSession();
            ISessionMgr sessionMgr;
            IEnterpriseSession entsession = (IEnterpriseSession) request.getSession().getAttribute("boesession");
            if (entsession == null)
                sessionMgr = CrystalEnterprise.getSessionMgr();
                //以下userName,password需要改为自己bo登录页面的用户名和密码,ip也要修改为bo所在服务器的ip;
                String userName="",passWord="",ip="";
                entsession = sessionMgr.logon(userName, passWord,ip+":6400", "secEnterprise");
                session.setAttribute("boesession", entsession);
            
            request.getSession().setAttribute("boesession", entsession);
            /* 其中createLogonToken(java.lang.String clientComputerName, int validMinutes, int validNumOfLogons)
               clientComputerName为使用这个token的客户端计算机名,空字符串表示该token可被任何客户端使用;
               validMinutes为token的有效时间(分钟);
               validNumOfLogons 表示该token允许被使用的最大次数。*/    
            wcaToken = entsession.getLogonTokenMgr().createLogonToken("", 1000,1000);
//            wcaToken = entsession.getLogonTokenMgr().createWCAToken("", 1000,1000);//既然提示过期的方法,就可能有问题  
            String path="http://IP:8080/BOE/BI/logon/start.do?ivsLogonToken=";
            return path+wcaToken;
        

@Controller
public class HelloWorldController
 
    @RequestMapping("/hello")
    public String hello( HttpServletRequest request,HttpServletResponse response)
       try
        String path=BoLogin.getWcaToken(request, response);
        request.setAttribute("path", path);
        return "helloworld";
     catch (SDKException e)
        // TODO Auto-generated catch block
        e.printStackTrace();
    
    return null;
         
   
 

以上是关于java 与BO集成的主要内容,如果未能解决你的问题,请参考以下文章

成都天象互动诚聘角色原画UI动作erlang软件开发3D角色特效等

volatile随笔见解

神经网络为大脑如何运作提供新见解

写在Java前之Java简介——蓝鸥成都

写在Java前之Java简介——蓝鸥成都

Java中 PO VO BO DTO DAO 和 POJO 的概念及区别(图解)