CacheControl / json-rules-engine

A rules engine expressed in JSON
ISC License
2.6k stars 461 forks source link

Use fact as params input to another fact? #308

Open robross0606 opened 2 years ago

robross0606 commented 2 years ago

I've looked across the documentation, examples and existing issues and, if this has been previously discussed, I'm missing it. Is it possible to use one or more Fact as params input to another fact?

This is a little domain specific but, for example, if I have a fact that gets a "section" related to another object (via params) and then another fact that verifies "section" access control, can I do something like this as a fact?

        {
          // Has permission to section?
          fact: 'has-permission',
          params: {
            fact: 'related-section',
            params: {
              id: 'xyz123'
            }
          },
          operator: 'equal',
          value: true
        }
robross0606 commented 2 years ago

I could do this right now by creating another new bespoke 'has-related-section-permission` fact which depends on 'related-section' from the almanac and then checks permissions. But this is is not ideal because it doesn't promote fully decomposing and reusing Facts on Rules.

chris-pardy commented 11 months ago

@robross0606 one of the soon things on my wishlist is the ability to add a custom alamanc that would let you add functionality to as deeply as you would like do this.

robross0606 commented 6 months ago

I see that you have this flagged for version 7, but I also see that 6.5.0 introduced the "custom almanac".