有什么优势,解决什么问题
RPA不仅解决了人力成本、效率、准确性等问题,还为企业数字化转型提供了有力支持。通过RPA的实施,公司可以更加专注于核心业务的发展,提升整体运营效率和竞争力。同时,RPA产品还具备强大的可扩展性和可定制性,能够满足不同的个性化需求。
常见RPA应用领域
私域业务场景
业务架构流程

技术架构简介
◦业务APP:企微小助手,我们可以基于通用组件和基础服务实现其它小助手的功能
◦业务组件:企微监控服务包括定时服务、监控消息、解析消息、建群、获取群码、群管理、拉人踢人等,大部分服务与远程指令服务功能一一对应,如发送消息、回复消息、群管理、拉人踢人、建群、获取群码;
◦基础服务:无障碍解析服务包括解析节点、解析登录、解析窗口、执行点击、进退页面、解析滚动、权限处理等;网络服务包括基础库封装、日志拦截、版本管理等;日志服务包括日志打印,日志存储,日志分析,日志上传等。对于安卓无障碍服务基本原理,将在后面介绍。

无障碍服务基本原理
•安卓无障碍功能实现的主要构成,可以分为以下三个部分:辅助的小助手APP、被辅助的企微APP和系统服务AccessibilityManagerService,三者关系如下图所示,小助手APP不需要直接跟被辅助的APP通信,而是通过SystemService中转通信,如下图所示:

•无障碍事件执行流程,主要分为以下几个关键步骤:
获取操作节点:AccessibilityNodeInfo
执行操作事件:
通过AccessibilityNodeInfo.performAction执行,通过无障碍服务(AccessibilityService)中的方法如 getRootInActiveWindow() 获取当前界面布局,然后使用 findAccessibilityNodeInfosByText 或 findAccessibilityNodeInfosByViewId 等方法进行过滤和定位。事件传递给到对应的Activity。
事件传递分发给给具体View:事件到达Activity,Activity会进一步进行事件分发到PhoneWindow,再分发到具体的View;与普通模式下的事件分发类似,无障碍事件分发也依赖于三个重要方法:
-
dispatchHoverEvent(MotionEven tevent):用来进行事件的分发,返回值取决于当前View的onHoverEvent()方法和子View的dispatchHoverEvent()方法的影响。 -
onInterceptHoverEvent(MotionEven tevent):仅ViewGroup拥有的方法,用来判断是否拦截某个事件。 -
onHoverEvent(MotionEvent event):在dispatchHoverEvent()方法中进行调用,用来处理hover事件。
◦最终无障碍事件的执行:经过上述分发过程后,最终的无障碍事件会被传递给具体的View进行处理;performAction 方法返回一个布尔值,表示操作是否成功执行。成功执行通常返回 true,否则返回 false;
总体来说,无障碍事件执行流程主要包括获取操作节点、执行操作事件、事件传递分发给给具体View以及最终执行和结果等步骤。这一流程确保了无障碍服务能够准确地捕获和处理用户的输入事件,从而提供有效的辅助功能。主要流程图如下:

◦服务启动与注册:
-
当Android系统启动时,会启动大量系统服务,其中就包括AccessibilityManagerService(AMS)。
-
AMS在创建时会注册一些系统广播,如应用状态变化广播PackageMonitor。当有应用安装、卸载或更新时,PackageMonitor会收到广播。
AMS会获取对应应用中注册的AccessibilityService,并保存该服务的信息。如果设置中开启了该服务,AMS会启动该服务,并返回服务的代理
AccessibilityService.IAccessibilityServiceClientWrapper。
◦事件传递与通信:
-
应用进程的UI变化、获取焦点、点击按钮等事件都会通过 AccessibilityManager发送给AMS。
public class MyAccessibilityService extends AccessibilityService {public void onCreate() {super.onCreate();// 初始化代码}public void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();switch (eventType) {case AccessibilityEvent.TYPE_VIEW_CLICKED:// 处理点击事件break;// 其他事件类型...default:break;}}public void onInterrupt() {// 当服务被中断时调用}// 可能还有其他辅助方法,如查找UI元素、模拟点击等}同时,还需要在应用的res/xml/目录下配置一个accessibility_service_config.xml文件,来声明AccessibilityService的相关属性,如监听的事件类型、反馈方式等。
-
安全性与进程间通信: 由于不同的应用运行在各自的进程中,Android使用AIDL(Android Interface DefinitionLanguage)来实现进程间通信(IPC)。这确保了AccessibilityService能够安全地与AMS和其他系统组件通信。
未来展望规划
经过一年多的发展,不管从产品体验上还是技术架构上存在着一些不足,需要面向用户优化用户体验,优化技术架构和性能,不断提升用户体验,满足业务运营需求。将借助AI提升RPA软件机器人的自主学习和决策能力,提升机器人的工作效率,使其能够处理更深层次的业务流程;与AI技术等深度融合,实现更深度的自动化和智能化,提供更智能的私域运营服务。


