当前位置:网站首页>Rule engine development experience sharing - reddit
Rule engine development experience sharing - reddit
2022-06-28 21:59:00 【Solution jdon】
background . I work in a team , Responsible for managing a bunch of different rule engines . One of them is pure Java noodles , Only the people who developed it understand , The other is in a proprietary BRMS Running on the system , Tens of thousands of rules , Another one is developed by me , Is a decision table system .
When building a rule engine , The most important thing you can do is limit its functionality . In your case , You should have at least three separate rule engines : An account logic , A check on product availability , Another problem with finding customer accounts . This will help limit possible spaghetti .
The second most important thing you can do is make sure that every rule can be tested 、 restructure , And you can guarantee this set of rules . So , I recommend avoiding the use of separate languages that enforce rules . It can be powerful , But they can be test nightmares , And specialized rule languages are usually not as good tools as mainstream languages . If you use something like a decision table , It's much easier to validate the input and convert it correctly into classes in your own code .
Last , I recommend that you prevent any form of status or ordering in your rules . If you need to stay in shape between rounds of execution , You're probably actually talking about different types of rules , for example , Establish different rule sets to determine whether customers can place orders ( Boolean output ), And another rule set to determine the amount of credit they receive ( Decimal output ), Instead of putting them together , use 0 To indicate that the customer cannot place an order .
边栏推荐
- LeetCode:合并两个有序链表_21
- External parameter calibration method for 16 line mechanical radar and monocular camera based on solid state lidar
- Survival of beaver: post-90s female doctors and AI developers
- LeetCode116. Populate the next right node pointer for each node
- Web自动化工具选择
- ROS 2 Humble Hawksbill 之 f1tenth gym
- Lumiprobe lumizol RNA extraction reagent solution
- [webapi] return dynamic list dynamic
- Which software is safer to open an account on and what is the account opening process?
- LeetCode877. 石子游戏
猜你喜欢

Study on luminiprobe non fluorescent azide -- 3-azido propanol

Lumiprobe lumizol RNA extraction reagent solution

QJsonObject的使用示例
![Sword finger offer:[day 1 stack and queue (simple)] --- > use two stacks to realize the queue](/img/e4/60b063a3131d92e40b5fa610bbec17.jpg)
Sword finger offer:[day 1 stack and queue (simple)] --- > use two stacks to realize the queue

【筆記:模擬MOS集成電路】帶隙基准(基本原理+電流模+電壓模電路詳解)

The further application of Li Kou tree

CVPR 2022|极具创意&美感的文字生成方法!支持任意输入

Construction and application of urban brain knowledge map

ROS 2 Humble Hawksbill 之 f1tenth gym

直播预告|SQL也能玩转工业级机器学习?MLOps meetup V3带你一探究竟!
随机推荐
Real time transformer: meituan's research on single image depth estimation
External parameter calibration method for 16 line mechanical radar and monocular camera based on solid state lidar
Which is the most reliable and safe for a securities company to open an account
Progress in visual weakly supervised learning
I almost ran away
LeetCode226. Flip binary tree
开通股票炒股账号安全吗?是靠谱的吗?
Openfire user and group relationship migration
接口用例设计
postman简介与安装步骤
LeetCode56. 合并区间
E-commerce is popular, how to improve the store conversion rate?
AI deep dive of Huawei cloud
LxC shared USB device
接口测试流程
Smarca2 antibody study: abnova smarca2 monoclonal antibody protocol
Ehcache configuration data, convenient for self checking
[width first search note] BFS output shortest path
Lua源码剖析:一. lua变量类型可变特性在C代码中实现。
直播预告|SQL也能玩转工业级机器学习?MLOps meetup V3带你一探究竟!