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进行序列化。
目录
相关文章
|
缓存 NoSQL Java
【JetCache】JetCache的使用方法与步骤
【JetCache】JetCache的使用方法与步骤
3169 0
|
前端开发 架构师 搜索推荐
COLA 4.0:直击应用架构本质的最佳实践
COLA 4.0:直击应用架构本质的最佳实践
2827 0
COLA 4.0:直击应用架构本质的最佳实践
|
6月前
|
移动开发 JavaScript 小程序
小程序开发.uniapp.生命周期
小程序开发.uniapp.生命周期
207 0
|
运维 网络虚拟化 5G
带你读《ONAP技术详解与应用实践》之一:网络自动化挑战及ONAP介绍
国内首部系统剖析ONAP的书籍,也是理论性与实战性兼具的网络自动化实践指导书!本书详细全面地介绍了网络自动化的挑战和发展趋势,以及ONAP的概况、架构设计理念、设计原则、各模块实现细节、关键特性、应用场景和案例实践等。通过本书读者可以深入理解ONAP,提升对网络自动化及相关领域的认知。作者及其团队成员均是华为网络开源领域的专家,长期参与社区的治理、贡献和回馈,致力于通过产业协作,打造统一的平台,降低集成成本,加快新技术导入,助力新一代网络运维系统升级。同时,本书也融入了作者及其团队在网络开源领域的深刻洞察和见解,书中分享了华为参与网络开源的实践经验,是电信网络转型的重要参考。
|
6月前
|
IDE C# 开发工具
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
批量下载文件时使用多线程可以有效缩短完成时间,本文将讲解如何使用C#+CodePlus扩展库快速完成多线程的文件下载。 大部分代码由IDE自动生成,需要我们自己编写的代码正好**10行**。也就是说,只需要10分钟,就可以手撸一个多线程的批量下载器。
347 0
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
|
6月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
|
6月前
|
JavaScript
ant design vue 实现带参跳转页面
ant design vue 实现带参跳转页面
103 0
|
并行计算 算法 Java
使用Java编写高效的算法
在软件开发中,编写高效的算法是至关重要的。无论是处理大量数据、优化计算性能还是提升用户体验,我们都需要使用高效的算法来解决问题。本文将介绍一些Java相关的技术,帮助您编写高效的算法。
166 0
|
JavaScript 前端开发
error: The “xx“ component has been registered but not used (vue/no-unused-components) at
报错原因:因为搭建的vue项目选择了eslint校验规范->就是你定义了某个变量,但是你没有使用它.eslint规范就是你要么不定义,要么定义了就一定得用.
543 0