Tích hợp báo chi 【Mua hàng thực tế】 từ DingTalk vào đơn thanh toán 【Aokang/Châu Đường】 trong Kingdee Cloud
Trong hoạt động kinh doanh hàng ngày, việc chuyển đổi dữ liệu hiệu quả và kết nối chính xác giữa các hệ thống là yếu tố then chốt giúp nâng cao năng suất. Bài viết này sẽ chia sẻ một ví dụ thực tế: cách sử dụng nền tảng tích hợp dữ liệu Qiyi để kết nối dữ liệu báo chi từ DingTalk 【Mua hàng thực tế】 với đơn thanh toán trong Kingdee Cloud Star (【Aokang/Châu Đường】).
Lấy và xử lý dữ liệu
Đầu tiên, chúng ta cần thu thập dữ liệu báo chi từ hệ thống DingTalk. Bằng cách sử dụng API topapi/processinstance/get được cung cấp bởi DingTalk, chúng ta có thể lấy thông tin báo chi một cách định kỳ và đáng tin cậy. Để đảm bảo không bỏ sót bất kỳ đơn nào, chúng tôi đã thiết lập cơ chế phân trang và chiến lược giới hạn tốc độ yêu cầu API.
Chuyển đổi và ánh xạ dữ liệu
Do định dạng dữ liệu giữa DingTalk và Kingdee Cloud Star khác nhau, chúng tôi áp dụng logic chuyển đổi dữ liệu tùy chỉnh để xử lý và chuẩn hóa dữ liệu đã thu thập. Bước này không chỉ đảm bảo tính nhất quán của dữ liệu mà còn hỗ trợ quá trình ghi nhận sau này dễ dàng hơn.
Ghi dữ liệu và giám sát
Sau khi hoàn thành việc chuyển đổi dữ liệu, bước tiếp theo là lưu loạt dữ liệu này vào Kingdee Cloud Star. Sử dụng API batchSave được cung cấp bởi Kingdee, chúng tôi có thể nạp dữ liệu lớn một cách hiệu quả. Đồng thời, hệ thống giám sát và cảnh báo tập trung của nền tảng Qiyi cho phép chúng tôi theo dõi trạng thái và hiệu suất của từng nhiệm vụ tích hợp, phát hiện và khắc phục sự cố kịp thời.
Xử lý lỗi và cơ chế thử lại
Trong quá trình vận hành thực tế, việc gặp phải các tình huống lỗi là điều khó tránh khỏi. Vì vậy, chúng tôi xây dựng một cơ chế xử lý lỗi và thử lại đầy đủ, đảm bảo rằng ngay cả khi xảy ra vấn đề, dữ liệu vẫn được truyền tải đầy đủ và chính xác nhất có thể.
Qua các bước trên, việc tích hợp liền mạch từ báo chi DingTalk 【Mua hàng thực tế】 sang đơn thanh toán Kingdee 【Aokang/Châu Đường】 đã được thực hiện thành công, góp phần tối ưu hóa quy trình nội bộ cho doanh nghiệp. Trong các phần tiếp theo, chúng ta sẽ đi sâu vào các phương pháp cụ thể và lưu ý kỹ thuật cho từng bước.
Gọi API topapi/processinstance/get từ DingTalk để lấy và xử lý dữ liệu
Trong chu trình sống của nền tảng tích hợp dữ liệu Qiyi, việc gọi API từ hệ thống nguồn là bước quan trọng. Bài viết này sẽ phân tích chi tiết cách sử dụng API DingTalk topapi/processinstance/get để lấy và xử lý dữ liệu nhằm thực hiện giải pháp tích hợp từ báo chi DingTalk 【Mua hàng thực tế】 đến đơn thanh toán Kingdee.
Cấu hình metadata
Đầu tiên, chúng ta cần cấu hình metadata để gọi và xử lý đúng API của DingTalk. Các mục cấu hình quan trọng như sau:
- API:
topapi/processinstance/get - Phương thức yêu cầu:
POST - Kiểm tra ID:
true - Định dạng phản hồi:
- Đổi tên trường "Phương thức thanh toán" thành "Phương thức thanh toán_new"
- Kiểu dữ liệu là chuỗi
- Lọc điều kiện:
- Loại báo chi bằng "Mua hàng thực tế"
Các cấu hình này đảm bảo chúng ta có thể lọc và xử lý chính xác dữ liệu cần thiết.
Thiết lập tham số yêu cầu
Để gọi API thành công, chúng ta cần thiết lập các tham số yêu cầu sau:
- Mã duy nhất của luồng phê duyệt (
process_code):``` "value": "PROC-12B1B605-2D28-43FE-80FB-13ECE6165313"
2. **Thời điểm bắt đầu phiên phê duyệt (`start_time`)**:```
"value": "_function ( {LAST_SYNC_TIME} - ( 3600 * 96) ) * 1000"
- Thời điểm kết thúc phiên phê duyệt (
end_time):``` "value": "{CURRENT_TIME}000"
4. **Tham số phân trang (`size`)**:```
"value": "20"
- Con trỏ truy vấn phân trang (
cursor):``` "field": "cursor",
Những tham số này đảm bảo chúng ta có thể lấy dữ liệu theo từng trang theo nhu cầu và điều chỉnh phạm vi truy vấn dựa trên thời điểm đồng bộ trước đó.
#### Yêu cầu dữ liệu và làm sạch
Sau khi gửi yêu cầu API, dữ liệu trả về có thể chứa nhiều thông tin không cần thiết. Do đó, cần làm sạch và định dạng dữ liệu trả về. Ví dụ, đổi tên trường "Phương thức thanh toán" thành "Phương thức thanh toán_new", đảm bảo kiểu dữ liệu là chuỗi. Quá trình làm sạch này có thể tự động hóa bằng các quy tắc định dạng được thiết lập sẵn.
"formatResponse":[{"old":"Phương thức thanh toán","new":"Phương thức thanh toán_new","format":"string"}]
Quy trình làm sạch dữ liệu tự động này không chỉ tăng hiệu suất mà còn giảm thiểu sai sót do con người.
#### Lọc điều kiện
Để chỉ xử lý các bản ghi báo chi liên quan, chúng tôi sử dụng chức năng lọc điều kiện. Ví dụ, chỉ lấy các bản ghi loại báo chi là "Mua hàng thực tế":
"condition":[[{"field":"Loại báo chi","logic":"eq","value":"Mua hàng thực tế"}]]
Cơ chế lọc điều kiện chính xác giúp chúng ta tập trung vào các trường hợp nghiệp vụ cụ thể, tăng tính hiệu quả và chính xác trong xử lý dữ liệu.
#### Xử lý phân trang và giới hạn tốc độ
Vì API có thể xử lý lượng lớn dữ liệu, việc phân trang và giới hạn tốc độ là cần thiết. Bằng cách thiết lập các tham số phân trang (ví dụ: kích thước mỗi trang, con trỏ), chúng tôi có thể lấy dần tất cả dữ liệu phù hợp. Đồng thời, giám sát tần suất gọi API giúp tránh bị chặn do giới hạn tốc độ, đảm bảo hệ thống hoạt động ổn định.
"field":"size", "value":"20"
#### Giám sát thực thời và ghi nhật ký
Trong suốt quá trình, giám sát thực thời và ghi nhật ký là yếu tố không thể thiếu. Nền tảng Qiyi cung cấp hệ thống giám sát và cảnh báo tập trung, cho phép theo dõi trạng thái và hiệu suất của từng nhiệm vụ tích hợp. Khi có lỗi như mất mạng hoặc giới hạn API, hệ thống sẽ cảnh báo ngay lập tức và ghi log chi tiết để phân tích và xử lý sau.
### Tổng kết
Bằng cách cấu hình metadata hợp lý, thiết lập tham số yêu cầu, lọc điều kiện và xử lý phân trang cũng như giới hạn tốc độ, chúng ta có thể gọi hiệu quả API `topapi/processinstance/get` của DingTalk để lấy và xử lý dữ liệu cần thiết. Điều này không chỉ đảm bảo quá trình tích hợp diễn ra thuận lợi mà còn cải thiện đáng kể độ minh bạch và hiệu suất kinh doanh. Trong thực tế, phương pháp này đã được chứng minh là đáng tin cậy và hiệu quả, tạo nền tảng vững chắc cho việc kết nối dữ liệu giữa các hệ thống khác nhau.
### Chuyển đổi ETL dữ liệu báo chi DingTalk sang Kingdee Cloud Star
Trong bước thứ hai của chu trình tích hợp dữ liệu, chúng ta cần tiến hành quá trình ETL (trích xuất, chuyển đổi và tải) dữ liệu báo chi từ DingTalk thành định dạng mà API Kingdee Cloud Star có thể nhận và cuối cùng lưu vào nền tảng đích. Bài viết này sẽ phân tích các điểm kỹ thuật và chi tiết cấu hình trong quá trình này.
#### Trích xuất và làm sạch dữ liệu
Trước tiên, lấy dữ liệu báo chi gốc từ API DingTalk. Chúng tôi sử dụng API `topapi/processinstance/get` để trích xuất dữ liệu từ các phiên trình duyệt báo chi trong DingTalk. Bước này đặc biệt chú ý đến việc phân trang và giới hạn tốc độ để đảm bảo tính toàn vẹn dữ liệu và ổn định hệ thống.
{ "process_instance_id": "xxxx", "size": 20, "cursor": 0 }
#### Chuyển đổi dữ liệu
Sau khi có dữ liệu gốc, cần chuyển đổi nó sang định dạng mà API Kingdee Cloud Star có thể nhận. Quá trình này bao gồm ánh xạ trường, chuyển đổi định dạng dữ liệu và làm sạch dữ liệu cần thiết.
##### Ánh xạ trường
Dựa trên cấu hình metadata, ánh xạ dữ liệu báo chi DingTalk sang các trường cần thiết trong đơn thanh toán Kingdee. Ví dụ:
- `FBillNo` tương ứng với `business_id` của DingTalk
- `FDATE` tương ứng với `finish_time`
- `FPAYORGID` và `FSETTLEORGID` cần khớp với dự án chi phí
{ "FBillNo": "{{extend.business_id}}", "FDATE": "{{extend.finish_time}}", "FPAYORGID": "_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{Dự án chi phí}}" }
##### Chuyển đổi định dạng dữ liệu
Trong quá trình ánh xạ trường, thường cần chuyển đổi định dạng dữ liệu như ngày tháng, đơn vị tiền tệ. Nền tảng Qiyi cung cấp nhiều trình phân tích (Parser) như `ConvertObjectParser` để chuyển đổi định dạng dữ liệu giữa các hệ thống.
{ "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }
#### Ghi dữ liệu
Sau khi hoàn tất chuyển đổi dữ liệu, tiến hành ghi vào hệ thống Kingdee Cloud Star. Chúng tôi sử dụng API lưu batch được cung cấp bởi Kingdee: `batchSave`.
##### Cấu hình yêu cầu API
Dựa trên metadata, xây dựng thân yêu cầu API, đảm bảo tất cả các trường cần thiết đều được ánh xạ và chuyển đổi đúng.
{ "api": "batchSave", "method": "POST", ... }
##### Xử lý hàng loạt và ghi nhanh
Để nâng cao hiệu suất xử lý dữ liệu, chúng tôi sử dụng phương pháp xử lý hàng loạt, ghi nhiều đơn báo chi cùng lúc vào Kingdee Cloud Star. Điều này không chỉ giảm số lần gọi API mà còn tăng khả năng xử lý và tốc độ phản hồi.
{ "operation": { "method": "batchArraySave", "rows": 1, ... } }
#### Xử lý lỗi và cơ chế thử lại
Trong thực tế, có thể gặp nhiều lỗi như mất mạng, lỗi gọi API. Do đó, cần xây dựng cơ chế xử lý lỗi và thử lại để đảm bảo dữ liệu được ghi vào nền tảng đích một cách đáng tin cậy.
{ ... "IsAutoSubmitAndAudit": false, ... }
Bằng cách đặt `IsAutoSubmitAndAudit` thành `false`, chúng tôi có thể gửi trước rồi mới xét duyệt, đảm bảo mỗi bước đều kiểm soát và có thể theo dõi.
#### Giám sát thực thời và ghi nhật ký
Để đảm bảo tính minh bạch và khả năng giám sát của toàn bộ quy trình ETL, cần theo dõi thực thời trạng thái của từng nhiệm vụ và ghi log chi tiết. Khi có vấn đề, có thể xác định và khắc phục nhanh chóng.
### Kết luận
Thông qua các bước trên, chúng ta đã thực hiện thành công quá trình ETL từ DingTalk sang Kingdee Cloud Star, bao gồm trích xuất, làm sạch, ánh xạ trường, chuyển đổi định dạng và cuối cùng là ghi dữ liệu. Trong quá trình này, việc tận dụng các trình phân tích, khả năng xử lý hàng loạt và cơ chế xử lý lỗi của nền tảng Qiyi đã đảm bảo tính hiệu quả và độ tin cậy của toàn bộ quá trình tích hợp dữ liệu.