分桶方法decide
分桶方法decide
本主题概述了 Ruby SDK 的判定方法,这些方法可用于在云眼灰度标帜(Feature Flag)AB实验中为用户返回标帜判定。
使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。
本页介绍以下决策方法:
决定
版本
SDK v3.8 及更高版本
描述
返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。
Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext。
有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision 。
参数
下表描述了 Decide 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| key | 字符串 | 灰度标帜(Feature Flag)的键 | 
| 选项(可选) | 数组 | EyeofcloudDecideOption枚举的数组。请参阅下表。 | 
云眼分桶结果 EyeofcloudDecision选项
下面的示例演示如何在任何 Decide 方法上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。
Ruby
require "eyeofcloud"  
# set global default decide options when initializing the client 
eyeofcloud_client = Eyeofcloud::Project.new(     
    nil,nil, nil, nil, nil, nil,     
    "<YOUR_SDK_KEY>", nil, nil, nil, 
    [Eyeofcloud::Decide::EyeofcloudDecideOption::DISABLE_DECISION_EVENT] 
)  
user = eyeofcloud_client.create_user_context('test_user')  
decision_result_map = user.decide_all(
    [Eyeofcloud::Decide::EyeofcloudDecideOption::ENABLED_FLAGS_ONLY, 
    Eyeofcloud::Decide::EyeofcloudDecideOption::IGNORE_USER_PROFILE_SERVICE]
)下表显示了可以在“决定方法”上设置的选项的详细信息。
| 云眼分桶结果 EyeofcloudDecision选项枚举 | 如果设置: | 
|---|---|
| DISABLE_DECISION_EVENT | 防止访问者在仍收到变体的同时触发展示,从而禁止在“结果”页面上显示 Decide 方法的结果。  此设置可能是为什么决策事件调度枚举在返回的 false EyeofcloudDecision 对象或 DECIDE 通知侦听器有效负载。 | 
| ENABLED_FLAGS_ONLY | 仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。 | 
| IGNORE_USER_PROFILE_SERVICE | 设置后,SDK 将绕过用户配置文件服务 (UPS)(查找和保存)进行决策。  如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。  | 
| INCLUDE_REASONS | 在 EyeofcloudDecision 对象的 Reasons 字段中返回日志消息。请注意,与 info 或 debug 消息不同,无论此设置如何,始终返回严重错误消息。 | 
| EXCLUDE_VARIABLES | 从决策结果中排除标志变量值。使用此选项可通过跳过大型 JSON 变量来最大程度地减少返回的决策。 | 
返回
Decide 方法返回一个 EyeofcloudDecision 对象。有关详细信息,请参阅 EyeofcloudDecision。
如果方法遇到严重错误(SDK 未就绪、标志键无效等),则它会返回带有 nill Variation Key 字段的决策,并使用错误消息填充 Reasons 字段(无论“包含原因”选项如何)。
示例决策
下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:
Ruby
# create the user and decide which flag rule & variation they bucket into  
user = Eyeofcloud.create_user_context(user_id, attributes) 
decision = user.decide('product_sort')  
# variation. if nil, decision fail with a critical error 
variation_key = decision.variation_key  
# flag enabled state: 
enabled = decision.enabled  
# String variable value: 
value = decision.variables['logged_in'].to_s  
# all variable values 
all_var_values = decision.variables  
# flag decision reasons 
reasons = decision.reasons  
# user for which the decision was made 
user_context = decision.user_context副作用
如果启用了DECISION通知侦听器,则调用此侦听器。
决定一切
返回用户的所有活动(未存档)标志的决策。
有关决策对象的详细信息,请参阅 EyeofcloudDecision。
版本
SDK v3.7 及更高版本
描述
使用 Decide All 方法可返回用户的标志决策映射。
参数
下表描述了 Decide All 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| 选项(可选) | 数组 | EyeofcloudDecideOption 枚举的数组。 | 
返回
Decide All 方法返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision。
如果该方法在所有标志(例如,SDK 未准备就绪或用户上下文无效)中都失败,则返回一个空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。
例子
下面是使用 Decide All 调用获取用户标志的示例:
Ruby
# make decisions for all active (unarchived) flags in the project for a user 
decisions = user.decide_all() 
# or only for enabled flags 
decisions = user.decide_all([Eyeofcloud::Decide::EyeofcloudDecideOption::ENABLED_FLAGS_ONLY])  
decision_for_flag1 = decisions['flag_1']副作用
如果启用了每个决策的DECISION通知侦听器,则调用此侦听器。
决定密钥
在 PHP SDK 中,Decide For Keys 方法为用户做出指定标志键的决策。
版本
SDK v3.7 及更高版本
描述
获取标志键数组的标志决策图。
参数
下表描述了 Decide 方法的参数:
下表描述了 Decide For Keys 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| Key | 数组 | 字符串标志键数组。 | 
| 选项(可选) | 数组 | EyeofcloudDecideOption 枚举的数组。 | 
返回
返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision。
如果该方法在所有标志(例如,SDK 未准备就绪或用户上下文无效)中都失败,则返回一个空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。
例
以下是获取用户指定标志的示例:
PHP
# make a decisions for specific enabled flags 
options = [Eyeofcloud::Decide::EyeofcloudDecideOption::ENABLED_FLAGS_ONLY] 
decisions = user.decide_for_keys(['flag_1', 'flag_2'], options)  
decision_for_flag1 = decisions['flag_1'] 
decision_for_flag2 = decisions['flag_2']副作用
如果启用了每个决策的DECISION通知侦听器,则调用此侦听器。