分桶方法decide

云眼About 5 min

分桶方法decide

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

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

本页介绍以下决策方法:

决定

版本

SDK 3.1 及更高版本

描述

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

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

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

参数

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

参数类型描述
Flag Key字符串灰度发布(特性标帜)的键
选项(可选)数组EyeofcloudDecideOption枚举的数组。参阅下面的表格。

云眼分桶结果 EyeofcloudDecision选项

下面的示例演示如何在任何 Decide 方法上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。

C#

using EyeofcloudSDK;     
using EyeofcloudSDK.EyeofcloudDecisions;     
using System;     

namespace ConsoleApp     {         
    class Program         
    {             
        static void Main()             
        {                 
            var eyeofcloudClient = EyeofcloudFactory.NewDefaultInstance(sdkKey: "<YOUR_SDK_KEY>");                      
            
            var user = eyeofcloudClient.CreateUserContext("user123");                      
            
            // set additional options in a decide call                 
            var decisionResultsMap = user.DecideAll(new EyeofcloudDecideOption[] {                     
                EyeofcloudDecideOption.ENABLED_FLAGS_ONLY,                     
                EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE,                     
                EyeofcloudDecideOption.DISABLE_DECISION_EVENT                 
            });                      
            
            Console.ReadKey();             
        }         
    }     
}

下表显示了云眼客户端的详细信息。请参见初始化软件开发工具包

可以在“决定方法”上设置的选项。

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

返回

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

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

示例决策

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

C#

// create the user and decide which flag rule & variation they bucket into      
var attributes = new UserAttributes();     
attributes.Add("logged_in", true);     

var user = eyeofcloud.CreateUserContext("user123", attributes);          

var decision = user.Decide("product_sort");          

// variation. if null, decision fail with a critical error     
var variationKey = decision.VariationKey;          

// flag enabled state     
var enabled = decision.Enabled;          

// all variable values     
var variables = decision.Variables;          

// String variable value     
string vs = null;     
try      {         
    vs = variables.GetValue<string>("sort_method");     
}      
catch (Exception e)      {       
    Console.WriteLine(e.ToString());     
}          

// Boolean variable value     
var vb = (bool) variables.ToDictionary()["k_boolean"];          

// flag decision reasons     
string flagKey = decision.FlagKey;          

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

// reasons for the decision     
var reasons = decision.Reasons;

副作用

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

决定一切


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

有关详细信息,请参阅 EyeofcloudDecision

版本

SDK v3.7 及更高版本

描述

使用 Decide All 方法可返回用户的标志决策字典。

参数

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

参数类型描述
选项(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅确定参数

返回

Decide All 方法返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

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

例子

下面是使用 Decide All 调用获取用户标志的示例:

C#

var options = new[] { EyeofcloudDecideOption.ENABLED_FLAGS_ONLY }; 
var decisions = user.DecideAll(options);  
var allKeys = decisions.Keys; 
var decisionForFlag1 = decisions["flag_1"];

副作用

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

决定密钥


Decide For Keys 方法返回指定标志键的标志决策映射。

版本

SDK v3.7 及更高版本

描述

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

参数

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

参数类型描述
Key数组字符串标志键数组。
选项(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption

返回

返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

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

以下是获取用户指定标志的示例:

C#

// make decisions for specific flags 
var keys = new[] { "flag-1", "flag-2" }; 
var decisions = user.DecideForKeys(keys);          

var decision1 = decisions["flag-1"]; 
var decision2 = decisions["flag-2"];

副作用

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

Last update:
Contributors: zhangweixue,“zhangweixue”