這是我今天進行頭腦風暴的一個有趣問題。鑑於鍵/值對,找到所有滿足並返回true的規則
給定一個具有鍵/值對的對象和一個定義了規則/查詢的系統/工具,找到所有返回true的規則。
例如,給定一個人:
{
"FirstName": "John",
"LastName": "Smith",
"Age": 28,
"Gender": "Male",
"Location": "USA"
}
並提出一些規則:
Rule 1: Location = USA AND (Gender = Male OR Age < 20)
Rule 2: Location != USA AND (Gender = Female OR Age > 25)
我期望的系統恢復,將給出的對象是真實的所有規則。然後基於真實的規則,執行特定的操作。
這是一個簡單的例子。有趣的位:
- 傳遞的對象可以有許多不同的鍵\值對
- 有可能是數百或數千需要執行
- 規則可以包含的任意組合不同的規則鍵值對
- 性能和可用性是關鍵
- 可用在.NET應用程序
CU的想法stom執行是:
做map reduce並只返回包含對象中的鍵的規則。這將減少需要執行的規則的數量,但仍可能是幾百條規則。
取出每個規則並用給定的值執行它,看它是否返回true。
有沒有更好的方法來做到這一點? 是否有任何工具(希望開源)已經完成了?
搜索沒有多少回報,我什至不能想到一個適當的搜索。
編輯
一些網上搜索更多的,原來在這之後是可以解決的使用Rete Algorithm並在.NET和Java世界衆多的實現。
這是我目前朝下的路徑。如果有人有更好的建議,請提供。
一個HaskSet給定一個對象做你想要的清單那個對象的規則是真的嗎?或者給定一些規則來獲得滿足這些規則的所有對象? –
存在問題 - Windows Workflow Foundation包含推理規則引擎(System.Workflow.Activities.Rules) - 但它沒有智能來映射減少規則。祝你好運。 –
給定該對象,返回該對象的所有規則。 – Zadam