2008-09-29 26 views
9

tôi cần phải thực hiện một đường mòn kiểm toán cho Add/Edit/Delete trên đối tượng của tôi, tôi đang sử dụng một ORM (XPO) để xác định đối tượng của tôi vv Tôi thực hiện một đối tượng đường mòn kiểm toán được kích hoạt trênLàm thế nào để bạn thực hiện đường mòn kiểm toán cho các đối tượng của bạn (Lập trình)?

  1. OnSaving
  2. OnDeleting

trong số đối tượng cơ sở, và tôi lưu trữ những thay đổi trong Audit-AuditTrail (Mast-Det) bảng, thay đổi lĩnh vực. vv bằng cách sử dụng một số dịch vụ phương pháp được gọi.

Làm cách nào để bạn triển khai đường mòn kiểm tra trong mã OOP? Vui lòng chia sẻ thông tin chi tiết của bạn? Bất kỳ mẫu nào vv? Các phương pháp hay nhất v.v. Một điều nữa là làm thế nào để vô hiệu hóa kiểm toán khi chạy thử nghiệm đơn vị, vì tôi không cần phải kiểm toán chúng, nhưng vì đối tượng cơ sở có mã.

thay đổi để phản đối (chỉnh sửa/thêm/del) lĩnh vực và những thay đổi cần phải được kiểm toán

Trả lời

0

Tôi biết điều này không trả lời câu hỏi của bạn, nhưng đối với các hồ sơ, tôi thích để xử lý kiểu này của logic kiểm toán trong cơ sở dữ liệu.

7

Trình kích hoạt cơ sở dữ liệu là cách ưu tiên để truy cập tại đây, nếu có thể. Tuy nhiên, gần đây tôi phải làm điều này trong mã phía máy khách và tôi đã viết một lớp tạo ra bản sao sâu (giá trị) của đối tượng khi nó được mở để chỉnh sửa, so sánh hai đối tượng lúc tiết kiệm thời gian (chỉ sử dụng ToString()) và đã viết bất kỳ thay đổi nào đối với bảng kiểm tra.

Chỉnh sửa: Tôi có thuộc tính [Kiểm tra] trên mỗi thuộc tính mà tôi muốn xem xét phản ánh có thể kiểm tra và được sử dụng để tìm chúng, làm cho phương pháp không cụ thể đối với các đối tượng đang được kiểm tra.

+2

Tôi đã bỏ phiếu cho câu trả lời này, nhưng một điều cần lưu ý khi sử dụng trình kích hoạt cơ sở dữ liệu là các dấu ngoặc đơn giao dịch. Đôi khi bạn muốn kiểm tra sự kiện ngay cả khi xảy ra lỗi và giao dịch được khôi phục. – Andrew

1

Tôi đến nhiều hơn từ phía bên SW mà phía DB, nếu bạn tạo một bộ DAO (đối tượng truy cập dữ liệu) mà bạn sử dụng để tương tác với cơ sở dữ liệu. Sau đó tôi sẽ chèn chức năng kiểm toán vào các chức năng tương ứng trong các DAO cần được theo dõi.

Các giải pháp cơ sở dữ liệu kích hoạt được cũng khả thi, nó phụ thuộc vào nơi bạn muốn đặt chức năng của mình, trong DB hoặc trong mã

Có rất nhiều ORM (Object Mapping quan hệ) công cụ hiện có mà tạo DAO lớp cho bạn.

3

Tôi không biết liệu nó có phù hợp với ORM của bạn hay không, nhưng tôi đã sử dụng thiết kế cơ sở dữ liệu Point-in-Time cho ứng dụng ERP và thực sự khuyên bạn nên sử dụng nó. Bạn tự động nhận được Lịch sử và Kiểm toán từ kiến ​​trúc này, cũng như các lợi ích khác.

+0

Tôi đang làm việc với ứng dụng Multitenant, nơi chúng tôi tất cả các hồ sơ người thuê nhà sẽ được lưu trữ trong một cơ sở dữ liệu duy nhất với TenantId. Nếu tôi sử dụng PTA, tôi sẽ kết thúc với rất nhiều hàng trong cơ sở dữ liệu, đặc biệt là để cập nhật: ( –

1

Chúng tôi đã triển khai giải pháp tương tự, sử dụng AOP (triển khai thực hiện aspectJ). Sử dụng các điểm cụ thể này có thể được chụp và các hoạt động cụ thể có thể được thực hiện.

Điều này có thể được cắm vào và cắm khi chúng tôi muốn.

Nếu bạn thực sự muốn làm điều đó trong lớp ứng dụng, tôi sẽ đề xuất điều này.

Hy vọng điều này sẽ giúp ..

+0

Bạn có bất kỳ mẫu hoặc liên kết nào không? – DanielV

0

Tôi đã thực hiện việc này trong Hibernate (một ORM khác) bằng Trình chặn cho phiên. Bằng cách đó mã kiểm toán tách biệt với mã của bạn.

Các vấn đề liên quan