28 Star 31 Fork 19

UBML / business-entity-framework

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

业务实体框架

介绍

采用DDD领域驱动设计方法,本仓库属于UBML低代码建模体系中领域层模型结构描述仓库。
在DDD领域驱动设计中,领域层作为核心层,承载了领域核心的业务逻辑和数据结构。UBML采用领域模型驱动设计方法,引用业务实体(BusinessEntity,简称BE)描述领域模型,业务实体支持“充血模型”设计,包含了实体数据结构和丰富的业务逻辑建模,可以支撑业务逻辑开发中各种场景的建模。业务实体通过提供细粒度的业务逻辑建模支撑,通过业务实体将业务逻辑打散,进行细粒度拆分,然后在不同的时机将这些业务逻辑进行编排,最终实现业务逻辑的沉淀复用。
业务实体模型介绍请参照业务实体模型

业务实体框架是基于业务实体模型提供的代码级运行时框架,承载了领域核心的业务逻辑和数据结构,提供了实体、值对象、聚合、领域服务、领域事件等领域模型核心特性支持,内置支持基本的CRUD操作,还支持自定义领域服务操作、各个时机的扩展事件、校验规则等自定义逻辑。
业务实体框架提供了细粒度的业务规则配置与编排能力,支持核心业务逻辑的可持续沉淀与复用。通过提供BFF层(Backend For Frontend)与特定应用场景和功能界面解耦,避免了领域核心的业务逻辑受具体业务功能的干扰,有助于核心业务逻辑的稳定。

业务实体框架主要特性

业务实体框架基于领域驱动设计方法,将DDD中领域层进行抽象封装,具有稳定可靠、可持续积累复用、易于扩展、高性能、高效五大特性。

稳定可靠

稳定性:在UBML中,采用前后端分离架构方法,在业务实体框架的基础上,提供了BFF框架(Backend For Frontend,服务于前端的后端):业务实体框架作为后端 承载核心的业务逻辑的实现,BFF框架承载与前端对应的特定业务场景的业务逻辑实现,这样不管前端如何改变,只要核心业务规则不变,后端逻辑总是稳定不变的。
可靠性:在业务实体框架中,提供了内置的CRUD操作,并且在CRUD操作的基础上,封装了全场景的数据访问接口,这样任何业务逻辑对数据的修改都通过业务实体框架接口进行; 同时,在业务实体框架中在CRUD不同时机提供了业务逻辑(计算规则、校验规则)挂接能力,业务逻辑可以挂接到数据变化的不同时机上。这样不管对数据如何进行改变,都绕不过去基于 数据变化的业务逻辑运行,保证后台数据和业务规则不会出错。

可持续积累复用

1、在UBML中,采用DDD设计方法, 将系统划分为若干微服务单元,微服务单元内部不同职责的功能划分为若干业务对象,业务实体承载BO核心的业务逻辑。在各个 业务实体之间,只能通过提供的方法接口来访问,无法直接访问到内部的逻辑,这样实现各个功能之间的解耦。 2、在业务实体内部,业务实体框架提供了一种细粒度的业务逻辑编排机制,使业务开发只是开发最细粒度的业务逻辑,然后对这些细粒度的业务逻辑进行编排,这样细粒度的 业务逻辑就很容易积累和复用。
3、在领域层,提供了业务字段封装了数据类型的定义。通过业务字段,可以将可复用的数据类型(比如邮箱、组织、地址等等)进行统一的封装,在业务实体中集成了业务字段类型 提升了数据类型的积累和复用。

易用扩展

业务实体框架,通过提供细粒度的业务逻辑挂接机制,使应用开发将大的规则打散、编排,这样如果想加新的业务逻辑,直接将新的业务逻辑插入到相应的时机中即可,扩展非常方便。

高性能

业务实体框架提供了JIT(即时编译)机制、数据增量精简传输、三级数据缓存、两阶段数据库提交等特性,减少了运行时解析、数据传输、数据库交互等各个时机的 消耗,最大化地提升了并发效率。

高效

在UBML社区版(即将发布)中,提供了业务实体建模IDE,能够做到5分钟、零编码地开发一个简单(基本CRUD)的应用。对于中等规模的后端功能,开发效率比手工编排 也能提升数倍,并且只需少量编码,其他内容框架自动集成。

运行模式

在UBML中,业务实体提供了两种运行模式:代码生成运行和解析运行。
代码生成运行:通过代码生成器,将业务实体模型生成可运行的代码并将其编译部署,运行时运行编译后的结果(比如Java语言中的Jar包)。此模式适用于对运行效率要求高的功能;
解析运行:不生成代码,运行时直接读取并解析业务实体模型进行运行。 此模式能够更加灵活,并且部署无需重启服务,效率更高。

不管是代码生成和解析运行,都是基于业务实体框架运行起来的,业务实体框架是生成的代码和解析引擎两者的复用的结构。

业务实体相关仓库

在UBML项目中,业务实体相关仓库有四个,分别是:业务实体模型(business-entity-model)、业务实体框架(business-entity-framwork)、 业务实体生成器(即将开放)、业务实体解析引擎(即将开放)。
业务实体生成器依赖业务实体,通过加载业务实体,将之生成为基于(代码继承、依赖等)业务实体框架的java代码; D 业务实体解析引擎:通过解析业务实体模型来运行应用功能。

目录结构

待完善

约束

开发语言:
Java,开发框架SpringBoot
依赖仓库:
底层开发框架相关: caf-frameworkcaf-boot
元数据基础框架: metadata-commonmetadata-servicemetadata-service-dev
数据库对象相关: database-object-modeldatabase-object-service
相关仓库: business-entity-frameworkbusiness-entity-generatorbusiness-entity-engine

使用说明

待完善

参与贡献

参与贡献,请参照如何贡献获取帮助。

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

UBML领域层模型业务实体的运行时框架--业务实体框架,属于低代码后端模型以及运行时。它与其配套项目构成了集建表、持久化、业务逻辑(自定义的方法)、业务事件于一身的低代码后台开发及运行框架。基于业务实体框架,可快速开发后台服务(内置CRUD操作,快速定义自定义操作),并且支持自定义数据类型。 展开 收起
Java 等 2 种语言
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/ubml/business-entity-framework.git
git@gitee.com:ubml/business-entity-framework.git
ubml
business-entity-framework
business-entity-framework
dev

搜索帮助