功能实验的实时区段Java SDK 的区段限定方法
功能实验的实时区段Java SDK 的区段限定方法
使用fetchQualifiedSegments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索用户的外部受众映射。使用isQualifiedFor
方法检查用户是否符合指定区段的条件。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetchQualifiedSegments
最低 SDK 版本
4.0.0
描述
您可以使用fetchQualifiedSegments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud Feature Experimentation Java SDK 提供了fetchQualifiedSegments
方法的同步和异步版本。
- 在同步提取完成之前,调用方将被阻止。
- 异步 API 的调用者不会被阻止。
fetchQualfiedSegments
是UserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetchQualifiedSegments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | 字符串 | 用于从 ODP 获取合格区段的一组选项。 |
完成(用于异步调用) | 回调函数 | 要使用 fetch 结果调用的完成处理程序。 |
返回 - 同步调用
如果更新了用户上下文中的 qualified segments 数组,则fetchQualifiedSegments
synchronous 方法返回true
。
返回 - 异步调用
- 如果提取成功完成,则 Java SDK 会更新用户上下文中的限定 segments 数组,然后调用具有 success 状态的完成处理程序。
- 如果提取失败,SDK 将调用状态为 failure 的处理程序。
如果 Java SDK 在数据文件中找不到 ODP 受众,它将返回一个空的合格区段数组,而不向 ODP 服务器发送请求。
📘
注意
您可以直接读取和写入限定的 segments 数组,而不是调用
fetchQualifiedSegments
.这使您可以绕过 Eyeofcloud Data Platform ODP 的远程获取过程或使用您自己的获取服务。这在测试或调试时可能很有帮助。
示例 调用fetchQualifiedSegments
该代码通过实例化具有用户 ID“user123”和一组属性(其中包括值为“1.3.2”的“app_version”属性)来创建用户上下文。
代码的下一部分显示了如何使用fetchQualifiedSegments
方法获取所有带和不带 segment 选项的合格区段。
之后,代码使用decide
方法来决定是否向用户显示带有键 “flag1” 的功能标志。最后,SDK 调用trackEvent
跟踪名为 “myEvent” 的自定义事件的方法。
Map<String, Object> attributes = new HashMap<>();
attributes.put("app_version", "1.3.2");
EyeofcloudUserContext user = eyeofcloud.createUserContext("user123", attributes);
// Without segment option
Boolean response = user.fetchQualifiedSegments((Boolean isFetchSuccessful) -> {
System.out.println(isFetchSuccessful);
EyeofcloudDecision decision = user.decide("flag1");
user.trackEvent("purchase_event");
});
// With segment options
List<ODPSegmentOption> odpSegmentOptions = new ArrayList<>();
odpSegmentOptions.add(ODPSegmentOption.IGNORE_CACHE);
odpSegmentOptions.add(ODPSegmentOption.RESET_CACHE);
user.fetchQualifiedSegments((Boolean isFetchSuccessful) -> {
System.out.println(isFetchSuccessful);
EyeofcloudDecision decision = user.decide("flag1");
user.trackEvent("purchase_event");
}, odpSegmentOptions);
Map<String, Object> attributes = new HashMap<>();
attributes.put("app_version", "1.3.2");
EyeofcloudUserContext user = eyeofcloud.createUserContext("user123", attributes);
// Without segment options
Boolean response = user.fetchQualifiedSegments();
// With segment options
List<ODPSegmentOption> odpSegmentOptions = new ArrayList<>();
odpSegmentOptions.add(ODPSegmentOption.IGNORE_CACHE);
odpSegmentOptions.add(ODPSegmentOption.RESET_CACHE);
Boolean response = user.fetchQualifiedSegments(odpSegmentOptions);
EyeofcloudDecision decision = user.decide("flag1");
user.trackEvent("myevent");
下图显示了在调用fetchQualifiedSegments
时应用程序、Java SDK 和 ODP 服务器之间的网络调用:
- 调用
fetchQualifiedSegments
方法。 - Java SDK 对 ODP 进行 GraphQL 调用以获取区段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。请参阅以下内容。
- 为用户返回适当的变体。
SDK 会缓存任何获取的分段。这意味着,如果您再次请求相同的用户区段(在创建新的用户上下文时),SDK 可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器检索。
缓存用于调用fetchQualifiedSegments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetchQualifiedSegments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
您可以对odpSegmentOptions
数组使用以下选项来绕过缓存:
- IGNORE_CACHE – 绕过分段缓存以进行查找和保存。
- RESET_CACHE – 重置所有分段缓存。
isQualifiedFor
最低 SDK 版本
4.0.0
描述
检查用户是否符合给定受众细分的条件。
参数
isQualifiedFor
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 |
返回
true
如果用户是合格的。
例子
以下是用户是否符合 ODP 分段条件的示例:
Java
Map<String, Object> attributes = new HashMap<>();
attributes.put("laptop_os", "mac");
EyeofcloudUserContext user = eyeofcloud.createUserContext("user123", attributes);
Boolean response = user.fetchQualifiedSegments();
Boolean isQualified = user.isQualifiedFor("segment1");