1 Star 0 Fork 5

羽落风起 / fxEAP

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

Java/JavaFX企业级开发平台(fxEAP)

客户端下载

fxEAP Web Client

需要配置JDK以及JavaFX SDK,参见“配置及运行”章节。注意:本项目需要JDK 11.0.8、JavaFX SDK 17.0.2及以上配置。

演示用户信息

用户名及密码 说明
test01/123456 测试用户,英文环境
user02/123456 测试用户,中文环境
user01/123456 测试用户,繁体中文环境

界面演示

基于fxEAP模式化开发的演示系统。

https://user-images.githubusercontent.com/53809996/170219798-7310c07e-b04d-47b7-8349-c896a20c3367.mp4

演示网站

本项目中相关Markdown文件将不再更新,只更新代码,如果需要查看最新的文档,请访问www.lrJAP.com

fxEAP JavaFX开发手册

fxEAP JavaFX开发手册,本文档描述fxEAP对JavaFX组件的扩展与增加。

fxEAP模式化开发简介

fxEAP模式化开发,这是fxEAP中非常重要的一份文档,描述如何基于元数据结合格式化开发机制,实现功能的快速开发。

fxEAP模式化开发主要功能描述

功能 描述
枚举设计 基于ini文件生成自定义枚举信息,包括枚举类、json序列化/反序列化类、MyBatis Handler类,以及国际化资源信息。
参照设计 基于PowerDesigner或元数据,生成参照信息,包括前、后端相关代码及资源。
元数据设计 基于PowerDesigner,生成单一实体、树形结构的元数据信息,包括实体信息、实体属性信息、查询条件相关的前后端代码。
元数据是fxEAP中最基础的公共数据,是后续聚合对象设计、多对多对象设计、单据及功能菜单开发的基础。
聚合对象设计 基于元数据,设计并生成聚合对象的相关信息。支持一主一子、一主多子、多主、多主多子等复杂结构。并生成相应的前后端代码。
多对多对象设计 基于元数据,设计并生成多对多对象的相关信息。多对多结构中,最关键的是对照表。
资源国际化 对java源代码时的中文进行国际化处理。
单据定义 基于元数据(包括聚合、多对多),生成界面单据信息。
功能定义 基于单据定义,生成功能信息。
菜单定义 基于功能定义,生成菜单信息。一个功能可以生成多个菜单。

主要的基础模块

模块名称 说明
eap-platform/eap-platform-base 提供ValueObject、FX ValueObject、Reference参照系统、JavaFX扩展等
eap-platform/eap-platform-base-private 提供BusinessObject体系等
eap-platform/eap-platform-javafx 扩展并增强JavaFX界面组件

平台简述

有感于一些软件公司由于平台化、模式化方面的欠缺,开发人员实现并维护一个简单的管理型界面,往往需要数天的时间。前后端代码动辄几百行甚至数千行,并由此导致效率、维护等方面一系列的问题。

对此,我们的愿景或基本要求是:以实现一个中等复杂程度的一主一子型(即一张主表、一张子表)的管理功能为例,在需求明确并完成需求反讲等控制环节,可以开始编码的基础上,一个熟手应该在2个工时内就能够完成数据库设计、生成业务逻辑处理、界面展现等相关的框架性代码,与业务处理无关的手工代码量应该尽量少,可运行并具备基本的增删改查功能。对于一个新手,经过1-2周的培训,也能够以较快的速度完成一般复杂程度的业务功能的开发。

fxEAP用于验证上述愿景的可行性。在基于平台+模式化开发体系的支撑下,开发人员应该把主要精力放在实现业务逻辑上。软件公司或是编码人员的本质工作是什么?我们认为是解决客户的问题,满足客户的需求

这是我写这些文字和代码的初衷,也是fxEAP平台的主要源头。希望我的这些文字和代码,可以给面临项目交付压力的企业和开发人员一些有益的启迪和帮助。

目标

fxEAP是一个基于Java、借鉴我们以往接触以及了解到的企业级应用开发思想及经验、整合第三方成熟的技术框架及工具,产生的企业级应用开发平台。编写该平台主要的技术目标,是尝试使企业应用的开发过程标准化、模式化,使开发人员把精力集中在实现业务逻辑上,减少代码量,降低开发以及维护的成本,达到以下基本目标:

  • 提供自成体系、模式化的企业级应用开发思想、方法论、相应的规范和工具集,实现针对已知的绝大多数业务场景的模式化开发。fxEAP不仅仅是一堆代码,还包括思想、规范、工具集、最佳实践等内容。
  • 基于JavaFX,实现基于领域建模的代码自动生成,生成从UI到持久化所有相关的代码和配置信息,实现针对绝大多数业务场景的可视化开发。在此基础上进一步完成业务逻辑处理等相关的代码开发工作,以减少手工代码量、提高开发效率、降低开发难度和维护成本。例如,对于比较简单的只有增、删、改、查功能的管理型界面。“不写代码”从来都不是我们的重点或目标,恰恰相反,我们一直鼓励开发人员多“手办”代码,因为我们认为,所谓的高手、牛人,在成长的过程中,都逃不过“久病成医”和“熟能生巧”的宿命。所谓的神乎其技,无它,唯熟耳。
  • 持久化方面,基于MyBatis,结合fxEAP的Value Object(VO)体系,实现高效、易用的O-R Mapping机制,减少与数据操作相关的代码、配置文件以及SQL等配置信息。fxEAP持久化的目标,是以MyBatis(直接、少量SQL语句)的性能,达到Hibernate(VO映射)的易用性。包括便于前台界面展现、中间件业务逻辑处理及持久化、其它方面数据交互等方面的易用性。这是fxEAP基础价值的重要体现。
  • 实现模式化开发所需要的平台级的基础架构,包括元数据管理等。
  • 实现系统管理相关的基础功能,包括机构管理、功能权限管理(用户、角色、权限等)、数据权限、按钮权限等。
  • 实现应用层面基础的功能及组件,包括声明式事务、远程调用、安全体系、日志体系、工作流等基本功能及组件,减少冗余代码和技术耦合。
  • 充分利用主流的、经过项目验证的第三方技术,提高开发的便捷性、规范性,降低开发难度。工具能够提升效率。
  • 提供尽量多的基础应用级组件及开发模式,方便开发人员快速实现常见的通用业务需求,如可视化流程定义、公式编辑以及解析器、文件交换组件、任务体系、国际化体系、通用查询组件、模板处理、指标体系、业务锁机制、文档处理组件等,以提高复用程度,提升开发效率,降低开发难度和维护成本,加快业务功能的交付速度和质量。这是fxEAP平台在应用层面最主要的关键目标。
  • 继承并发扬以往的企业级应用开发经验,减少业务风险、提升平台性能、降低开发及维护的复杂度

平台框架

platform

UI(客户端/界面)

以JavaFX为主要UI框架,采用命令行方式启动,基于Spring Http Invoker与服务端进行数据交互,自动从服务端下载相关代码及资源。

Application(应用端/中间层/业务处理)

在业务逻辑层,支持基于BusinessObject(BO,业务处理对象)的模式化开发。远程调用方面,原先使用Spring Http Invoker,目前已经改为使用Dubbo。

DataBase(数据库)

根据我们的观察,一般情况下,开发人员可能比较关注应用端业务逻辑的实现,或者是关注UI端界面的展现及交互,对数据库层面投入的关注度反而不高。对此我们有一些不同的理解,套用《极限特工》中那句经典的台词,我们可以这样表述:**应用来了又去,而数据永存。**基于关系型数据库的企业应用系统,所有的业务功能、业务逻辑,都是对数据的处理及运用。我们认为,在企业级应用系统中,如果一定要说哪个组成部分最重要,那么一定是数据库——或者说是数据。对于金融行业客户那就尤为明显了,那些老牌的金融企业最宝贵的历史资产是什么?是那庞大的客户群历年生成的各种各样的数据。

业务功能产生数据可能只是一瞬间,但这些业务数据却需要在相当长的时间内进行存储和被运用。所以我们建议,要以提高数据使用的便捷性、高效性为第一目标,结合数据更新以及保存的要求,进行数据的物理结构设计。例如,数据将怎样被使用?需要对访问者进行哪些限制?是否需要单独的存储介质?是否需要进行表分区?选用堆表还是索引组织表?等等。

技术选型

  • 前端采用JavaFX。主要是因为对JS类框架不熟悉。但相信基本的思想都是能通用的。
  • 后端主要采用SpringBoot、MyBatis、Flowable等。
  • 基于Freemarker实现代码生成。
  • 前后端通讯采用Spring Http Invoker。也有本地代码分支使用Dubbo+Nacos,但实际开发调试过程不如Http Invoker方便。

平台框架

fxEAP平台框架在逻辑上可以分为三个层次:

  • 基础设施层。包括各种软硬件系统平台、数据库、中间件等。fxEAP是基于J2EE的企业级开发平台,具有跨平台的特性。操作系统方面,支持Windows、各种Linux/Unix等主流的操作系统。数据库方面,支持Oracle、DB2等企业级关系型数据库。支持各种基于J2EE规范的Web容器和商用中间件,如Tomcat、Jetty、JBoss等Web容器,WebSphere、WebLogic等企业级中间件。
  • 应用框架层。应用框架介于基础设施和应用系统之间,主要作用是为应用系统提供各种基础服务,并屏蔽基础设施的异构性和复杂性。
    • 元数据框架。元数据框架是fxEAP中重要的基础框架,它是UI框架、报表组件、国际化等应用框架和组件的基础。
    • 持久化框架。fxEAP的持久化框架基于MyBatis和ValueObject体系,目标是使用较少的代码实现较高性能的持久化。fxEAP持久化框架最主要的基类是业务基础对象(BasicBusinessBO)。
    • 任务调度框架。fxEAP的任务调度框架支持定时任务、条件任务、批量任务。
    • 国际化支持。基于资源文件实现国际化,fxEAP提供国际化工具,实现基于现有代码自动替换并生成国际化资源,同时提供统一的国际化资源加载工具。
    • UI框架。提供基于fxEAP模式化思想的UI框架,其中包括常见的界面模式以及最佳实践。为基于业务建模的快速开发提供基础支持。
  • 应用系统层。应用系统层的主要目标,是基于fxEAP模式化开发思想和工具集,高效、快速实现业务需求。
    • 业务建模。基于业务需求,实现元数据建模、功能建模、流程建模和界面建模。
    • 模式化开发。包括解决特定业务领域问题的思想、规范、工具集等。是fxEAP模式化开发思想的重要表现。

编译并运行

下载并配置JavaFX SDK

下载代码到本地

fxEAP GitHub

git clone https://github.com/lrJAP/fxEAP.git

fxEAP Gitee

git clone https://gitee.com/lrJAP/fxEAP.git

创建并初始化数据库

可以直接使用dump文件恢复Oracle或者MySQL数据库。

参考:fxEAP演示环境数据库初始化

配置Maven

  • 下载地址:Apache Maven

  • 解压到指定位置

  • 修改settings.xml

    platform

  • 可以为操作系统增加MAVEN_HOME参数,并把%MAVEN_HME%/bin添加到PATH参数中(以Windows为例)

把工程导入IntelliJ IDEA

需要安装Maven Helper插件

参考:fxEAP演示环境IDEA初始化

编译并安装eap-maven-dependencies模块

platform

编译并安装eap-maven-parent模块

方式同上。

配置并检查参数

  • 下载示例项目配置文件

  • platform

  • 配置文件说明

    platform

  • 控制台加解密工具

    com.lirong.eap.platform.base.bs.utils.JasyptUtils

    示例:

    platform

运行服务端

  • 打开Service页签

    platform

    如果使用的是IntelliJ IDEA社区版本,则需要找到WebAppFullApplication类,在类名上右击,选择Run "WebAppFullApplication"或者"Debug WebAppFullApplication"。

  • 服务端演示启动类

com.lirong.eap.webapp.full.WebAppFullApplication
  • 参数配置

    • 打开配置窗口

      platform

    • 设置VM参数

      platform

    • 输入VM参数

      platform

  • JVM示例参数

-ea -server -Xmx2g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true -DEAP_WORKING_PATH=E:/IDEAWorkspace/lrJAP_V1.1.2.RELEASE/10.Config/lrjap_working_path/webapp-demo-service -Dlogging.config=${EAP_WORKING_PATH}/config/logback.xml

EAP_WORKING_PATH需要指向服务端参数所在的目录(config子目录的上一层)。

-Dlogging.config指定logback日志配置文件。

  • 运行服务端

    platform

运行客户端

  • 启动类

    com.lirong.eap.test.HelloDesktopApplication

    参数设置

    参数为服务类设置VM参数的方式。

    VM参数设置

    platform

    JVM参数示例

    -Xmx2g
    -XX:MaxMetaspaceSize=512m
    -Dprism.lcdtext=false
    --module-path
    C:/JavaFX/javafx-sdk-17.0.2/lib
    --add-opens
    java.base/jdk.internal.misc=ALL-UNNAMED
    --add-modules=javafx.controls,javafx.web
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED
    --add-exports=javafx.base/com.sun.javafx.property=ALL-UNNAMED
    --add-exports=javafx.base/com.sun.javafx.collections=ALL-UNNAMED
    --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED
    --add-exports=javafx.graphics/com.sun.javafx.scene.layout=ALL-UNNAMED
    --add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
    --add-opens=javafx.controls/javafx.scene.control.skin=ALL-UNNAMED
    • --module-path:指向JavaFX SDK的lib目录。
    • -Dprism.lcdtext=false:用于在高分屏(4K)中实现界面抗锯齿的效果。

    运行客户端

    platform

    • 演示用户

      用户名及密码 说明
      admin/1 系统管理员,中文环境
      test01/1 测试用户,英文环境
      user01/1 测试用户,繁体中文环境

部署并运行

TODO

演示环境

MIT License Copyright (c) 2022 jianjun.yu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于JavaFX的企级业应用开发平台。 JavaFX based enterprise application development platform. 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/wangzonghui/fxEAP.git
git@gitee.com:wangzonghui/fxEAP.git
wangzonghui
fxEAP
fxEAP
main

搜索帮助