Hay motores de cálculo para los parámetros escalares, y hay motores de cálculo de nivel superior para las tablas, normalmente se usa para aplicaciones como planificación financiera, cálculos de honorarios y comisiones, cálculos de redes y contratos ...
Déjenme explicar esto en breve. Considere seguir fórmulas para escalares:
1) z = f1(x,y)
2) p = f2(z,n)
3) q = f3(x,p)
...
y así sucesivamente. La configuración de tales funciones y árboles de dependencias requiere un motor de cálculo con parámetros escalares. Yo (también) recomendaría el siguiente enlace para dicho motor de cálculo escrito en C# como un buen punto de partida: http://www.codeproject.com/Articles/246374/A-Calculation-Engine-for-NET
Como se mencionó, también hay motores de cálculo con funciones de tabla que toman tablas como parámetros. El principio principal es el mismo:
1) (T4, T5) = TableFunction1(T1, T2, T3)
2) (T7, T8) = TableFunction2(T2, T4)
...
y así sucesivamente. Tenga en cuenta que una función de tabla puede devolver varias tablas como salidas, como se muestra arriba.
allí dos cuestiones clave que deben observarse aquí:
a) Los valores de las tablas T7 y T8 dependen de las tablas T2 y T4. Por lo tanto, las tablas T7 y T8 deben actualizarse ejecutando la función "TableFunction2" solo si hay un cambio en uno de los parámetros de entrada T2 o T4.
Del mismo modo, T4 necesita actualizarse solo si se actualiza T1, T2 o T3; árbol de dependencia!
b) Separación de la base de datos del proceso de cálculo: el motor de cálculo debe trabajar independientemente de cualquier estructura de datos fija o esquema de base de datos para que pueda integrarse con cualquier base de datos y estructura de datos.
Puede encontrar mi artículo relacionado que estos principios se explican en:
Arquitectura lógica de un marco de cálculo basada en reglas http://finaquant.com/logical-architecture-of-a-rule-based-calculation-framework/1053
Ahora, un C#/biblioteca de red para un motor de cálculo con tablas. ya que los parámetros de entrada y salida se están desarrollando en base a estos principios.
Nota para los moderadores: elimine el enlace de arriba si se cuenta como autopromoción.
Busque el "motor de reglas" en Windows Workflow Foundation. –
No sé si ya existe, pero parece que es bueno implementarlo de todos modos, 'solo' necesita INotifyPropertyChanging y descomponer el Árbol de Expresión para vincular las distintas dependencias. – Guillaume86