(云南电网有限责任公司玉溪供电局系统运行部)
摘要:由于云南玉溪供电局在不同时期开发的平台往往采用不同的技术架构体系,造成诸多的一系统一平台的现状。也造成平台各自独立,各个系统缺少集成接口、文档资料、软件设计和商业原因等问题而难于被集成,形成了一个个“信息孤岛”、“应用孤岛”和“资源孤岛”。为此提出基于界面仿真交互技术解决电网陈旧性平台整合难题。通过该技术可对各平台的前后端完成集成,达到跨越组织和系统边界,整合各异构系统,打通应用阻碍,实现协同化、集约化和一体化的管理目的。
关键词:软件集成;一体化整合;界面自动化;信息提取;模拟仿真;对象识别与操控;
研究背景
随着新技术的进步与发展,信息化水平的要求越来越高,对软件平台的需求也呈现集中化、协同化和一体化的产品组合。
云南玉溪供电局经过多年的业务发展,造成不同时期先后组建的平台,形成一个个“信息孤岛”、“应用孤岛”和“资源孤岛”现状。出现多异构系统、多品牌设备共存和同时在线的现象。由于各品牌提供的软件局限于管理自身的设备和业务,缺少集成接口、文档资料和商业原因等问题而难于被集成。
工作人员在孤立的系统环境下工作,通常一个简单任务就需要多次登录多套不同平台开展工作,存在大量重复性操作,且容易出现误操作。工作人员无法在统一界面聚合各平台的信息展示、业务管理和决策分析。这些问题造成入口众多分散、管理混乱无章、操作低效重复、耗人耗时耗力和难于决策支持等问题。
解决此类问题的通常办法是通过系统二次开发实现接口开放,将各平台的信息和业务能力统一集成展示和管理。多数早期软件并未提供集成接口,或接口有限、软件设计和商业原因等,无法满足云南玉溪供电局的各种集成需要。
针对以上种种难题,经研究分析发现,基于界面仿真交互技术解决各时期建设的陈旧性平台整合难题。利用界面对象识别与操控技术,可实现软件间信息的可视化互传互动集成。通过此方法以后不受二次开发接口的限制和厂商无集成接口的约束,只要软件存在界面,就可通过外部界面实现软件间的界面对象操控和界面对象识别。从而实现将各个平台整合,达到跨越组织和系统边界,整合各异构系统,打通应用阻碍,实现协同化、集约化和一体化的管理目的。
界面仿真交互技术方法
界面仿真交互技术是一种针对桌面应用和Web应用的GUI(图形用户界面)对象定位、对象自动化操控和内容信息识别的技术。
该技术支持C、C++、C#、python等语言编程开发,由仿真脚本解析模块、界面对象定位模块、界面对象操控模块和界面内容识别模块四大模块组成。仿真脚本解析模块相当于人的大脑,负责解析和控制功能;界面对象定位和界面内容识别模块相当于人的眼睛,负责发现和阅读功能;界面对象操控模块相当于人的手,负责操作功能;
根据GUI对象可分为标准对象和异构对象,标准对象指按照微软标准规范定义的对象,此对象可根据微软提供的windows对象相关API实现对GUI对象的定位、识别和操控;异构对象则指按照非微软标准规范定义的对象,此对象无法通过windows对象相关API直接对GUI对象定位、识别和操控,需借助截图+OCR技术实现对GUI对象的定位和识别;借助windows鼠标键盘API实现对GUI对象的模拟操控。
界面仿真交互技术流程图详见图1所示:
界面对象操控技术
(1)标准对象通过windows对象相关API直接操控
Windows是一个消息驱动的操作系统,由消息队列、线程、消息内容组成。
如果GUI界面对象是标准对象,则可以在定位到对象句柄的前提下,通过windows对象相关API,向其发送windows消息,驱动其进行指定动作,从而实现操控对象的目的。相关实现代码如下:
(2)异构对象通过windows鼠标键盘API模拟操控
当GUI界面对象是异构GUI对象时,采用windows对象相关API进行对象操控将失去作用,此时只能通过模拟人工点击鼠标和键盘的行为,达到同样操控界面对象的效果。通过windows鼠标键盘API的SetCursorPos(intX,intY)将鼠标光标定位到异构对象的位置,通过SendInput(UINTnInputs,LPINPUTpInputs,intcbSize)函数,模拟鼠标和键盘的相关操作。相关实现代码如下:
界面对象定位与界面内容识别技术
(3)标准对象采用windows对象相关API定位与识别
标准GUI对象可通过windows对象相关API方法实现GUI对象定位和内容识别。方法一,借助UI自动化树进行遍历和条件化查询方法TreeWalker/FindAll进行直接搜索和导航遍历;方法二,如果你具有屏幕坐标(例如,光标位置),则可以使用静态AutomationElement方法来检索FromPoint,从而从某个点中获取;方法三,从窗口句柄中获取;方法四,从具有焦点的控件中;方法五,从事件中获取,当你的应用程序接收UI自动化事件时,传递到事件处理程序的源对象是AutomationElement。
相关实现代码如下:
(4)异构对象通过截图+OCR技术定位与识别
对于异构GUI对象,采用windows对象相关API方法是无法实现对象定位和内容识别,因此可借助截图+OCR(光学字符识别)技术来补充实现。它的工作流程是先把对应需要识别的区域进行截屏生成图像完成压缩存储;其次将图片通过灰度化、锐化、二值化、噪声去除、倾斜矫正等方法完成预处理;然后通过版面分析、字符切割、字符识别完成识别工作;最后通过版面恢复完成后处理和校对工作,完成对象识别;相关实现代码如下:
基于界面仿真交互技术的实践
基于界面仿真交互技术,构建一个界面仿真交互平台来解决云南玉溪供电局的陈旧性平台一体化整合难题。该方案由界面仿真交互平台的门户模块、API能力开放模块和Agent模块三大模块组成。其中门户模块主要是提供自检视图、脚本管理给平台用户进行维护和管理;API能力开放模块主要将平台相关能力开放给外部调用;Agent模块主要执行来自平台直接或外部API间接仿真脚本任务,根据任务在对应外部应用程序进行内容识别或对象操控动作;如图2所示。
自动化运维技术支撑仿真平台弹性搭建
界面仿真交互平台采用云自动化运维技术,通过对云主机、负载均衡、监控告警、故障监测等功能管理,使平台具有自动化运维管理能力。平台可通过应用镜像快速搭建应用集群和增删管理应用主机,实现应用弹性搭建;平台可根据性能状况自适应创建或回收节点,实现资源回收与智能扩容;平台可根据云主机资源使用率对托管的在线云主机的内存、系统盘和带宽进行资源弹性扩展,实现自动化伸缩,满足业务增长和突发需求;平台可根据用户访问流量情况,动态分发,实现高并发和安全防护;平台可通过故障监测,对故障节点进行自动切换,实现故障自愈。
多类型方法保障界面内容完整捕获识别
识别常规的GUI界面内容,一般只能通过集成接口来实现。在实际的集成过程中往往因为待集成的软件未提供相关集成接口、文档资料或商业保护等原因而无法完成集成。
借助界面内容识别技术的标准对象类型windowsAPI直接识别和异构对象类型截图+OCR识别方法,可有效保障界面内容被完整捕获识别。该技术只要待集成的软件存在GUI界面,即可通过该能力获取到软件界面内容信息,实现不受集成接口的约束和商业保护的限制。
自动仿真操作释放人工繁琐重复工作
自动化仿真操作是通过界面对象操控技术实现,该技术通过对桌面上用户界面对象的编程访问,以另一个程序来控制UI程序,实现代码自动化仿真由传统鼠标和键盘输入展开的任何交互和行为操作的技术。
通过该技术我们实现软件的自动化仿真操控和交互集成。一方面我们可以解决实际工作中对信息化软件大量人工的单调、频繁和重复的操作,通过将这些操作用仿真脚本录制下来,交给计算机自动化仿真操作完成,可提高企业的工作效率,降低人力成本;另一方面,传统的软件间交互集成完全依赖二次开发接口,集成范围和功能也非常有限,通过自动化仿真操作,我们可不受集成接口的约束和商业保护的限制,实现软件间的交互集成。
人工智能技术增强界面内容智能聚合
界面内容智能聚合是指在给定文本分类和聚合数据模型的体系下,界面内容识别能力将界面内容识别成文本后,程序将文本内容按照文本分类和聚合数据模型体系自动确定文本类别和聚合数据模型的过程。
该方法基于机器学习技术,以统计理论为基础,利用算法让机器具有类似人类般的自动“学习”能力,对已知的训练数据做统计分析从而获得规律,再运用规律对未知数据做预测分析实现文本内容自动分类和模型归属。如:
(1)先利用人工对一批文本内容进行准确文本分类(如分为告警时间、告警状态、告警登记、设备名称、设备信息等标签)和模型归属(如监控告警数据模型、设备管理数据模型等),作为训练集,
进行机器学习的材料;
(2)计算机从这些文本内容中借助决策模型、布尔模型、向量空间模型(VSM)和概率模型等算法建模,挖掘出能够有效分类的规则,生成能总结出的规则集合的分类器;
(3)将生成的分类器应用在有待分类的文本内容集合中,可获取内容的分类结果和模型归属,从而实现界面内容的智能聚合。
因此,当有新的界面内容需要聚合时,我们则可以通过该人工智能技术实现界面内容智能聚合,从而降低专家人工分类与标识工作时间和成本。
结束语
界面仿真交互技术是通用技术,它不仅适用于行业内外的软件集成,还可广泛应用与GUI和WEB平台的自动化功能测试、接口测试、业务模拟办理、界面信息爬虫、屏幕取词和软件汉化等场景。
参考文献:
[1].胡滨.软件自动测试工具的研究.现代电子技术,2007,28(18):97-99.
[2].翟立东,孙丽萍.软件自动测试方法的研究与实现.大连铁道学院学报,2005,26(4):52-56.
[3].于城蛟,刘更,王海伟.基于Windows消息的软件界面集成技术研究.计算机仿真,2007,24(12):278-282.
[4].RichterJ,王建华,张焕生,侯丽坤.Windows核心编程.北京:机械工业出版社,2000:515一564.
[5].张金,邬晶,陈卓宁.基于界面可视信息提取的软件互动集成.计算机系统应用,2009,18(08):160-163.