一种Java应用程序自动化系统技术方案

技术编号:29458302 阅读:13 留言:0更新日期:2021-07-27 17:25
本发明专利技术公开了一种Java应用程序自动化系统,BridgeIntruder模块是Java自动化组件注入模块;BridgeJAR模块是自动化模块Java部分实现,负责与JavaUI元素直接交互;BridgeServer模块是自动化桥接Server端,负责接收客户端的调用,同时调用实际的Java方法;BridgeClient是自动化桥接Client端,通过客户端可以发起对Java控件可访问性方法的调用。本发明专利技术通过AttachApi实现的组件热加载,以及对自定义控件可访问性的实现,自动化Java应用,节省RPA开发部署过程中的大量时间,提升产品的灵活和易用性。

【技术实现步骤摘要】
一种Java应用程序自动化系统
本专利技术涉及一种Java应用程序自动化系统,具体为远程应用自动化

技术介绍
RPA,全称为RoboticProcessAutomation,即机器人流程自动化,它是替代人工的一种软件自动化工作方式,用于解放人力于重复冗杂和有规则的工作流中。其中,自动化技术是构成RPA产品的基石,RPA在落地的过程中会遇到各种各样的自动化场景,其中一大类就是基于JavaAWT/SwingUI框架的应用,这类应用在金融,通信等领域受到广泛应用,故而催生了大量的自动化需求。在Windows平台上,桌面应用的自动化技术往往是基于Accessibility,即应用程序的可访问性来实现的,可访问性功能的初衷是为了服务残障用户,结合屏幕阅读器或者其他辅助技术,让他们使用图形化的软件称为了可能。Windows平台上提供了两种推荐的可访问性技术,MSAA(MicrosoftActiveAccessibility)和UIA(UIAutomation)。大部分桌面应用都通过这两种可访问性技术公开了丰富的UI元素信息,但JavaAWT/SwingUI元素的可访问性并没有通过这两种技术提供。这导致,基于这两种可访问性实现的RPA自动化技术,在此类应用程序上只能获取应用最外层窗口的UI元素信息,而内部的JavaUI控件信息则无法获取。对此,AWT和Swing提供了另外一种可访问性实现JavaAccessibilityBridge,以下简称JAB。启用JAB需要预先配置并且重新启动应用程序之后才能使配置生效,不能做到开箱即用。另外,由于JAB缺少官方维护,几乎没有迭代更新,在一些特殊的应用上,例如金蝶EAS上很多UI元素的信息不能访问,同时JAB对于用户自定义的UI元素并没有可访问性支持。以上这些问题,导致JAB在RPA场景下不能完全适用,亟待改良和扩展。
技术实现思路
本专利技术的目的在于提供一种Java应用程序自动化系统,以解决上述
技术介绍
中提出的JAB缺少官方维护,几乎没有迭代更新,在一些特殊的应用上,例如金蝶EAS上很多UI元素的信息不能访问,同时JAB对于用户自定义的UI元素并没有可访问性支持导致JAB在RPA场景下不能完全适用等问题。为实现上述目的,专利技术提供如下技术方案:一种Java应用程序自动化系统包含BridgeIntruder模块、BridgeJAR模块、BridgeServer模块和BridgeClient模块,其中BridgeIntruder模块是Java自动化组件注入模块;BridgeJAR模块是自动化模块Java部分实现,负责与JavaUI元素直接交互;BridgeServer模块是自动化桥接Server端,负责接收客户端的调用,同时调用实际的Java方法;BridgeClient是自动化桥接Client端,通过客户端可以发起对Java控件可访问性方法的调用。Java应用程序自动化系统通过AttachApi实现组件热加载,以及对自定义控件可访问性的实现。优选的,所述的AttachApi实现组件热加载方法为:新增了AttachApi,该Api允许在JVM的运行过程中动态的设置和加载代理类,当RPA应用在录制和回放应用时,会根据窗口的ClassName自动判断是否为JavaAWT/Swing应用,并调用Intruder注入BridgeJAR组件,BridgeIntruder为Java应用程序,其中接收RPA软件传入的进程Id,使用AttachApi连接上JVM,然后使用loadAgent函数加载代理类所在的JAR包,即BridgeJAR组件,由于BridgeIntruder为Java应用程序,所以在调用之前需要由RPA应用程序获取到执行的Java环境;对于通过loadAgent加载的自动化模块,也需要符合agent的规范,MANIFEST.MF文件中注明,当前JAR的AgentClass,同时,AgentClass需要实现名为agentmain的入口函数,JVM会在模块加载完成之后自动调用该入口函数,从而启动BridgeServer实现与BridgeClient之间的通信。优选的,其中对自定义控件可访问性的实现方法为:JavaUI元素的可访问性是通过对应的AccessibleControl实现的,当获取JButton控件的UI信息时,BridgeJAR会首先判断当前控件是否实现了Accessible接口,若控件没有实现可访问性接口则认为其不具备可访问性,因此RPA应用也就不会获取到UI元素的信息;否则,会调用Accessible接口里的getAccessibleContext方法,获取当前UI元素的可访问上下文对象,也就是AccessibleControl对象,至此已经可以获取到元素的UI信息,包括位置,文本,状态,类型。优选的,为了实现通用的AccessibleControl从而使其对其他自定义控件具有普适性,创建了一个自定义的可访问性控件实现类EncooAccessibleComponent,该类继承自可访问性上下文AccessibleContext基类,同时实现了Accessible和AccessibleComponent接口,并接受当前JavaUI控件对象作为构造参数,从而在需要访问UI元素信息时,反射调用控件对应的属性和方法获取到实际的控件信息,这样就使原本没有可访问性的JavaUI元素对外包括暴露出可访问性。优选的,在自定义可访问性控件的实现中,还需要建立自定义控件实例与对应可访问性控件实现之间的映射关系,当BridgeJAR加载到JVM中时,通过反射的方式在全局变量中,注册控件ClassName与具体实现类的映射关系。优选的,在自定义可访问性控件的实现中,除了需要继EncooAccessibleComponent以获得UI元素基本信息的实现,当控件本身存在特定的行为或方法时,还需要实现对应的AccessibleInterface。优选的,AccessibleSelection中提供了与可选性相关的接口,包含已选中得单元格数量,以及选中单元格的方法,AccessibleExtendedTable中则实现了获取表格行列和单元格内容等方法,从而支持了表格的结构化数据获取,至此本身无可访问性的自定义表格UI元素已实现了对外暴露UI信息,即可访问性的支持。与现有技术相比,本专利技术的有益效果是:本专利技术通过AttachApi实现的组件热加载,以及对自定义控件可访问性的实现,这里面包括对国内常见OA,ERP上自定义控件的支持,如用友NC,金蝶EAS等。对比市场上已有的RPA产品,热加载技术能使在无需配置和重启应用的情况下,自动化Java应用,节省RPA开发部署过程中的大量时间,提升产品的灵活和易用性。自定义控件的支持,让RPA产品能自动化几乎所有JavaAWT/Swing应用上的UI元素,同时遇到新的自定义控件也可快速实现对其的支持。附图说明图1为本专利技术的Java应用程序自动化系本文档来自技高网
...

【技术保护点】
1.一种Java应用程序自动化系统,其特征在于:所述的自动化系统包含BridgeIntruder模块、Bridge JAR模块、Bridge Server模块和Bridge Client模块;/nBridge Intruder模块是Java自动化组件注入模块;/nBridge JAR模块是自动化模块Java部分实现,负责与Java UI元素直接交互;/nBridge Server模块是自动化桥接Server端,负责接收客户端的调用,同时调用实际的Java方法;/nBridge Client是自动化桥接Client端,通过客户端可以发起对Java控件可访问性方法的调用。/n

【技术特征摘要】
1.一种Java应用程序自动化系统,其特征在于:所述的自动化系统包含BridgeIntruder模块、BridgeJAR模块、BridgeServer模块和BridgeClient模块;
BridgeIntruder模块是Java自动化组件注入模块;
BridgeJAR模块是自动化模块Java部分实现,负责与JavaUI元素直接交互;
BridgeServer模块是自动化桥接Server端,负责接收客户端的调用,同时调用实际的Java方法;
BridgeClient是自动化桥接Client端,通过客户端可以发起对Java控件可访问性方法的调用。


2.根据权利要求1所述的一种Java应用程序自动化系统,其特征在于:Java应用程序自动化系统通过AttachApi实现组件热加载,以及对自定义控件可访问性的实现。


3.根据权利要求1所述的一种Java应用程序自动化系统,其特征在于:所述的AttachApi实现组件热加载方法为:新增了AttachApi,该Api允许在JVM的运行过程中动态的设置和加载代理类,当RPA应用在录制和回放应用时,会根据窗口的ClassName自动判断是否为JavaAWT/Swing应用,并调用Intruder注入BridgeJAR组件,BridgeIntruder为Java应用程序,其中接收RPA软件传入的进程Id,使用AttachApi连接上JVM,然后使用loadAgent函数加载代理类所在的JAR包,即BridgeJAR组件,由于BridgeIntruder为Java应用程序,所以在调用之前需要由RPA应用程序获取到执行的Java环境;
对于通过loadAgent加载的自动化模块,也需要符合agent的规范,MANIFEST.MF文件中注明,当前JAR的AgentClass,同时,AgentClass需要实现名为agentmain的入口函数,JVM会在模块加载完成之后自动调用该入口函数,从而启动BridgeServer实现与BridgeClient之间的通信。


4.根据权利要求1所述的一种Java应用程序自动化系统,其特征在于:所述的对自定义控件可访问性的实现方法为:JavaUI元素的可访问性是通过对应的AccessibleControl实现的,当获取JButt...

【专利技术属性】
技术研发人员:刘春刚金亚东李迪
申请(专利权)人:上海云扩信息科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1