Thứ Bảy, 16 tháng 7, 2011

Thủ thuật trong quá trình Rebuilding Openbravo ERP

Thủ thuật trong quá trình Rebuilding Openbravo ERP


  Bạn đang phát triển một hệ thống ERP với OPenbravo, chắc chắn bạn sẽ phải thiết kế thêm module, hoặc đơn giản bản phải việt hóa, chỉnh sửa giao diện...==> Và sau khi bạn thực hiện xong các thay đổi bạn phải tiến hành rebuilding hệ thống để các quá trình thay đổi cho hiệu lực trên OB ERP. Một điều mà không ít bạn gặp phải đó là quá trình Rebuild xảy ra lỗi, việc này là một việc không tránh khỏi tuy nhiên nếu bạn có kinh nghiệm bạn sẽ hạn chế được tốt đa các lỗi xảy ra.  Sau đây tôi sẽ trình bày một số thủ thuật liên quan đến rebuilding hệ thống khi cài đặt, nâng cấp các module, hoặc nâng cấp phần nhân của Openbravo ERP.

I. Trước khi rebuilding
 Trước khi rebuilding hệ thống, một điều rất quan trọng là đảm bảo rằng tất cả các module bạn đã có để thuộc tính In development. Để chắc chắn điều này, đánh dấu tất cả các module phát triển là " In development ", và sau đó thực hiện lệnh:
ant export.database
 Lệnh này sẽ export tất cả các module sang file xml.
 Nếu bạn không làm điều này, lệnh rebuild có thể sẽ trả về một số phát triển non-export.
 II. Trong khi rebuilding
Trong khi rebuilding hệ thống, một điều rất quan trọng là bạn đừng đóng cửa sổ Rebuild, hoặc ngừng Tomcat hay máy chủ database.
 Hãy kiên nhẫn, một số quá trình rebuild có thể mất một thời gian (đặc biệt, nếu bạn đang nâng cấp phần nhân Openbravo ).
III. Sau khi rebuilt hệ thống
3.1. Trường hợp build đã thành công
 Nếu rebuild hoàn toàn thành công, bạn sẽ nhận được thông báo  "Build succesful”. Sau đó bạn cần khởi động lại Tomcat để có thể sử dụng các module được cài đặt mới, hoặc phiên bản mới của Core. Bạn có thể thực hiện thông qua cửa sổ Rebuild bằng cách chọn tùy chọn "Restart application container", và click vào "Continue". Hãy đợi cho đến khi nhìn thấy lại cửa sổ đăng nhập!
3.2.Trong trường hợp build xuất hiện các warning
Nếu như quá trình build xuất hiện các warning, điều đó có nghĩa là:
•    Trước tiên, ứng dụng được ổn định, và bạn sẽ có thể khởi động lại Tomcat và đăng nhập vào Openbravo.
•    Tuy nhiên, có thể xảy ra một số vấn đề, và bạn nên kiểm tra chúng. Bạn sẽ thấy một số gợi ý trong chính cửa sổ Rebuild  (ở phần Warnings and Errors). Tuy nhiên, bạn vẫn có thể tìm kiếm các thông báo được ghi log đầy đủ bằng cách click vào nút "Show log".  Nếu bạn đã đóng các các Rebuild, bạn có thể thấy mục đăng nhập bên trong thư mục nguồn của Openbravo, trong thư mục "log".
 Dưới đây là một số thủ thuật về những gì bạn có thể làm trong trường hợp đã xuất hiện các warning:
•    Nếu những warning đã xuất hiện trong đoạn "Database update" của rebuild (Thường xuất hiện lúc bắt đầu quá trình rebuild), bạn nên tìm kiếm các thông báo lỗi trong phần tác vụ "update.database" của file log. Nó rất có thể là một vấn đề liên quan đến những ràng buộc khóa ngoại không được kích hoạt với một số lý do nào đó, hoặc cách đối tượng database khác không được tạo ra. Bạn nên khắc phục vấn đề này bằng cách kết nối đến database của bạn, và xác định xem tại sao các khóa ngoại (hoặc các  đối tượng database khác) không được tạo ra. Sau khi khắc phục các vấn đề đó,bạn export các module để rebuild khác không còn những lỗi như thế .
•    Nếu các warning đã xảy ra trong bước "generating entities" của quá trình rebuild, bạn nên sử dụng lệnh ant generate.entities và nhìn xem ghi log nào bạn đã tạo ra như thế nào. Việc này sẽ đưa ra một số thủ thuật để giải quyết lỗi bạn gặp phải.
•    Nếu warning đã xảy ra trong bước "Source compilation", nó rất có thể là một vấn đề liên quan đến một số file java hoặc xsql . Check file log để tìm ra trong file nào đã xảy ra lỗi, và khắc phục nó. Sau khi sửa lỗi xong, bạn cho chạy ant smartbuild từ dòng lệnh,và bạn không còn thấy lỗi xảy ra nữa.
3.3. Trong trường hợp build có lỗi xảy ra
 Nếu build xảy ra lỗi, quá trình build bị gián đoạn. Khi quy trình build ngừng lại, các ứng dụng có thể trong trạng thái không ổn định. Bạn chỉ có thể login bằng cách sử dụng một user có quyền System Administrator (Thường là User mặc định Openbravo). Nhiệm vụ của bạn trong trường hợp này là cần sửa chữa các lỗi gây ra các vấn đề, và tạo một quá trình rebuild mới thành công. Sau đây là một số thủ thuật, bạn có thể thử:
•    Nếu quá trình build đã ngừng lại trong bước "Database update", rất có thể database không được update đầy đủ, và bạn có thể gặp những vấn đề khi đăng nhập vào ứng dụng. Bạn nên tìm trong log các vấn đề gây lỗi, sửa nó, và sau đó thực hiện lệnh update.database  để cơ sở dữ liệu được cập nhật đầy đủ. Một khi điều này được thực hiện, bạn có thể khởi động một build mới thành công.
•    Nếu quá trình build đã ngừng lại trong bước "generating entities" , bạn nên thực hiện ant generate.entities. Nên làm điều này, hoặc nếu nó không thực hiện được, nó sẽ cung cấp một thủ thuật để bạn có thể sửa lỗi gặp phải.
•    Nếu quá trình build đã ngừng lại trong bước "Source compilation" , điều này rất có thể liên quan đến một số file java or xsql chứa lỗi. Cố gắng tìm ra file có vấn đề bằng cách nhìn vào các log, sửa nó, và sau đó khởi động lại một quá trình build mới. Nếu như vì vài lí do mà bạn không thể khởi động lại một build thông qua ứng dụng, bạn có thể làm một  build bằng cách thực hiện ant smartbuild.
3.4. Trong trường hợp module download bị treo
 Nếu các module đang được cài đặt /cập nhật trực tuyến, có thể quá trình tải về bị treo trong trường hợp kết nối Internet không hoạt động hoặc trong trường hợp có vấn đề trong các máy chủ.
  Điều này có thể được nhận thấy, nếu sau khi chấp nhận license của module ( hoặc các module) thì cửa sổ theo sau không xuất hiện trong một thời gian dài. Lưu ý rằng quá trình download có thể mất vài phút để hoàn thành tùy thuộc vào số lượng các module tải về và kích thước của chúng. Nếu bạn nhìn vào file log của bạn,bạn sẽ nhìn thấy dòng như INFO org.openbravo.erpCommon.modules.ImportModule - Installing /ws/pi-2/openbravo/modules/org.openbravo.examples.search.bankAccount/src-db/database/sourcedata/AD_REFERENCE.xml đối với mỗi file download và hoàn thành với INFO org.openbravo.erpCommon.modules.ImportModule - Inserting in DB info for module: Bank Account Search, nếu dòng này không xuất hiện thì đó là vì download không hoàn tất..
Các giải pháp cho vấn đề này phụ thuộc vào việc việc download  cho một update hoặc cài đặt module mới.
Update
Trong trường hợp bạn tìm trong thư mục backup_install một file zip với các nguồn cho module (hoặc core). Bạn sẽ phải giải nén nó trong thư mục modules nếu nó là một module hoặc trong thư mục gốc của Openbravo đối với phần nhân của Openbravo.
 Sau quá trình này bạn có thể update lại module bằng cách tương tự hoặc download file .obx và update cục bộ từ hệ thống file.
Cài đặt
Tới thư mục modules và xóa các thư mục cho các module bạn đã cố gắng để cập nhật mà không phải hoàn thành.
Sau này, bạn sẽ có thể thử cài đặt các module một lần nữa trong cùng một cách hay tải về tập tin obx và cài đặt cục bộ nó từ hệ thống file.
3.5. Trong trường hợp build bị treo
3.5.1. Các đối tượng database bị chặn
Nếu quá trình này bị treo trong bước cập nhật cơ sở dữ liệu, có thể có một bảng bị chặn gây ra deadlock. Những sự hạn chế này có thể được tạo ra bởi các quá trình hoặc người sử dụng khác truy cập vào database.
Để giải quyết vấn đề này, bạn có thể làm theo các bước sau,được giải thích thêm chi tiết dưới đây:
•    Check nếu có các đối tượng bị chặn
•    Unlock chúng
•    Chạy lại quá trình cập nhật database và rebuild
a.Check đối tượng bị chặn
Việc kiểm tra này bao gồm trong việc thực hiện một yêu cầu trong cơ sở dữ liệu. Để làm được điều đó bạn cần phải kết nối đến cơ sở dữ liệu trong openbravo bằng cách sử dụng  database client (ví dụ  psql for PostgreSQL hoặc sqlplus for Oracle) với một user với các đặc quyền dbadmin.
•    PostgreSQL:

 SELECT c.relname, a.current_query
   FROM pg_locks l, pg_class c, pg_stat_activity a
  WHERE l.relation = c.oid
    AND c.relname NOT LIKE 'pg%'
    AND a.procpid = l.pid;
•    Oracle:

SELECT S.PROCESS,
S.USERNAME,
O.OBJECT_NAME,
O.OBJECT_TYPE,
s.PROGRAM,
O.OWNER OWNER
FROM v$lock l,dba_objects o,v$session s
WHERE l.ID1 = o.OBJECT_ID
AND s.SID =l.SID
AND l.TYPE IN ('TM','TX');
Các yêu cầu này sẽ trở lại một list của các bảng chặn và quá trình đã gây ra sự hạn chế.
b. Unlock đối tượng bị chặn
Nếu như quá trình trước đó là xác thực (có những đối tượng bị chặn), nó là cần thiết để unlock chúng trước khi tiếp tục.
Các bước để thực hiện là:
•    Ngừng tomcat, điều này có nghĩa là cũng ngừng quá trình cập nhật cơ sở dữ liệu
•    Hãy thử diệt các quá trình gây nên sự hạn chế hoặc restart lại dịch vụ cơ sở dữ liệu-database service (PostgreSQL hoặc Oracle).
c. Chạy lại build
Một khi không có bị chặn đối tượng bạn sẽ có thể chạy quá trình build lại bằng cách thực hiện dòng lệnh:
ant update.database compile.complete -Dforce=yes
IV. Bản sửa lỗi trong Openbravo
Khi update từ 2.50 MP10, một "Error checking access" được nêu ra, nhưng  quá trình build vẫn tiếp tục
Trong một vài trường hợp (hiếm) khi làm một quá trình rebuild của hệ thống thông qua ứng dụng, nó có thể xảy ra một lỗi với thông báo sau:
Error checking access
Và/hoặc trình bày về một đối tượng cơ sở dữ liệu bị mất, với một thông điệp tương tự thế này:
Error: SQL error in query: SELECT ACCESSLEVEL FROM AD_FORM. Exception:org.postgresql.util.PSQLException: ERROR: relation "ad_table" does not exist
Lỗi này được hiển thị như một lỗi trong 2.50MP10. Quá trình build tiếp tục, và thực sự được hoàn thành, thậm chí nếu thông điệp cuối cùng được hiển thị là một phần của lỗi. Nếu không có vấn đề tiếp tục được hiển thị trong build, build thực sự được làm đúng, và bạn phải thực hiện lệnh sau trên máy chủ: ant smartbuild và khởi động lại tomcat để truy cập vào ứng dụng.

Không có nhận xét nào:

Đăng nhận xét

Search 2.0