Appearance
基本概念 - 变量相关
本章将向您介绍火语言中涉及的变量相关的基本概念。
T模式、#模式
流程组件配置项文本框前面有T
和#
两种标志,假定您已经创建了数字型的变量 年份
和 体温
:
T
表示默认输入的为文本,如果有用到变量或表达式,将它用两个大双引号括起来,在实际调用时会自动调用变量值,例如:
#
表示输入的为表达式,支持简单js语法,支持三元运算符等。若有多个变量可用“+”拼接,若要添加字符可将字符用英文单双引号括住,例如:
组件输出
每个组件在执行完自身业务逻辑后,如果执行结果有输出的情况下,默认会将执行结果输出到下一组件即FLOW
全局流变量内;在组件的高级配置处,同时可以选择将执行结果保存至一个或多个同输出类型一致的变量。
组件输入
每个组件执行前,可以接收来自上一个组件或者其他指定变量或者表达式的输入。
FLOW
FLOW流变量简介
FLOW是一个贯穿整个流程的全局变量,其值类型是动态变化的。每个组件在执行时,会将输出结果赋值给FLOW,并将该值自动传递到下一个组件。后续组件可以直接使用FLOW的值,即上一组件的输出结果,此时FLOW的类型会变成上一组件的输出类型。
FLOW的传递规则
如果某个中间组件没有输出值,FLOW不会发生变化,上一组件的输出值会通过该中间组件后保持不变,继续传递给下一个组件。这个过程会一直延续,直到流程结束。流程开始时,第一个组件没有设置指定输入时,默认FLOW流变量没有输入值。
FLOW的默认值配置技巧
值得注意的是,许多组件配置项的默认值(PlaceHolder)显示为FLOW,这意味着在不填写任何配置内容时,该配置项会自动填充为FLOW,即在T模式下填充为~flow,在#模式下填充为FLOW。这样,FLOW就成为了组件间流动数据的默认值。
以上默认值等同于以下两种设置利用FLOW的特性,如果整个流程顺畅,通常我们可以减少对独立变量的定义,仅通过FLOW变量将数据从一个组件传递到下一个组件。然而,如果当前组件的输出数据需要在后续多个组件中或跨多个组件后使用,则仍然需要将其保存为独立的变量,以便在后续流程组件中引用。
流变量FLOW输入
流变量FLOW输入
是将上一组件的默认输出值或变量值传递给当前组件中支持流变量的为空的输入项。
组件输入项有提示FLOW(自动填入组件间流变量FLOW作为该项缺省值)
则表示此输入项支持流变量,那么当输入项为空时,则会调用流变量FLOW输入
中的变量或表达式。
例如下图的组件输出日志
,当输出日志
为空时,直接输出上一个组件的输出值,保持默认设置即可打印上一个组件的执行结果。
变量作用域
普通变量
普通变量,创建时类型为PRIVATE,是局部私有变量,只能在当前流程使用,其他流程或子流程无法调用变量的值。
调用方式:变量名
STATIC 静态变量
静态全局变量,定义后,外部可调用,如果同时在主流程和子流程之间使用时,都可以修改读取到最新的值。
调用方式:STATIC.变量名
参数
子流程不仅可以创建变量来管理内部数据,还可以定义参数以接收外部传入的值。
调用方式:在主流程调用子流程时,通过指定的参数名传递数据,子流程内可通过 ARG.参数名
获取该参数的值。
参数可以设置默认值。当单独调试子流程时,如果没有外部数据传入,子流程会使用该参数的默认值,ARG.参数名
将返回默认值。
部分组件内置局部变量 i,item, index等
火语言逻辑组件和部分异步组件内,会自动新建一些组件内的局部变量,常见的有以下所列:
i
,item
,index
,KV
,Exception
,ExceptionType
i
内置 i
变量的已知组件有:For循环
For循环,组件内将自动新建一个本机循环内局部变量 i
。在该循环体的下级所有组件内,都可以使用这个变量i。
i
可以设置一个初始值,默认为0;每次循环结束后可以执行一个设置的表达式,默认为 i++
;按照设置的循环条件,执行循环体内的所有组件。
需要提示的是:如果For循环组件内,嵌套再添加了另外的For循环组件,子级的i
变量会覆盖上级i
变量,如果在子级内您还需要使用上级的i
变量,请在子级For循环前将上级i
保存到其他变量内,以备使用。
item
内置 item
变量的已知组件有:Foreach循环
, 多线程Foreach循环
以上组件在循环可迭代变量或对象(如列表字符串,列表万能对象,表格等)时,将迭代出来的结果会存到局部变量item
内,如下图的调试运行结果所示:
index
内置 index
变量的已知组件有:Foreach循环
, 多线程Foreach循环
以上组件在循环可迭代变量或对象(如列表字符串,列表万能对象,表格等)时,将迭代出来的结果会存到局部变量item
同时,将从0每次加1的索引存到局部变量index
内。如下图的调试运行结果所示:
流程分享: 以上流程可点击在线导入 提取码: YZFa
KV
内置 KV
变量的已知组件有:HTTP服务器
在调试带HTTP服务器的日志内,复制出来http服务的启动路径,格式如:http://127.0.0.1:8002/http/文档测试2/default?name=Default
,在后面加上&a=b&c=d
,并放到浏览器地址栏请求该地址,此时调试程序端会执行Default-handle1里面的三个打印组件,分别显示GET请求发送过来的URL里面携带的不同请求参数数据。
流程分享: 以上流程可点击在线导入 提取码: WBdA
Exception ExceptionType
内置 Exception
,ExceptionType
变量存在在异常组件内:异常捕获
我们使用字符串截取/摘要
组件,对源内容abc
,从位置10
开始,提取1个字节的字符串,因为源内容本来长度总共就3,从位置10开始提取,没有那么长的内容,提取会出错,我们在该组件的高级设置内,发生错误时配置选择为抛出异常
;
将以上配置好用户设置的组件放到异常捕获
组件的try代码段,在catch代码段我们来分别打印 Exception
,ExceptionType
变量,得到的结果如下图所示:
流程分享: 以上流程可点击在线导入 提取码: tpEM
环境变量 ENV
在整个流程内,我们将一些系统级别的环境变量放置到ENV
变量内,可以通过点击文本框最右侧的 x 文字按钮,在弹出的选择框内选择使用内置的各种环境变量:
HuoYuYanRoot
调用方式:ENV.HuoYuYanRoot
结果:得到当前火语言主程序运行的主目录
需要特别注意的是:ENV.HuoYuYanRoot
在火语言客户端里面调试及列表里面运行的时候,得到的值是火语言客户端的目录,如果在发布后的应用exe里面运行的时候,ENV.HuoYuYanRoot
得到的是应用exe的主目录,也就是下面的ENV.AppPath
相同的结果。
AppPath
调用方式:ENV.AppPath
结果:在调试阶段 得到当前应用发布生成的文件夹目录
格式如:D:\Program Files\HuoYuYan\users\dist_app\控制台应用名_1.0.0
,
在生成的exe中运行时,可直接获取到exe所在主目录。
其他环境变量
调用方式:ENV.属性Key值
如:
ENV.Desktop
:得到当前用户的桌面目录,
ENV.MyDocuments
:得到当前用户的我的文档
目录
提示:如果不同应用中需要调用本机上的一个统一变量,可以通过新建环境变量的形式,通过ENV.新建环境变量名
的形式调用。
新建方法:打开我的电脑/关于/系统属性/环境变量管理/新建环境变量
常见变量赋值或默认值格式
数据类型 | 名词解释 | 赋值或默认值示例 |
---|---|---|
Int32 | 整形变量 | 123 |
String | 字符串变量 | 赋值内容 |
Boolean | 布尔变量 | true 或者 false |
List<System.String> | 列表字符串 | ["A","B","C"] |
List<System.Object> | 列表对象 | ['a','b',1,2,3] |
Datatable | 表格变量 | [{"column1":"A1","column2":"A2"},{"column1":"B1","column2":"B2"}] |
Datatime | 时间 | yyyy-MM-dd hh:mm:ss |