介绍
本文介绍HZERO 开放应用平台->服务选配功能,快速创建具有DDD模板代码 或者依赖 HZERO 服务的项目。 目前支持三种模式:
- 创建父项目:创建一个新的父项目
 - 创建新服务:创建一个新的服务,可选择是否生成DDD模板代码,用于快速创建新项目
 - 依赖服务创建:依赖某个服务创建,可选择是否生成DDD模板代码
 - 批量创建HZERO服务:可快速批量创建HZERO服务
 
准备工作
- HZERO 微服务应用开发平台链接:http://hzero.saas.hand-china.com/
 

点击右上角服务选配按钮,进入服务选配页面

创建父项目
- 服务选配页面,选择"创建父项目"模式,可根据自己需要修改项目的各项配置;
 - 点击"打开更多选项"按钮,可查看更多的配置属性;
 - 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
 
输入字段:
- 
Group:项目GroupId;
 - 
Artifact:父项目ArtifactId;
 - 
版本号:父项目版本
 - 
Hzero服务版本:默认最新版本

 
- 生成的代码结构

 
创建新服务
- 服务选配页面,选择"新服务"模式,可根据自己需要修改项目的各项配置;
 - 点击"打开更多选项"按钮,可查看更多的配置属性;
 - 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
 
输入字段:
- 
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
 - 
parentGroupId:父项目GroupId
 - 
parentArtifactId:父项目ArtifactId
 - 
parentVersion:父项目版本号
 - 
Group:项目GroupId;
 - 
Artifact:项目ArtifactId;
 - 
Name:项目名称
 - 
Package Name:包名
 - 
Server Port:项目端口
 - 
projectCode:服务简码
 - 
projectRoute:服务路由
 - 
Description:项目描述
 - 
数据库类型:可选MySql|Oracle|SqlServer
 - 
数据库Schema:非必输
 - 
数据库用户名:非必输
 - 
数据库密码:非必输

 
- 
生成的代码结构

 
依赖服务创建
- 服务选配页面,选择"依赖服务"模式,可根据自己需要选择对应的Hzero依赖服务;
 - 点击"打开更多选项"按钮,可查看更多的配置属性;
 - 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试。
 
输入字段:
- 
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
 - 
parentGroupId:父项目GroupId
 - 
parentArtifactId:父项目ArtifactId
 - 
parentVersion:父项目版本号
 - 
Group:项目GroupId;
 - 
Artifact:项目ArtifactId;
 - 
Hzero服务:单选,选择需要依赖的Hzero服务
 - 
Name:项目名称
 - 
Package Name:包名
 - 
Server Port:项目端口
 - 
是否使用DDD:创建时是否生成DDD模版代码
 - 
Hzero服务版本:默认最新版本
 - 
projectCode:服务简码
 - 
projectRoute:服务路由
 - 
Description:项目描述
 - 
数据库类型:可选MySql|Oracle|SqlServer
 - 
数据库Schema:非必输
 - 
数据库用户名:非必输
 - 
数据库密码:非必输

 
- 
生成的代码结构

 
批量创建HZERO服务
- 服务选配页面,选择"批量HZERO服务"模式,可根据自己需要批量选择对应的Hzero服务;
 - 点击"打开更多选项"按钮,可查看更多的配置属性;
 - 修改完成后,点击导出文件按钮,即可导出zip包,解压后项目基本不需任何手动处理即可启动测试;
 - 当勾选的服务过多时,可能会花费较多时间,请耐心等待。
 
输入字段:
- 
parentType:父项目类型(使用自定义父项目|使用hzero-parent)
 - 
parentGroupId:父项目GroupId
 - 
parentArtifactId:父项目ArtifactId
 - 
parentVersion:父项目版本号
 - 
项目类型:SAAS版本|OP版本
 - 
服务前缀:必输
 - 
Hzero服务:单选,选择需要依赖的Hzero服务
 - 
Hzero服务版本:默认最新版本

 
- 
生成的代码结构

 
服务部署
- 服务部署及数据初始化请参考 服务器本地安装
 
服务快速启停
- 在基于服务器本地部署的情况下,如需快速启停服务,可参考以下脚本
 
#!/bin/bash
readonly PRODUCT="hzero"
# 服务列表
readonly SERVICE=(
$PRODUCT-register
$PRODUCT-config
$PRODUCT-gateway
$PRODUCT-gateway-helper
$PRODUCT-oauth
$PRODUCT-swagger
$PRODUCT-iam
$PRODUCT-platform
$PRODUCT-asgard
$PRODUCT-file
$PRODUCT-message
)
# 自定义参数
readonly IP="192.168.***.***"
readonly DATABASE_URL="jdbc:mysql://$IP:3306/{databaseName}?useSSL=false&useUnicode=true&characterEncoding=utf-8"
readonly DATABASE_USERNAME="hzero"
readonly DATABASE_PASSWORD="*****"
readonly REDIS_HOST="$IP"
readonly LOGGING_PATH="log"
readonly LOGGING_LEVEL="info"
readonly WAIT=30
readonly JAVA_OPTS="-Xms512m -Xmx1024m"
readonly API_PORT="8080"
# 环境参数
readonly E1="--EUREKA_DEFAULT_ZONE=http://$IP:8000/eureka"
readonly E2="--SPRING_CLOUD_CONFIG_URI=http://$IP:8010"
readonly E3="--CHOERODON_OAUTH_LOGIN_SUCCESS_URL=http://$IP/workplace"
readonly E4="--HZERO_OAUTH_URL=http://$IP:$API_PORT/oauth/oauth/authorize"
readonly E5="--HZERO_GATEWAY_DOMAIN=$IP:$API_PORT"
# 数据源参数
readonly D1="--SPRING_DATASOURCE_URL=$DATABASE_URL"
readonly D2="--SPRING_DATASOURCE_USERNAME=$DATABASE_USERNAME"
readonly D3="--SPRING_DATASOURCE_PASSWORD=$DATABASE_PASSWORD"
readonly D4="--SPRING_REDIS_HOST=$REDIS_HOST"
# 其他参数
readonly O1="--LOGGING_LEVEL=$LOGGING_LEVEL"
function stopService() {
    echo "[$$]stop service : $1"
    kill -9 $(jps -ml | grep $1 | awk '{print $1}') > /dev/null 2>&1
    if [[ $? -eq 0 ]]; then
    	echo "[$$]stop success : $1"
    else 
    	echo "[$$]stop failed : $1"
    fi
}
function startService() {
		echo "[$$]start service : $1"
		
		case $1 in
    "$PRODUCT-config" | "$PRODUCT-governance" | "$PRODUCT-swagger")
        databaseName="hzero_governance"
        ;;
    # 需要启用更多的服务,将服务名称直接追加在后面
    "$PRODUCT-asgard" | "$PRODUCT-file" | "$PRODUCT-message")
        databaseName="hzero_$(echo $1 | cut -d - -f 2-)"
        ;;
    *)
        databaseName="hzero_platform"
        ;;
    esac
    startEnv="$E1 $E2 $E3 $E4 $E5 $D1 $D2 $D3 $D4 $O1"
    loggingPath="$LOGGING_PATH/$1"
    mkdir -p $loggingPath
    nohup java $JAVA_OPTS -jar $1.jar ${startEnv//"{databaseName}"/$databaseName} > "$loggingPath/app.log" & 
    echo "[$$]start success : $1"
}
function restartService() {
	stopService $1
	startService $1
}
# -----------------------------------------------
# Process options with priority
# -----------------------------------------------
if [[ $1 == '--kill-em-all' ]]; then
	jps -ml | grep $PRODUCT | awk '{print $1}' | xargs kill -9
    exit $?
fi
if [[ "$#" -gt 0 ]]; then
    echo "[$$]Restart : $*"
    echo "[$$"
    for service in $*
    do
        restartService $service
        echo "[$$]wait $WAIT s to start : $service"
        echo "[$$]"
        sleep $WAIT
    done
else
    echo "[$$]Restart : ${SERVICE[*]}"
    echo "[$$]"
    for service in ${SERVICE[@]}
    do
        restartService $service
        echo "[$$]wait $WAIT s to start : $service"
        echo "[$$]"
        sleep $WAIT
    done
fi
echo "[$$]SUCCESS!"