# 快速开始

使用该项目前,你需要检查你本地的开发环境,避免出现问题

# 最新版本 v1.0.5

wepapp启动模块父pom设置为:
<parent>
    <groupId>top.ssrsdev</groupId>
    <artifactId>eightroes-webapp-base</artifactId>
    <version>1.0.4</version>
</parent>

wepapp启动模块依赖为:
<dependency>
    <groupId>top.ssrsdev</groupId>
    <artifactId>plugin-platform</artifactId>
    </dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

插件模块父pom设置为:

<parent>
    <groupId>top.ssrsdev</groupId>
    <artifactId>plugin-base</artifactId>
    <version>1.0.4</version> //版本改为最新发布版本
</parent>

# 所需环境

这里列出项目所需的环境与相关安装教程,方便刚入门的同学

1、JDK:1.8+
安装教程:https://www.runoob.com/java/java-environment-setup.html
3、Maven 3.0+
安装教程:https://www.runoob.com/maven/maven-setup.html
4、MYSQL 5.5.0+
安装教程:https://www.runoob.com/mysql/mysql-install.html
5、Node v10+
安装教程:https://www.runoob.com/nodejs/nodejs-install-setup.html

TIP

前端安装完 node 后,再安装 yarn

npm install -g yarn

# 开发准备

TIP

在使用该系统前,你还需要做如下准备

1、给 idea 安装 lombok 插件,我们用它可以省略 get,set 方法,可以使代码更简洁, 具体查看 lombok 教程

2、给 idea 安装MappingSearch插件

3、你需要有 Spring boot 的基础,推荐教程 Spring Boot 2.0 学习

4、你还需要有 Vue 的基础,推荐入门视屏教程 网易云课堂

# 运行项目

TIP

因为本项目是前后端分离的,所以需要前后端都启动好,才能进行访问

# 后端运行 - 源码模式(不推荐)

TIP

如果你想拥有工程的完全控制,或者自己二次开发可以,使用此模式,但是后续版本我们无法提供升级内容,需要自行维护

1、克隆项目:git clone https://gitee.com/quella01/EightRoes.git

2、导入项目:使用 idea 直接导入项目,安装依赖后,进入 eightroes-webapp模块,执行 springboot 启动类

3、导入数据:打开数据库,创建一个新库 eight-roes,导入 sql 文件夹中的初始化脚本。(后续版本可能会做自动初始化功能)

# 后端运行 - Maven 依赖模式(推荐)

TIP

我们强烈推荐你使用此模式,再后续版本迭代中,你只需要修改依赖版本号即可完成升级,我们在基础插件中提供了大量扩展点,你完全可以使用扩展行为来实现自己的需求,如果发现没有的扩展点,你可以通知我们处理。

我们提供了对应版本的两个 maven 骨架 eightroes-webapp-archetype 和 eightroes-plugin-archetype

eightroes-webapp-archetype:用于创建项目父模块和 webapp 模块

eightroes-plugin-archetype:用于创建插件模块

http://eightroes-doc.oss-cn-beijing.aliyuncs.com/img/eightroes-webapp-archetype.png

http://eightroes-doc.oss-cn-beijing.aliyuncs.com/img/eightroes-plugin-archetype.png

先使用eightroes-webapp-archetype创建父模块个 webapp 应用启动模块 (会自动创建相关配置文件)创建完成后修改数据库链接就可直接运行 eightroes

eightroes-plugin-archetype 用于创建插件模块

如果不想使用 mavne 骨架创建,可一自己手动创建 maven 项目。 webapp 启动模块的父 pom 改为 webapp-base,插件模块的父 pom 该文 plugin-base 即可,然后复制配置文件到 webpp 模块的 resources 文件夹就完成了。

webapp 启动模块 pom 文件

<parent>
    <groupId>top.ssrsdev</groupId>
    <artifactId>eightroes-webapp-base</artifactId>
    <version>1.0.4</version> //版本改为最新发布版本
</parent>
// 添加基础平台依赖和msql依赖
<dependency>
    <groupId>top.ssrsdev</groupId>
    <artifactId>plugin-platform</artifactId>
    </dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

插件模块 pom 文件

<parent>
    <groupId>top.ssrsdev</groupId>
    <artifactId>plugin-base</artifactId>
    <version>1.0.4</version> //版本改为最新发布版本
</parent>

# DEMO工程创建(推荐)

考虑到使用公共仓库maven骨架来创建项目会很慢,甚至还会失败,所以我们提供了一个demo工程仓库给大家。

仓库地址:https://gitee.com/quella01/eightroes-demo

大家可以根据需要版本下载对应版本的demo工程。

# 前端运行

1、克隆项目:https://gitee.com/quella01/EightRoes-Client.git

2、安装依赖:打开项目后输入命令安装依赖 yarn install

3、运行项目:yarn serve

启动完后打开 localhost:8000 即可

# 快速了解

# 什么是插件

插件是 EightRoes 中的核心概念,EightRoes 中的插件非常类似于 Eclipse 和 IDEA 中的插件,它是由一个.xml 的插件文件所描述的旨在扩展其他插件的功能、并可向其他插件提供扩展点和扩展服务的一组遵循规范的业务逻辑及其页面。一个插件由 java 代码,扩展点,扩展行为,扩展服务,扩展内容组成。

# 扩展点和扩展行为

为了让一个插件的 JAVA 类运行到指定行数时,可以执行其他插件中的指定的程序逻辑(通常是额外的数据校验和处理逻辑),需要定义扩展点。

扩展点是一个插件配置项,用于声明本插件的一个扩展行为注册入口。程序执行到扩展点所在的行时会查找所有注册到该扩展点的扩展行为,并执行所有的扩展行为指定的类。扩展项也是一个插件配置项,用于声明向哪个扩展点注册扩展行为,并指定该扩展点被调用时执行的类。

扩展点类型于 SWING 中的事件(Event),扩展行为则类似于监听器(Listener)。

# 扩展服务和扩展项

某一插件实现的功能需要依赖于本插件定义的某一接口的子类的集合时,需要定义扩展服务。扩展服务是一个插件配置项,用于声明本插件的一个扩展项注册入口;扩展项也是一个插件配置项,用于声明向哪个扩展服务注册扩展项。扩展项指定的类必须实现扩展服务指定的接口。

例如: 平台基础插件需要管理所有的短信服务,但是不知道其他插件都实现哪些短信服务,所以需要提供一个扩展服务,其他插件则可以将自己实现的短信服务扩展项注册到此服务,从而通知平台插件可以使用哪些短信服务。