Sự kiện Action tùy chỉnh
Workflow: Sự kiện Action tùy chỉnhCommunity Edition+Giới thiệu
NocoBase đã tích hợp sẵn các Action dữ liệu thông thường (thêm, xóa, sửa, xem...), khi các Action này không thể đáp ứng yêu cầu nghiệp vụ phức tạp, có thể sử dụng sự kiện Action tùy chỉnh trong Workflow và liên kết sự kiện đó với nút "Kích hoạt Workflow" trong Block của trang, sau khi người dùng bấm sẽ kích hoạt Workflow Action tùy chỉnh.
Tạo Workflow
Khi tạo Workflow, chọn "Sự kiện Action tùy chỉnh":

Cấu hình Trigger
Loại ngữ cảnh
v.1.6.0+
Sự khác nhau của loại ngữ cảnh sẽ quyết định Workflow này có thể được liên kết trên các nút của Block nào:
- Không có ngữ cảnh: tức sự kiện toàn cục, có thể liên kết trên panel Action, nút Action của Block dữ liệu;
- Một dòng dữ liệu: có thể liên kết trên nút Action của các Block dữ liệu như dòng dữ liệu bảng, form, chi tiết...;
- Nhiều dòng dữ liệu: có thể liên kết trên nút Action hàng loạt của bảng.

Bảng dữ liệu
Khi loại ngữ cảnh là một dòng dữ liệu hoặc nhiều dòng dữ liệu, cần chọn bảng dữ liệu cần liên kết với mô hình dữ liệu:

Dữ liệu quan hệ cần sử dụng
Nếu cần sử dụng dữ liệu liên kết của dòng dữ liệu kích hoạt trong Workflow, có thể chọn các trường liên kết sâu hơn ở đây:

Các trường này sẽ được tự động preload vào ngữ cảnh của Workflow sau khi sự kiện được kích hoạt để sử dụng trong Workflow.
Cấu hình Action
Tùy thuộc vào loại ngữ cảnh được cấu hình của Workflow, cấu hình nút Action ở các Block khác nhau cũng có sự khác biệt.
Không có ngữ cảnh
v1.6.0+
Trong panel Action và các Block dữ liệu khác đều có thể thêm nút "Kích hoạt Workflow":



Sau khi thêm nút, liên kết với Workflow không có ngữ cảnh đã được tạo trước đó, lấy ví dụ nút trong panel Action:


Bản ghi một dòng
Trong bất kỳ Block dữ liệu nào, đối với cột thao tác của một dòng dữ liệu đều có thể thêm nút "Kích hoạt Workflow", như form, dòng dữ liệu của bảng, chi tiết...:



Sau khi thêm nút, liên kết với Workflow đã được tạo trước đó:


Sau đó bấm vào nút này là có thể kích hoạt sự kiện Action tùy chỉnh đó:

Bản ghi nhiều dòng
v1.6.0+
Trong cột thao tác của Block bảng, khi thêm nút "Kích hoạt Workflow" sẽ có một tùy chọn bổ sung, chọn loại ngữ cảnh là "Không có ngữ cảnh" hoặc "Nhiều dòng dữ liệu":

Khi chọn "Không có ngữ cảnh", tức là sự kiện toàn cục, chỉ có thể liên kết Workflow loại không có ngữ cảnh.
Khi chọn "Nhiều dòng dữ liệu", có thể liên kết Workflow loại nhiều dòng dữ liệu, có thể được dùng để Action hàng loạt sau khi chọn nhiều dữ liệu (hiện chỉ bảng hỗ trợ). Lúc này phạm vi Workflow có thể chọn chỉ là Workflow đã được cấu hình khớp với bảng dữ liệu của Block dữ liệu hiện tại:

Khi bấm nút để kích hoạt, phải đã chọn một số dòng dữ liệu trong bảng, nếu không sẽ không kích hoạt Workflow:

Ví dụ
Ví dụ, chúng ta có một bảng dữ liệu "Mẫu", đối với các mẫu "Đã thu thập" (trạng thái) cần cung cấp một Action "Gửi xét nghiệm", việc gửi xét nghiệm sẽ kiểm tra thông tin cơ bản của mẫu trước, sau đó sinh một dữ liệu "Bản ghi gửi xét nghiệm", rồi sửa trạng thái mẫu thành "Đã gửi xét nghiệm". Mà chuỗi quá trình này không thể hoàn thành thông qua việc bấm các nút "Thêm xóa sửa" đơn giản, lúc này có thể sử dụng sự kiện Action tùy chỉnh để triển khai.
Trước tiên tạo một bảng dữ liệu "Mẫu" và một bảng dữ liệu "Bản ghi gửi xét nghiệm", nhập dữ liệu kiểm thử cơ bản vào bảng mẫu:

Sau đó tạo một Workflow "Sự kiện Action tùy chỉnh", nếu cần quy trình thao tác có phản hồi tương đối kịp thời, có thể chọn chế độ đồng bộ (ở chế độ đồng bộ không thể sử dụng các Node loại bất đồng bộ như xử lý thủ công):

Trong cấu hình Trigger, bảng dữ liệu chọn "Mẫu":

Theo yêu cầu nghiệp vụ, điều phối logic trong quy trình, ví dụ tham số chỉ tiêu lớn hơn 90 thì mới được phép gửi xét nghiệm, nếu không thì nhắc vấn đề liên quan:

Node "Thông báo phản hồi" có thể được sử dụng trong sự kiện Action tùy chỉnh đồng bộ, dùng để trả về thông tin nhắc cho client. Không thể sử dụng ở chế độ bất đồng bộ.
Sau khi cấu hình xong quy trình và bật, quay lại giao diện bảng và thêm nút "Kích hoạt Workflow" trong cột thao tác của bảng:

Sau đó trong menu cấu hình của nút chọn liên kết Workflow để mở popup cấu hình:

Thêm Workflow đã được bật trước đó:

Sau khi gửi, sửa text của nút thành tên Action như "Gửi xét nghiệm", việc cấu hình quy trình đã hoàn tất.
Khi sử dụng, chọn một dữ liệu mẫu bất kỳ trong bảng và bấm nút "Gửi xét nghiệm" là có thể kích hoạt sự kiện Action tùy chỉnh. Như logic được điều phối trước đó, nếu tham số chỉ tiêu mẫu nhỏ hơn 90, sau khi bấm sẽ nhắc như sau:

Nếu tham số chỉ tiêu lớn hơn 90, sẽ thực thi quy trình bình thường, sinh dữ liệu "Bản ghi gửi xét nghiệm" và sửa trạng thái mẫu thành "Đã gửi xét nghiệm":

Đến đây, một sự kiện Action tùy chỉnh đơn giản đã hoàn tất. Tương tự, đối với các nghiệp vụ có thao tác phức tạp như xử lý đơn hàng, gửi báo cáo... đều có thể được triển khai thông qua sự kiện Action tùy chỉnh.
Gọi từ bên ngoài
Việc kích hoạt sự kiện Action tùy chỉnh không chỉ giới hạn ở thao tác trên giao diện người dùng mà còn có thể được kích hoạt thông qua HTTP API. Đặc biệt, sự kiện Action tùy chỉnh cung cấp loại Action mới trigger để kích hoạt Workflow cho tất cả các Action bảng dữ liệu, có thể cài đặt API Action tiêu chuẩn của NocoBase để gọi.
Vì việc gọi từ bên ngoài cũng cần dựa trên danh tính người dùng, nên khi gọi qua HTTP API, giống như request thông thường được gửi từ giao diện, đều cần cung cấp thông tin xác thực, bao gồm header Authorization hoặc tham số token (token nhận được khi đăng nhập), và header X-Role (tên vai trò hiện tại của người dùng).
Không có ngữ cảnh
Workflow không có ngữ cảnh cần thực hiện Action kích hoạt nhằm vào tài nguyên workflows:
Bản ghi một dòng
Tương tự như Workflow được kích hoạt bởi nút trong ví dụ, có thể gọi như sau:
Vì Action này nhằm vào một dữ liệu đơn lẻ, nên khi gọi đối với dữ liệu hiện có, cần chỉ định ID dòng dữ liệu, thay thế phần <:id> trong URL.
Nếu là gọi nhằm vào form (như thêm hoặc cập nhật), với form thêm dữ liệu mới có thể không truyền ID nhưng cần truyền dữ liệu được gửi làm dữ liệu ngữ cảnh thực thi:
Đối với form cập nhật, cần đồng thời truyền ID dòng dữ liệu và dữ liệu cập nhật:
Nếu đồng thời truyền ID và dữ liệu, sẽ load dòng dữ liệu tương ứng với ID trước, rồi sử dụng các thuộc tính trong đối tượng dữ liệu được truyền vào để ghi đè dòng dữ liệu gốc để thu được dữ liệu ngữ cảnh kích hoạt cuối cùng.
Nếu truyền vào dữ liệu quan hệ, cũng sẽ được ghi đè, đặc biệt khi đã cấu hình các mục dữ liệu quan hệ preload, cần xử lý cẩn thận dữ liệu được truyền vào để tránh dữ liệu quan hệ bị ghi đè không như mong đợi.
Ngoài ra, tham số URL triggerWorkflows là key của Workflow, nhiều Workflow phân tách bằng dấu phẩy. Key này có thể nhận được khi rê chuột qua tên Workflow trên đầu canvas Workflow:

Sau khi gọi như trên thành công, sẽ kích hoạt sự kiện Action tùy chỉnh của bảng samples tương ứng.
Khi kích hoạt sự kiện sau Action thông qua HTTP API, cũng cần lưu ý trạng thái bật của Workflow và việc cấu hình bảng dữ liệu có khớp không, nếu không có thể không gọi thành công hoặc xuất hiện lỗi.
Bản ghi nhiều dòng
Tương tự cách gọi của bản ghi một dòng nhưng dữ liệu truyền vào chỉ cần nhiều tham số khóa chính (filterByTk[]) và không cần truyền phần data:
Lời gọi này sẽ kích hoạt sự kiện Action tùy chỉnh chế độ bản ghi nhiều dòng và lấy dữ li ệu có id 1 và 2 làm dữ liệu trong ngữ cảnh Trigger.

