分桶方法decide

云眼About 5 min

分桶方法decide

本主题概述了可用于在云眼灰度实验中为用户返回标帜决策的 decide 方法。

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

本页介绍以下决策方法:

决定

版本

SDK 1.6.0 及更高版本

描述

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

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

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

参数

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

参数类型描述
Flag Key字符串灰度标帜的键
选项数组云眼分桶结果 EyeofcloudDecision选项数组。请参阅下表。

云眼分桶结果 EyeofcloudDecision选项

下表显示了云眼决策选项的详细信息。除了在 Decide 方法上单独设置这些选项外,还可以在实例化 Eyeofcloud 客户端时将它们设置为全局默认值。请参见初始化软件开发工具包

云眼分桶结果 EyeofcloudDecision选项如果设置:
EyeofcloudDecideOption.DisableDecisionEvent防止访问者在仍收到变体的同时触发展示open in new window,从而禁止在“结果”页面上open in new window显示 Decide 方法的结果。
此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecisionopen in new window 对象或 DECIDE 通知侦听器有效负载。
EnabledFlagsOnly仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。
IgnoreUserProfileService设置后,SDK 会绕过 UPS(查找和保存)进行决策。
如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。
IncludeReasons在 EyeofcloudDecision 对象的“原因”字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。
ExcludeVariables从决策结果中排除标记变量值。使用此选项可通过跳过大型 JSON 变量来最小化返回的决策。

返回

方法返回一个云眼决策对象。有关更多信息,请参阅云眼决策

如果该方法遇到严重错误(SDK 未就绪、标帜键无效等),则它会返回带有空变体键字段的决策,并使用错误消息填充“原因”字段(无论“包括原因”选项如何)。

示例决策

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

Go

import eoc "github.com/eyeofcloud/go-sdk/pkg/client"     

eyeofcloud_client, er := eoc.Client("SDK_KEY_HERE")          
user := eyeofcloud_client.CreateUserContext("user123", map[string]interface{}{"logged_in": true})     
decision := user.Decide("product_sort", []decide.EyeofcloudDecideOptions{})          

// Did the decision fail with a critical error?     
if decision.VariationKey == "" {         
    fmt.Printf("[decide] error: %v", decision.Reasons)         
    return     
}          

// flag enabled state:     
enabled := decision.Enabled          

// variable value:     
var value1 string     
decision.Variables.GetValue("sort_method", &value1)     

// or:     
value2 := decision.Variables.ToMap()["sort_method"].(string)          

// all variable values     
allVarValues := decision.Variables          

// variation     
variationKey := decision.VariationKey          

// flag decision reasons     
reasons := decision.Reasons          

// user for which the decision was made     
userContext := decision.UserContext

副作用

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

全部决定

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

有关详细信息,请参阅云眼决策

变体

SDK v1.6.0 及更高版本

描述

使用“全部决定”方法返回用户的标帜决策映射。

参数

下表描述了“全部决定”方法的参数:

参数类型描述
选项数组云眼分桶结果 EyeofcloudDecision选项数组。请参见确定参数open in new window

返回

方法全部决定返回云眼决策对象的映射。有关更多信息,请参阅云眼决策

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

例子

下面是使用“全部决定”调用获取用户的标帜的示例:

Go

// make a decisions for all active (unarchived) flags for the user     
decisions := user.DecideAll([]decide.EyeofcloudDecideOptions{})     
// or only for enabled flags     
decisions = user.DecideAll([]decide.EyeofcloudDecideOptions{decide.EnabledFlagsOnly})          

flagKeys := []string{}     
flagDecisions := []client.EyeofcloudDecision{}     
for k, v := range decisions {       
    flagKeys = append(flagKeys, k)       
    flagDecisions = append(flagDecisions, v)     
}     
decisionForFlag1 := decisions["flag_1"]

副作用

为每个决策调用DECISION通知侦听器(如果启用了此侦听器)。

决定键

方法返回指定标帜键的标帜决策映射。

变体

SDK v1.6.0 及更高版本

描述

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

参数

下表描述了“决定键”方法的参数:

参数类型描述
键(Key)数组字符串标帜键数组。
选项数组云眼分桶结果 EyeofcloudDecision选项数组。请参阅云眼决策选项

返回

返回云眼决策的映射。有关更多信息,请参阅云眼决策

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

下面是使用 Decide 方法获取用户的指定标帜的示例:

Go

decisions := user.DecideForKeys([]string{"flag_1", "flag_2"}, []decide.EyeofcloudDecideOptions{decide.EnabledFlagsOnly})          

decisionForFlag1 := decisions["flag_1"]     
decisionForFlag2 := decisions["flag_2"]

副作用

如果启用了DECISION侦听器,则为每个决策调用通知侦听器

Last update:
Contributors: zhangweixue