分桶方法decide
分桶方法decide
可用于在云眼灰度标帜(Feature Flag)AB实验中为用户返回标帜决策的 decide 方法概述。
使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。
可以使用多种“决定”方法:
决定
返回用户的标帜键的决策结果。
版本
1.0.0-beta 或更高版本
描述
系统在 EyeofcloudDecision 对象中返回决策结果,并包含传递标帜规则所需的所有数据。
Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext。
有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision 。
参数
下表描述了 Decide 方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| key | 字符串 | 灰度标帜(Feature Flag)的键。 | 
| 选项(可选) | 设置 | 云眼分桶结果 EyeofcloudDecision选项枚举集。请参阅下表。 | 
云眼分桶结果 EyeofcloudDecision选项
下表显示了云眼决策选项的详细信息。只能在 Decide 方法上单独设置这些选项。请参见初始化软件开发工具包。
Dart
// set options in a decide call  
var flutterSDK = EyeofcloudFlutterSdk("<Your_SDK_Key>"); 
var response = await flutterSDK.initializeClient(); 
// flag decision 
var user = await flutterSDK.createUserContext("user123"); 
Set<EyeofcloudDecideOption> options = {}; 
options.add(EyeofcloudDecideOption.disableDecisionEvent); 
var decisions = user!.decideAll(options);| EyeofcloudDecision选项枚举 | 如果设置: | 
|---|---|
| EyeofcloudDecideOption.disableDecisionEvent | 防止访问者在仍获得变体的同时触发展示,这将禁止在 Eyeofcloud 应用程序的“结果”页面上显示 Decide 方法的结果。  此设置可能是为什么决策事件调度枚举在返回的 false EyeofcloudDecision 对象或 DECIDE 通知侦听器有效负载。 | 
| EyeofcloudDecideOption.enabledFlagsOnly | 仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,系统将忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。 | 
| EyeofcloudDecideOption.includeReasons | 在 EyeofcloudDecision 对象的“原因”字段中返回日志消息。与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。 | 
| EyeofcloudDecideOption.excludeVariables | 从决策结果中排除标记变量值。使用此选项可通过跳过大型 JSON 变量来最小化返回的决策。 | 
| EyeofcloudDecideOption.ignoreUserProfileService | 设置后,SDK 会绕过 UPS(查找和保存)进行决策。  如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。  | 
返回
方法返回一个云眼决策对象。有关更多信息,请参阅云眼决策。
如果该方法遇到严重错误(SDK 未就绪、标帜键无效等),则它会返回带有空变体键字段的决策,并使用错误消息填充“原因”字段(无论“包括原因”选项如何)。
示例决策
下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:
Dart
Map<String, dynamic> attributes = {}; 
attributes["logged_in"] = true; 
var user = await flutterSDK.createUserContext("user123", attributes);  
var decideResponse = await user!.decide("product_sort");  
// variation. if null, decision fail with a critical error 
var variationKey = decideResponse.decision!.variationKey;  
// flag enabled state: 
var enabled = decideResponse.decision!.enabled;  
// all variable values 
var variables = decideResponse.decision!.variables;  
// String variable value 
var vs = variables["sort_method"] as String;  
// Boolean variable value 
var vb = variables["k_boolean"] as bool;  
// flag key for which decision was made 
var flagKey = decideResponse.decision!.flagKey;  
// user for which the decision was made 
var userContext = decideResponse.decision!.userContext;  
// reasons for the decision 
var reasons = decideResponse.decision!.reasons;副作用
如果启用了此侦听器,则调用DECISION通知侦听器。
全部决定
返回用户的所有活动(未存档)标帜的决策。
有关详细信息,请参阅云眼决策。
变体
1.0.0-测试版
描述
使用 Decide All 方法返回用户的标帜决策映射。
参数
下表描述了“全部决定”方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| 选项(可选) | 设置 | 云眼分桶结果 EyeofcloudDecision选项枚举集。请参见确定参数。 | 
返回
方法返回云眼决策的映射。有关更多信息,请参阅云眼决策。
如果该方法对所有标帜都失败(例如,SDK 未就绪或用户上下文无效),则它将返回一个决策响应,其中成功状态false、原因和决策为 null 对象。如果该方法检测到特定标帜的错误,它将在该标帜的决策的“原因”字段中返回错误消息。
例子
下面是使用“全部决定”调用获取用户的标帜的示例:
Dart
// make decisions for all active (unarchived) flags in the project for a user 
Set<EyeofcloudDecideOption> options = const { EyeofcloudDecideOption.enabledFlagsOnly }; 
var decisionsResponse = await user!.decideAll(options);  
var decisionMap = decisionsResponse.decisions; 
var decisionForFlag1 = decisionMap["flag_1"];副作用
为每个决策调用DECISION通知侦听器(如果启用了此侦听器)。
决定键
方法返回指定标帜键的标帜决策映射。
变体
1.0.0-测试版
描述
获取特定标帜键的标帜决策图。
参数
下表描述了“决定键”方法的参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
| 键(Key) | 数组 | 字符串标帜键数组。 | 
| 选项(可选) | 设置 | EyeofcloudDecideOption枚举的数组.请参阅云眼决策选项。 | 
返回
返回云眼决策的映射。有关更多信息,请参阅云眼决策。
如果该方法对所有标帜都失败(例如,SDK 未就绪或用户上下文无效),则它将返回一个决策响应,其中成功状态false、原因和决策为 null 对象。如果该方法检测到特定标帜的错误,它将在该标帜的决策的“原因”字段中返回错误消息。
例
以下是获取用户指定标帜的示例:
Dart
var keys = ["flag-1", "flag-2"]; 
var decisionsResponse = await user!.decideForKeys(keys);  
var decisionMap = decisionsResponse.decisions; 
var decision1 = decisionMap["flag_1"]; 
var decision2 = decisionMap["flag_2"];副作用
为每个决策调用DECISION通知侦听器(如果启用了此侦听器)。