Pregunta

Necesito construir una "regla" basada en el sistema que se puede ejecutar y desarrollado en C# y Java (para una aplicación de la química).El sistema debe ser capaz de obtener calcula las propiedades de los objetos (a través de las bibliotecas) y tomar decisiones sobre los valores.No estoy seguro de lo que el sistema se parecen, pero las reglas no necesita ser formalmente coherente (se usa una gran cantidad de heurísticas).La medida de lo posible, las normas deben ser exteriorizadas por lo que los usuarios y los desarrolladores pueden modificar sin necesidad de saber sobre el motor (que debe ser de código Abierto y ejecutar en ambas plataformas).Es posible que el sistema se llevará a cabo a través de un conjunto restringido de lenguaje natural como comandos.Habrá un elemento de adaptación - nuevos objetos (o, al menos, vocabulario) puede ser añadido.

Esto no es tan peludo como suena - una gran parte del progreso se hizo hace más de 30 años usando FORTRAN pero el campo ha permanecido en barbecho.Yo estaría muy agradecido por los punteros a los enfoques que se pueden experimentar con donde la sobrecarga de la entrada fue modesto.Entre los enfoques que se pueden trabajar son:

  1. Prólogo
  2. Ontologías OWL
  3. Árboles de decisión
  4. RULEML
  5. Texto basado en juegos

EDITAR El principal aspecto de la cuestión es encontrar un sistema basado en reglas (el Java C# mencionar es secundaria y era simplemente para evitar que las respuestas que se puede decir "Windows ha incorporado un sistema de".) Por favor, no responda con enfoques para la conversión de Java a C#;Quiero una regla basada en el enfoque que - en principio - podría ser aplicado en cualquiera de los dos.Hasta ahora, sólo en uno (o dos) de las respuestas realmente direcciones de las reglas de aspecto.

¿Fue útil?

Solución

Se puede echar un vistazo a Drools (ahora también conocido como JBoss Rules). Esta es una implementación del motor Rete que ha existido desde hace mucho tiempo y ahora también se ha portado a .NET por lo que debe llenar sus requisitos para poder ser utilizado en Java y en C #. No sé qué tan cerca están las implementaciones -. Podría encontrarse limitada a un subconjunto de la capacidad

JBoss Rules: http://jboss.org/drools/

Drools.NET: http://droolsdotnet.codehaus.org/

No se preocupe por el enfoque de negocio en el sitio de JBoss, Drools es una implementación general motor de reglas de uso.

Otros consejos

Si desarrolla en Java puede utilizar las clases resultantes en .Net / C # utilizando IKVM . IKVM convierte el código de bytes de Java para el MSIL equivalente y también proporciona un marco de clases de Java VM y todos corriendo dentro de .Net. Funciona excepcionalmente bien, es gratis, se utiliza en el comercio (por ejemplo, mediante el producto Saxon XSLT / XQuery / XPath) y es muy fácil de convertir un archivo de clase Java en un archivo DLL .Net.

A menudo uso en proyectos de Java .Net para hacer operaciones con base científica y las matemáticas, porque el trabajo en estos campos a menudo tiende a ser en Java -. Ciertamente mucho más a menudo de lo que es en C #

Si desea implementar su propio dominio específico del lenguaje, buenas opciones sería IronPython (Microsoft Dynamics utiliza para el mismo propósito), o, por ejemplo, el lenguaje Boo.

Se puede construir un motor de reglas como un servicio web, a continuación, se puede llamar al servicio de C # o Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top