La decisión de exponer una interfaz para que el personal no técnico modifique las reglas comerciales depende en gran medida de varios factores, incluidos los objetivos del proyecto, el costo del proyecto, la vida útil del proyecto y la proporción de conocimientos a incógnitas en el proyecto.
Por ejemplo, si creyera que nadie usaría la interfaz de reglas, entonces probablemente optaría por no implementarla. Sin embargo, si tuviera razones para creer que los cambios serían frecuentes y que diferentes usuarios finales esperarían que se establecieran diferentes reglas, entonces consideraría trabajar en la creación de dicha funcionalidad.
Elegí hacer esto en un proyecto, y pasaron años antes de que la función fuera ampliamente utilizada. Sospeché que eventualmente tendríamos usuarios finales que querrían personalizar las cosas ellos mismos, por lo que implementamos esta funcionalidad en partes.
Comenzó como algo que solo ciertas personas, como los desarrolladores o administradores, podrían usar. La interfaz era torpe, pero utilizable si sabía lo que estaba haciendo. Pero cuando el producto estaba a punto de completarse, la lógica del motor de reglas era útil y nuestro equipo de diseño le brindó una hermosa interfaz de usuario orientada al cliente.
Si tuviera que hacerlo diferente, podría elegir una arquitectura de base de datos diferente solo porque la curva de aprendizaje es alta. Pero en resumen, construirlo desde el principio llevó a muchas características de cara al cliente más adelante sin los dolores de cabeza de tener que volver al código y refactorizarlo para incluir todas las reglas dinámicas.