Halo 介绍

更新时间: 2018-09-12

1.Halo Framework概述

Halo Framework是基于DDD+CQRS+扩展点+流程编排的应用框架,致力于采用领域驱动的设计思想,规范控制程序员的随心所欲,从而解决软件的复杂性问题。

Halo设计原则简单,即在高内聚,低耦合,可扩展,易理解的指导思想下,尽可能的贯彻面向对象的设计思想和领域驱动设计的原则。

Halo Framework是基于DDD+CQRS+扩展点的应用框架,业务系统使用之自带光环!

2. Halo主要模块

Halo Framework的主要模块如下所示:

  • Halo主要模块

CQRS:读写分离架构-所有请求封装为命令对象,通过Command Bus分发到命令处理器执行,通过Event和Event Bus等实现读写分离。

** halo-DDD: 根据领域驱动设计思想,自定义注解 @Entity(实体)@Factory(工厂), @DomainService(领域服务), @ValueObject(值对象)@DomainRepository(资源库)@DomainAbility(域能力) 等进行战术设计,落地DDD,实现 业务与业务 隔离。

** halo-extension:基于扩展点的设计思想,自定义 @ExtensionPoint(扩展点注解)@Extension(扩展注解), 实现 平台和插件 隔离。

** halo-flow:基于流程编排思想,开发业务组件,编排应用内部已有业务资产,快速响应前台需求,久而久之形成大量可复用的业务组件库。

  • Halo-tools

** halo-codegen: 通过设计代码生成器, 快速生成最佳实践的基础代码和规范,提高开发效率和生产力,让业务开发人员专注于业务开发。

3. Halo Framework设计

4. Halo Framework设计思想

Halo框架的主要思想是 流程组合节点,节点调用域服务,域服务包含若干域能力,域能力下若干个业务扩展

  • 业务包与平台分离的插件化架构: 平台提供插件包注册机制,实现业务方插件包在运行期的注册。业务代码只允许存在于插件包中, 与平台代码严格分离。业务包的代码配置库也与平台的代码库分离,通过二方包的方式,提供给容器加载

  • 全链路统一的业务身份:
    平台需要能有按“业务身份”进行业务与业务之间逻辑隔离的能力,而不是传统SPI架构不区分业务身份, 简单过滤的方式。如何设计这个业务身份,也成为业务间隔离架构的关键。

  • 管理域与运行域分离: 业务逻辑不能依靠运行期动态计算,要能在静态期进行定义并可视化呈现。 业务定义中出现的规则叠加冲突,也在静态器进行冲突决策。在运行期,严格按照静态器定义的业务规则、冲突决策策略执行。