分桶方法decide

云眼About 5 min

分桶方法decide

本主题概述了 JavaScript(节点)SDK 的判定方法,这些方法可用于在云眼灰度发布(特性标帜)AB实验中为用户返回标帜判定。

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

本页介绍以下决策方法:

决定

版本

SDK 4.5 及更高版本

描述

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

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

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

参数

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

参数

类型

描述

旗键

字符串

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

选项(可选)

数组

Array of EyeofcloudDecideOption enums.请参阅下表。

云眼分桶结果 EyeofcloudDecision选项

下面的示例演示如何在任何 Decide 方法上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。请参见初始化软件开发工具包

JavaScript

const eyeofcloudSdk = require('@eyeofcloud/eyeofcloud-sdk'); const eyeofcloudOptions = require('@eyeofcloud/eyeofcloud-sdk').EyeofcloudDecideOption; // set global default decide options when initializing the client const eyeofcloudClient = eyeofcloudSdk.createInstance({ sdkKey: '<YOUR_SDK_KEY>', defaultDecideOptions: [eyeofcloudOptions.DISABLE_DECISION_EVENT], }); eyeofcloudClient.onReady().then(() => { const user = eyeofcloudClient.createUserContext('user123'); // set additional options in a decide call const decisionResultsMap = user.decideAll( [ eyeofcloudOptions.ENABLED_FLAGS_ONLY, eyeofcloudOptions.IGNORE_USER_PROFILE_SERVICE, ] ); });

下表显示了云眼决策选项的详细信息。

云眼分桶结果 EyeofcloudDecision选项枚举

如果设置:

EyeofcloudDecideOption.DISABLE_DECISION_EVENT

防止访问者在仍获得变体的同时触发展示open in new window,这将禁止在 Eyeofcloud 应用程序的“结果”页面上open in new window显示 Decide 方法的结果。

此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecisionopen in new window object or the DECIDE notification listener payload.

EyeofcloudDecideOption.ENABLED_FLAGS_ONLY

Return decisions for enabled flags only. This is a valid option only for methods that decide multiple flags, like the Decide All method. This option is ignored if it is invalid. When this option is not set, the SDK returns all decisions regardless of whether the flag is enabled or not.

EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE

When set, the SDK bypasses UPS (both lookup and save) for the decision.

When this option is not set, UPS overrides audience targeting, traffic allocation, and experiment mutual exclusion groups.

EyeofcloudDecideOption.INCLUDE_REASONS

Return log messages in the Reasons field of EyeofcloudDecision object. Note that unlike info or debug messages, critical error messages are always returned, regardless of this setting.

EyeofcloudDecideOption.EXCLUDE_VARIABLES

Exclude flag variable values from the decision result. Use this option to minimize the returned decision by skipping large JSON variables.

Returns

The Decide method returns an EyeofcloudDecision object. For more information, see EyeofcloudDecision.

If the method encounters a critical error (SDK not ready, invalid flag key, etc), then it returns a decision with a null Variation Key field and populates the Reasons field with error messages (regardless of the Include Reasons option).

Example Decision

The following is an example of calling the Decide method and accessing the returned EyeofcloudDecision object:

JavaScript

// create the user and decide which flag rule & variation they bucket into var attributes = { logged_in: true }; var user = eyeofcloudClient.createUserContext('user123', attributes); var decision = user.decide('product_sort'); var variationKey = decision['variationKey']; // Did the decision fail with a critical error? if (variationKey === null) { console.log(' decision error: ', decision['reasons']); } // flag enabled state: var enabled = decision['enabled']; // String variable value: var value = decision.variables['sort_method']; // all variable values var allVarValues = decision['variables']; // variation. if null, decision fail with a critical error var variationKey = decision['variationKey']; // flag decision reasons var reasons = decision['reasons']; // user for which the decision was made var userContext = decision['userContext'];

Side Effects

Invokes the notification listener if this listener is enabled.DECISION

Decide All

Returns decisions for all active (unarchived) flags for a user.

See EyeofcloudDecision for details.

Version

SDK 4.5 and higher

Description

Use the Decide All method to return a map of flag decisions for a user.

Parameters

The following table describes parameters for the Decide All method:

Parameter

Type

Description

options (optional)

Array

Array of EyeofcloudDecideOption enums. See EyeofcloudDecideOption.

Returns

The Decide All method returns a map of EyeofcloudDecisions. For more information, see EyeofcloudDecision.

If the method fails for all flags (for example, the SDK isn't ready or the user context is invalid), then it returns an empty map. If the method detects an error for a specific flag, it returns error messages in the Reasons field of the decision for that flag.

Examples

The following is an example of getting flags for the user with the Decide All call:

JavaScript

var attributes = { logged_in: true }; var user = eyeofcloudClient.createUserContext('user123', attributes); // make decisions for all active (unarchived) flags in the project for a user var decisions = user.decideAll(); // or only for enabled flags var decisions = user.decideAll([EyeofcloudDecideOption.ENABLED_FLAGS_ONLY]); var flagKeys = Object.keys(decisions); var decisionForFlag1 = decisions['flag_1'];

副作用

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

决定键

方法返回由标帜键映射的决策结果的对象。

变体

SDK v4.5 及更高版本

描述

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

参数

下表描述了“决定键”方法的参数:

参数

类型

描述

键(Key)

数组

字符串标帜键数组。

选项(可选)

数组

Array of EyeofcloudDecideOption enums.请参阅云眼决策选项

返回

返回云眼决策的映射。有关更多信息,请参阅云眼决策

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

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

JavaScript

// make a decisions for specific enabled flags var keys = ['flag_1', 'flag_2']; var decisions = user.decideForKeys(keys); var decision1 = decisions['flag_1']; var decision2 = decisions['flag_2'];

副作用

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

源文件

包含 JavaScript 实现的语言/平台源文件是索引.jsopen in new window

Last update:
Contributors: “zhangweixue”