Challenge Overview
1. Contest Overview
Welcome to the OPM - Rules Engine Module Architecture contest! In this contest, you will need to design the module architecture for the Business Rules module of the new SCRD web application.
2. Project Background
The Office of Personnel Management (OPM) has an existing legacy application called the Service Credit Redeposit/Deposit System (SCRD). The mission of the Service Credit Redeposit/Deposit System (SCRD) is to compute deposits and redeposits, create an initial bill, post payments, and send out receipts to federal employees for periods of federal employment service that were either not covered by retirement deductions (deposits), or were covered and later refunded by the federal government (redeposits).
With this contest, we're looking for you to design the module architecture for the Business Rules module of the new SCRD web application.
3. Competition Task Overview
This module will provide the RuleService interface and implementation that obtains applicable rules from the BRMS and applies them to the passed calculations.
3.1. Core functionality
This module will provide the above service, and will also provide documentation showing how the configured the required rules in the BRMS. The assembly competition would provide the actual configuration in the BRMS for the rules required by the Rules Engine ARS.
3.2 Scenarios
We need you to cover 3 attached scenarios into rules that can be used in a Business Rules Engine (Drools). Below are the details of what is required:
1. The rules need to be implemented in Drools (open source)
2. For each rule, we need it to be implemented in DSL format and DSLR format along with a decision table for all interest rates. The number of DSL/DSLR files to be used is up to the module architect's decision.
A Good Inroduction to Business Rules / Drools: http://www.packtpub.com/article/human-readable-rules-with-drools-jboss-rules-part1
a. DSL = instructions to the computer, in code, that tells it how to parse the “human readable rules.”
b. DSLR = the human readable rules. It “expands” on a corresponding DSL.
For these business rules, you can’t simply type "when this do that" into Drools. You have to program the DSL file first, though indeed the two go hand-in-hand. DSL + DSLR is appropriate for data validation, and difficult exceptions (Connor Cases). You also have decision tables. Decision tables can replace DSLR, or be used in addition to them. With decision tables (which can be an Excel spreadsheet), every row is a rule. This is appropriate for interest rates for a given period of service and category of service. The tables use DSLs you have already created.
The following 3 scenarios need to be converted for this contest:
1) Ret Scenario - CSRS Firefighter Deposit.pdf
2) Ret Scenario-Mixed DC Gov and GS Agency Hourly Rates after 3-1-86.pdf
3) Ret Scenario - Conner Case FERS component.pdf
These files are attached to the contest spec.
Important Note: Please ask questions on the forum if anything is unclear.
3.3. API expansion
The module architect is allowed and encouraged to expand the API to accommodate any requirements that have been clarified during the wireframe and specification contests. Modifications to existing API are also allowed as long as they maintain the purpose intact. More major modifications will need to be discussed with the system architect.
4. Technology Overview
Drools - http://www.jboss.org/drools/
5. Additional Resources
Some of the additional resources helpful for the project are:
1) Good Introduction to Business Rules / Drools: http://www.packtpub.com/article/human-readable-rules-with-drools-jboss-rules-part1
a. DSL = instructions to the computer, in code, that tells it how to parse the “human readable rules.”
b. DSLR = the human readable rules. It “expands” on a corresponding DSL
2) OPM Project Wiki - http://apps.topcoder.com/wiki/display/projects/OPM
Final Submission Guidelines
Submission Deliverables
Your deliverable will consist of a single zip containing:
- Application Design Specification
- Sequence Diagrams
- Interface Diagrams
- Assembly Specifications