分桶方法decide

云眼About 5 min

分桶方法decide

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

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

本页介绍以下决策方法:

决定

版本

SDK 1.6.0 及更高版本

描述

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

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

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

参数

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

参数

类型

描述

旗键

字符串

灰度发布(特性标帜)的键

选项

数组

云眼分桶结果 EyeofcloudDecision选项数组。请参阅下表。

云眼分桶结果 EyeofcloudDecision选项

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

云眼分桶结果 EyeofcloudDecision选项

如果设置:

EyeofcloudDecideOption.DisableDecisionEvent

防止访问者在仍收到变体的同时触发展示open in new window,从而禁止在“结果”页面上open in new window显示 Decide 方法的结果。

此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecisionopen in new window 对象或 DECIDE 通知侦听器有效负载。

启用标帜仅

仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。

忽略用户配置文件服务

设置后,SDK 会绕过 UPS(查找和保存)进行决策。

如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。

包括原因

在 EyeofcloudDecision 对象的“原因”字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。

排除变量

从决策结果中排除标记变量值。使用此选项可通过跳过大型 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

源文件

包含 Go 实现的语言/平台源文件是 client.goopen in new window

Last update:
Contributors: “zhangweixue”