导语
优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。
连载第十九期
《高级指引:Placeholders 占位符》
▽
在 transform 及参数注入中我们都引入了 placeholder 占位符语法,它提供了在静态 storyboard 中访问及处理动态数据的能力。
# 示例
例如以下 transform 配置片段(yaml):
字段 url 中被 @{ ... } (在参数注入中为 ${ ... })包裹的部分就是占位符,它们将在运行时根据上下文信息计算得到。
以上 url 可以被分解为以下结构:
在运行时,Placeholder 将根据上下文按以下流程计算得到结果:
请参考 Pipes 管道。
而最终 url 得到的值为所有 RawString 与 Placeholder 计算得到的值通过 Array#join 拼接后的结果。
注意:Array#join 如果遇到 undefined, null 或空数组 [] 的元素,将被转换为空字符串。
注意:当某个字段仅由单个 Placeholder 组成时,将返回它原始计算得到的值,而不是 Array#join 的结果。
# 细节
在 default 默认值及 pipe parameters 管道参数语法中,可以使用 JSON value 的格式传递各种形式的值。同时为了能简化普通字符串的编写,如果要设置的值不会和 JSON value 格式冲突、且不包含特殊控制字符(|:})和空白符的字符串时,可以直接填写字面量的字符串,例如 ${QUERY.objectId=HOST}。系统在以下情况中将认为该值为 JSON value 并进行相应解析(即使解析失败):
其它情况将按 literal-string 字面量字符串解析。
注意,literal-string 仅能使用英文字母、数字、_、- 和 non-ascii 字符(即可以使用包括中文在内的其它字符)。field 除了上述字符外,还可以使用 .、*、[、]。
# 图解