Sailpoint Identity IQ聚合任务报错:Build Rule必须返回Map求助
Sailpoint聚合账户任务报错:Build Rule必须返回Map
问题背景
需求为仅聚合类型为“Interne”或“Externe”的身份,编写的Build Rule代码如下:
import sailpoint.connector.DelimitedFileConnector; Map map = DelimitedFileConnector.defaultBuildMap(cols, record); String Type = (String) map.get( "TYPE" ); if(!Type.contains("Interne") && !Type.contains("Externe")){ return null; } return map;
执行聚合账户任务时触发错误:
聚合时发生异常。原因:java.lang.RuntimeException: sailpoint.connector.ConnectorException: Build Rule必须返回一个Map。
问题原因
Sailpoint的Build Rule要求方法必须始终返回Map对象,原代码中当身份类型不符合条件时返回null,违反了该约束,导致抛出异常。
修复方案
不能通过返回null过滤记录,应抛出ConnectorException让连接器自动跳过不符合条件的记录,同时保证方法返回值始终为Map。修改后的代码如下:
import sailpoint.connector.DelimitedFileConnector; import sailpoint.connector.ConnectorException; Map map = DelimitedFileConnector.defaultBuildMap(cols, record); String type = (String) map.get("TYPE"); // 采用大小写不敏感判断,避免字段值大小写差异导致的过滤失误 if (!"Interne".equalsIgnoreCase(type) && !"Externe".equalsIgnoreCase(type)) { throw new ConnectorException("跳过非目标类型的身份记录"); } return map;
补充说明
- 使用
equalsIgnoreCase替代contains,可以精准匹配类型值,避免因字段值包含目标字符串但并非完全匹配的情况(比如"InterneTest"会被错误保留)。 - 抛出ConnectorException后,连接器会跳过当前记录,不会将其纳入聚合结果,同时满足Build Rule的返回值要求。
内容的提问来源于stack exchange,提问作者fffirmin
相关产品推荐
相关产品推荐

