Maximo启动中心改造

 

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

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

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

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

改造的基本内容如下:

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

try
 	{ 	
		if(sessionContext.getCurrentApp().get(portletId) == null)
		{ 	
			 portletBean = new DBCntCfgPortletBean();
			portletBean.setId(portletId);
			portletBean.setupBean(sessionContext,"DBCNTCFG");
			portletBean.setPortletInfo(currentPortlet);
			sessionContext.getCurrentApp().put(portletId,portletBean);
		}
		else
		{
			portletBean	= (DBCntCfgPortletBean)sessionContext.getCurrentApp().get(portletId);
		}	
		
		dbContent = portletBean.getDBContent();
	}catch(Throwable e )
	{ 
		System.out.println("Error in the Favorite Applications Portlet Display");
		e.printStackTrace();
	}

 

从数据库加载数据

if (((String)localObject3).equalsIgnoreCase("dbcntcfg"))
        {
          localElement1 = localDocument.createElement("dbcnt");
          setAttributes(portletAttributes, localLayoutRemote, localElement1);
          localMboSetRemote1 = localLayoutRemote.getMboSet("DBCNTCFG");
          addChildren(localMboSetRemote1, localElement2, localElement1, "attr", new String[] { "miscid" });
        }
 

 

从数据库加载数据

localNodeList2 = localElement1.getElementsByTagName("dbcnt");
      for (int j = 0; j < localNodeList2.getLength(); ++j)
      {
        localElement2 = (Element)localNodeList2.item(j);
        localLayoutRemote = (LayoutRemote)localLayoutSetRemote.add();
        setValues(localLayoutRemote, localElement2);
        localNodeList1 = localElement2.getElementsByTagName("attr");
        for (int f = 0; f < localNodeList1.getLength(); ++f)
        {
          localElement3 = (Element)localNodeList1.item(f);
          localObject1 = (DBCntCfgMboSetRemote)localLayoutRemote.getMboSet("DBCNTCFG");
          localObject2 = (DBCntCfgMboRemote)((DBCntCfgMboSetRemote)localObject1).add();
          setValues((MboRemote)localObject2, localElement3);
          ((MboRemote)localObject2).getLong("miscid");
        }
      }
 

你可能感兴趣的:(jsp,xml,F#,配置管理,J#)