Skip to content

Declarative way for compute facts #292

Open
@madbonez

Description

@madbonez

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 (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? 🙂

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions