- vừa được xem lúc

Kỹ thuật giải quyết bài toàn về policy và công thức tính toán động cho sản phẩm phần mềm

0 0 21

Người đăng: Hiep Bui

Theo Viblo Asia

Dạo này tôi có một mối duyên rất tình cờ với việc làm các phần mềm thuộc lĩnh vực tài chính và ngân hàng. Một số bài toán trong lĩnh vực này làm tôi nhớ đến những ngày đầu làm việc với phần mềm Trinet Expense tôi đã phát triển 1 kỹ thuật để tạo ra việc cấu hình các policy kiểm tra các báo cáo về chi phí.

Trong phạm vi ngày hôm nay tôi sẽ giới thiệu 1 bài toán tương tự tôi gặp phải khi làm việc với một sản phẩm phần mềm tài chính mới của tôi

Bài toán:

Bạn xây dựng một module survey và affiliate cho công ty tài chính thu thập thông tin người dùng. Các trường trong survey sẽ được thiết kế động sử dụng các thư viện survey ví dụ như dưới đây: Với từng survey chúng tôi sẽ có những công thức tính hoa hồng (bonus) khác nhau được cấu hình động trong cơ sở dữ liệu để khi cộng tác viên giới thiệu khách hàng họ được tính toán tiền hoa hồng theo quy tắc của công ty. Dưới đây là 2 công thức được áp dụng với survey "Đăng ký làm thẻ tín dụng":

  • Nếu số hồ sơ mà cộng tác viên giới thiệu làm thẻ tín dụng trong tháng > 5 thì hoa hồng cho cộng tác viên: 300k, F2(Cấp cha) = 50k, F1(Cấp ông bà) = 50k
  • Nếu số hồ sơ mà cộng tác viên giới thiệu làm thẻ tín dụng trong tháng < 5 thì hoa hồng cho cộng tác viên: 200k, F2(Cấp cha) = 30k, F1(Cấp ông bà) = 20k Việc này dẫn đến chúng tôi phải cấu hình 1 vài công thức tính bonus kiểu như sau:

Bài toán này giống hệt những thứ tôi đã làm với Trinet Expense khi cần cấu hình động các policy cho các report chi phí.

Phân tích một xúi. có vẻ như chúng ta sẽ có vài Rule như dưới đây

  • Rule Trạng thái hồ sơ
  • Rule Số hồ sơ trong tháng hoàn thành
  • Rule nâng cao nếu họ muốn kiểm tra 1 field nào đó trong kết quả thu thập

Tưởng tượng ta sẽ cần làm ra 1 thứ có thể biểu diễn công thức kiểu thề này

if (ruleA->and(ruleB)->or(ruleC)) then

  • Tính tiền cho cộng tác viên
  • Tính tiền cho cấp cha và ông của cộng tác viên

Lưu mớ này vào DB thế nào, đơn giản ta xài 1 bảng với schema như sau:

  • Field if_clause

  • Field formula

Okay, Xong cái schemla và cách lưu vào DB

Giờ đến phần học thuật khó vãi liên quan đến làm thế nào để xài mấy thứ cao siêu như Design Pattern và OOP để biểu diễn mớ công thức này trong ngôn ngữ lập trình. Xem class Diagram sau, cái được gọi là Hiệp đẹp zai Pattern:

Source code github: https://github.com/ericbui148/hieppattern

Bình luận

Bài viết tương tự

- vừa được xem lúc

4 đặc tính của lập trình hướng đối tượng (Object oriented program)

Lập trình hướng đối tượng quá quen thuộc rồi bạn nào học lập trình đều phải học, đi phỏng vấn cũng vậy hỏi suốt(chắc cái này tùy vào vị trí tuyển dụng chủ yếu junior chắc chắn sẽ hỏi).nó là nền tảng cho hầu hết các design pattern hiện nay.

0 0 34

- vừa được xem lúc

Khác nhau giữa abstract class và interface khi nào dùng chúng

Nhắc đến Interface và abstract class hãy nhớ 2 từ này khá clear rồi, Khi sử dụng Interface là bạn Implement còn sử dụng abstract class là bạn extend. . Interface:. .

0 0 29

- vừa được xem lúc

So sánh Interface và Abstract trong lập trình hướng đối tượng.

Tổng quan. Interface và Abstract class là 2 khái niệm cơ bản trong lập trình OOP.

0 0 48

- vừa được xem lúc

Áp Dụng Nguyên Tắc SOLID Trong Lập Trình

Giới Thiệu. 1. SOLID là gì. SOLID là viết tắt của 5 chữ cái đầu trong 5 nguyên tắc:.

0 0 21

- vừa được xem lúc

Object Relational Mapping

Trong cách phát triển ứng dụng web hiện nay chắc hẳn các bạn đã quen với với từ khóa ORM(Object Relational Mapping). Khi mà thời đại của các framework ứng với các ngôn ngữ đang lên ngôi một cách mạnh

0 0 28

- vừa được xem lúc

Abstract Class và Interface, bạn có thực sự hiểu chúng ?

Chắc hẳn mọi lập trình viên đều đã quá quen với lập trình hướng đối tượng, nhưng với Abstract Class và Interface bạn có thực sự hiểu chúng. Abstract Class là gì .

0 0 32