CSV (Comma Separated Values)是一种表格存储格式,其中单元格值由", "符号分隔。可以用其他字符代替", "分隔符。虽然,AppMaster 需要一个逗号。
重要的是要确保这个字符不出现在单元格内。否则,文件数据将被错误地读取。
首先,创建一个数据模型,CSV文件中的信息将被保存在这里。例如,让我们为航班建立一个数据模型。它将包含以下字段。
- flight_no - 航班号,为整数格式。
- destination(字符串格式)。
- classes - 此航班可用的航班类别,数组[字符串]格式。
一个将被导入的文件的例子。
第一列包含 flight_no,第二列包含 destination,第三列包含 classes.
在第三列中,数值由分号分隔。
创建一个业务流程
转到 Business Logic标签,并点击 Create Business Process按钮。
这个业务流程需要一个CSV文件,所以把文件字段添加到 Start 块。
接下来,我们需要 Read CSV文件块。
同样地,你可以使用Read XLS file 和Read XLSX file 块来实现相应的格式。
Read CSV file 块如何工作。
它有两个输出连接器。 Each Row和 Completed.当该块被激活时,它将逐行读取文件,每次它将激活 Each Row连接器并传递行号(Row number,从1开始)和Row Columns(当前行的所有列的字符串数组)。
将文件从 Start块传递到 Read CSV file块。
接下来,添加 For Each Loop块。它将处理字符串数组,将其发送到 Read CSV file块。
对于 Each Loop,就像 Read CSV file,处理数组中的每个元素,并激活 Loop Body 连接器的每一个。
For Each Loop 块中的索引输出字段是数组元素的索引号。它从0开始。
连接所有的连接器。
下一个块是 Switch.在它的帮助下,我们将确定将不同字段的值写入何处。
Switch可以接受任何类型的输入,并且根据它可以激活不同的输出连接器。该 Default 如果输入值与所创建的任何一个连接器不匹配,连接器就会被激活。
CSV文件有三列,这意味着每个Row columns数组中存储有三个值,总是以相同的顺序。
- 号码。
- 方向。
- 类。
因此,我们将创建三个输出连接器在 Switch块中创建三个输出连接器0、1和2,并将索引从 For Each Loop块传递到 Switch块。
文件中的第一列包含航班号。但是 For Each Loop块获得它的 string 格式获取。因此,我们在保存前用 To integer块在保存前将其转换为整数。之后,用块将其保存到一个变量中。 Set variable块将其保存到一个变量中。
文件中的第二列包含方向的 string格式。它可以被立即保存到一个变量中。
文件中的第三列包含一个由分号分隔的类的列表。该 For Each Loop 块也是以字符串格式获取的。所以要把它分割成一个字符串的数组。要做到这一点,我们使用 Split String块。让我们传入一个带有班级列表的字符串,并设置";"为默认分隔符。
将收到的值保存到一个变量中。
通过每一行的所有列值的循环设置就完成了。
我们需要从文件中的每一行创建一个条目。我们使用完成的输出连接器在 For Each Loop 块和 Make flight块来做这件事。让我们把周期内收到的所有变量转移到它那里。
现在保存在下列文件中创建的模型 Make flight 使用 DB Create flight 块创建的模型。
因此,每一行被保存为数据库中的一条记录。
现在我们需要完成对文件的处理。我们将使用 completed 中的输出连接器,并将其连接到 Read CSV file 块,并将其连接到 End块。
从文件中导入的BP已经完成。
Endpoint 设置
转到Endpoints 标签并创建一个新的端点。
选择 POST方法,设置 URL地址,选择 Flight group,以及创建的BP Import CSV。
在前台设置一个按钮
现在我们需要在前端设置一个按钮来上传文件。
将该 File picker元素到画布上。
并为其设置BP。
使用 onSelectfiles触发器。该触发器以数组形式接收文件,即使只有一个文件。因此,我们将使用 Array Element 块,从数组中获取一个元素。让我们把索引字段设置为0,从数组中获得第一个元素。
现在使用 Server request POST /_files/ 块保存到数据库。
使用块来扩展生成的文件。 Expand file块展开生成的文件。
现在将ID (在本例中是一个文件)传递给 Server request POST /flight/csv/块。