version 7 - Design
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- backend
Línea de trabajo
Este es un hilo de diseño de la versión 7, no una tarea de implementación, y no menciona archivos, pruebas ni puntos de entrada. Empieza revisando el motor de reglas actual de 6.x y los Issues relacionados a los que se hace referencia en la discusión; para darlo por terminado se necesitaría un diseño acordado para la extensibilidad, la estructura, Facts, Almanac, Conditions, Rules y Engine.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Starting a thread here to put notes on a version 7 design.
Version 7 is an opportunity to make a number of changes that have been suggested in issues filed here that would make the JSON rules engine more extensible at the cost of breaking backwards compatibility with the current 6.x versions.
Extensibility vs. Structure
With version 7 we want to consider the tradeoff between extensibility and having a known structure. For instance introducing the ability to add custom Condition classes or custom Rule subclasses allows for the system to be highly extensible but makes it much harder to reason about the input and output of the rules engine without knowing about all these extensions.
Ultimately we need to draw this line somewhere and my initial inclination is to draw it in favor of more extensibility in order to allow the broadest possible use of the rules engine.
Concepts
Starting from a clean stale the following basic concepts will be part of the rules engine
Facts
Facts are things that are known by the rules engine during execution.
Almanac
The Almanac is the system for storing and looking up Facts.
Conditions
Conditions are executable, contain a priority, and return a result containing a boolean value. Generally there are 2 types of conditions, comparison conditions which check the value of a fact against another value, and composite conditions like all, any, and not which use 1 or more nested conditions to produce a result. By being fully extensible it's possible to introduce other types of conditions.
Rules
Rules are also executable and contain a priority. They generally are comprised of a set of conditions which are executed. Rules produce events as a result of execution.
Engine
The engine provides the mechanism to evaluate rules, and conditions. It includes mechanisms to resolve the values of facts or other special objects. Changing the engine can significantly change the behavior of the system.
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.1k
- Forks
- 507
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CacheControl/json-rules-engine
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
CacheControl/json-rules-engine#427 · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
CacheControl/json-rules-engine#424 · 1 comentario ·
-
How to handle array of objects? Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
CacheControl/json-rules-engine#421 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
CacheControl/json-rules-engine#417 · 1 reacción ·
Todos los issues de CacheControl/json-rules-engine
Issues similares
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
githubnext/gh-aw-workshop#3692 ·
-
agent/guide documentation hive/hosted-available-lke648397-260827-5n31
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Add: BuyPass TV Abiertochannels:add check:passed
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
S: triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
apache/cloudstack#14222 ·