From ec14d5efa798c9d8482b0e7501b45e6a61a0fc74 Mon Sep 17 00:00:00 2001 From: Afresh Date: Thu, 20 Jan 2022 22:27:56 +0800 Subject: [PATCH] Update Feature-Management.md in zh-Hans. --- docs/zh-Hans/Modules/Feature-Management.md | 106 +++++++++++++++++- docs/zh-Hans/Modules/Permission-Management.md | 2 +- .../images/features-module-opening.png | Bin 0 -> 34761 bytes 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 docs/zh-Hans/images/features-module-opening.png diff --git a/docs/zh-Hans/Modules/Feature-Management.md b/docs/zh-Hans/Modules/Feature-Management.md index cb82a640d5..d408c17328 100644 --- a/docs/zh-Hans/Modules/Feature-Management.md +++ b/docs/zh-Hans/Modules/Feature-Management.md @@ -1 +1,105 @@ -TODO... \ No newline at end of file +# 功能管理模块 + +功能管理模块实现了 [功能系统](../Features.md) 定义的 `IFeatureManagementStore` 接口. + +> 此文档仅介绍了将功能值持续保存到数据库的功能管理模块. 请参阅 [功能](../Features.md) 来了解功能系统. + +## 如何安装 + +当你使用 ABP 框架 [创建一个新的解决方案](https://abp.io/get-started) 时, 此模块将被预安装(作为 NuGet/NPM 包). 你可以继续用其作为包并轻松地获取更新, 也可以将其源代码包含在解决方案中 (请参阅 `get-source` [CLI](../CLI.md) 命令) 以开发自定义模块. + +### 源代码 + +可以 [在此处](https://github.com/abpframework/abp/tree/dev/modules/feature-management) 访问源代码。源代码使用 [MIT](https://choosealicense.com/licenses/mit/) 许可, 所以你可以免费使用和自定义它. + +## 用户界面 + +### 功能管理对话框 + +功能管理模块提供了一个可重用的对话框来管理与对象相关的功能. 例如: [租户管理模块](Tenant-Management.md) 用它在租户管理页面管理租户的功能. + +![features-module-opening](../images/features-module-opening.png) + +当你点击租户的 *操作* -> *功能* 时, 将打开功能管理对话框. 下面是定义了两个功能的对话框示例截图: + +![features-modal](../images/features-modal.png) + +在对话框中, 你可以为租户启用, 禁用或设置功能值. + +## IFeatureManager + +`IFeatureManager` 是此模块提供的主要服务. 在多租户应用程序中, 它常用来读取和更改功能值. `IFeatureManager` 通常被 *租户管理对话框* 使用. 但如果需要设置功能值, 你也可以注入它. + +> 如果你只是想要读取或检查功能值, 请如 [功能文档](../Features.md) 中所述那样使用 `IFeatureChecker`. + +**示例: 为租户获取或设置功能值** + +````csharp +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.FeatureManagement; + +namespace Demo +{ + public class MyService : ITransientDependency + { + private readonly IFeatureManager _featureManager; + + public MyService(IFeatureManager featureManager) + { + _featureManager = featureManager; + } + + public async Task SetFeatureDemoAsync(Guid tenantId, string value) + { + await _featureManager + .SetForTenantAsync(tenantId, "Feature1", value); + + var currentValue = await _featureManager + .GetOrNullForTenantAsync("Feature1", tenantId); + } + } +} +```` + +## 功能管理提供程序 + +功能管理模块是可扩展的, 就像 [功能系统](../Features.md) 一样. 你可以通过定义功能管理提供程序来扩展它. 有3个预编译的功能管理提供程序已按下面的顺序注册: + +* `DefaultValueFeatureManagementProvider`: 从功能定义的默认值中获取功能值. 它无法设置默认值, 因为默认值是在功能定义中硬编码的. +* `EditionFeatureManagementProvider`: 获取或设置版本的功能值. 版本是分配给租户的一个功能分组. 租户管理模块没有实现版本系统. 你可以自己实现它, 或者购买已实现它并且提供更多SaaS功能的 ABP 商业版 [SaaS 模块](https://commercial.abp.io/modules/Volo.Saas), 像订阅和支付. +* `TenantFeatureManagementProvider`: 获取或设置租户的功能. + +`IFeatureManager` 在获取和设置的方法中使用了这些提供程序. 通常, 在 `IFeatureManager` 服务中, 每个功能管理提供程序都定义了扩展方法 (像租户功能管理提供程序就定义了 `SetForTenantAsync`). + +如果想要自定义提供程序, 你需要实现 `IFeatureManagementProvider` 接口或从 `FeatureManagementProvider` 基类继承: + +````csharp +public class CustomFeatureProvider : FeatureManagementProvider +{ + public override string Name => "Custom"; + + public CustomFeatureProvider(IFeatureManagementStore store) + : base(store) + { + } +} +```` + +`FeatureManagementProvider` 基类 (使用 `IFeatureManagementStore`) 为你做了默认的实现. 你可以按需重写基础方法. 在这个 `Custom` 的示例中, 每个提供程序必须有一个唯一的名称 (请保持简短, 因为每个功能值记录都会被保存到数据库中). + +创建提供程序类后, 你应该用 `FeatureManagementOptions` [选项类](../Options.md) 注册它: + +````csharp +Configure(options => +{ + options.Providers.Add(); +}); +```` + +提供程序的顺序很重要. 提供程序按相反的顺序被执行. 这意味着在此示例中 `CustomFeatureProvider` 是第一个被执行的. 你可以在 `Providers` 列表的任意位置插入你的提供程序. + +## 另请参见 + +* [功能](../Features.md) diff --git a/docs/zh-Hans/Modules/Permission-Management.md b/docs/zh-Hans/Modules/Permission-Management.md index e998e76dd7..3a53b6b07e 100644 --- a/docs/zh-Hans/Modules/Permission-Management.md +++ b/docs/zh-Hans/Modules/Permission-Management.md @@ -69,7 +69,7 @@ public class MyService : ITransientDependency * `UserPermissionManagementProvider`: 管理用户基础权限. * `RolePermissionManagementProvider`: 管理角色基础权限. -`IPermissionManager` 使用这些提供程序获取或设置权限. 你可以通过实现 `IPermissionManagementProvider` 或从 `PermissionManagementProvider` 注入基类定义你自己的提供程序. +`IPermissionManager` 使用这些提供程序获取或设置权限. 你可以通过实现 `IPermissionManagementProvider` 或从 `PermissionManagementProvider` 基类继承定义你自己的提供程序. **示例:** diff --git a/docs/zh-Hans/images/features-module-opening.png b/docs/zh-Hans/images/features-module-opening.png new file mode 100644 index 0000000000000000000000000000000000000000..a3899924ce875d228d0f207a8b9a8dbcdc6775d9 GIT binary patch literal 34761 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 H$It&aiOASe literal 0 HcmV?d00001