Tích hợp - Đồng bộ Openbravo ERP và Openbravo POS - Phần 3

Trong phần 3 này tôi sẽ trình bày chi tiết cách sử dụng Pentaho Data Integration để đồng bộ hóa dữ liệu từ Openbravo ERP tới Openbravo POS và ngược lại.  Lưu ý là để thực hiện được các bước trong phần này bạn phải tham khảo lần lượt phần 1phần 2.
I. Giới thiệu Pentaho Data Integration
Pentaho Data Integration là một mã nguồn mở, miễn phí cung cấp các công cụ : Khai thác, chuyển đổi và tải dữ liệu (ETL – Extraction, Transformation, Loading). Pentaho Data Integration bao gồm các ứng dụng sau đây:
- Spoon: Là thành phần được sử dụng nhiều nhất của Pentaho. Nó là một công cụ đồ họa xây dựng trên nền tảng Eclipse, cho phép cấu hình một cách trực quan các công việc của ETL.
- Carte: Là một Web Server đơn giản cho phép bạn truy câp từ xa các kho dữ liệu của Pentaho Data Integration, thực thi, theo dõi, Bắt đầu và kết thúc các công việc, các chuyển đổi được chạy trên server.
- Pan: Cho phép bạn thực thi các chuyển đổi được thiết kế bởi Spoon, do đó cho phép các công việc của ETL có thể chạy từ dòng lệnh.
- Kitchen: Là một chương trình của thể thực thi các công việc được thiết kế, tạo ra bởi Spoon, Cho phép lập lịch và chạy tự động hàng loạt.

 Pentaho Data Integration là một công cụ linh hoạt và thân thiện , cung cấp một giao diện đồ họa trực quan (Spoon) để thay đổi và tạo ra các biến đổi trên cơ sở dữ liệu. Người dùng có thể sử dụng dễ dàng và nó không yêu cầu bất kì kỹ năng lập trình đặc biệt nào. Và hơn hết nó là mã nguồn mở nên được hỗ trợ mở cả một cộng đồng khắp thế giới.
  Trước đây, mỗi khi có một số dữ liệu mới cần được đồng bộ hóa, bạn phải thêm một đoạn mã thích hợp ở cả 2 phía : Trong ERP và trong POS. Giờ đây các chức năng của REST Webservices cho phép lấy thông tin từ tất cả Business Object của OB ERP mà chỉ cần thực hiện một yêu cầu HTTP. Vì vậy, nếu dữ liệu đã được yêu cầu , các sửa đổi sẽ chỉ ảnh hưởng đến môi trường tích hợp dữ liệu Pentaho.
 Các ứng dụng khác có thể tích hợp với OB POS thông qua Pentaho Data Integration một cách đơn giản: Tạo ra một chuyển đổi hoặc một tiến trình công việc mới. Bạn không cần phải thay đổi source code của Openbravo POS, Pentaho Data Integration cung cấp cơ chế đủ để thực hiện thành công thao tác đồng bộ hóa dữ liệu giữa các ứng dụng khác và Openbravo POS.
  Pentaho Data Integration cung cấp khả năng lập lịch cho các chuyển đổi (Transformation) hoặc công việc (Job) để chạy trong một máy chủ từ xa hoặc đồng bộ hóa ngay sau khi có sự kiện đặc biệt nào đó xảy ra trong Openbravo POS. Ví dụ: Khi người dùng OB POS thực hiện thao tác đóng két tiền mặt.  Điều này rất quan trọng, bởi vì không cần sự tương tác của người dùng cụ thể nào mỗi khi bạn cần chạy việc tích hợp, chỉ cần chuẩn bị lịch trình trong một thời gian thích hợp và chạy một lần.



II. Cài đặt Pentaho Data Integration
-  Bạn download Pentaho Data Integration tại đây.
- Sau khi tải về bạn giải nén file bạn vừa tải về vào một thư mục bất kì trên máy tính.
- Tất cả các dirver JDBC được cung cấp bởi Pentaho Data Integration được để trong thư mục data-integration/libext/JDBC
- Một điều bắt buộc khi sử dụng Pentaho Data Integration là phiên bản driver JDBC phải tương thích với phiên bản của dirver JDBC trong Openbravo POS. Bạn có thể lấy driver JDBC database đang được sử dụng trong Openbravo POS và ghi đè vào thư mục data-integration/libext/JDBC của PDI (Kettle). Ví dụ cụ thể : Nếu bạn sử dụng 4.3.0 và  Openbravo POS 2.30.2 các driver JDBC được cung cấp bởi Pentaho Data Integration là:
- Derby.jar (10.2.2.0)
- Postgresql-8.2-506.jdbc3.jar
- Mysql-connector-java-3.1.14-bin
- Hsqldb.jar (1.8.0)
- Ojdbc14.jar (10.2.0.2.0)

Driver Derby JDBC được cung cấp trong PDI : data-integration/libext/JDBC/derby.jar là phiên bản 10.2.2.0 và nó không tương thích với phiên bản Derby JDBC (10.4.2.0) trong Openbravo POS. Vì vậy cần thiết phải thay thế derby.jar (10.2.2.0) bằng phiên bản mới nhất của derby.jar . Bạn có thể kiểm tra phiên bản của dirver bằng cách giải nén nó là xem trong file /META-INF/MANIFEST.MF .



III. Lấy các file chuyển đổi (transformation) và công việc (job).
Transformation và job là các quá trình cần thiết bởi Pentaho Data Integration đóng gói tất cả các bước của quá trình đồng bộ hóa dữ liệu giữa Openbravo ERP và Openbravo POS vào trong các file này.
Các file Trasformation và job mới nhất được đặt trong thư mục modules/org.openbravo.pos.sync/resources/ của thư mục cài đặt Openbravo ERP, bên trong thư mục POS Synchronization WebService module .



IV. Sử dụng Pentaho Data Integration (PDI)
Đầu tiên tôi sẽ nhắc lại về Spoon , công cụ mà bạn phải nắm vững:
Spoon là công cụ tích hợp mà chúng ta sẽ sử dụng để chạy các chuyển đổi (Transformation) và công việc (Job).  Spoon cũng là công cụ đồ họa mà bạn có thể thiết kế và kiểm tra mọi qua trình của Pentaho Data Intergration. Các thành phần khác của Pentaho sẽ thực thi các tiến trình được thiết kế bới Spoon.
 Để khởi động Spoon trên windows chạy file spoon.bat (Hoặc file Kettle.exe đối với một số phiên bản cũ hơn). Để khởi động Spoon trong Linux hoặc hệ điều hành khác Unix, bạn sử dụng các dòng lệnh sau:
cd data-integration
chmod +x spoon.sh
sh spoon.sh

  Ngay sau khi Spoon được start, một hộp thoại xuất hiện yêu cầu kết nối dữ liệu. Ở đây chúng ta chỉ cần sử dụng PDI cho nên bạn có thể bỏ qua bước này.
  Phần trên cùng của màn màn hình Spoon chứa menu các tùy chọn cho phép bạn thực hiện một host lưu trữ toàn bộ các tùy biến và hoạt động của ứng dụng. Panel phía bên trái có 2 tab:

  • View: Mô tả tất cả các yếu tố  (steps, hops, jobs, database connection...) được sử dụng.
  • Design: Các hoạt động được sử dụng trong Pentaho Data Integration.
   Trong khu vực chính: transformations hoặc các job được mở ra theo dạng tab. Mỗi file có một menu cho phép thực hiện các hoạt động như: Run, Debug, explore database…


Cấu hình Pentaho Data Integration :

Sau lần chạy đầu tiên của Spoon, biến môi trường Kettle đã được tạo ra.
Biến này có thể sử dụng trong suốt quá trình hoàn động của Pentaho Data Integration, bao gồm các quá trình transformation và thực hiện job.
  Trong windows các tập tin môi trường được lưu tại:
C:\Documents and Settings\<username>\.kettle\kettle.properties

Trong linux được lưu tại:
$HOME/.kettle/kettle.properties

Thêm vào file này các thuộc tính sau để cấu hình database và các thông số kết nối Openbravo ERP:
Trong bài viết này tôi sử dụng Openbravo POS 2.3 với database là MySQL Server 5.1.  Openbravo ERP 3.0 với database là PostgreSQL  9.1, thì các thông số kết nối của tôi sẽ có dạng như sau:
# Database Connection Openbravo POS
db.URL = jdbc:mysql://localhost:3306/openbravopos?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
db.driver = com.mysql.jdbc.Driver
db.user =root
db.password =123456

# Openbravo ERP
erp.URL = http://localhost:8080/openbravo/ws/org.openbravo.pos.sync.ws
erp.id = 4028E6C72959682B01295A070852010D
erp.org = 5EFF95EB540740A3B10510D9814EFAD5
erp.pos = POS-1
erp.user = Openbravo
erp.password = openbravo

Giá trị các thông thông số thuộc tính như sau:

  • db.URL: Là chuỗi kết nối sử dụng JDBC để kết nối database trong Openbravo POS.
db.driver:  là tên lớp Java ứng với driver JDBC. Tên này được định nghĩa bưởi nhà cung cấp database. (Ví dụ : org.apache.derby.jdbc.EmbeddedDriver đối với Derby , com.mysql.jdbc.Driver đối với MySQL)
  • db.user: Người dùng đăng nhập vào cơ sở dữ liệu.
  • db.password: Mật khẩu của người dùng trên


  • erp.URL:  Đường dẫn nơi lưu trữ webservice của Openbravo ERP sau khi được cài đặt. Webservice được cài đặt trong thư mục ws/org.openbravo.pos.sync.ws. Ví dụ trong trường hợp của tôi , http://localhost:8080/openbravo là URL của Openbravo ERP và http://localhost:8080/openbravo/ws/org.openbravo.pos.sync.ws là URL của webservice.
  • erp.id: Các client nội bộ của các điểm bán lẻ được định nghĩa trong Openbravo ERP
  • erp.org: Các tổ chức (Organization) nội bộ của các điểm bán lẻ được định nghĩa trong Openbravo.
  • erp.pos: Từ khóa tìm kiếm của các điểm bán lẻ được định nghĩa trong Openbravo ERP được sử dụng để xác định hệ thống Openbravo POS bên trong Openbravo ERP.
  • erp.user: Người dùng Openbravo ERP được sử dụng để gọi chức năng tích hợp.
  • erp.password: Mật khẩu đăng nhập của người dùng Openbravo ERP.

Lưu ý:  Nhìn và mô tả thông số trên , đối với người mới bắt đầu có thể sẽ khó hiểu với 2 thông số erp.id và erp.org .Để đơn giản hơn bạn có thể  lấy được 2 giá trị erp.id và erp.org  bằng cách làm như sau:
Chạy ứng dụng SQL Query trong Openbravo ERP sau đó nhập vào các câu truy vấn tương ứng sau:
SELECT AD_CLIENT_ID, VALUE, NAME FROM AD_CLIENT    ⇒ Thông số erp.id
SELECT AD_ORG_ID, VALUE, NAME FROM AD_ORG            ⇒ Thông số erp.org
 Openbravo REST webservices sử dụng cùng một hệ thống truy cập và xác thực như chuẩn của Openbravo. Tất cả các hoạt động REST để tích hợp chỉ được thực hiện sau khi Openbravo xác thực và cho phép truy cập đối với quyền người dùng tương ứng.

  Sau khi sửa file môi trường bạn lưu file và khởi đông lại Spoon để các thay đổi có tác dụng.  Bạn có thể kiếm tra nếu Spoon có thể truy cập và đọc các thông số mà bạn thiết lập thì quá trình cấu hình PDI đã thành công.
  Để kiểm tra, mở Spoon của một trong những transformation. Trong menu trên cùng bạn vào Edit > Edit the kettle.properties file (Ctrl+ALT+P) và các biến và giá trị của nó sẽ xuất hiện trong hộp thoại hiện ra. Nếu như các biến không hiện thị ra, bạn hãy include KETTLE_HOME vào biến môi trường của bạn và kiểm tra lại:
Ví dụ. KETTLE_HOME = C:\Documents and Settings\<username>



V. Chạy các quá trình tích hợp


1. Đồng bộ hóa dữ liệu sản phẩm, thuế, khách hàng từ Openbravo ERP sang Openbravo POS
 

  Mở file ALL SYNCHRONIZATION.kjb  bằng Spoon và chạy nó bằng cách click và nút run trên menu chính , tool bar hoặc nhấn “F9”.
⇒Một cửa sổ xuất hiện và bạn nhấn nút “Launch”
- Quá trình đồng bộ hóa sẽ tự động bắt đầu, bạn có thể thấy mô tả tình trạng của từng transformation hoặc job trong tab “Job metrics” . Bạn cũng có thể vào tab Logging để xem chi tiết quá trình đồng bộ được lưu tại đây.
- Quá trình động bộ hóa tiến hành thành công:


Quá trình trên sẽ đồng bộ hóa thông tin sản phẩm, thuế, thông tin khách hàng từ Openbravo ERP xuống Openbravo POS. 

Lưu ý : Để tránh lỗi gặp phải trong quá trình chạy file đồng bộ hóa này bạn cần chú ý một số điểm sau:

- Đối với mỗi điểm bán lẻ (POS) lúc bạn khai báo sẽ ứng với một danh sách giá  (Price list) , Vì vậy khi bạn tạo mới một sản phẩm trong OB ERP nếu muốn sản phẩm đó được đồng bộ hóa vào điểm bán lẻ tương ứng thì bạn phải add danh sách giá (Price list) đã khai báo cho điểm bán lẻ này.
- Bạn cũng cần khai báo chính xác nhóm thuế mà bạn sử dụng cho sản phẩm, nếu không Openbravo POS sẽ không hiểu và lúc bạn bán hàng trong OB POS nó sẽ báo lỗi.

Sau đây là ví dụ tạo mới một sản phẩm của tôi:



Để tránh xung đột với khóa tìm kiếm (“search key”) của sản phẩm và khách hàng thì sản phẩm / khách hàng được khai báo trong Openbravo ERP sẽ được thay đổi tên sau khi thực hiện một quá trình đồng bộ.
Để thay đổi khóa tìm kiếm của sản phẩm / khách hàng , quá trình đồng bộ hóa sẽ thêm một tiền tố vào khóa tìm kiếm của các sản phẩm / khách hàng sử dụng trong quá trình đồng bộ. Tiền tố này được tao ra theo quy tắc sau:
 - Thêm 2 ký tự => PS (POS Synchronization)
 - Ký tự dựa trên 3 ký tự đầu tiền của mã sản phẩm.
 - Một ký tự để phân cách tiền tố với khóa tìm kiếm bán đầu  =>_
Ví dụ:
Bước 1: Tạo một sản phẩm trong Openbravo ERP như sau:
Search key: productA
Name: Product A
Product ID: 64CB40D637B54ABEA3016CEA61C4B460 (Tự động tạo)
Bước 2: Chạy tiến trình động bộ. Sản phẩm sẽ xuất hiện trong Openbravo POS với giá trị được khai báo trong Openbravo ERP.
Search key: productA
Name: Product A
Product ID: 64CB40D637B54ABEA3016CEA61C4B460

Bước 3: Xóa product A trong openbravo ERP.
Bước 4: Chạy tiến trình đồng bộ. Tiến trình này sẽ thay đổi tên của sản phẩm trong Openbravo POS.
Bước 5: Bây giờ bạn xem các thay đổi trong Openbravo POS:
Search key: PS64C_productA
Name: PS64C_product A
Product id: 64CB40D637B54ABEA3016CEA61C4B460 (Không thay đổi)
⇒ Với quá trình này Openbravo POS có thể quản lý sự thay đổi khóa tìm kiếm của sản phẩm mà không làm ảnh hưởng đến quá trình đồng bộ hóa.



2. Đồng bộ hóa đơn bán hàng từ Openbravo POS tới Openbravo ERP

- Bạn thực hiện một thao tác bán hàng trên Openbravo POS . Phiếu bán hàng xuất ra có dạng như sau:


- Mở transformation “Orders.ktr” bằng Spoon và tiến hành chạy nó:

 
- Trong Openbravo ERP Master Data Management > Import Data > Import Orders và chạy tiến trình Import Order bằng cách nhấn vào nút “Import  Orders” :




- Một cửa sổ xuất hiện, bạn nhấn Ok để hoàn thành quá trình Import:


- Khi quá trình này kết thúc , một thông báo cho biết kết quả việc import :
(Trong thông báo trên có một số order không thể import được đó là các order mà tôi đã import hoặc order rỗng )

- Để kiểm tra kết quá việc import bạn có thể vào Sale Management > Transactions > Sales Order bạn sẽ thấy các hóa đơn bán hàng mà bạn đã import tại đây :


Cấu hình để việc tích hợp chạy tự động từ xa


  Carte là một web server đơn giản cho phép bạn có thể chạy các transformations và các job từ xa. Nó cũng cho phép bạn theo dõi từ xa, Start và Stop các transformation và các Job được chạy trên server Carte.
  Bây giờ thực hiện tự động việc đồng bộ hóa giữa Openbravo ERP và Openbravo POS mà không cần sự tác động của người dùng. Mỗi Job trong Pentaho Data Integration  có thể được lập lịch để chạy trong một server từ xa. Bạn có thể tham khảo về Carte tại  Carte User Documentation

Trong phần tiếp theo tôi sẽ trình bày cách thiết lập quá trình đồng bộ hóa tự động. Nhưng đến đây là coi như toàn bộ quá trình đồng bộ và tích hợp Openbravo POS và Openbravo ERP đã hoàn thành/ Chúc các bạn thành công.

 

Tài liệu tham khảo : http://wiki.openbravo.com/wiki/Projects/POS/ERP_Integration

1 nhận xét:

  1. bạn ơi mình mới lần đầu sử dụng openbravo thì phải đi từ đâu bạn cho mình hướng đi nha
    thank's.

    Trả lờiXóa

Rất mong các ý kiến của các bạn khi đọc bài viết này !