Actualmente, construí un modelo y escribí las reglas de Drools en el archivo de configuración. Sin embargo, debido a las características del negocio, necesito cambiar constantemente los valores involucrados en las reglas de Drools en el proceso de uso futuro. Si solo puede cambiarlo en el archivo de back-end Conveniente, me gustaría preguntar si es posible configurar las reglas de Drools en la página de inicio y cambiar los valores en las reglas de manera flexible.
Respuesta corta: no, no en la práctica
Porque escribir restricciones es codificar (requiere pruebas unitarias, etc.). En la práctica, es mejor construir un arsenal de restricciones y dejar que los usuarios elijan las que quieren usar.
Respuesta larga: tal vez
Hay varios niveles de adaptabilidad:
Activar/desactivar restricciones. Eche un vistazo a @ConstraintConfiguration etc. en los documentos. Esto también funciona para ConstraintStreams y scoreDRL. Las restricciones con peso CERO tienen un impacto de rendimiento cero (al menos para ConstraintStreams; ya no estoy seguro de la puntuación DRL).
Utilice registros de configuración, como una clase EmployeeAvailability , que establece la indisponibilidad entre una fecha y hora de inicio y finalización para un empleado. Esto brinda a los usuarios la posibilidad de bloquear los miércoles por la tarde para Ann, los sábados por la mañana para Beth y la noche de Halloween para Carl.
Cree una interfaz de usuario en torno a ConstraintStreams y haga que los usuarios finales escriban sus propias restricciones, como en Excel. El único problema es que escribir restricciones es un proceso muy formal que requiere que las pruebas unitarias se realicen correctamente. El equipo de OptaPlanner ha estado investigando al respecto, pero está lejos de ser trivial.
Business Central KIE Workbench tiene un editor de reglas guiadas para componer scoreDRL por parte de los usuarios finales. Entonces, en teoría, lo hace 3). En la práctica, ningún usuario puede utilizarlo.
Para 3), necesitará muchos fondos. En la práctica, la combinación de 1) y 2) hace maravillas para crear un arsenal de restricciones flexibles, de modo que los usuarios elijan las que necesitan/quieren.