Bài này Tui hướng dẫn các bạn cách tạo thư viện tự động hóa, cách xuất bản và tái sử dụng thư viện. Cụ thể:
Bước 1: Tạo thư viện “FilterTopProduct”, thư viện này có nhiệm vụ nhận vào một file Excel danh sách Sản phẩm bất kỳ gồm các dữ liệu: Mã sản phẩm, tên sản phẩm, đơn giá. Sau đó thư viện sẽ đọc toàn bộ dữ liệu trong Excel này và lọc ra 3 Sản phẩm có giá cao nhất rồi trả về DataTable cho các dự án khác sử dụng.
Bước 2: Thư viện này sẽ được đóng gói và xuất bản thành nugetpackage .nupkg để tái sử dụng cho các dự án
Bước 3: .nupkg sẽ được tham chiếu tới sử dụng ở một dự án bất kỳ, dự án này sẽ truyền vào Argument là đường dẫn file Excel cho thư viện, sau đó nhận kết quả DataTable đã filter từ thư viện, rồi lưu vào Excel

Các Kiến thức về Activities và kỹ năng trong bài này gồm:
- Cách tạo thư viện, đóng gói và xuất bản thư viện ra Nutget package
- Cách tái sử dụng thư viện để tiết kiệm thời gian, chi phí
- Cách cấu hình và sử dụng Arguments
- Cách bổ sung thư viện tham chiếu trong .xaml
- Input Dialog Activity
- Excel Process Scope
- Use Excel File for Reading and writing activity
- LINQ C# để sắp xếp dữ liệu
- MessageBox Dialog activity
Tập tin Excel mẫu lưu trữ danh sách sản phẩm để sử dụng cho dự án các bạn tải ở đây:
https://www.mediafire.com/file/zfhpa2xioed9n88/Products.xlsx/file
Bước 1: Tạo Library “FilterTopProduct”

Khởi động UiPath, chọn “Library” để tạo dự án dạng thư viện để tái sử dụng.

- Name: Đặt tên thư viện là “FilterTopProduct“
- Description: nhập mô tả
- Localtion: Chọn nơi lưu trữ dự án
- Compatibility: Chọn Windows
- Language: Chọn ngôn ngữ lập trình C#
Sau đó nhấn nút “Create” để tạo Library, ta có kết quả:

Bạn quan sát “NewActivity.xaml” được tạo ra như hình trên, tùy phiên bản mà có tạo tên khác nhau, không quan trọng lắm, ra tên nào thì dùng tên đó.
Bước 2: Khai báo Arguments
Vì thư viện này nhận vào một đường dẫn Excel bất kỳ, sau khi xử lý thì trả về một DataTable. vì vậy ta cần khai báo 2 Arguments, lưu ý rằng Variables và Arguments là khác nhau về cách sử dụng.

Ta nhấn thẻ “Arguments” và bấm “Create Argument” rồi đặt tên là “input_excel_path” với Direction là in , kiểu dữ liệu là String như hình ở trên.
Tương tự như vậy, ta tạo một Argument tên là “dt_top_product” có kiểu DataTable, Direction là Out. Vì đây là biến trả về kết quả cho các Workflow các sử dụng

Thông thường bạn không thấy kiểu DataTable thì nhớ nhấn chọn “Browse for Types…”:

Sau đó tìm DataTable trong mục Type Name:

Nhấn chọn DataTable ta có kết quả như mong muốn:

Bước 3: Kéo thả Excel Process Scope Activity

Ta vào thẻ Activities rồi gõ từ khóa “excel process scope” để tìm Activity này, sau đó nhấn kéo thả vào màn hình như minh họa:

Bước 4: Kéo thả Use Excel File Activity

Tương tự trong thẻ Activities, ta gõ từ khóa “use excel file” để tìm activity này, sau đó kéo thả vào màn hình như minh họa:

- Excel file: Ta nhập tên Arguments “input_excel_path” đã khai báo:

Bước 5: Kéo thả Read Range Activity

Tương tự, trong thẻ Activities, ta gõ từ khóa “Read Range” rồi kéo thả Activity này vào màn hình như minh họa:

Trong mục “Range *”: Ta viết lệnh để đọc toàn bộ dữ liệu trong file Excel, nhấn mở Expression Editor:

Mã lệnh ở trên đọc từ Cột A cho tới cột D, đọc toàn bộ các dòng dữ liệu.
Excel.Sheet["Sheet1"].Range["A1:D"+Excel.Sheet["Sheet1"].RowCount]

Sau đó mục “Save to” tạo biến dt_input có kiểu DataTable để lưu trữ toàn bộ dữ liệu được đọc trong bảng Excel (Nhấn control + K để tạo tên biến), lưu ý dt_input cần khai báo Scope là Main Sequence (xem lại các bài học trước):

Bước 6: Kéo thả Assign Activity

Ta tìm Activity Assign rồi kéo vào như minh họa:

- Save to: dt_top_product , argument này sẽ trả về cho các Workflow khác sử dụng ở các dự án khác nhau, rất tiện lợi
- Value to Save: Tiến hành viết mã lệnh LINQ C# để xử lý lọc ra TOP 3 Sản phẩm có trị giá lớn nhất.

Mở Expression Editor để viết mã lệnh cho Value to Save:

Mã lệnh Tui để trong C# snippet để bạn dễ copy:
dt_input.AsEnumerable()
.OrderByDescending(row => Convert.ToInt32(row["Unit Price"]))
.Take(3)
.CopyToDataTable()
Viết mã lệnh xong, bạn nhấn Save:

Nếu bạn thấy báo lỗi liên quan tới XML Reader Writer ở trên là do dự án chưa tham chiếu thư viện, nếu bị lỗi ở trên thì bạn bổ sung như sau:
Bạn mở thư mục nơi lưu trữ dự án này:

Bạn mở “NewActivity.xaml” bằng notepad và tim tới mục <sco:Collection> như hình dưới đây:

Sau đó bổ sung System.Xml.ReaderWriter vào như hình:

<AssemblyReference>System.Xml.ReaderWriter</AssemblyReference>
Sau đó, ta tắt và khởi động lại dự án FilterTopProduct trong UiPath, lỗi trên sẽ được sửa:

Bước 7: Packaging a Library (to .nupkg)
Bước này chúng ta sẽ đóng gói thư viện thành Nuget package với đuôi là .nupkg

Trong Ribbon, ta nhấn vào nút “Publish” như hình chụp ở trên, màn hình Publish Library hiển thị ra như dưới đây:

Mục Package properties bạn chọn package name, chỉnh version, new version, bổ sung icon nếu muốn
Sau đó chọn Publish Options:

Màn hình Publish options:
- Publish to: Chọn Custom
- Custom URL: Tạo và trỏ tới thu mục mà ta muốn xuất .nupkg ra ổ cứng

Sau đó ta nhấn “Publish” để xuất bản thư viện:

Màn hình trên xuất hiện thông báo rằng ta đã xuất bản thư viện thành công, ta có thể kiểm tra lại:

Bất kỳ dự án tự động hóa nào cũng có thể tái sử dụng được thư viện trên, chỉ cần truyền đường dẫn 1 file Excel danh sách sản phẩm theo mẫu thì kết quả sẽ trả về là DataTable chứa TOP 3 sản phẩm có giá cao nhất. Bạn có thể dựa vào ý tưởng này để làm các thư viện tái sử dụng khác trong thực tế công việc.
Bước 7: Sử dụng Packaging a Library .nupkg
Ở bước này ta tạo một dự án Process mới tên là “UseFilterTopProduct“

Ta chọn “Process” để hiển thị màn hình New Blank Process.
Bước 8: Cấu hình tạo “UseFilterTopProduct”:

- Name: Đặt tên “UseFilterTopProduct”
- Description: Đặt các mô tả
- Location: Chọn nơi lưu trữ dự án
- Compatibility: Chọn Windows
- Language: Chọn ngôn ngữ lập trình C#
Sau đó bấm Create để tạo Process.

Bước 9: Tham chiếu thư viện
Tham chiếu để truyền excel_input_path vào Arguments cho thư viện.

Bấm chuột phải vào Dependencies/ chọn Manage.
Lúc này màn hình Manage Packages hiển thị ra như dưới đây:

Ta bấm vào biểu tưởng dấu + như hình dưới đây trong mục User defined package sources:

Đặt tên và trỏ tới thư mục lưu trữ thư viện:

Sau đó nhấnt nút “Add”, kết quả:

Sau khi nhấn nút “Add” thư viện “FilterTopProduct” sẽ được nạp vào danh sách như hình trên.
Bước 10: Cài đặt thư viện Filter Top Product
Cũng trong màn hình Manage Packages, ta chọn FilterTopProduct mà ta mới tham chiếu:

Các thông tin chi tiết của thư viện sẽ được hiển thị, để cài đặt bạn nhấn vào nút “Install” ở góc phải phía trên màn hình.

Sau khi cài thành công, ta nhấnt nút “Save”, chờ phần mền thực thi:

Bước 11: Kéo thả Input Dialog Activity
Sau khi cài thư viện thành công, ta quay lại màn hình chính và kéo thả Input Dialog Activity:

Tương tự như các hướng dẫn trước, ta vào thẻ Activities rồi gõ từ khóa Input để tim input dialog Activity, kéo thả nó vào màn hình:

Ta tiến hành nhập Dialog Title và Input Label, cũng như Value entered cho Input Dialog này:

- Dialog Title: Nhập “Provide Excel list of Products”
- Input Label: Nhập “Your Excel:”
- Value entered: Nhấn Ctrl+K để tạo biến, đặt tên là excel_input_path để lưu trữ đường dẫn Excel mà người dùng nhập vào
Bước 12: Thêm Activities từ thư viện Filter Top Product
Đây là bước thêm thư viện mà ta đã đóng gói và cài đặt ở các bước trước. Trong thẻ Activities ta tìm từ khóa “filter” sau đó kéo thả NewActivity vào màn hình:

Sau khi kéo thả thành công ta sẽ có kết quả:

Bạn quan sát NewActivity sẽ xuất hiện 2 mục nhập liệu. Bởi vì thư viện này ta đã khai báo 2 Argument:
- input_excel_path có direction là in là nhận dữ liệu đầu vào
- dt_top_product có direction là out là một biến DataTable trả về kết quả là danh sách TOP 3 sản phẩm có giá cao nhất
Ta gán lại các biến cho NewActivity như sau:

- Ta truyền excel_input_path của UseFilterTopProduct vào cho argument input_excel_path của NewActivity (FilterTopProduct)
- Ta lưu lại giá trị DataTable của NewActivity trả về, lưu vào biến dt_result, ta nhấn ctrl+K để tạo tên biến dt_result
Bước 13: Kéo Input Dialog activity

Từ thẻ Activities ta tìm từ khóa Input để kéo Input Dialog Activity vào màn hình như minh họa, kết quả sau khi kéo:

Tiến hành nhập Dialog Title, Input Label, Value entered cho Input Dialog:

Màn hình trên minh họa tiêu đề, và value entered là excel_output_path để lưu lại đường dẫn Excel mà người dùng muốn xuất danh sách TOP 3 Sản phẩm ra ổ cứng.
Bước 14: Lưu kết quả Filter ra file Excel mới, kéo use excel process scope

Ta tìm và kéo Excel Process Scope ra màn hình, kết qủa:

Bước 15: Lưu kết quả Filter ra file Excel mới, kéo use excel file

Ta tìm và kéo thả Use Excel File Activity vào mục Do của Excel Process Scope:

- mục Excel file: Ta sẽ truyền biến excel_output_path:

Bước 16: Lưu kết quả Filter ra file Excel mới, write datatable to excel

Ta tìm và kéo thả Write DataTable to Excel vào mục Do, kết quả:

- What to write: Ta nhập dt_result, là DataTable chứa TOP 3 sản phẩm có giá cao nhất
- Destination: Là nơi mà muốn luôn dt_result trong file Excel, thông thường ta lưu từ ô A1

Bước 17: Xuất thông báo lưu kết quả Excel TOP 3 product thành công

Khi chương trình hoàn tất thì cần thông báo cho người sử dụng biết, thường ta dùng MessageBox Activity để thông báo. Ta kéo vào:

Ta nhập thông báo “Saving Excel for TOP 3 Product successful!”
Dưới đây là Workflow tổng quát của dự án:

Thực thi phần mềm tự động hóa này ta có kết quả:

Bạn có thể tải full source code dự án tự động hóa này ở đây:
Source code tạo thư viện đọc Excel danh sách sản phẩm và trả về TOP 3 Sản phẩm có giá cao nhất:
https://www.mediafire.com/file/uil5wpy63rwxlym/FilterTopProduct.rar/file
Soure code sử dụng thư viện TOP 3 sản phẩm:
https://www.mediafire.com/file/jkfd4scghnll7d9/UseFilterTopProduct.rar/file
Như vậy Tui đã hướng dẫn xong chi tiết quá trình tạo dự án tự động hóa đọc danh sách sản phẩm trong Excel và trả về TOP 3 sản phẩm có giá cao nhất sử dụng Thư viện trong tự động hóa để tái sử dụng.
Bài học tiếp theo, Tui sẽ trình bày chi tiết về “Tạo và sử dụng Sequence cho quy trình tự động hóa tuyến tính” đây là một trong các chức năng rất hữu dụng của RPA, Các bạn chú ý theo dõi
Chúc các bạn thành công
p/s: Toàn bộ các bài học liên quan tới Tự động hóa quy trình bằng Robot được tổng hợp tại link https://tranduythanh.com/robotic-process-automation/, các bạn vào trang này và kéo xuống có thể theo dõi từng bài theo chươngĐăng ký và tải phần mềm UiPath Studio