ICMExchange不是额外的应用程序,也不是InfoWorks ICM的附加模块。ICMExchange许可证仅激活默认隐藏的ICM的应用程序编程接口(API)。它就像是ICM的“后门”,一旦打开该门,由第三方编写的软件代码就可以指示ICM执行某些步骤、操作或者任务,而无需任何人需要坐在ICM软件本身之前。换句话说,ICM是在后台运行的;它是由第三方应用程序或者流程驱动的,从终端用户的角度来看是看不到任何东西的。
因此,提供类似于InfoWorks ICM界面内那样标准的软件演示是不可能的,ICMExchange在运行或者工作时是没有什么可看的。当通过API驱动时,ICM不再是桌面应用程序,它只是一个在更大的过程中的后台任务。
ICMExchange怎么工作&可以做什么?
随着API的开放,ICM通过以Ruby脚本的形式编写代码来控制。程序员需要高度熟悉Ruby以及面向对象编程的术语。ICMExchange通常会通过命令行或批处理文件来运行启动。Ruby脚本的文件名作为参数传递,然后脚本将运行并访问Scripting API的类和函数。在命令行中,指令看起来像这样:“C:\Program Files\Innovyze Workgroup Client 4.5\iexchange.exe”c:\myrubyscripts\icmnetwork.rb /ICM。
然后你就会看到:
图1:命令行启动ICMExchange
下一个阶段是使用批处理文件。这可以让ICMExchange按照计划自动运行(例如每天运行一次)。这项工作可能包括一个ruby脚本或多个脚本。如果以多个脚本运行,则每个脚本都将按顺序运行,即下一个脚本只有在上一个脚本完成时才会启动。
图2:批处理文件运行ICMExchange
Ruby脚本可以做些什么?
Ruby脚本的运行方法:
1. 在InfoWorks ICM和InfoNet的用户界面上直接运行。
2. 采用独立许可的ICMExchange产品,通过从命令行运行,不显示图形用户界面。
虽然从用户界面运行脚本的可用功能与ICMExchange产品中提供的功能之间存在很大程度的重叠,但某些功能仅可在一个或另一个中提供。
两者的区别大致如下:
1. 在用户界面中,脚本在GeoPlan打开时运行,显示网络,可能会加载访客网络。这些脚本可以处理网络中的数据,使用“打开数据导入和导出”中心执行导入和导出操作,提交和还原更改,并显示一些简单的用户界面功能。脚本不能操作除选择列表之外的树对象,并且可能无法打开和关闭数据库或设置和运行模拟。
2. 从ICMExchange应用程序中,用户具有操作数据库树对象,创建数据库以及设置和运行模拟的额外功能。但是,在ICM或InfoNet用户界面上这些是不可能做到的。
总而言之,ICMExchange可以将以下所有操作作为后台任务完成:
· 编辑,更新和查询数据库树对象
· 创建,复制和删除数据库树对象
· 创建网络场景
· 提交并验证网络
· 编辑网络对象
· 进行模拟
· 查询结果并提取数据
ICMExchange不允许访问InfoWorks ICM中可用的所有工具和菜单项,并且不会与ICM-TSDB交互或创建/导出图表和地图。
付费购买权限
要使用ICMExchange API,您需要购买许可证。这扇可以打开API的大门适用于InfoWorks ICM的任何特定实例。如果ICM的许可证没有可用的ICMExchange功能,它将不会接受任何命令。ICMExchange作为InfoWorks ICM Executive Suite的一部分提供。
ICMExchange相关的帮助/建议/支持
InfoWorks ICM和InfoNet的Ruby界面对于这两个应用程序来说都是通用的,但是许可证是独立。顾客如果需要帮助创建脚本以驱动InfoWorks/InfoNet,可以咨询HR Wallingford,了解相关合作方式。在幕后,开发团队里各种各样的成员可以提供关于创建成功脚本的关键的面向对象编程术语(例如“类”,“方法”等)的其他帮助和建议。
用户必须注意到,Ruby脚本语言的灵活性意味着该语言几乎是无限灵活的,InfoWorks ICM和InfoNet应用程序中的语言嵌入主要用于通过API来操纵数据。在InfoWorks或InfoNet中可能无法使用其他Ruby数据库,并且不可能为这些尝试提供支持。
示例Ruby脚本&运行模拟
下面的脚本是一个简单的例子,展示了如何从数据库中选择一个网络和各种随时间变化的文件,并为模拟定义参数。
图3:示例脚本