CacheControl / CacheControl/json-rules-engine

Declarative way for compute facts

Đang mở
#292 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
3.1k
Fork
507
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Hi! I consider this repo as a very helpful design approach! I'm looking forward and have thoughts about admin interface for editing and storing rules. But i think we have a lack of ability for storing complex computed facts. For example, i have a a big legacy system underneath my app, and some facts from there have a big value because they computes from multiple fields of big json document. I need to reuse that facts everywhere in my app. What can i do right now? I can use only functions for this objectives. Like this:

```
engine.addFact('account', (params, almanac) => {
return almanac.bigDoc.path1.value + almanac.bigDoc.path2.value;
})
```

Ok, it's very flex and this approach cover all my needs, except storing.

My suggest:

We can use [jsonLogic library ](https://github.com/jwadhams/json-logic-js/) (or similar operators inside this repo) for declaring facts like this:

```
new Fact('derivedFact', [ 'bigDoc' ], { '+' : [
{ 'var' : 'bigDoc.path1.value' },
{ 'var' : 'bigDoc.path2.value' },
]}
)
```

While i was browsing docs, i saw that you considered this as a design bad smell. Why? Can you explain? Or i can suggest PR? 🙂

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Không có tệp mã nguồn hay test nào được nêu tên. Hãy bắt đầu bằng cách xem lại phần thảo luận trong tài liệu về computed facts và cách tiếp cận addFact/function hiện có, sau đó so sánh khai báo json-logic được đề xuất cho các facts dẫn xuất có thể tái sử dụng. Công việc được xem là hoàn tất khi một maintainer quyết định liệu nội dung này có thuộc engine hay không và, nếu được chấp nhận, có một thiết kế trong phạm vi giới hạn cho việc lưu trữ và đánh giá.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, json
Lĩnh vực
backend
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.