编译运行
1、使用idea导入pom.xml,等待导入完成。
2、右侧maven面板,找到BladeX项目,依次运行clean、compile、package、install,将BladeX安装到maven仓库中。
3、在nacos中添加配置。(注意:bladex需要nacos 2.x版本。)
打开http://127.0.0.1:8848/nacos/,用户名:nacos,密码:nacos。
创建blade.yaml,导入doc/nacos/blade.yaml。
创建blade-dev.yaml,导入doc/nacos/blade-dev.yaml。
创建blade-flow-dev.yaml,导入blade-ops/blade-flow/doc/nacos/blade-flow-dev.yaml。
4、导入mysql数据库。
创建数据库bladex和bladex_boot,导入doc/sql/mysql/bladex-saber-mysql.sql。
5、依次运行项目:blade-auth、blade-service/blade-system、blade-service/blade-user、blade-gateway。
部署运行
@echo off
@chcp 65001
title blade-system
cd bladex && java -Xms256m -Xmx256m -jar -Dfile.encoding=utf-8 blade-system.jar --spring.profiles.active=dev
pause
常用模块
工作台/通知公告:blade-service/blade-desk
工作台/通知公告:blade-service/blade-demo
个人信息/上传头像:blade-ops/blade-resource,需要9000端口
我的事务:blade-ops/blade-flow,需要导入doc/sql/mysql/bladex-flowable-mysql.sql到bladex_flow表。
系统监控/接口文档:blade-ops/blade-swagger
系统监控/服务治理:blade-ops/blade-admin,账号:blade、密码:blade。
系统监控/ELK监控:
系统监控/Zipkin监控:
系统监控/Turbine监控:
系统监控/Sentinel管理:
系统监控/Elasticsearch管理:
系统监控/日志管理:blade-ops/ blade-log
研发工具:blade-ops/blade-develop
流程管理/模型管理/创建:blade-ops/blade-flow-design
报表管理/报表配置:blade-ops/blade-report
资源管理/任务调度:blade-ops/blade-xxljob-admin,账号:admin,密码:123456
常见问题
1、访问:http:~/~/localhost:18000/时,报错:Access to XMLHttpRequest at 'http:~/~/localhost/blade-auth/oauth/token' from origin 'http:~/~/localhost:18000' has been blocked by CORS policy: Request header field request-origion is not allowed by Access-Control-Allow-Headers in preflight response。
编辑 blade-gateway\src\main\java\org\springblade\gateway\config\RouterFunctionConfiguration.java ,在ALLOWED_HEADERS中添加缺少的字段:request-origion。
2、如何启用nacos多命名空间支持,开发时读取本地配置文件。
编辑blade-common\src\main\java\org\springblade\common\launch\LauncherServiceImpl.java,添加以下代码:
package org.springblade.common.launch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
@AutoService(LauncherService.class)
public class LauncherServiceImpl implements LauncherService {
private final static Logger logger = LoggerFactory.getLogger("LauncherServiceImpl");
@Override
public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
Properties props = System.getProperties();
// 获取用户配置
String userHome = System.getProperty("user.home");
logger.info("user.home: " + userHome);
String nacosConfigPath = userHome + "/nacos/nacos.properties";
String nacosAddr = LauncherConstant.nacosAddr(profile);
String nacosNamespace = "";
File file = new File(nacosConfigPath);
if (file.exists()) {
try {
FileInputStream stream = new FileInputStream(nacosConfigPath);
Properties properties = new Properties();
properties.load(stream);
stream.close();
nacosAddr = properties.getProperty("addr");
nacosNamespace = properties.getProperty("namespace");
logger.info("find nacos config: " + nacosConfigPath);
logger.info("nacosAddr: " + nacosAddr);
logger.info("nacosNamespace: " + nacosNamespace);
} catch (Exception e) {
logger.warn(e.getMessage());
}
}
// 通用注册
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", nacosAddr);
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", nacosNamespace);
PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", nacosAddr);
PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", nacosNamespace);
PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
}
}
在home主目录(例如你的电脑的用户名是User,那么Windows上是C:\Users\{User}\)新建nacos文件夹,然后在nacos文件夹中新建nacos.properties配置文件,写入以下内容。
# nacos地址
addr=192.168.23.122:8848
# 你新建的nacos命名空间ID (不是命名空间名称)
namespace=jgpt
这样,启动bladex服务端,会自动检查配置文件(C:\Users\{User}\nacos\nacos.properties)是否存在,存在则使用本地配置,不存在则使用bladex\blade-common\src\main\java\org\springblade\common\constant\LauncherConstant.java中定义的配置。这样,可以避免修改LauncherConstant.java后,每次都需要重新编译整个服务端。
3、有的用户登录或点击某个菜单,会退出返回登录页面,提示未授权。
有些菜单设定只有超级管理员才能访问,如果不需要这么安全
全局替换
@PreAuth(RoleConstant.HAS_ROLE_ADMIN
为
~/~/@PreAuth(RoleConstant.HAS_ROLE_ADMIN
参考:https://sns.bladex.vip/q-1033.html
4、Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: relation "device_grid" does not exist on node1。
数据表不存在,实体类是DeviceGrid,但是数据表是DEV_DEVICE_GRID,在实体类上加上@TableName("DEV_DEVICE_GRID")即可。