# 微应用安装

文档中以MySQL数据安装为示例进行安装。

主数据 7.1 GA 基于 AFCenter 8.2.5 版本运行,因此不兼容非此版本的 AFCenter 组件。如果安装环境中的 AFCenter 版本低于 8.2.5,需要先升级 AFCenter。从8.2.2.2版本至8.2.5版本的升级,可参考此文档 (opens new window)

# 安装介质说明和准备

微应用安装介质前提是已经安装AFCenter环境, 即已经部署的EOS_AFCenter_8.2.5,或部署了独立的AFCenter环境。

微应用安装介质有两个:前端介质、后端介质

前端目录如下:

Primeton_MDM_7.1_GA_UI
├── mdm
│   ├── assets
│   └── static
│   └── index.html //首页
│   └── remoteEntry.js

后端目录如下

Primeton_MDM_7.1_GA_Server
├── bin //启动脚本
├── config //配置文件
├── db-scripts //部署db脚本

├── lib //数据库连接驱动jar
├── mdm-boot-7.1.1-exec.jar //服务jar

# 替换许可文件

复制Primeton_MDM_7.1_GA_MicroApp/Primeton_MDM_7.1_GA_Server/config/MDM/license下primetonlicense.xml,替换server目录下的primetonlicense.xml   
注意事项:查看目录中文件config/MDM/license/primetonlicense.xml里, 看标签expiration与当前时间对比是否过期

# 创建数据库

如果执行的是mysql的脚本,请在执行脚本之前将数据库设置不区分表名大小写。

创建mdm和mdm_pub两个数据库。执行如下脚本:

CREATE DATABASE `mdm` DEFAULT CHARACTER SET utf8mb4;
CREATE DATABASE `mdm_pub` DEFAULT CHARACTER SET utf8mb4;

# 执行初始化脚本

1.在已经安装的EOS_AFCenter_8.2.5的数据库afcenter4eos82里,

初始化主数据的数据到库afcenter4eos82,执行如下脚本:

db-scripts/mdm/mysql/00-mdm-afc-data.sql

2.如果afc和主数据不共用一个数据库,则需要初始化eos表。如果主数据的表与afc建于同一数据库中,则跳过此步。

在已经安装的EOS_AFCenter_8.2.5目录下找到以下脚本,并在主数据的数据库中执行:

db-scripts/eos/Mysql/all.sql

3.主数据表初始化,执行如下脚本:

db-scripts/mdm/mysql/10-mdm-ddl.sql
db-scripts/mdm/mysql/11-mdm-data.sql

4.主数据的mdm_pub数据库初始化,执行如下脚本:

db-scripts/mdm/mysql/20-mdmpub-ddl.sql

# 连接redis

在已经启动的afcenter介质,获取到redis的相关配置:host、port、password

# 检查驱动

检查lib目录下包含使用的数据库对应的驱动, 默认支持的数据库驱动及版本如下:

数据库厂商 驱动名 版本
mysql mysql-connector-java 8.0.17
oracle ojdbc6 11.2.0.3
dameng DmJdbcDriver18 8.1.1.193
openGauss opengauss-jdbc 3.0.0
sqlserver sqljdbc4 4.0

# 后端修改配置文件

# 1.数据库配置文件:config/MDM/config/user-config.xml

修改default与MDM_PUB配置:驱动DriverClass、Url、UserName、Password

<group name="default">
    <configValue key="Database-Type">MySql</configValue># db类型
    <configValue key="Jdbc-Type"/>
    <configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>#db驱动
    <configValue key="C3p0-Url">jdbc:驱动类型://IP:端口Port/mdm?useSSL=false</configValue>
    <configValue key="C3p0-UserName">用户名</configValue>
    <configValue key="C3p0-Password">密码</configValue>
    <configValue key="C3p0-PoolSize">5</configValue>
    <configValue key="C3p0-MaxPoolSize">30</configValue>
    <configValue key="C3p0-MinPoolSize">5</configValue>

    <!-- //seconds, 0 means connections never expire -->
    <configValue key="C3p0-MaxIdleTime">0</configValue>
    <!-- //idle connections never tested -->
    <configValue key="C3p0-IdleConnectionTestPeriod">0</configValue>
    <configValue key="C3p0-MaxStatements">0</configValue>
    <configValue key="C3p0-NumHelperThreads">3</configValue>

    <configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
    <configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
    <configValue key="Retry-Connect-Count">-1</configValue>
</group>
<group name="MDM_PUB">
    <configValue key="Database-Type">MySql</configValue># db类型
    <configValue key="Jdbc-Type"/>
    <configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>#db驱动
    <configValue key="C3p0-Url">jdbc:驱动类型://IP:端口Port/库db/mdm_pub?useSSL=false</configValue>
    <configValue key="C3p0-UserName">用户名</configValue>
    <configValue key="C3p0-Password">密码</configValue>
    <configValue key="C3p0-PoolSize">5</configValue>
    <configValue key="C3p0-MaxPoolSize">30</configValue>
    <configValue key="C3p0-MinPoolSize">5</configValue>

    <!-- //seconds, 0 means connections never expire -->
    <configValue key="C3p0-MaxIdleTime">0</configValue>
    <!-- //idle connections never tested -->
    <configValue key="C3p0-IdleConnectionTestPeriod">0</configValue>
    <configValue key="C3p0-MaxStatements">0</configValue>
    <configValue key="C3p0-NumHelperThreads">3</configValue>

    <configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
    <configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
    <configValue key="Retry-Connect-Count">-1</configValue>
</group>

# 2.主数据配置文件:config/application.properties

# --------------------------------------配置案例---------------------------------------------------
# 微服务唯一标识(不可更改)
spring.application.name=MDM
# session有效期
server.servlet.session.timeout=PT120M
# 后端端口号
server.port=28090
# 激活afc和mdm配置文件
spring.profiles.active=nacos,afc,mdm

# 是否开启文件上传下载(默认为是)
spring.servlet.multipart.enabled=true
# 单次请求大小限制
spring.servlet.multipart.max-request-size=100MB
# 单个文件大小限制
spring.servlet.multipart.max-file-size=20MB
# 文件上传路径
spring.servlet.multipart.location=${user.dir}/data/upload-tmp
# 文件写入磁盘阈值
spring.servlet.multipart.file-size-threshold=100KB

# 全局设置@JsonFormat的格式pattern
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 设置全局时区
spring.jackson.time-zone=GMT+8
# 全局设置pojo或被@JsonInclude注解的属性的序列化方式,不为空的属性才会序列化
spring.jackson.default-property-inclusion=non-null
# 是否在存在不对应的参数时也将请求参数正常解析(当为false时默认为是)
spring.jackson.deserialization.fail-on-unknown-properties=false

# 任务调度线程池大小
spring.task.scheduling.pool.size=5
# 任务执行线程池大小
spring.task.execution.pool.core-size=50
# 任务执行线程池最大值
spring.task.execution.pool.max-size=100
# 任务执行线程池排队容量大小
spring.task.execution.pool.queue-capacity=100000

# 公开端点
management.endpoints.web.exposure.include=hystrix.stream,health,info,loggers,eos

# hystrix执行最大超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
# hystrix并发执行的最大线程数
hystrix.threadpool.default.coreSize=100
# hystrix最大线程数
hystrix.threadpool.default.maximumSize=100
# hystrix最大队列数
hystrix.threadpool.default.maxQueueSize=100000
# hystrix动态最大队列数
hystrix.threadpool.default.queueSizeRejectionThreshold=100000

# redis地址
spring.redis.host=地址
# redis端口号
spring.redis.port=端口号
# redis密码
spring.redis.password=密码
# redis连接池最大连接数
spring.redis.lettuce.pool.max-active=100
# redis连接池中最多保留的空闲连接数量
spring.redis.lettuce.pool.max-idle=100
# redis从连接池获取连接最大的等待时间
spring.redis.lettuce.pool.max-wait=5000

# eos微应用编码
eos.application.sys-code=EOS-DEMO-SYS
# eos微应用密钥
eos.application.sys-key=dc6baaed30e541d78bb91274803d9432
# eosadmin端口
eos.admin.port=6500
# eos缓存模式
eos.cache.mode=redis

# 配置文件目录
out.config.folder=config
is.global.unique=false
# bps微应用名称
bps.application.name=BPS-SERVER-STANDALONE
# bps租户id
bps.tenant.id=BPS_DEFAULT_TENANT
# 是否开启eos日志(默认开启)
engine.show.log=true

#---------------------------------------可按需修改------------------------------------------
# 如果要更改端口,则修改  
server.port=xxx  
# redis连接配置:换成以上获取到的redis的连接属性
spring.redis.host=ip地址
spring.redis.port=6379
spring.redis.password=primeton  

# 3.主数据配置文件:config/application-afc.properties

# --------------------------------------配置案例---------------------------------------------------
# AFCenter的应用名称,如果修改了AFCenter的应用名称,这里需要同步修改
afc.application.name=AFCENTER
# afc租户名称
afc.application.tenant=sys_tenant
# afc微应用编码
afc.application.app-code=AFC
# afc微应用密码
afc.application.app-secret=secret
# afc日志保留时间(按月)
afc.schedule.logs-to-history.stay-month-number=1

# 排除自动配置
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

# afc日志转为历史
afc.schedule.logs-to-history.cron=0 0 4 1 1/1 ?
# afc历史保留时间(按月)
afc.schedule.logs-to-history.keep-month-number=2

# 是否使用AfcUserLoginFilter
afc.user.login.filter.enable=true
#---------------------------------------可按需修改-------------------------------------------------
# AFCenter的应用名称
afc.application.name=AFCENTER

# 4.主数据配置文件:config/application-mdm.properties

# --------------------------------------配置案例---------------------------------------------------
# 是否开启延时加载(默认为否)
spring.jpa.open-in-view=false
# 是否关闭验证逻辑(默认关闭)
spring.jpa.properties.javax.persistence.validation.mode=none
# 指定数据库初始化模式(默认为不同步数据库表结构)
spring.jpa.hibernate.ddl-auto=none
# 是否开启sql打印(默认关闭)
spring.jpa.show-sql=false

# 数据库厂商方言配置
## MySQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

## Dameng 
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect

## GaussDB
#spring.jpa.database=postgresql
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect
#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false

## Oracle
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

## SQLServer
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

# 订阅推送设置心跳检测订阅者服务是否在线时间间隔
mdm.schedule.fixed-delay.mdm-inst-heart-beat=300000
# 报告统计间隔
mdm.report.statistic.interval=0 0 * * * ?
# 数据文件储存类型
mdm.data-file.storage-type=file
# 数据文件储存位置
mdm.data-file.storage-location=./data/data-files
# 是否开启数据模型缓存(默认为是)
mdm.data-model-cache.enabled=true
# 是否开启统一响应(默认为是)
mdm.support-unified-response=false
# 是否开启数据记录日志(默认为是)
mdm.data.record.log.enabled=true
# 是否开启数据推送(默认为是)
mdm.push.enabled=true
# 是否开启锁(默认为是)
mdm.push.lock-enabled=true
# 核心线程池大小
mdm.push.thread-pool.corePoolSize=50
# 最大线程池大小
mdm.push.thread-pool.maxPoolSize=100
# 队列线程池大小
mdm.push.thread-pool.queueCapacity=200
# 推送扫描间隔(单位为秒)
mdm.push.scan.interval-seconds=60
# 推送数据每页大小
mdm.push.data-page-size=10
# 推送数据步长
mdm.push.data-step-minutes=30
# 是否开启响应体验证(默认为是)
mdm.push.http.validate-response-body.enabled=true
# 响应体code属性
mdm.push.http.validate-response-body.code-attr=code
# 响应体msg属性
mdm.push.http.validate-response-body.msg-attr=message
# 响应体发送成功响应码
mdm.push.http.validate-response-body.ok-code=200

# 推送重试间隔
mdm.push.time-mistake-seconds=30
# 即时推送队列池大小
mdm.push.in-time.event-queue-size=100000

# 是否开启序号清空(默认为是)
mdm.block-sequence-code.clear=true
# 序号清空间隔时间
mdm.block-sequence-code.clear.interval=0 0 2 * * ?

# 是否开启数据查询日志(默认为是)
mdm.op-log.data-query.enabled=true
# 是否开启数据维护日志(默认为否)
mdm.op-log.data-maintain.enabled=false
# 是否开启日志自动清理(默认为否)
mdm.op-log.clean.enabled=false
# 日志自动清理间隔
mdm.op-log.clean.keep-days=30
# 日志自动清理时间
mdm.op-log.clean.scheduled=0 0 3 * * ?
mdm.op-log.clean.scheduled=0/59 * * * * ?

# 主题同步间隔
mdm.afc.copy.scheduled.time=5000

# 邮件服务协议地址  
spring.mail.host=smtp.126.com
# 用来发送邮件的邮箱地址  
spring.mail.username=xxxxx@126.com
# 邮箱密码 
spring.mail.password=
# 邮箱协议
spring.mail.protocol=
# 邮件编码规则
spring.mail.default-encoding=UTF-8
#---------------------------------------可按需修改-------------------------------------------------
# 推送email配置
spring.mail.host=邮箱host
spring.mail.username=邮箱地址
spring.mail.password=密码 
spring.mail.protocol=协议  
spring.mail.default-encoding=UTF-8

# 如果要更改db库厂商,则开放对应配置对应方言  
## MySQL  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
## Dameng
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect  
## GaussDB
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect  
## Oracle  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect  
## SQLServer  
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect  

# 前端配置

根据EOS_AFCenter_8.2.5已配置nginx.conf,只需要将主数据的前端资源复制到afcenter目录下即可。

1.找到已经部署的服务目录web/afcenter

2.把介质Primeton_MDM_7.1_GA_UI里的mdm目录,复制到前端资源web/afcenter目录内

3.重启nginx:/usr/local/nginx/sbin/nginx -s restart

# 安装补丁并重启AFC服务

1.将补丁PLATFORM_8.2_AFCENTER_20230614_P2移动到对应的AFCenter后端lib目录下。查看补丁列表 (opens new window)

2.重启AFCenter后端

# 启动服务

  • linux:

1.重命名后端文件夹为mdm,并复制到已安装的服务目录server,与afcenter同一级别目录

2.执行脚本:bin/startup.sh,并查看日志logs/eos-trace.log是否有错

  • windows:

1.重命名后端文件夹为mdm,并复制到已安装的服务目录server,与afcenter同一级别目录

2.执行脚本:bin/startup.cmd,并查看日志logs/eos-trace.log是否有错

# 环境登录和验证

访问http://nginx机器IP:前端Port,使用初始用户登录,用户名/密码为:admin/000000

1.进入[组织权限中心]->[账号管理]->[账号:admin]

2.点击角色进行添加角色【主数据管理员】

3.刷新页面,导航栏新增一个模块【主数据】,点击进入主数据首页