使用环境变量

模块和组件中支持定义环境变量,并且支持在架构和应用配置中进行配置。

定义环境变量

模块的配置文件在 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

获取环境变量

Java 的 System 类提供了 getenv() 和 getProperty() 两个方法获取环境变量,在云端运行时(包括开发环境和正式环境),使用 getProperty() 获取,在本地 IDE 运行时,使用 getenv() 获取。

系统提供了 ContextUtil.getEnv("环境变量名") 方法获取环境变量,在云端环境和本地环境都能使用。

配置环境变量

  • 在开发环境中配置环境变量

模块或组件的环境变量可在架构中配置,如下图所示。选择开发架构,配置开发环境变量,选择运行架构,配置生产环境变量。

  • 在生产环境中配置环境变量

在应用/服务管理中,配置每个应用的环境变量,如下图所示

图 0

环境变量可配置,需要在模块目录下的 configurable.schema.json 文件中定义该环境变量的配置界面。

例如,database2 组件新增 testEnv 环境设置,代码如下。

{
    "type": "object",
    "properties": {
        "dbType": {
            "type": "string",
            "title": "数据库类型",
            "enum": [
                "pgsql",
                "mysql",
                "oracle",
                "sqlserver",
                "db2",
                "kingbase8"
            ],
            "enumNames": [
                "Postgres",
                "Mysql",
                "Oracle",
                "Sqlserver",
                "DB2",
                "KingBase8"
            ],
            "widget": "select"
        },
        "dbHost": {
            "type": "string",
            "title": "数据库服务地址"
        },
        "dbPort": {
            "type": "number",
            "title": "数据库端口"
        },
        "dbUser": {
            "type": "string",
            "title": "数据库用户名"
        },
        "dbPasswd": {
            "type": "string",
            "title": "数据库密码"
        },
        "dbName": {
            "type": "string",
            "title": "数据库名称"
        },
        "dbSchema": {
            "type": "string",
            "title": "数据库Schema"
        },
        "dbProperties": {
            "type": "string",
            "title": "数据库连接属性"
        },
        "displayLabel": {
            "type": "string",
            "title": "数据库显示名"
        },
        "testEnv": {
            "type": "string",
            "title": "环境设置测试"
        }
    }
}

运行效果如下图所示

图 1

该配置使用 XRender 模板,在门户的统一配置项页面中提供了4种常用的模板(输入、单选、多选、开关),更多模板参考 https://xrender.fun/

results matching ""

    No results matching ""