强制决策方法

云眼About 4 min

强制决策方法

本主题介绍强制决策方法,这些方法可用于强制用户进入云眼灰度发布(特性标帜)AB实验中的特定变体。

这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。

Ruby SDK 将在做出任何决定之前检查强制决策。如果找到所请求标帜的匹配项,Ruby SDK 将在做出正常决策之前立即返回强制决策(忽略受众条件流量分配)。

下面描述了 Ruby SDK 将遵循的特定场景:

标记到决策

  • SDK 将在给定标帜的任何决策调用开始时查找。如果为该标帜找到匹配的标帜到决策强制决策,它将返回该决定。

从实验规则到决策

  • SDK 将在决策开始时查找给定实验规则(标帜键)。如果为标帜找到匹配的实验规则到决策强制决策,它将返回决策。

从交付规则到决策

  • SDK 将在决策开始时查找给定的传递规则(标帜键)。如果找到匹配的传递规则到决策强制决策,它将返回该决策。

❗️

警告

在调用任何强制决策方法之前,必须将变体关联到标帜规则

对于强制决策,SDK 会像其他正常决策一样触发展示事件和通知(除非被 DISABLE_DECISION_EVENT 选项禁用)。

📘 注意

这些强制决策不是永久性的,将在重新初始化 EyeofcloudUserContext 时清除。

有关每种方法的更多信息,请单击下面的方法名称:

云眼分桶结果 EyeofcloudDecision上下文

Rubby

EyeofcloudDecisionContext = Struct.new(:flag_key, :rule_key)

云眼强制决策

Rubby

EyeofcloudForcedDecision = Struct.new(:variation_key)

设置强制决策方法 - set_forced_decision()

版本

3.10.0

描述

为给定的 设置强制决策 ()。variation_key``EyeofcloudDecisionContext

参数

下表列出了 Ruby SDK 的必需参数和可选参数。

参数

类型

描述

所需的上下文

结构

的实例,其中包含要设置的强制决策的必需和可选。EyeofcloudDecisionContext``flag_key``rule_key

(必选)决定

结构

的实例,其中包含要设置的强制决策所需的实例。EyeofcloudForcedDecision``variation_key

返回

一个布尔值,指示是否成功完成了强制决策 () 的设置。 variation_key

在此处查看完整的 Ruby SDK 示例。

获取强制决策方法 - get_forced_decision()

变体

3.10.0

描述

返回给定 的强制决策 ()。如果没有匹配项,则返回 null。 variation_key``EyeofcloudDecisionContext

参数

下表列出了 Ruby SDK 的必需参数和可选参数。

参数

类型

描述

所需的上下文

结构

的实例,其中包含要获取的强制决策的必需和可选。EyeofcloudDecisionContext``flag_key``rule_key

返回

上下文的强制决策实例,如果没有匹配项,则为 nil。 EyeofcloudForcedDecision

在此处查看完整的 Ruby SDK 示例。

删除强制决策方法 - remove_forced_decision()

变体

3.10.0

描述

删除给定 的强制决策 ()。variation_key``EyeofcloudDecisionContext

参数

下表列出了 Ruby SDK 的必需参数和可选参数。

参数

类型

描述

所需的上下文

结构

的实例,具有要删除的强制决策的必需和可选。EyeofcloudDecisionContext``flag_key``rule_key

返回

删除强制决策 () 时的成功/失败布尔状态。variation_key

在此处查看完整的 Ruby SDK 示例。

Remove All Forced Decisions Method - remove_all_forced_decisions()

Version

3.10.0

Description

Removes all forced decisions () for the user context.variation_key

Parameters

This table lists the required and optional parameters for the Ruby SDK.

参数

类型

描述

没有

不适用

不适用

返回

成功/失败布尔状态。

在此处查看完整的 Ruby SDK 示例。

完整代码示例

Rubby

require 'eyeofcloud' eyeofcloud = Eyeofcloud::EyeofcloudFactory.default_instance('sdk_key') user = eyeofcloud.create_user_context('test_user', attributes) flag_context = Eyeofcloud::EyeofcloudUserContext::EyeofcloudDecisionContext.new('flag-1', nil) flag_and_ab_test_context = Eyeofcloud::EyeofcloudUserContext::EyeofcloudDecisionContext.new('flag-1','ab-test-1') flag_and_delivery_rule_context = Eyeofcloud::EyeofcloudUserContext::EyeofcloudDecisionContext.new('flag-1','delivery-1') variation_a_forced_decision = Eyeofcloud::EyeofcloudUserContext::EyeofcloudForcedDecision.new('variation-a') variation_b_forced_decision = Eyeofcloud::EyeofcloudUserContext::EyeofcloudForcedDecision.new('variation-b') variation_on_forced_decision = Eyeofcloud::EyeofcloudUserContext::EyeofcloudForcedDecision.new('on') # set a forced decision for a flag success = user.set_forced_decision(flag_context, variation_a_forced_decision) decision = user.decide('flag-1') # set a forced decision for an ab-test rule success = user.set_forced_decision(flag_and_ab_test_context, variation_b_forced_decision) decision = user.decide('flag-1') # set a forced variation for a delivery rule success = user.set_forced_decision(flag_and_delivery_rule_context, variation_on_forced_decision) decision = user.decide('flag-1') # get forced variations forced_decision = user.get_forced_decision(flag_context) puts "[ForcedDecision] variation_key = #{forced_decision}" # remove forced variations success = user.remove_forced_decision(flag_and_ab_test_context) success = user.remove_all_forced_decisions

参见

云眼用户上下文

Last update:
Contributors: “zhangweixue”,zhangweixue