×

扫描二维码登录本站

QQ登录

只需一步,快速开始

标签: 暂无标签
本帖最后由 adminlily 于 2020-12-14 15:38 编辑



扩展API
除了修改XML数据模型外,还可以通过所谓的扩展在iTop中实现特定的行为。

总览
扩展由PHP代码组成。在构建HTTP请求的答案时,iTop将调用您的代码。例如,可以挂钩对象的显示器以显示更多信息。

在实践中,您的代码包括声明一个PHP类,该类实现了iTop称为扩展接口的接口。 iTop会自动检测您的类的存在,并在其执行过程中的某些特定时刻调用方法。

为此,您的类的代码必须位于iTop包含的文件中。推荐的方法是将代码放入main.my-module.php文件中(请参见模块内容).

一个例子
假设我们有基于Web的应用,它在服务器的可用性上提供了一些高级报告。我们想提供一个超链接,以便终端用户可以从iTop中的服务器的详细信息跳入监控应用中的相应报告。

一种可能的解决方案是在所有服务器上向监控应用超级链接显示到“操作活动”弹出菜单中。

实施包含实现接口iPopupMenuExtension:

main.mymodule.php

class 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上的依赖)的几种类型的对象和几种类型的菜单。

此插件的成果是任何服务器的详细信息页面上的附加菜单项:




接口引用文档

有几个用于扩展iTop的接口。每个接口都对应于特定的扩展类型,如下表所示:

接口描述
iApplicationUIExtension为某些对象的GUI行为实现变更的GUI行为(显示详细信息或编辑对象时)。
iApplicationObjectExtension实现此接口以在创建,更新或删除对象时执行特定的操作活动
iPageUIExtension实施此界面以将内容添加到任何iTopWebPage(左侧包含iTop菜单的网页)
iPopupMenuExtension在iTop的“弹出”菜单中添加菜单项。






上一篇:二次开发-开发方法-自定义扩展
下一篇:二次开发-开发方法-自定义扩展-编码规范
新大

写了 314 篇文章,拥有财富 1658,被 3 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

最新100贴|论坛版块|ITIL先锋论坛 |粤ICP备11099876号|网站地图
Powered by Discuz! X3.4 Licensed  © 2001-2017 Comsenz Inc.
返回顶部