Java SDK 的分桶方法decide

云眼About 5 min

Java SDK 的分桶方法decide

Java SDK 的 decide 方法概述,可用于在 Eyeofcloud Feature Experimentation 中为用户返回标志决策。

使用 Decide 方法返回用户的标志决策。标志决策包括标志启用/禁用状态和标志变化。

本页介绍以下 Decide 方法:

决定


版本


SDK 3.2 及更高版本

描述


返回用户标志键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标记规则所需的所有数据。

Decide 是 UserContext 对象的方法。有关详细信息,请参阅 EyeofcloudUserContext

有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision

参数


下表描述了 Decide 方法的参数:

参数类型描述
flagKey(标志键)字符串功能标志的键
options(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅下表。

EyeofcloudDecide选项


下面的示例演示如何在实例化 Eyeofcloud 客户端时,在任何 Decide 方法上单独设置选项或作为全局默认值设置选项。请参阅初始化 SDK

Cotlin

from eyeofcloud import eyeofcloud 
from eyeofcloud.decision.eyeofcloud_decide_option import EyeofcloudDecideOption  
# set global default decide options when initializing the client eyeofcloud_client = eyeofcloud.Eyeofcloud(   
    sdk_key = sdk_key,   
    options = [EyeofcloudDecideOption.DISABLE_DECISION_EVENT]
)  
# set additional options in a decide call 
user = eyeofcloud.create_user_context("user123") 
decision = user.decide_all(   
    options = [EyeofcloudDecideOption.ENABLED_FLAGS_ONLY,
               EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE]
)

下表显示了 EyeofcloudDecideOption 的详细信息。

Java

# set global default decide options when initializing the client ProjectConfigManager configManager = HttpProjectConfigManager.builder()
             .withSdkKey(sdkKey)
             .build();
List<EyeofcloudDecideOption> options = Arrays.asList(EyeofcloudDecideOption.DISABLE_DECISION_EVENT);
Eyeofcloud eyeofcloud = Eyeofcloud.builder()
             .withConfigManager(configManager)
             .withDefaultDecideOptions(options)
             .build();
# set additional options in a decide call 
EyeofcloudUserContext user = eyeofcloud.createUserContext("user123"); List<EyeofcloudDecideOption> options = Arrays.asList(
    EyeofcloudDecideOption.ENABLED_FLAGS_ONLY, 
    EyeofcloudDecideOption.DISABLE_DECISION_EVENT);
Map<String, EyeofcloudDecision> decisions = user.decideAll(options);
EyeofcloudDecideOption 枚举如果设置:
EyeofcloudDecideOption.DISABLE_DECISION_EVENT防止访问者在收到变体时触发展示open in new window,这将禁止在“结果”页面上open in new window显示 Decide 方法的结果。此设置可能是 Decision Event Dispatched 枚举在返回的EyeofcloudDecisionopen in new window对象或 DECIDE 通知侦听器有效负载。
EyeofcloudDecideOption.ENABLED_FLAGS_ONLY仅返回已启用标志的决策。这仅适用于确定多个标志的方法(如 Decide All 方法)的有效选项。如果此选项无效,则忽略该选项。如果未设置此选项,则无论是否启用该标志,SDK 都会返回所有决策。
EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE设置后,SDK 会绕过用户配置文件服务 (UPS)(查找和保存)进行决策。如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。
EyeofcloudDecideOption.INCLUDE_REASONS在 EyeofcloudDecision 对象的 Reasons 字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。
EyeofcloudDecideOption.EXCLUDE_VARIABLES从决策结果中排除标志变量值。使用此选项可通过跳过大型 JSON 变量来最大程度地减少返回的决策。

返回


Decide 方法返回一个 EyeofcloudDecision 对象。有关详细信息,请参阅 EyeofcloudDecision

如果该方法遇到严重错误(SDK 未就绪、标志键无效等),则返回一个包含空 Variation Key 字段的决策,并使用错误消息填充 Reasons 字段(无论 Include Reasons 选项如何)。

示例决策


下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:

Java

// create the user and decide which flag rule & variation they bucket into 
Map<String, Object> attributes = new HashMap<>(); 
attributes.put("logged_in", true); 
EyeofcloudUserContext user = eyeofcloud.createUserContext(userId, attributes);  

EyeofcloudDecision decision = user.decide("product_sort");

// variation. if null, decision fail with a critical error 
String variationKey = decision.getVariationKey();  

// flag enabled state 
boolean enabled = decision.getEnabled();  

// all variable values 
EyeofcloudJSON variables = decision.getVariables();  

// String variable value 
String vs = null; 
try { 	
    vs = variables.getValue("sort_method", String.class); 
} catch (JsonParseException e) {   
    e.printStackTrace(); 
}  

// An alternative way to access a variable value 
Boolean vb = (Boolean) variables.toMap().get("k_boolean"); 

// flag key for which for which decision was made 
String flagKey = decision.getFlagKey();  

// a copy of the user context for which the decision was made EyeofcloudUserContext userContext = decision.getUserContext();   

// reasons for the decision 
List<String> reasons = decision.getReasons();

副作用


如果启用了DECISION通知侦听器,则调用此侦听器。

全部决定


返回用户的所有活动(未存档)标志的决策。

有关详细信息,请参阅 EyeofcloudDecision

版本


SDK v3.1 及更高版本

描述


使用 Decide All 方法可返回用户的标志决策映射。

参数


下表描述了 Decide All 方法的参数:

参数类型描述
options(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅确定参数open in new window

返回


Decide All 方法返回 EyeofcloudDecision 对象的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。

例子


下面是使用 Decide All 调用获取用户标志的示例:

Java

import com.eyeofcloud.ab.eyeofclouddecision.EyeofcloudDecideOption;  

// make decisions for all active (unarchived) flags in the project for a user 
List<EyeofcloudDecideOption> options = Arrays.asList(EyeofcloudDecideOption.ENABLED_FLAGS_ONLY);
Map<String, EyeofcloudDecision> decisions = user.decideAll(options);

Set<String> allKeys = decisions.keySet();
EyeofcloudDecision decisionForFlag1 = decisions.get("flag_1");

副作用


如果启用了此侦听器,则为每个决策调用DECISION通知侦听器open in new window

对标帜键确定


Decide For Keys 方法返回指定标志键的标志决策映射。

版本


SDK v3.1 及更高版本

描述


获取标志键数组的标志决策图。

参数


下表描述了 Decide for Keys 方法的参数:

参数类型描述
键(Key)数组字符串标志键的数组。
options(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOptionopen in new window

返回


返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。


以下是获取用户指定标志的示例:

Java

// make decisions for specific flags 
List<String> keys = Arrays.asList("flag-1", "flag-2"); 
Map<String, EyeofcloudDecision> decisions = user.decideForKeys(keys);

EyeofcloudDecision decision1 = decisions.get("flag-1"); 
EyeofcloudDecision decision2 = decisions.get("flag-2");

副作用


如果启用了此侦听器,则为每个决策调用DECISION通知侦听器open in new window

源文件


包含 Java 实现的语言/平台源文件位于 Eyeofcloud.javaopen in new window

Last update:
Contributors: zhangweixue,“zhangweixue”