强制决策方法
强制决策方法
本主题介绍功能实验 Go SDK 的强制决策方法,可以使用该方法强制用户进入云眼中的特定变体。
这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。
Go SDK 将在做出任何决策之前检查强制决策。如果找到所请求标帜的匹配项,Go SDK 会在做出正常决策之前立即返回强制决策(忽略受众条件和流量分配)。
下面介绍了 Go SDK 将遵循的具体场景:
标记到决策
- SDK 将在给定标帜的任何决策调用开始时查找。如果为该标帜找到匹配的标帜到决策强制决策,它将返回该决定。
从实验规则到决策
- SDK 将在决策开始时查找给定实验规则(标帜键)。如果为标帜找到匹配的实验规则到决策强制决策,它将返回决策。
从交付规则到决策
- SDK 将在决策开始时查找给定的传递规则(标帜键)。如果找到匹配的传递规则到决策强制决策,它将返回该决策。
❗️
警告
在调用任何强制决策方法之前,必须将变体关联到标帜规则。
在强制决策时,Go SDK 将像其他正常决策一样触发展示事件和通知(除非被 disableDecisionEvent 选项禁用)。
📘 注意
这些强制决策不是永久性的,将在重新初始化 EyeofcloudUserContext 时清除。
有关每种方法的更多信息,请单击下面的方法名称:
云眼分桶结果 EyeofcloudDecision上下文
Go
type EyeofcloudDecisionContext struct {
FlagKey string
RuleKey string
}
云眼强制决策
Go
type EyeofcloudForcedDecision struct {
VariationKey string
}
设置强制决策方法 - setForcedDecision()
版本
1.8.0 或更高版本
描述
为给定的EyeofcloudDecisionContext
设置强制决策(VariationKey
)。
参数
下表列出了 Go SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
(必选)决定 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
一个布尔值,指示是否成功完成了强制决策(VariationKey
) 的设置。
例
在此处查看完整的 Go SDK 示例。
获取强制决策方法 - getForcedDecision()
变体
1.8.0 或更高版本
描述
返回给定EyeofcloudDecisionContext
的强制决策(VariationKey
)。如果没有error
匹配项,则返回EyeofcloudForcedDecision
实例。
参数
下表列出了 Go SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
上下文的强制决策EyeofcloudForcedDecision
实例,如果没有匹配项,则出错。
例
在此处查看完整的 Go SDK 示例。
删除强制决策方法 - 删除强制决策()
变体
1.8.0 或更高版本
描述
删除给定EyeofcloudDecisionContext
的强制决策 (VariationKey
)。
参数
下表列出了 Go SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
删除强制决策(VariationKey
) 时的成功/失败布尔状态。
例
在此处查看完整的 Flutter SDK 示例。
删除强制决策方法 - 删除强制决策()
变体
1.0.0-beta 或更高版本
描述
删除给定EyeofcloudDecisionContext
的强制决策(variationKey
)。
参数
下表列出了 Flutter SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
成功/失败布尔状态(如果强制决策 (variationKey
) 已删除)。
例
在此处查看完整的 Flutter SDK 示例。
删除所有强制决策方法 - 删除所有强制决策()
变体
1.8.0-beta 或更高版本
描述
删除用户上下文的所有强制决策 (variationKey
)。
参数
下表列出了 Flutter SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
没有 | 不适用 | 不适用 |
返回
成功/失败布尔状态。
例
在此处查看完整的 Flutter SDK 示例。
完整代码示例
Go
factory := &client.EyeofcloudFactory{SDKKey: "sdk-key"}
if eyeofcloud, err := factory.StaticClient(); err == nil {
user := eyeofcloud.CreateUserContext("test-user", map[string]interface{}{})
flagContext := decision.EyeofcloudDecisionContext{FlagKey: "flag-1"}
flagAndABTestContext := decision.EyeofcloudDecisionContext{FlagKey: "flag-1", RuleKey: "ab-test-1"}
flagAndDeliveryRuleContext := decision.EyeofcloudDecisionContext{FlagKey: "flag-1", RuleKey: "delivery-1"}
variationAForcedDecision := decision.EyeofcloudForcedDecision{VariationKey: "variation-a"}
variationBForcedDecision := decision.EyeofcloudForcedDecision{VariationKey: "variation-b"}
variationOnForcedDecision := decision.EyeofcloudForcedDecision{VariationKey: "on"}
// set a forced decision for a flag
success := user.SetForcedDecision(flagContext, variationAForcedDecision)
decision := user.Decide("flag-1", nil)
// set a forced decision for an ab-test rule
success = user.SetForcedDecision(flagAndABTestContext, variationBForcedDecision)
decision = user.Decide("flag-1", nil)
// set a forced variation for a delivery rule
success = user.SetForcedDecision(flagAndDeliveryRuleContext, variationOnForcedDecision)
decision = user.Decide("flag-1", nil)
// get forced variations if forcedDecision, err := user.GetForcedDecision(flagContext); err == nil { fmt.Println("[ForcedDecision] variationKey = " + forcedDecision.VariationKey) } // remove forced variations success = user.RemoveForcedDecision(flagAndABTestContext) success = user.RemoveAllForcedDecisions() }