This invention relates to a system and method for developing business rules for decision engines. More particularly, the invention provides a system and method for allowing a user to define business requirements and their associated business rules by testing and validating the business rules through the use of feedback and statistics, prior to deployment in a decision engine.
Businesses utilize decision engines to make decisions regarding a variety of processes and policies based on attributes and other criteria. Such processes and policies may be related to marketing, fraud, financial management, granting of credit, and other areas. For example, a financial institution may utilize a decision engine to determine whether to grant credit to an individual based on aspects of the individual's credit history. Business rules may define a particular process and the logic of the business rules can be implemented within a decision engine. In some cases, business rules can be precisely and compactly specified and modeled using a decision table or decision matrix, which are generally more easily configurable by and comprehensible to non-technical users.
In a typical business rule development process, a non-technical business person may define business requirements and its associated business rules based on the needs of the business. The business person may interface with a technical developer who can translate the business rules into code for use in a decision engine. The technical developer can test and validate the behavior of the decision engine, based on their understanding of the business rules, but ultimately, the business person generally has the responsibility to ensure the business requirements are met, such as by reviewing the results and output of the decision engine. However, this process may be prone to errors, such as if the translation of the business rules into code for use in the decision engine is not accurate or aspects are omitted or misunderstood. As such, the process may be less than optimal, unnecessarily lengthy, and require multiple iterations between the business person and the technical developer to ensure that the implementation of the business rules into the decision engine is correct.
Therefore, there is a need for an improved system and method that can optimize the management of the business rule development process, in order to, among other things, ease the testing and validation of business rules by non-technical persons and reduce the amount of time needed to develop business rules for decision engines.
The invention is intended to solve the above-noted problems by providing systems and methods for developing business rules for an external decision engine by applying the business rules to a set of data to generate and provide rule feedback, and generating importable business rules adapted to be executed by the external decision engine. The systems and methods are designed to, among other things: (1) provide a user interface for enabling a user to input business rules and one or more sets of data; (2) receive the business rules and the one or more sets of data from the user interface; (3) apply the business rules on the one or more sets of data to generate rule feedback; (4) provide the rule feedback on the user interface; and (5) generate importable business rules based on the received business rules that are adapted to be executed by an external decision engine.
In a particular embodiment, a user interface may be provided for enabling a user to input a plurality of business rules and one or more sets of data. The business rules may be in a format of a decision table and/or a decision matrix. The plurality of business rules and the one or more sets of data may be received from the user interface. The plurality of business rules may be applied on the one or more sets of data to generate rule feedback. The plurality of business rules may be executed on the one or more sets of data with an internal decision engine to generate the rule feedback. The rule feedback may be provided on the user interface, such as with a data coverage indicator that indicates whether one or more of the plurality of business rules always fails, always passes, is not reached, or is fully exercised with respect to the one or more sets of data. The data coverage indicator may include one or more colors to uniquely indicate these states. The rule feedback may also include data coverage statistics. A plurality of importable business rules that are adapted to be executed by an external decision engine may be generated based on the plurality of business rules. Some or all of the plurality of importable business rules may be in a machine-readable format adapted to be executed by the external decision engine. The user interface may be enabled to accept a change to at least one of the plurality of business rules and a change to the one or more sets of data after the plurality of business rules and the one or more sets of data are received. The changed business rule(s) can be applied to the changed one or more sets of data to generate further rule feedback.
These and other embodiments, and various permutations and aspects, will become apparent and be more fully understood from the following detailed description and accompanying drawings, which set forth illustrative embodiments that are indicative of the various ways in which the principles of the invention may be employed.
The description that follows describes, illustrates and exemplifies one or more particular embodiments of the invention in accordance with its principles. This description is not provided to limit the invention to the embodiments described herein, but rather to explain and teach the principles of the invention in such a way to enable one of ordinary skill in the art to understand these principles and, with that understanding, be able to apply them to practice not only the embodiments described herein, but also other embodiments that may come to mind in accordance with these principles. The scope of the invention is intended to cover all such embodiments that may fall within the scope of the appended claims, either literally or under the doctrine of equivalents.
It should be noted that in the description and drawings, like or substantially similar elements may be labeled with the same reference numerals. However, sometimes these elements may be labeled with differing numbers, such as, for example, in cases where such labeling facilitates a more clear description. Additionally, the drawings set forth herein are not necessarily drawn to scale, and in some instances proportions may have been exaggerated to more clearly depict certain features. Such labeling and drawing practices do not necessarily implicate an underlying substantive purpose. As stated above, the specification is intended to be taken as a whole and interpreted in accordance with the principles of the invention as taught herein and understood to one of ordinary skill in the art.
Various components of the system 100 may be implemented using software executable by one or more servers or computers, such as a computing device 200 with a processor 202 and memory 204 as shown in
In an embodiment, a business rule development module 104 in the system 100 may provide a user interface for inputting business rules and one or more sets of data, where the format of the business rules is a decision table or a decision matrix. In other embodiments, the format of the business rules may be in a decision tree or other type of decision structure. The business rule development module 104 may receive the business rules and the set(s) of data from the user interface 102, and utilize an internal decision engine 106 to apply the business rules on the set(s) of data to generate rule feedback. The rule feedback can be provided to the user interface 102 by the business rule development module 104. Importable business rules can be generated by the business rule development module 104 that are adapted to be executed by an external decision engine 108. An external decision engine 108 is a run time execution engine that can understand the importable business rules.
A user interface 102 may be provided by the business rule development module 104. The user interface 102 may be a spreadsheet, such as shown in the exemplary screenshots of
The module 104 may validate the state of the decision table or decision matrix to ensure that it is logically correct. The status of this validation can be shown in the “Table Status” of the user interface 102, for example. Messages may also be provided on the user interface 102 if there are logical errors, verification errors, errors in format, and/or other problems. The user interface 102 may enable the user to manage the data calculation mode, such as by choosing between “Auto”, “Auto Filtered”, “Manual”, or “Filtered”. The “Auto” data calculation mode may cause the module 104 to automatically recalculate against the entire set(s) of data after any changes have been made to the decision table or decision matrix. The “Auto Filtered” data calculation mode may cause the module 104 to automatically recalculate against a specified subset of the set(s) of data after changes have been made to the decision table or decision matrix. The “Manual” data calculation mode may cause the module 104 to recalculate against the entire set(s) of data when the user manually issues a run command. The “Filtered” data calculation mode may cause the module 104 to recalculate against a specified subset of the set(s) of data when the user manually issues a run command.
The mode may be managed so that automatic calculation, e.g., application of the business rules on the set(s) of data, is not necessarily performed on large sets of data that could last for a significant duration. If automatic calculation is not selected, then the user may manually issue a run command to the module 104, such as by pressing a “Run Now” button. A status of the data calculation may be provided on the user interface 102 to report if the application of business rules on the set(s) of data is successful or has errors. A log file and/or console may be provided through the module 104 for diagnostic purposes. Rule feedback, such as data coverage indicators and data coverage statistics, may be provided by the module 104 on the user interface 102 after business rules are applied on the set(s) of data. Data coverage indicators may include, for example, colors to indicate whether a business rule always fails, always passes, is not reached, or is fully exercised with respect to the set(s) of data. Data coverage statistics may also include counts of how much data passes or fails particular rules.
Decision tables are typically arranged in a grid that includes conditions, rules, actions, and action flags. For example, as shown in
Conditions are combinations of attributes, operators, and values that are evaluated against the set(s) of data. Attributes are the information on which a user wishes to base a particular decision, and can be specified as any meaningful name. In some embodiments, the attribute can be a formula including functions and operands, or can be blank to indicate the duplication of the previous attribute. Operators are utilized to compare the data corresponding to the attributes to the values in the conditions. Operators can include, for example, greater than (“>”), greater than or equal to (“>=”), less than (“<”), less than or equal to (“<=”), equal to (“=”), the presence of the value in a list (“in”), a range inclusive of the endpoints (“:”), a range inclusive of the bottom of the range and up to, but not including the top of the range (“:<”), a range not including the bottom of the range but including the top of the range (“<:”), a range exclusive of the top and the bottom of the range (“<:<”), and a negation of any of the operators (“not”). Other operators could also be used. The value may include any alphabetic, numeric, or alphanumeric value. The value may also include a question mark (“?”) that specifies that the value to be compared is taken from the rules of the decision table and substituted into the conditions. A default value may be specified if the attribute in the set of data has a blank value. A reason code may be specified that is generated if the attribute comparison is false or an adverse action has occurred. The reason code may be utilized by an external decision engine to provide additional information to a user.
For example, as shown in
Rules are Boolean constructs that indicate the result required of particular conditions for the rule to match. In particular, each column in the decision table may be a rule that represents a combination of attribute comparisons that cause a set of actions to be taken, if the combination of attribute comparisons is met. Accordingly, within a column, any filled cells can be considered to be ANDed together. Each cell in the rules can include “Y”, “N”, be blank, or be a substitution value if the value in the attributes is a question mark “?”. Each column/rule may be checked in sequence from left to right, and the first column/rule that matches may be utilized. Accordingly, the columns corresponding to each rule may be considered to be ORed. In some embodiments, a default rule that would match if none of the other rules match can be specified in the final (e.g., rightmost) column by using the word “ELSE”.
For example, in the decision table 700 as shown in
Action flags are indicated beneath each column/rule to mark which actions to take if a particular rule is matched. Action flags can be specified with “X” or “x”, for example, to mark which actions should be taken if the there is a rule match. The action flags can also be specified as blank if no action is to be taken, or can be specified with a value that is substituted into an action. The actions that can be taken are specified in the rows corresponding to the action flags. Actions can be in formats such as “Set <attribute>=<value>”, where a named attribute or variable can be set to a particular value or set to a value specified in the action flags, or as “Go <target>”, where a final value is returned for directing a next action of the external decision engine. The “<value>” in the Set action may be a static value, a formula, and/or a function, for example. The final value in the “Go <target>” action format can be specified in the action itself, or be set to a value specified in the action flags. Other actions may also be specified.
Returning to the decision table 700 shown in
The set(s) of data can be input in a spreadsheet format, such as in a datasheet that is a separate worksheet of the user interface 102, exemplified in the screenshot of
A dictionary worksheet (not shown) may also be included in the user interface 102 so that a user can define the name of attributes for use in the decision table, decision matrix, and/or datasheet. The dictionary worksheet can also be automatically created upon the input of a new attribute. The dictionary worksheet may be utilized by an external decision engine during run time execution. In particular, the external decision engine can pass the attributes in the dictionary worksheet to the pertinent decision table or decision matrix that contains a particular set of business rules, during run time execution. Similarly, the decision table or decision matrix may return a set of actions that result from applying data to the decision table or decision matrix so that the external decision engine can use the actions to drive the remainder of a decisioning flow.
Other exemplary decision tables are shown in
In
There are five rules in the rules 606 of the decision table 600. The first rule specifies that if data corresponding to the Milestone2 attribute equals PASS, data corresponding to the VTG2ATOT attribute is greater than or equal to 800, data corresponding to the tb100 attribute is less than 5, data corresponding to the tb002 attribute is greater than or equal to 1, data corresponding to the tb027 attribute is less than or equal to 0, and data corresponding to the tb005 attribute is greater than or equal to 12, then that rule would be matched. The actions taken if this rule is matched would be “set Milestone3=Product_Assignment”, “set RiskTier=A”, “set Product=Signature”, “set Rewards=Y”, and “Go Line_Assignment”. The second rule specifies that if data corresponding to the Milestone2 attribute equals PASS, data corresponding to the VTG2ATOT attribute is greater than or equal to 700, data corresponding to the tb100 attribute is less than 5, data corresponding to the tb002 attribute is greater than or equal to 1, data corresponding to the tb027 attribute is less than or equal to 0, and data corresponding to the tb005 attribute is greater than or equal to 12, then that rule would be matched. The actions taken if this rule is matched would be “set Milestone3=Product_Assignment”, “set RiskTier=B”, “set Product=Platinum”, “set Rewards=Y”, and “Go Line_Assignment”.
The third rule specifies that if data corresponding to the Milestone2 attribute equals PASS, data corresponding to the VTG2ATOT attribute is greater than or equal to 650, data corresponding to the tb100 attribute is less than 9, data corresponding to the tb002 attribute is greater than or equal to 3, data corresponding to the tb027 attribute is less than or equal to 1, and data corresponding to the tb005 attribute is greater than or equal to 12, then that rule would be matched. The actions taken if this rule is matched would be “set Milestone3=Product_Assignment”, “set RiskTier=C”, “set Product=Gold”, “set Rewards=Y”, and “Go Line_Assignment”. The fourth rule specifies that if data corresponding to the Milestone2 attribute equals PASS, data corresponding to the VTG2ATOT attribute is greater than or equal to 600, data corresponding to the tb100 attribute is less than 9, data corresponding to the tb002 attribute is greater than or equal to 3, data corresponding to the tb027 attribute is less than or equal to 2, and data corresponding to the tb005 attribute is greater than or equal to 12, then that rule would be matched. The actions taken if this rule is matched would be “set Milestone3=Product_Assignment”, “set RiskTier=D”, “set Product=Classic”, “set Rewards=N”, and “Go Line_Assignment”. The default rules would take the actions of “set Milestone3=Product_Assignment”, “set RiskTier=X”, “set Product=No_Offer”, “set Rewards=N”, and “Go Set_Decision”.
Decision matrices are similar to decision tables, and may include conditions, rules, actions, and action flags. Decision matrices can contain the same logic as a decision table in a reduced form, such as where the choice of actions is organized two-dimensionally. Using a decision matrix may be helpful in some situations to specify complex rules and actions that include two dimensional conditions with multiple cut-off points. For example, in
Similar to the decision tables described above, the conditions for a decision matrix are a combination of attribute, operator, and value that are evaluated against the set(s) of data. In the case of a decision matrix, the values are specified in the grid, such as the grid 806 in
For example, in
In the decision matrix 800, the actions to be taken are “set limit=?” and “Go next”. The value substituted into the “set limit=?” action is taken from the grid 806, depending on the data corresponding to the attributes. For example, if the data corresponding to the RiskScore attribute is 23 and the data corresponding to the CustCode attribute is B, then the actions taken would be “set limit=300” and “Go next”. As another example, if the data corresponding to the RiskScore attribute is 53 and the data corresponding to the CustCode attribute is D, then the actions taken would be “set limit=3000” and “Go next”. In the example of the decision matrix 800, the “Go next” action is always taken since the default value of that action is set to “X”.
The business rules in a decision table or decision matrix may be applied against one or more sets of data with an internal decision engine 106 in response to the user issuing a run command to the business rule development module 104, such as by pressing the “Run Now” button in the user interface 102, as seen in
Data coverage statistics may include counts of how much data passes or fails a rule.
The business rules implemented in a decision table or decision matrix, and/or the set(s) of data, can be changed by the user in the user interface 102. For example, the user may change the business rules and/or the data if the data coverage was not sufficient or unexpected, or if the user wishes to use a different set of data to test and validate the business rules. Depending on which changes are made, the module 104 can apply the changed business rules (or original business rules) to the set(s) of data (or the changed set(s) of data) by utilizing the internal decision engine 106. New rule feedback will be provided on the user interface 102 by the module 104, based on the new calculations.
A user can also generate importable business rules from the module 104 for use in an external decision engine 108. This may be done, for example, when the user determines that the business rules have been sufficiently tested and validated. The importable business rules may be based on the business rules implemented in the decision table or decision matrix, and may be adapted to be executed by the external decision engine 108. In some embodiments, the module 104 may generate the business rules in a machine-readable format that can be executed by a run time application that understands the format, such as the external decision engine 108. The machine-readable format may be in a text format, XML format, or other suitable format, for example. In other embodiments, the module 104 can directly export the business rules from the module 104 to the external decision engine 108.
In some embodiments, the system 100 is implemented in software, as an executable program, and is executed by one or more special or general purpose digital computer(s), such as a mainframe computer, a personal computer (desktop, laptop or otherwise), personal digital assistant, or other handheld computing device. Therefore, computing device 200 may be representative of any computer in which the system 100 resides or partially resides.
Generally, in terms of hardware architecture as shown in
Processor 202 is a hardware device for executing software, particularly software stored in memory 204. Processor 202 can be any custom made or commercially available processor, such as, for example, a Core series or vPro processor made by Intel Corporation, or a Phenom, Athlon or Sempron processor made by Advanced Micro Devices, Inc. In the case where computing device 200 is a server, the processor may be, for example, a Xeon or Itanium processor from Intel, or an Opteron-series processor from Advanced Micro Devices, Inc. Processor 202 may also represent multiple parallel or distributed processors working in unison.
Memory 204 can include any one or a combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, hard drive, flash drive, CDROM, etc.). It may incorporate electronic, magnetic, optical, and/or other types of storage media. Memory 204 can have a distributed architecture where various components are situated remote from one another, but are still accessed by processor 202. These other components may reside on devices located elsewhere on a network or in a cloud arrangement.
The software in memory 204 may include one or more separate programs. The separate programs comprise ordered listings of executable instructions for implementing logical functions. In the example of
If computing device 200 is an IBM PC compatible computer or the like, the software in memory 204 may further include a basic input output system (BIOS). The BIOS is a set of essential software routines that initialize and test hardware at startup, start operating system 212, and support the transfer of data among the hardware devices. The BIOS is stored in ROM so that the BIOS can be executed when computing device 200 is activated.
Steps and/or elements, and/or portions thereof of the invention may be implemented using a source program, executable program (object code), script, or any other entity comprising a set of instructions to be performed. Furthermore, the software embodying the invention can be written as (a) an object oriented programming language, which has classes of data and methods, or (b) a procedural programming language, which has routines, subroutines, and/or functions, for example but not limited to, C, C++, C#, Pascal, Basic, Fortran, Cobol, Perl, Java, Ada, Python, Lua, Visual Basic, and Visual Basic For Applications. Components of the system 100 may also be written in a proprietary language developed to interact with these known languages.
I/O device 206 may include input devices such as a keyboard, a mouse, a scanner, a microphone, a touch screen, a bar code reader, or an infra-red reader. It may also include output devices such as a printer, a video display, an audio speaker or headphone port or a projector. I/O device 206 may also comprise devices that communicate with inputs or outputs, such as a short-range transceiver (RFID, Bluetooth, etc.), a telephonic interface, a cellular communication port, a router, or other types of network communication equipment. I/O device 206 may be internal to computing device 200, or may be external and connected wirelessly or via connection cable, such as through a universal serial bus port.
When computing device 200 is in operation, processor 202 is configured to execute software stored within memory 204, to communicate data to and from memory 204, and to generally control operations of computing device 200 pursuant to the software. The system 100 and operating system 212, in whole or in part, may be read by processor 202, buffered within processor 202, and then executed.
In the context of this document, a “computer-readable medium” may be any means that can store, communicate, propagate, or transport data objects for use by or in connection with the system 100. The computer readable medium may be for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, propagation medium, or any other device with similar functionality. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and stored in a computer memory. The system 100 can be embodied in any type of computer-readable medium for use by or in connection with an instruction execution system or apparatus, such as a computer.
For purposes of connecting to other computing devices, computing device 200 is equipped with network communication equipment and circuitry. In a preferred embodiment, the network communication equipment includes a network card such as an Ethernet card, or a wireless connection card. In a preferred network environment, each of the plurality of computing devices 200 on the network is configured to use the Internet protocol suite (TCP/IP) to communicate with one another. It will be understood, however, that a variety of network protocols could also be employed, such as IEEE 802.11 Wi-Fi, address resolution protocol ARP, spanning-tree protocol STP, or fiber-distributed data interface FDDI. It will also be understood that while a preferred embodiment of the invention is for each computing device 200 to have a broadband or wireless connection to the Internet (such as DSL, Cable, Wireless, T-1, T-3, OC3 or satellite, etc.), the principles of the invention are also practicable with a dialup connection through a standard modem or other connection means. Wireless network connections are also contemplated, such as wireless Ethernet, satellite, infrared, radio frequency, Bluetooth, near field communication, and cellular networks.
An embodiment of a process 300 for developing business rules for an external decision engine is shown in
At step 302, a user interface for inputting business rules and one or more set(s) of data may be provided, where the format of the business rules is a decision table or a decision matrix. In some embodiments, the format of the business rules may be in a decision tree or other type of decision structure. The user interface may be a spreadsheet or worksheet, and may be included as an add-in to spreadsheet software, such as Microsoft Excel, for example. The business rules and the set(s) of data may be received at step 304 from the user interface. A user may input the business rules in formats such as a decision table and/or a decision matrix. Decision tables and decision matrices may include elements such as conditions, rules, actions, action flags, and/or grids that correspond to the logic of business rules composed by the user. Further details of decision tables and decision matrices are described above. The set(s) of data may also be input in a datasheet, such as a separate worksheet of the user interface. The attributes in the set(s) of data may correspond to the attributes of the conditions in a decision table and/or decision matrix.
At step 306, the business rules, as implemented in a decision table or decision matrix, may be applied on the set(s) of data and rule feedback may be generated.
Returning to the process 300 shown in
Any process descriptions or blocks in figures should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the embodiments of the invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those having ordinary skill in the art.
It should be emphasized that the above-described embodiments of the invention, particularly, any “preferred” embodiments, are possible examples of implementations, merely set forth for a clear understanding of the principles of the invention. Many variations and modifications may be made to the above-described embodiment(s) of the invention without substantially departing from the spirit and principles of the invention. All such modifications are intended to be included herein within the scope of this disclosure and the invention and protected by the following claims.
This application claims the benefit of U.S. Provisional Patent Application No. 61/799,064 filed on Mar. 15, 2013, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61799064 | Mar 2013 | US |