分桶方法decide
分桶方法decide
本主题概述了 JavaScript(浏览器)SDK 的判定方法,这些方法可用于在云眼灰度标帜(Feature Flag)AB实验中为用户返回标帜判定。
使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。
本页介绍以下决策方法:
决定
版本
SDK 4.5 及更高版本
描述
返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。
Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext。
有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision 。
参数
下表描述了 Decide 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| key | String | 灰度标帜(Feature Flag)的键 | 
| options(可选) | EyeofcloudDecideOption[] | Array of EyeofcloudDecideOption enums.请参阅下表。 | 
EyeofcloudDecision选项
下面的示例演示如何在任何 Decide 方法上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。请参见初始化软件开发工具包。
JavaScript
const eyeofcloudSdk = require('@eyeofcloud/eyeofcloud-sdk'); 
const eyeofcloudOptions = require('@eyeofcloud/eyeofcloud-sdk').EyeofcloudDecideOption; 
// set global default decide options when initializing the client 
const eyeofcloudClient = eyeofcloudSdk.createInstance({     
    sdkKey: '<YOUR_SDK_KEY>',     
    defaultDecideOptions: [eyeofcloudOptions.DISABLE_DECISION_EVENT], 
}); 
eyeofcloudClient.onReady().then(() => {     
    const user = eyeofcloudClient.createUserContext('user123');     
    // set additional options in a decide call     
    const decisionResultsMap = user.decideAll(         [             
        eyeofcloudOptions.ENABLED_FLAGS_ONLY,             
        eyeofcloudOptions.IGNORE_USER_PROFILE_SERVICE,         
    ]     
    ); 
});下表显示了 EyeofcloudDecideOption 的详细信息。
| EyeofcloudDecideOption 枚举 | 如果设置: | 
|---|---|
| EyeofcloudDecideOption.DISABLE_DECISION_EVENT | 防止访问者在收到变体时触发展示,这将禁止在“结果”页面上显示 Decide 方法的结果。 此设置可能是 Decision Event Dispatched 枚举在返回的 EyeofcloudDecision对象或 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 未就绪、标志键无效等),则它将返回一个包含空变体键字段的决策,并使用错误消息填充“原因”字段(无论“包含原因”选项如何)。
示例决策
下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:
JavaScript
// create the user and decide which flag rule & variation they bucket into  
const attributes = {   
    logged_in: true 
}; 
const user = Eyeofcloud.createUserContext('user123', attributes); 
const decision = user.decide('product_sort');  
// variation. if null, decision fail with a critical error 
const variationKey = decision['variationKey']; 
if (variationKey === null) {   
    console.log(' decision error: ', decision['reasons']); 
}  
// flag enabled state: 
const enabled = decision['enabled'];  
// String variable value: 
const value = decision.variables['sort_method'];  
// all variable values 
const allVarValues = decision['variables'];  
// flag decision reasons 
const reasons = decision['reasons'];  
// user for which the decision was made 
const userContext = decision['userContext'];副作用
如果启用了通知侦听器,则调用此侦听器。DECISION
全部决定
返回用户的所有活动(未存档)标志的决策。
有关详细信息,请参阅 EyeofcloudDecision。
版本
SDK 4.5 及更高版本
描述
使用 Decide All 方法可返回用户的标志决策映射。
参数
下表描述了 Decide All 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| options(可选) | EyeofcloudDecideOption[] | EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption。 | 
返回
Decide All 方法返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision。
如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。
例子
下面是使用 Decide All 调用获取用户标志的示例:
JavaScript
const attributes = {   
    logged_in: 
    true 
};  
const user = Eyeofcloud.createUserContext('user123', attributes); 
// make decisions for all active (unarchived) flags in the project for a user 
let decisions = user.decideAll(); 
// or only for enabled flags 
decisions = user.decideAll([EyeofcloudDecideOption.ENABLED_FLAGS_ONLY]);  
const flagKeys = Object.keys(decisions); 
const decisionForFlag1 = decisions['flag_1'];副作用
如果启用了此侦听器,则为每个决策调用通知侦听器。DECISION
确定密钥
Decide For Keys 方法返回由标志键映射的决策结果对象。
版本
SDK v4.5 及更高版本
描述
获取标志键数组的标志决策图。
参数
下表描述了 DecideForKeys 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| Key | string[] | 字符串标志键的数组。 | 
| options(可选) | EyeofcloudDecideOption[] | EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption。 | 
返回
返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision。
如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。
例
以下是获取用户指定标志的示例:
JavaScript
// make a decisions for specific enabled  flags 
const keys = ['flag_1', 'flag_2']; 
const decisions = user.decideForKeys(keys); 
const decision1 = decisions['flag_1']; 
const decision2 = decisions['flag_2'];副作用
如果启用了此侦听器,则为每个决策调用DECISION通知侦听器。