[toc]
# 独立安装
文档中基于MySQL数据库进行产品安装介绍。
# 安装介质说明和准备
独立安装介质内置了AFcenter,无需再安装AFCenter环境。
独立安装介质目录如下:
Primeton_MDM_7.2_GA_Standalone
├── clearLog.cmd
├── clearLog.sh
├── server
│ ├── mdm
│ │ ├── bin //启动脚本
│ │ ├── config
│ │ ├── db-scripts
│ │ ├── lib
│ │ └── mdmall-boot-7.2.0-exec.jar //主数据程序
│ └── primetonlicense.xml
├── shutdown.cmd
├── shutdown.sh
├── startup.cmd
├── startup.sh
└── web
├── afcenter //全部前端资源
│ ├── assets
│ ├── bfp
│ ├── components
│ ├── config
│ ├── formDesigner
│ ├── ide
│ ├── index.html
│ ├── mdm // 主数据前端资源
│ ├── process
│ ├── remoteEntry.js
│ ├── remoteEntry.js.gz
│ ├── static
│ └── version.properties
└── conf
└── mdm.conf
# 检查授权证书
检查Primeton_MDM_7.2_GA_Standalone/server/mdm/config/MDM/license目录下primetonlicense.xml文件是否在有效期内。如果超过有效期,请通过售后申请。
注意:查看primetonlicense.xml的有效期,可以查看expiration标签对应的时间。
# 数据库初始化
如果执行的是mysql的脚本,请在执行脚本之前将数据库设置不区分表名大小写。
# 创建数据库
创建mdm和mdm_pub两个数据库。执行如下脚本:
CREATE DATABASE `mdm` DEFAULT CHARACTER SET utf8mb4;
CREATE DATABASE `mdm_pub` DEFAULT CHARACTER SET utf8mb4;
# 执行初始化脚本
独立介质安装时需要按顺序执行EOS、AFCenter、lowcode、bfp、bps、MDM的数据库初始化脚本。初始化脚本路径为
Primeton_MDM_7.2_GA_Standalone/server/mdm/db-scripts。
- mdm数据库初始化,可以按如下两种方式执行脚本(两种方式选择其一即可):
# 一步执行:
all/mysql/mdm-all.sql
# --------------------------------
# 分步执行:
eos/Mysql/all.sql
afcenter/Mysql/all.sql
lowcode/Mysql/all.sql
bps/mysql/all.sql
bfp-framework/Mysql/all.sql
bfp-message/Mysql/all.sql
bfp-task/Mysql/all.sql
mdm/mysql/00-mdm-afc-data.sql
mdm/mysql/10-mdm-ddl.sql
mdm/mysql/11-mdm-data.sql
- mdm_pub数据库初始化,执行如下脚本:
all/mysql/mdmpub-all.sql
# 检查驱动
检查server/mdm/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,以MySQL为例配置如下:
<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>
其他数据的DriverClass、Url配置可以参考配置说明中的数据源配置示例。
# 2.主数据配置文件:config/application.properties
# --------------------------------------配置案例---------------------------------------------------
# 微服务唯一标识(不可更改)
spring.application.name=MDM
# session有效期
server.servlet.session.timeout=PT120M
spring.session.store-type=none
# 后端端口号
server.port=28090
# 激活afc和mdm配置文件
spring.profiles.active=nacos,afc,mdm,job,bps
# 是否开启文件上传下载(默认为是)
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
management.endpoints.web.base-path=/
management.endpoint.health.show-details=never
management.health.elasticsearch.enabled=false
# 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
# 是否开启eos日志(默认开启)
engine.show.log=true
server.app-server.min-spare-threads=100
server.app-server.max-threads=500
server.app-server.max-connections=10000
server.app-server.accept-count=100
#---------------------------------------可按需修改------------------------------------------
# 如果要更改端口,则修改
server.port=xxx
# redis连接配置:换成以上获取到的redis的连接属性
spring.redis.host=xxx
spring.redis.port=6379
spring.redis.password=primeton
# 3.主数据配置文件:config/application-afc.properties
# --------------------------------------配置案例---------------------------------------------------
# 排除自动配置
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
# 4.主数据配置文件:config/application-mdm.properties
# --------------------------------------配置案例---------------------------------------------------
eos.springmvc.eos-serialize.exclude-packages=com.primeton.mdm
# 是否开启延时加载(默认为否)
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.record.log.enabled=true
mdm.data.record.log.keep.days=15
# 是否开启数据推送(默认为是)
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
# If the esb version integrates AFC, please set true
mdm.esb.support.afc=false
# 日志自动清理间隔
mdm.op-log.clean.keep-days=30
#mill s
mdm.batch.update.insert.size=1000
# 邮件服务协议地址
spring.mail.host=smtp.126.com
# 用来发送邮件的邮箱地址
spring.mail.username=xxxxx@126.com
# 邮箱密码
spring.mail.password=
# 邮箱协议
spring.mail.protocol=
# 邮件编码规则
spring.mail.default-encoding=UTF-8
#encrypt config
mdm.model.dm.cipher=DES_ECB
mdm.data.statistic.enabled=true
mdm.data.statistic.interval=0 */5 * * * ?
# 推送email配置
spring.mail.host=邮箱host
spring.mail.username=邮箱地址
spring.mail.password=密码
spring.mail.protocol=协议
spring.mail.default-encoding=UTF-8
不同的数据库厂商,对应方言不同。修改数据源配置,需要同时修改方言配置,如下
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
# 前端配置
nginx网关配置server,前端静态资源、afc、mdm
upstream mdmapp {
server 127.0.0.1:28090; # 主数据部署后端ip:port
}
server {
listen 80;
client_max_body_size 20M; #限制请求体的大小,默认是1M
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1";
add_header Content-Security-Policy "script-src * 'unsafe-inline' 'unsafe-eval'";
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=SECONDS";
add_header Referrer-Policy "no-referrer" always;
add_header X-Permitted-Cross-Domain-Policies "master-only";
add_header X-Download-Options noopen;
location / {
root /XXX/afcenter;# 根据前端资源所在当前机器路径
index index.html index.htm;
}
location ^~/api/ {
proxy_set_header X-EOS-SourceSysKey 359e22bf398043cb866a92dc1cbbd3f6;
proxy_pass http://mdmapp;
}
location ~/(.*)/api/ {
proxy_set_header X-EOS-SourceSysKey 359e22bf398043cb866a92dc1cbbd3f6;
rewrite ^/(.*)/api/(.*)$ /api/$2 break;
proxy_pass http://mdmapp;
}
}
# 启动服务
- linux:
1.执行脚本:server/mdm/bin/startup.sh,查看日志logs/eos-trace.log,检查启动过程是否有错误信息。
2.访问http://<ip>:<port>
,检查页面是否能够正常显示和登录。
- windows:
1.执行脚本:server/mdm/bin/startup.cmd,查看日志logs/eos-trace.log,检查启动过程是否有错误信息。
2.访问http://<ip>:<port>
,检查页面是否能够正常显示和登录。
# 环境登录和验证
1.进入[组织中心]->[机构管理]菜单,在“全部员工”中选择“admin”。
2.在弹出窗口中,选择“角色设置”,点击“添加角色”按钮,为admin用户添加“主数据管理员”角色。
3.刷新页面,导航栏增加菜单【主数据】,点击即可进入主数据首页
# AFCenter 8.3.0 补丁说明
AFCenter 8.3.0 发布以来已经发布了数个补丁,主数据独立部署版本已安装的补丁如下:
补丁编号 | 补丁主题 |
---|---|
PLATFORM_8.3LA1_AFCENTER_20231213_P1 | 内网环境下,AFCenter首页自带的天气插件前端提示“系统错误”并弹出未知异常提示。 |
PLATFORM_8.3_BPS_20231219_P1 | AFCenter->工作台->个人流程统计模块接口调用报错could not be parsed,unparsed text found at index 21;跨年度最近七天日期错误。 |
PLATFORM_8.3LA1_AFCENTER_20231222_P1 | AFCenter-组织权限中心-组织管理-机构管理-员工信息,员工数量、总条数和分页信息对不上。 |
PLATFORM_8.3LA1_AFCENTER_20231225_P1 | 解决父子字典导入时导入数据不全的问题 |
PLATFORM_8.3LA1_AFCENTER_20231225_P2 | 视图中新增"导入"按钮,按模版导入时报错:导入文件内容错误,导入视图数据失败! |
PLATFORM_8.3LA1_AFCENTER_20231228_P1 | V8.2.5升级至V8.3.0LA1,AFCenter同步租户资源报错:ERROR: memory exhausted at or near "(" |
注意:如果需要其他补丁,请从
cservice@primeton.com
申请。