首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >企业应用程序中处理客户定义数据的首选方法

企业应用程序中处理客户定义数据的首选方法
EN

Software Engineering用户
提问于 2014-06-01 11:37:12
回答 5查看 173关注 0票数 4

假设我们有一个小型企业web (intranet)应用程序来管理汽车经销商的数据。它有管理客户,库存,订单,保证和车间的屏幕。

这个应用程序是安装在10个不同的汽车经销商客户网站。

这个应用程序的第一个版本是在没有提供特定于客户的数据的情况下创建的。例如,如果经销商A希望能够向客户附上一张照片,经销商B希望向每个车间添加电子邮件联系人,而经销商C希望将多个PDF报告附加到保修中,这样的每个特性都会添加到应用程序中,所以所有客户都收到了新更新的所有内容。

然而,这将不可避免地导致冲突,因为客户的数量增长,因为他们的使用模式是独特的,并且,例如,如果一个特定的经销商要求有能力附加(出于某种原因)库存物品的颜色(并能够根据这个颜色进行搜索)作为一个必需的项目,其他人真的不需要这个功能,而且肯定不希望它是一个必需的项目。或者,一个经销商希望在应用程序的另一个屏幕上管理员工的电子邮件联系人。

我想解决这个问题的一个解决方案是使用一种插件系统,在这个系统中,我们将拥有一个应用程序的核心,它提供客户、库存等标准功能,以及所有客户安装的插件。

会有不同类型的插件-独立屏幕,比如员工的电子邮件联系人,有他们自己的逻辑,和客户插件,可以扩展或装饰库存项目(如照片或颜色)。

库存(客户、订单.)插件需要安装过程、插入项目编辑器的挂钩、项目显示器、用于搜索的项筛选、备份钩子等等。

这是解决这个问题的正确方法吗?

EN

回答 5

Software Engineering用户

发布于 2014-06-03 03:07:05

许多系统都有一个针对经销商的“配置”部分。这通常是数据库中的一个简单的(dealer_id、name、value)托管。代码读取所有这些内容,并可以显示/隐藏(或使用服务器端技术包括/排除)某些用户界面选项。通常,user_id与dealer_id绑定在一起,所以您知道谁得到了什么。

您可以使用用户角色来完成所有这些任务,但这样可能会使人感到困惑。

我经常发现自定义代码会导致发布和测试噩梦。我相信这是可以成功的,但它似乎更简单,只要打开和关闭的配置。

当然,请确保您的数据库列是空的,或者有合适的默认值。

票数 2
EN

Software Engineering用户

发布于 2014-06-03 04:01:49

你走在正确的轨道上。插件为使用客户端特定数据和业务逻辑扩展核心数据和应用程序提供了一种干净的机制。

您必须架构您的数据库,以便可以将特定于客户端的数据添加到任何核心数据中。

假设您希望为客户数据提供扩展机制。我们还可以说,核心客户数据包括:

代码语言:javascript
复制
1. ID
2. Name (first, last, middle)
3. Address

此外,你还可以说:

代码语言:javascript
复制
4. Extension

Extension可以包括经销商的ID和可以找到扩展数据的数据库名称列表。

在客户端A的示例中,可以创建用于存储客户照片的表。该表和操作照片的逻辑可以打包到客户端A的插件中。如果另一个客户请求具有相同的功能,您可以向它们安装“客户照片”包。

由于扩展数据允许多个扩展,因此客户端可以请求尽可能多的插件。

您必须为每个客户端管理正确的插件集的打包。

票数 1
EN

Software Engineering用户

发布于 2014-06-01 14:08:03

一开始,您将为您的现有客户开发“自定义”设计。一旦您有了这些“定制”设计的“临界量”(为您的原始客户),您将能够混合和匹配您的设计为较新的客户。此时,有具体的安装过程、钩子、编辑器等将是有意义的。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/242647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档