Tính toán JSON
Workflow: Tính toán JSONCommunity Edition+Giới thiệu
Dựa trên các engine tính toán JSON khác nhau, tính toán hoặc biến đổi cấu trúc dữ liệu JSON phức tạp được sinh bởi Node phía trên để các Node tiếp theo sử dụng. Ví dụ kết quả của Node thao tác SQL và HTTP Request có thể được Node này biến đổi thành định dạng giá trị và biến cần thiết để các Node tiếp theo sử dụng.
Tạo Node
Trong giao diện cấu hình Workflow, bấm nút dấu cộng ("+") trong quy trình để thêm Node "Tính toán JSON":

Thông thường Node tính toán JSON được tạo dưới các Node dữ liệu khác để tiến hành phân tích.
Cấu hình Node
Engine phân tích
Node tính toán JSON hỗ trợ các cú pháp khác nhau thông qua các engine phân tích khác nhau, có thể chọn theo sở thích của bản thân và đặc trưng của từng engine. Hiện hỗ trợ ba engine phân tích:

Nguồn dữ liệu
Nguồn dữ liệu có thể là kết quả của Node phía trên hoặc đối tượng dữ liệu trong ngữ cảnh quy trình, thường là đối tượng dữ liệu chưa được tích hợp cấu trúc, ví dụ kết quả của Node SQL hoặc kết quả của Node HTTP Request.

Thông thường đối tượng dữ liệu của các Node liên quan đến bảng dữ liệu đều đã được cấu trúc hóa qua thông tin cấu hình bảng dữ liệu, thường không cần phân tích qua Node tính toán JSON.
Biểu thức phân tích
Tự định nghĩa biểu thức phân tích dựa trên nhu cầu phân tích và engine phân tích khác nhau.

Các engine khác nhau cung cấp cú pháp phân tích khác nhau, chi tiết có thể tham khảo tài liệu trong các liên kết.
Từ phiên bản v1.0.0-alpha.15, biểu thức hỗ trợ sử dụng biến, biến sẽ được phân tích trước khi engine cụ thể thực thi, theo quy tắc template chuỗi sẽ thay thế biến thành giá trị chuỗi cụ thể và ghép với các chuỗi tĩnh khác của biểu thức thành biểu thức cuối cùng. Tính năng này rất hữu ích khi cần xây dựng biểu thức một cách động, ví dụ một số nội dung JSON cần key động để phân tích.
Ánh xạ thuộc tính
Khi kết quả tính toán là một đối tượng (hoặc mảng đối tượng), có thể qua ánh xạ thuộc tính tiếp tục ánh xạ các thuộc tính cần thiết thành biến cấp con để các Node tiếp theo sử dụng.

Đối với kết quả là đối tượng (hoặc mảng đối tượng), nếu không thực hiện ánh xạ thuộc tính, sẽ lưu toàn bộ đối tượng (hoặc mảng đối tượng) làm một biến trong kết quả của Node, không thể trực tiếp sử dụng giá trị thuộc tính của đối tượng theo cách biến.
Ví dụ
Giả sử dữ liệu cần phân tích là Node SQL phía trước được dùng để truy vấn dữ liệu, kết quả của nó là một nhóm dữ liệu đơn hàng:
Nếu chúng ta cần phân tích và tính ra tổng giá riêng của hai đơn hàng trong dữ liệu và lắp ghép với ID đơn hàng tương ứng thành đối tượng để cập nhật tổng giá đơn hàng, có thể cấu hình như dưới đây:

- Chọn engine phân tích JSONata;
- Chọn kết quả của Node SQL làm nguồn dữ liệu;
- Sử dụng biểu thức JSONata
$[0].{"id": id, "total": products.(price * quantity)}để phân tích; - Chọn ánh xạ thuộc tính, ánh xạ
idvàtotalthành biến cấp con;
Kết quả phân tích cuối cùng như sau:
Sau đó vòng lặp lấy giá trị mảng đơn hàng đã hoàn tất để cập nhật tổng giá của đơn hàng.


