跳到主要内容

使用人群组

人群组是可以在多个开关中共享的人群过滤规则。 我们将带领你使用FeatureProbe的平台创建一个人群组,然后在两个开关中使用这个人群组。并且通过一个后端程序,验证人群组的修改会同时在两个开关中生效。

假定我们要实现以下场景:

  • 有一个由测试人员email组成的白名单,需要在多个开关中使用。以便这组测试人员可以测试多个开关。
  • 这个测试人员白名单需要统一修改,添加的新测试人员可以在多个开关中生效。

在平台创建人群组

  1. 登录我们提供的FeatureProbe演示平台,如果是第一次登录,请输入邮箱。后续可以继续使用你的邮箱访问到属于你的数据。
  2. 点击人群组/+人群组新建一个新的人群

create segment

  1. 填入名称和标识,点击 创建并发布

publish segment

4.从列表中点击新创建的人群组,进入编辑。

segment_list_cn.png

  1. 添加一个规则,选择类型,输入属性email
  • 选择string类型
  • 规则是其中之一
  • 然后输入两个测试人员email
  • 点击发布

tutorial_segment_detail_cn.png 6. 此时还没有开关使用这个『用户组』,这里直接点击下一步,并且确认变更。

tutorial_segment_publish_next_step_cn.png

在开关中使用人群组

下面,我们来到开关列表,创建两个开关都使用以上创建的人群组qa_email

  1. 创建一个返回值为bool型的开关feature1,使用默认配置即可,然后点击创建并发布

tutorial_toggle_create_use_segment_cn.png

  1. 进入开关feature1的编辑页面,状态改为生效,点击+ 增加规则,选择人群组规则

tutorial_toggle_use_segment_add_rule_cn.png

  1. 编辑规则
  • 选择属于人群组
  • 选择测试人员email人群组
  • 为人群组设置返回值variation2
  • 其余返回规则设置返回值variation1

tutorial_toggle_use_segment_rule_detail_cn.png

  1. 发布开关feature1
  2. 重复以上步骤1-4,创建另一个使用相同人群组的开关feature2

代码访问验证人群组

后端代码编写

  1. 按你熟悉的语言,下载并打开相应的后端示例代码
bash:> git clone https://gitee.com/FeatureProbe/server-sdk-java.git
bash:> cd server-sdk-java

用编辑器打开src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java文件。

  1. 打开FeatureProbe平台项目列表页面, 可以在开关详情页点击服务来打开 project
  2. 复制服务端SDK密钥sdk key
  3. 服务端SDK密钥以及FeatureProbe网址 ("https://featureprobe.io/server") 填入后端代码相应变量中
src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java
private static final String FEATURE_PROBE_SERVER_URL = "https://featureprobe.io/server";
private static final String FEATURE_PROBE_SERVER_SDK_KEY = // 填入 服务端SDK密钥 ;
  1. 加入以下代码,模拟3个带email属性的用户访问这2个开关
src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java

public static void main(String[] args) throws IOException {

Logger root = (Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.WARN);

final FPConfig config = FPConfig.builder()
.remoteUri(FEATURE_PROBE_SERVER_URL)
.build();

// Init FeatureProbe, share this FeatureProbe instance in your project.
final FeatureProbe fpClient = new FeatureProbe(FEATURE_PROBE_SERVER_SDK_KEY, config);

FPUser[] users = {
new FPUser().with("email", "tester_a@company.com"),
new FPUser().with("email", "tester_b@company.com"),
new FPUser().with("email", "tester_c@company.com"),
};

for (FPUser user:users) {
if (fpClient.boolValue("feature1", user, false)) {
System.out.println(user.getAttr("email") + " see the new feature1");
} else {
System.out.println(user.getAttr("email") + " see nothing");
}
}

for (FPUser user:users) {
if (fpClient.boolValue("feature2", user, false)) {
System.out.println(user.getAttr("email") + " see the new feature2");
} else {
System.out.println(user.getAttr("email") + " see nothing");
}
}

fpClient.close();
}

提示

除了Toggle的规则中显式用到的用户属性需要通过with方法传入SDK,Toggle中所使用的人群组中需要用到的用户属性(例如:email),也需要通过with方法传入FeatureProbe SDK。

运行验证

运行编辑后的服务端程序

bash:> mvn package
bash:> java -jar ./target/server-sdk-java-1.4.0.jar

查看log验证结果,可以看到人群组中的两个测试email(tester_a和tester_b)能够看到两个新feature,而不在人群组中的email(tester_c)则看不到。

tester_a@company.com see the new feature1
tester_b@company.com see the new feature1
tester_c@company.com see nothing
tester_a@company.com see the new feature2
tester_b@company.com see the new feature2
tester_c@company.com see nothing

更新人群组

下面我们更新一下人群组的规则,然后验证更新结果可以同时在两个toggle上生效。

页面上更新人群组

  1. 进入人群组qa_email的编辑页面
  2. 将email帐号test_b删除,添加email帐号test_c

tutorial_segment_after_update_cn.png

  1. 发布人群组

重新运行程序查看结果

按以上运行方法再次运行程序,查看log

tester_a@company.com see the new feature1
tester_b@company.com see nothing
tester_c@company.com see the new feature1
tester_a@company.com see the new feature2
tester_b@company.com see nothing
tester_c@company.com see the new feature2

可以看到修改在两个开关上都生效了。