扩展API 除了修改XML数据模型外,还可以通过所谓的扩展在iTop中实现特定的行为。 总览扩展由PHP代码组成。在构建HTTP请求的答案时,iTop将调用您的代码。例如,可以挂钩对象的显示器以显示更多信息。 在实践中,您的代码包含声明一个PHP类,该类实现了iTop称为扩展接口的接口。 iTop会自动检测您的类的存在,并在其执行过程中的某些特定时刻调用方法。 为此,您的类的代码必须位于iTop包含的文件中。推荐的方法是将代码放入main.my-module.php文件中(请参阅模块内容). 一个例子假设我们有基于Web的应用,它在服务器的可用性上提供了一些高级报告。我们想提供一个超链接,以便终端用户可以从iTop中的服务器的详细信息跳转到监控应用中的相应报告。 一种可能的解决方案是在所有服务器上向监控应用超级链接显示到“操作活动”弹出菜单中。 实施包含实现接口iPopupMenuExtension: main.mymodule.phpclass MyPopupExtension implements iPopupMenuExtension{ public static function EnumItems($iMenuId, $param) { if ($iMenuId == self::MENU_OBJDETAILS_ACTIONS) { $oObject = $param; if ($oObject instanceof Server) { $sUID = 'MyPopupExtension-Monitoring'; // Make sure that each menu item has a unique "ID" $sLabel = 'Monthly report'; $sURL = 'http://myapp/show_report?server_fqdn='.$oObject->Get('name'); $sTarget = '_blank'; $oMenuItem = new URLPopupMenuItem($sUID, $sLabel, $sURL, $sTarget); return ($oMenuItem); } } return (); }} 在某些情况下,iTop将调用EnumItems方法。显示对象的详细信息时,$ params是目标对象。 由于将为任何类型的对象调用我们的方法,因此我们必须过滤器淘汰与此功能不相关的对象类。 如您所见,可以使用相同的扩展名($ iMenuId和$ param上的依赖)处理几种类型的对象和多种类型的菜单。 此插件的成果是任何服务器的详细信息页面上的附加菜单项: 接口引用文档扩展的API引用 有几个用于扩展iTop的接口。每个接口都对应于特定的扩展类型,如下表所示:
|