Maximo启动中心改造

来源:互联网 发布:网络外教口语 编辑:程序博客网 时间:2024/05/05 17:07

Maximo启动中心通常是我们登陆系统后通常看到的第一个界面

用户进入系统就可以看到感兴趣的消息,关心的指标,快速打开常用的程序等。这非常像操作系统的桌面环境,当我们登陆操作系统后,图形化桌面展示在眼前,有开始菜单、快速启动、任务栏、系统托盘、小窗口部件等,当然,这些都是可以根据用户需求进行灵活配置的。

同时,启动中心配置的功能就是固定的几种,扩展性差。随着业务和技术的发展,我们需要在启动中心展示更多信息,比如说图形化BI指标等,这些都不在Maximo的默认配置中,我们需要研究Maximo的技术实现,对启动中心进行改造以满足更加灵活的展示需求。

经过对代码的追踪,发现就像其他的Maximo应用一样,启动中心也可以看作是一个Maximo应用,是登陆Maximo后系统首先加载的特殊应用;由于启动中心的显示内容和用户、用户组相关的,因此启动中心会获取相关用户信息并加载该用户所属的布局模版;此时加载的布局模版是xml格式的,这时通过启动中心管理服务将xml转换为对象,实例化小窗口部件;最后,小窗口部件读取配置数据,渲染jsp页面,将内容显示到启动中心页面。

改造的基本内容如下:

创建一个自定义的PortletBean和展示页面,如下所示:

Java代码  
  1. try  
  2.     {     
  3.         if(sessionContext.getCurrentApp().get(portletId) == null)  
  4.         {     
  5.              portletBean = new DBCntCfgPortletBean();  
  6.             portletBean.setId(portletId);  
  7.             portletBean.setupBean(sessionContext,"DBCNTCFG");  
  8.             portletBean.setPortletInfo(currentPortlet);  
  9.             sessionContext.getCurrentApp().put(portletId,portletBean);  
  10.         }  
  11.         else  
  12.         {  
  13.             portletBean = (DBCntCfgPortletBean)sessionContext.getCurrentApp().get(portletId);  
  14.         }     
  15.           
  16.         dbContent = portletBean.getDBContent();  
  17.     }catch(Throwable e )  
  18.     {   
  19.         System.out.println("Error in the Favorite Applications Portlet Display");  
  20.         e.printStackTrace();  
  21.     }  

 

从数据库加载数据

Java代码  
  1. if (((String)localObject3).equalsIgnoreCase("dbcntcfg"))  
  2.         {  
  3.           localElement1 = localDocument.createElement("dbcnt");  
  4.           setAttributes(portletAttributes, localLayoutRemote, localElement1);  
  5.           localMboSetRemote1 = localLayoutRemote.getMboSet("DBCNTCFG");  
  6.           addChildren(localMboSetRemote1, localElement2, localElement1, "attr"new String[] { "miscid" });  
  7.         }  
 

 

从数据库加载数据

Java代码  
  1. localNodeList2 = localElement1.getElementsByTagName("dbcnt");  
  2.       for (int j = 0; j < localNodeList2.getLength(); ++j)  
  3.       {  
  4.         localElement2 = (Element)localNodeList2.item(j);  
  5.         localLayoutRemote = (LayoutRemote)localLayoutSetRemote.add();  
  6.         setValues(localLayoutRemote, localElement2);  
  7.         localNodeList1 = localElement2.getElementsByTagName("attr");  
  8.         for (int f = 0; f < localNodeList1.getLength(); ++f)  
  9.         {  
  10.           localElement3 = (Element)localNodeList1.item(f);  
  11.           localObject1 = (DBCntCfgMboSetRemote)localLayoutRemote.getMboSet("DBCNTCFG");  
  12.           localObject2 = (DBCntCfgMboRemote)((DBCntCfgMboSetRemote)localObject1).add();  
  13.           setValues((MboRemote)localObject2, localElement3);  
  14.           ((MboRemote)localObject2).getLong("miscid");  
  15.         }  
  16.       }  
 
原创粉丝点击