BroadleafCommerce介绍

简介:

1. 介绍

BroadleafCommerce是一个Java开源电子商务网站框架。其目标是开发企业级商务网站,它提供健壮的数据和服务模型、富客户端管理平台、已经一些核心电子商务有关的工具。

2. 特性

2.1 Catalog (目录分类)

提供灵活的产品和类型管理,一个重要的特性是可以继承产品分类来满足特殊的商业需求。管理界面可以管理各种类别和产品。

2.2 Promotion System(促销系统)

可通过配置的方式管理促销。以下类促销示无需客制化而通过管理界面即可管理:

  • 百分比折扣、金额折扣、固定价格(Percent Off / Dollar Off / Fixed Price)
  • 订单、订单项、快递级别促销
  • 买一赠一促销
  • 基于客户、购物车或类别属性的促销

2.3 Content Management System(内容管理系统)

内容管理系统有以下特性:

  • 支持用户直接管理静态页面
  • 可以配置顾客内容类型(如广告)
  • 提供UI界面管理静态页面、结构化内容、图片以及其他内容;
  • 结构化内容能够针对性的对某些客户显示(如对满足一定条件的客户显示广告)

3. 架构

3.1 Spring Framework

Spring提供诸多功能,包括依赖注入和事务管理

3.2 Security

Spring Security提供强健的安全认证框架,控制代码和页面级别的认证和授权。

3.3 Persistence

使用JPA和hibernate实现ORM基础

3.4 Asynchronous Messaging

使用spring JMS和一个现代的JMS代理交互来实现应用消息的异步处理。

3.5 Search

通过整合流行的Compass和lucene项目提供可灵活的domain查找功能。

3.6 Task Scheduling

使用Quartz提供排程功能。

3.7 Email

Email功能分为同步和异步(jms)两种模式。Email内容可以通过velocity模块客制化。支持mail打开和连接点击跟踪。

3.8 Modular Design(模块化设计)

提供各种模块,可以和电子商务的一些重要功能进行交互,如信用卡处理、税收服务、快递公司。 比如,USPS快递模块是一个好的案例。 客户模块可以很方便的开发并整合进来。

3.9 Configurable Workflows(可配置的工作流)

电子商务生命周期的关键表现在可配置的工作流。系统能够对这些关键的地方进行完全的控制,包括价格和结账,允许对订单、行为和客户执行模块进行操作。支持复杂内嵌行为的合成工作流。

3.10 Extensible Design(可扩展性设计)

扩展性是我们设计的核心,几乎broadleaf所有的组件都是可以继承、或添加、或者通过修改增强和改变默认的行为。 这些组件包括所有的service、数据访问对象、实体。

3.11 Configuration Merging(配置合并)

我们以扩展模块的附加部分,为客户提供对spring配置文件进行合并的功能。它可以最小化配置,一个实现必须清楚它允许用户只需把精力放在他们自己的配置细节。 Broadleaf在运行时会智能的将实现者的配置信息和自己的配置信息进行合并。

3.12 Runtime Configuration Management(运行时配置管理)

services、模块和其他子系统的配置属性通过JMX暴露,这样管理者不用关闭系统就可以改变应用行为。

3.13 Presentation Layer Support(表现层支持)

提供很多事先写好的spring MVC控制器来加快表现层的开发。

3.14 QoS(服务质量)

提供对客户和默认模块的服务质量监控,同时支持外部日志和email。其他客户Qos处理器可以通过我们的open API添加。

3.15 PCI Considerations(PCI注意事项)

我们的架构和设计经过了仔细的分析,帮助你在决定存储和使用敏感的客户金融账号信息的时候实现PCI遵从性。支付账号信息是分别引用的,允许你将机密的数据隔离存储到一个独立的安全的数据库平台。已经添加了API方法来包含PCI遵从性加密schema。另外,提供冗长的日志跟踪交易交互信息。

PCI(Payment Card Industry)(Payment Card Industry (PCI) Data Security Standard).支付卡行业 (PCI) 数据安全标准 (DSS)是一组全面的要求,旨在确保持卡人的信用卡和借记卡信息保持安全,而不管这些信息是在何处以何种方法收集、处理、传输和存储。

PCI DSS 由 PCI 安全标准委员会的创始成员(包括 American Express、Discover Financial Services、JCB、MasterCard Worldwide 和 Visa International)制定,旨在鼓励国际上采用一致的数据安全措施。

PCI DSS 中的要求是针对在日常运营期间需要处理持卡人数据的公司和机构提出的。具体而言,PCI DSS 对在整个营业日中处理持卡人数据的金融机构、贸易商和服务提供商提出了要求。PCI DSS 包括有关安全管理、策略、过程、网络体系结构、软件设计的要求的列表,以及用来保护持卡人数据的其他措施。

3.16 Customizable Administration Platform (客制化管理平台)

管理应用基于我们新的开放的管理平台,使用标准面向对象的技术提供一个清晰的客制化方式。管理平台和核心框架一样,都有很好扩展性。表现层是基于有名的可信赖的GWT和SmartGWT技术。

4. 源代码介绍

4.1 BroadLeaf核心领域对象分析

核心领域对象详见broadleaf-framework模块org.broadleafcommerce.core.*.domain包下的领域类。

4.2 BroadLeaf的子系统及其职责

Broadleaf做电子商务网站需要两部分内容。

第一部分:Broadleaf框架 Broadleaf电子商务框架由有9大模块组成(不包括第三方模块)

1) broadleaf-common
各个模块共享的集合类. > 依赖于 broadleaf-instrument

2) broadleaf-framework 
Broadleaf框架的核心类 > 依赖 于broadleaf-common, broadleaf-profile, broadleaf-contentmanagement-module

3) broadleaf-framework-web 
Spring MVC 控制器和相关的项目 > 依赖于 broadleaf-framework, broadleaf-profile, broadleaf-profile-web

4) broadleaf-profile 
客户资料相关的类,工具类, email, 配置合并 > 依赖于 broadleaf-common

5) broadleaf-profile-web 
Spring MVC控制器和 相关项目的 profile 模块> 依赖于on broadleaf-profile

6) broadleaf-instrument 
允许运行时检测到某些 Broadleaf的注解> 无依赖

7) broadleaf-open-admin-platform 
为Hibernate管理的domains 创建可拓展的用户图形管理界面框架> 依赖于 broadleaf-common

8) broadleaf-contentmanagement-module 
通过管理工具管理的一个功能齐全的内容管理系统 > 依赖于 broadleaf-open-admin-platform

9) broadleaf-admin-module 内容: Broadleaf 电子商务框架特定的管理模块,插入开发的管理平台> 依赖于 broadleaf-framework, broadleaf-open-admin-platform, broadleaf-contentmanagement-module

第二部分:需要在框架的基础上做web的开发,其框架已经封装了 已有功能的控制器方法,但是没有增加请求映射。DemoSite就是一个示例工程。

DemoSite 总共三个模块

  • core:框架模块 集成了框架
  • admin:后台管理页面的封装
  • site:前台网站的封装

4.3 BroadLeaf的分层及层之间的通讯机制

BroadLeaf的DemoSite 站点通过Maven集成BroadLeaf框架的各个模块,各个模块通过方法调用进行集成。就像添加普通的jar包一样。

BroadLeaf框架采用常见的MVC架构 分为控制层 服务层 DAO层。

4.4 BroadLeaf的扩展机制

1) 界面拓展机制

BroadLeaf的界面与框架式分离的(后台管理页面是集成在broadleaf-open-admin-platform模块里面),界面采用thymeleaf模板引擎开发。界面的拓展只需要美工针对于他们的模板修改样式就行。

如果觉得他们的模板实在不好,直接自己开发一套模板 替换到一下就可以了 只需要在applicationContext-servlet.xml中修改替代的模板位置。

2) 用户拓展机制

BroadLeaf提供了 RegisterCustomerForm、CustomerAttributes两个类用户拓展用户属性。添加的属性只需要简单的配置一下就可以了(BroadLeaf采用的Hibernate的数据库字段同步,修改完实体后数据库会自动的修改)

3) 订单处理流程拓展机制

增加或者删除订单流程只需要配置blCheckoutWorkflow bean实体覆盖框架提供的。 然后再自定义Activiti任务 添加到新的blCheckoutWorkflow 的activities属性列表里面就可以了。

4) 付款方式拓展机制

增加新的付款实体 实现其付款接口。

5) 数据库切换方式

  • 1.修改pom里面涉及到数据库连接的dependency为要切换的数据库的jdbc连接驱动
  • 2.修改properties文件里面的数据库连接信息(用户名、密码、URL、driverClassName、hibernate数据库方言)
  • 3.修改jndi连接信息

5. 缺点

目前已知的缺点或缺陷有:

  • 实体之间存在双向关联,导致无法直接使用json的工具类序列化和反序列化实体类。如果的确需要序列化实体类,比如说你需要提供api获取一些信息,你可以参考DemoSite中的api,对实体的封装类使用webservice进行序列化。
目录
相关文章
|
Linux 网络安全
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
2690 0
|
3月前
|
存储 缓存 Java
释放C盘空间:释放Windows休眠文件和关闭虚拟内存
在 Windows 11 专业版中,可以通过以下步骤来释放休眠文件(Hibernate File),以释放磁盘空间。休眠文件是系统休眠(Hibernate)功能所需要的文件,它保存了系统的当前状态,以便在休眠状态下恢复。如果你不使用休眠功能,如果因为C盘空间不足,可以考虑释放这个文件来腾出磁盘空间。
3305 0
|
运维 网络虚拟化 5G
带你读《ONAP技术详解与应用实践》之一:网络自动化挑战及ONAP介绍
国内首部系统剖析ONAP的书籍,也是理论性与实战性兼具的网络自动化实践指导书!本书详细全面地介绍了网络自动化的挑战和发展趋势,以及ONAP的概况、架构设计理念、设计原则、各模块实现细节、关键特性、应用场景和案例实践等。通过本书读者可以深入理解ONAP,提升对网络自动化及相关领域的认知。作者及其团队成员均是华为网络开源领域的专家,长期参与社区的治理、贡献和回馈,致力于通过产业协作,打造统一的平台,降低集成成本,加快新技术导入,助力新一代网络运维系统升级。同时,本书也融入了作者及其团队在网络开源领域的深刻洞察和见解,书中分享了华为参与网络开源的实践经验,是电信网络转型的重要参考。
|
8月前
|
弹性计算 运维 Devops
FinOps 应用入门指南
FinOps 是一种云成本管理和优化的解决方案,并为组织、企业、团队提供了系统化的方法论,其中每个人都应该对自己的云资源成本负责。
FinOps 应用入门指南
|
9月前
|
存储 Kubernetes 网络安全
【k8s 系列】k8s 学习五,k8s 集群部署尝试
【k8s 系列】k8s 学习五,k8s 集群部署尝试
142 0
PHP内存泄漏问题的原因是什么?解决方案是什么?
PHP内存泄漏问题的原因是什么?解决方案是什么?
545 0
|
机器学习/深度学习 人工智能 编解码
StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权
告别肖像权侵扰,无限生成 AI 人脸
401 3
StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权
|
关系型数据库 MySQL Java
JDBC连接Mysql时警告:Establishing SSL connection without server’s identity verification is not recommended
JDBC连接Mysql时警告:Establishing SSL connection without server’s identity verification is not recommended
JDBC连接Mysql时警告:Establishing SSL connection without server’s identity verification is not recommended