1.4.2 使用环境变量
模块和组件中支持定义环境变量,并且支持在架构和应用配置中进行配置。
1 定义环境变量
模块的配置文件在 service/模块名/deploy 目录下,其中 dev.def.xml 文件中定义的是开发环境的配置信息,production.def.xml 文件中定义的是正式环境的配置信息。
xxx.def.xml 文件中 properties 节点下的 property 节点就是环境变量,例如下面是环境变量 autoNotify 的定义
<service>
<properties>
<property name="autoNotify" env="UAA_AUTO_NOTIFY" value="false" readonly="false">
<label label="是否自动通知"/>
</property>
</properties>
</service>
property的属性说明见下表
属性 | 说明 |
---|---|
name | 属性名 |
env | 环境变量名,非必填,为空时,系统根据模块名和属性名自动生成,参见下面的环境变量名生成规则 |
value | 值 |
readonly | 是否只读 |
label | 显示名称 |
环境变量名生成规则
- 在模块中定义的环境变量,属性名变成大写,前面加“模块名_”
例如:在service/main/deploy/*.def.xml文件中定义的环境变量autoNotify,环境变量名为 MAIN_AUTONOTIFY
- 在组件中定义的环境变量,属性名变成大写,前面加“COMP组件名称(大写)”
例如:在service/comp/basedata/deploy/*.def.xml文件中定义的环境变量autoNotify,环境变量名为 COMP_BASEDATA_AUTONOTIFY
2 获取环境变量
java的System类提供了 getenv() 和 getProperty() 两个方法获取环境变量,在云端运行时(包括开发环境和正式环境),使用 getProperty() 获取,在本地IDE运行时,使用 getenv() 获取。
系统提供了 ContextUtil.getEnv("环境变量名") 方法获取环境变量,在云端环境和本地环境都能使用。
3 配置环境变量
- 在开发环境中配置环境变量
模块或组件的环境变量可在架构中配置,如下图所示。选择开发架构,配置开发环境变量,选择运行架构,配置生产环境变量。
- 在生产环境中配置环境变量
在应用/服务管理中,配置每个应用的环境变量,如下图所示。
环境变量可配置,需要在模块目录下的 configurable.schema.json 文件中定义该环境变量的配置界面。
例如,将autoNotify定义为下拉选择,代码如下。
{
"type": "object",
"properties": {
"autoNotify": {
"type": "string",
"title": "是否自动通知",
"enum": [
"false",
"true"
],
"enumNames": [
"FALSE",
"TRUE"
],
"widget": "select"
}
}
}
运行效果如下图所示
该配置使用form-render模板,在门户的统一配置项页面中提供了4种常用的模板(输入、单选、多选、开关),更多模板参考https://x-render.gitee.io/form-render