RPAJS中如何实现AOP开发
RPAJS中如何实现AOP开发
适用范围
Web端、移动端、H5端
现状、问题
RPAJS主要用于前端扩展开发,属于面向扩展点开发的一种模式。因此每个扩展点实例都拥有一个唯一的ID作为标识。应用在表单的不同布局实例上,也就需要用到不一样的ID来应对不同布局可能需要不同扩展逻辑的需求。免得具体实例写扩展逻辑比较静态,同样也带来了通用逻辑需要书写多次的问题
AOP开发思路
为了解决通用逻辑代码重复的问题,SDK提供了面向扩展点类型的切面。每个扩展点都是一个实例,每个实例都会有对应的扩展类型。AOP示意图:

- 每个表单的扩展实例,就会对应一个类型FormExtensionPoint
每个类型都对应一个AOP类,FormExtensionPoint对应的就是FormExtensionPointBatch
公式: AOP类型名称 = 扩展点类型名称+Batch
- 每个切面类型还可以通过ID的通配符进行细分,例如
new FormExtensionPointBatch("Account.*")
通配符基本符号
- ? 可以匹配任何单个字符
- *** ** 可以匹配任意字符串(包括空字符串)
应用实例
针对Account实体的所有业务类型和布局使用AOP
//定义一个表单的AOP类
const contactForm =
new xsyrpa.FormExtensionPointBatch(["xsy.breeze.web.contact.*.masterEntityCreation.*#*#"])
//AOP类型只用于监听多个来源,所以监听函数中多一个参数extInfo
contactForm.on("loaded",(data,resolve,reject,extInfo)=>{
//监听到的该类型具体扩展Id
const extId = extInfo.extId
//使用该extId可以创建不同的其他相关扩展实例,比如表单字段
//根据规则来,表单项ID=表单ID+字段APIKey
const formItemDepart = new xsyrpa.FormTextInputExtensionPoint(extId+"depart");
formItemDepart.setValue("demo");
});
一些原则
AOP类型只能用于监听多个扩展实例的事件,也就是批量监听是允许的。
AOP类型不能用于批量发送数据(设值操作等),因为在picker列表新建数据场景中同一个业务类型和布局的表单允许同时打开多个
