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

results matching ""

    No results matching ""

    results matching ""

      No results matching ""