<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2263519634282412925</id><updated>2024-09-01T01:51:38.883-03:00</updated><category term="Drools Expert"/><category term="Inteligencia Artificial"/><category term="Sistemas Expertos"/><category term="Base de Conocimiento"/><category term="Java"/><category term="Sistemas de Produccion"/><category term="Teoria Inteligencia Artificial"/><title type='text'>Sistemas Expertos Drools Inteligencia Artificial J2EE Mariano Salvetti</title><subtitle type='html'>Blog dedicado a la investigacion sobre Software realizado en plataforma J2EE, en especial con Aplicaciones que utilizan la Inteligencia Artificial de Plataforma Drools .</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-1742034356499585531</id><published>2011-03-16T21:40:00.001-03:00</published><updated>2011-03-16T21:40:59.815-03:00</updated><title type='text'>JBoss Drools EXPRESS</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 12px; line-height: 16px; &quot;&gt;&lt;h3 class=&quot;post-title entry-title&quot; style=&quot;margin-top: 0.75em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; font: normal normal normal 22px/normal Arial, Tahoma, Helvetica, FreeSans, sans-serif; &quot;&gt;&lt;a href=&quot;http://tratandodeentenderlo.blogspot.com/2010/04/jboss-drools.html&quot; style=&quot;text-decoration: none; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt;JBoss Drools&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;b&gt; EXPRESS!&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;post-header&quot; style=&quot;line-height: 1.6; margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; font-size: 11px; color: rgb(34, 34, 34); &quot;&gt;&lt;div class=&quot;post-header-line-1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot; style=&quot;width: 490px; font-size: 13px; line-height: 1.4; position: relative; color: rgb(34, 34, 34); &quot;&gt;Según la Wikipedia: &quot;&lt;span style=&quot;font-style: italic; &quot;&gt;Las reglas de negocio describen las políticas, normas, operaciones, definiciones y restricciones presentes en una organización y que son de vital importancia para alcanzar sus objetivos. Las reglas de negocio especifican en detalle lo que una organización puede hacer.&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;Ejemplos de reglas de negocio podrían ser:&lt;br /&gt;&lt;ul style=&quot;padding-top: 0px; padding-right: 2.5em; padding-bottom: 0px; padding-left: 2.5em; margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.4; &quot;&gt;&lt;li style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; text-indent: 0px; &quot;&gt;&lt;span style=&quot;font-style: italic; &quot;&gt;&quot;A una persona que ingresa más de 20.000 euros al año Hacienda le retiene el 15%&quot;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; text-indent: 0px; &quot;&gt;&lt;span style=&quot;font-style: italic; &quot;&gt;&quot;A los clientes que gasten más de 1.000 euros se les hace un descuento del 5%&quot;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Como se ve en los ejemplos, las reglas de negocio tienen una semántica &lt;span style=&quot;font-style: italic; &quot;&gt;if/then&lt;/span&gt;, si se cumple una determinada condición se debe realizar una determinada acción.&lt;br /&gt;&lt;br /&gt;Cuando un negocio dispone de muchas reglas que se deben aplicar, las aplicaciones que las gestionan se convierten en una maraña de código formado por estructuras &lt;span style=&quot;font-style: italic; &quot;&gt;if/else&lt;/span&gt; anidadas, que dificultan enormemente la comprensión y mantenibilidad del código.&lt;br /&gt;&lt;br /&gt;Si las reglas de negocio se aíslan del resto del código, se está separando la verdadera inteligencia sobre el negocio (las reglas) del resto del programa. Los sistemas de gestión de reglas de negocio (&lt;span style=&quot;font-weight: bold; &quot;&gt;BRMS – Bussiness Rule Management System&lt;/span&gt;) permiten gestionar de forma independiente las reglas de negocio. Facilitan la modificación o inclusión de nuevas reglas en tiempo de ejecución.&lt;br /&gt;&lt;br /&gt;Dentro de los sistemas de gestión de reglas de negocio en Java más populares hoy en día encontramos &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;. &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt; es un &lt;span style=&quot;font-weight: bold; &quot;&gt;BRMS&lt;/span&gt; de JBoss que implementa la &lt;span style=&quot;font-style: italic; &quot;&gt;Java Rule Engine API (JSR 94)&lt;/span&gt; y utiliza una implementación mejorada del algoritmo de Rete para la ejecución de reglas.&lt;br /&gt;&lt;br /&gt;A continuación voy a mostrar un ejemplo simple de cómo utilizar &lt;span style=&quot;font-weight: bold; &quot;&gt;Drool&lt;/span&gt;s y cómo permite parametrizar las reglas del negocio de forma externa a la aplicación que las utiliza. Antes de comenzar, recomiendo haber instalado &lt;span style=&quot;font-weight: bold; &quot;&gt;JBoss Tools&lt;/span&gt; en &lt;span style=&quot;font-weight: bold; &quot;&gt;Eclipse&lt;/span&gt;, puesto que nos ofrecerá herramientas que facilitan el desarrollo de apicaciones que usan &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El caso de uso que vamos a implementar en el ejemplo será el de una tienda online. En esta tienda hay dos tipos de clientes, aquellos que se han registrado previamente y los que no. Para todos los clientes que gasten más de 1.000 euros se les hace un descuento del 5%. A los que se han registrado, se les ofrece un descuento adicional del 5% en todas su compras, independientemente del importe. Vamos a hacer una aplicación que calcule el descuento que corresponde a cada usuario.&lt;br /&gt;&lt;br /&gt;En primer lugar creamos un proyecto &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt; en &lt;span style=&quot;font-weight: bold; &quot;&gt;Eclipse&lt;/span&gt;, lo que es posible gracias a las utilidades instaladas en &lt;span style=&quot;font-weight: bold; &quot;&gt;JBoss Tools&lt;/span&gt;:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJO54rtExR6vW2RDRmBv1j_ER7DDtvIeQKwoMhLH5U1Mn95ZK4wpvurXlZK8hN5OVERRRrwzQL7R8HSqOsiIQJyUT81BpbhZe6oKr5Ou28BmsQNNMMFZrCSKbc_D-nAabpkr6kNnB07Uqg/s1600/imagen1.jpg&quot; style=&quot;text-decoration: none; color: rgb(33, 135, 187); &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJO54rtExR6vW2RDRmBv1j_ER7DDtvIeQKwoMhLH5U1Mn95ZK4wpvurXlZK8hN5OVERRRrwzQL7R8HSqOsiIQJyUT81BpbhZe6oKr5Ou28BmsQNNMMFZrCSKbc_D-nAabpkr6kNnB07Uqg/s320/imagen1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5458211524649526770&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; background-position: initial initial; background-repeat: initial initial; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;El nuevo proyecto se va a llamar &lt;span style=&quot;font-style: italic; &quot;&gt;CalculadorDescuento&lt;/span&gt;:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQLdA6I012fl-R4w_D9u5Rg6iMbPCdHmZyEAkB8FImenEXvgawBv5eVfWfv7zbpN9YJ2gWSNqpysbRHCCM9CPxRR9HbxnAAepFcqfv1erVkt7nwf_6jXxLz0f408J2Fp6KzkRo_omlJU6z/s1600/imagen2.jpg&quot; style=&quot;text-decoration: none; color: rgb(33, 135, 187); &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQLdA6I012fl-R4w_D9u5Rg6iMbPCdHmZyEAkB8FImenEXvgawBv5eVfWfv7zbpN9YJ2gWSNqpysbRHCCM9CPxRR9HbxnAAepFcqfv1erVkt7nwf_6jXxLz0f408J2Fp6KzkRo_omlJU6z/s320/imagen2.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5458211824991600962&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; background-position: initial initial; background-repeat: initial initial; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;El asistente nos permite crear ejemplos de uso de &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5wA8ies_F6S_g05CWokpY37ztQxkWnxXKnSixL2tb08fS1g9oJ1Cr7UGFjHd-96UdBCBy1DgaoNabqiEGR2bXckRWenvRAGHQ3iRRfKNW2M92RNDvdxJnXn7-LXnCYdYoy_xZTJs8LERO/s1600/imagen3.jpg&quot; style=&quot;text-decoration: none; color: rgb(33, 135, 187); &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5wA8ies_F6S_g05CWokpY37ztQxkWnxXKnSixL2tb08fS1g9oJ1Cr7UGFjHd-96UdBCBy1DgaoNabqiEGR2bXckRWenvRAGHQ3iRRfKNW2M92RNDvdxJnXn7-LXnCYdYoy_xZTJs8LERO/s320/imagen3.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5458212356068230850&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; background-position: initial initial; background-repeat: initial initial; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;Es necesario especificar el &lt;span style=&quot;font-style: italic; &quot;&gt;runtime&lt;/span&gt; de &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;, es decir, la carpeta donde se encuentran las librerías de &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;:&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGBlzIq3yf1O7fXIkGJPg-Z8Oz0GBwy2aNx1ORs1Yre2gpqaslntuk0XmFfC9vxOArny0-Y9NQegdDovB6ejUeiqC_efSMYFYAW_k9R1U4lmq0vAI5skB5FZhwvvbTDq-n07rOqQf9RCq/s1600/imagen4.jpg&quot; style=&quot;text-decoration: none; color: rgb(33, 135, 187); &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGBlzIq3yf1O7fXIkGJPg-Z8Oz0GBwy2aNx1ORs1Yre2gpqaslntuk0XmFfC9vxOArny0-Y9NQegdDovB6ejUeiqC_efSMYFYAW_k9R1U4lmq0vAI5skB5FZhwvvbTDq-n07rOqQf9RCq/s320/imagen4.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5458212721375085954&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; background-position: initial initial; background-repeat: initial initial; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBGB8rMUePuwdiwMJh6pRuvm8R6wgwNvhSZHacRyNrgFMzhWJutjz5T0aVybqYBsu5jr48poDmXUG1FR5AwcONpUMouq2-mlLTLxeIG7G_BxhGztEveEDTQgMy9yVbA9i9DPubX_aDxpS3/s1600/imagen5.jpg&quot; style=&quot;text-decoration: none; color: rgb(33, 135, 187); &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBGB8rMUePuwdiwMJh6pRuvm8R6wgwNvhSZHacRyNrgFMzhWJutjz5T0aVybqYBsu5jr48poDmXUG1FR5AwcONpUMouq2-mlLTLxeIG7G_BxhGztEveEDTQgMy9yVbA9i9DPubX_aDxpS3/s320/imagen5.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5458212893891359234&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; background-position: initial initial; background-repeat: initial initial; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ahora, creamos una clase &lt;span style=&quot;font-style: italic; &quot;&gt;Cliente&lt;/span&gt; que refleje los datos del cliente, su nombre, si está registrado, el gasto que ha realizado y el descuento que se le aplica:&lt;br /&gt;&lt;pre class=&quot;prettyprint java&quot;&gt;package com.roldan.drools;&lt;br /&gt;&lt;br /&gt;public class Cliente {&lt;br /&gt;String nombre;&lt;br /&gt;boolean registrado;&lt;br /&gt;float gasto;&lt;br /&gt;float descuento;&lt;br /&gt;&lt;br /&gt;// Getters y setters...&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;En la clase &lt;span style=&quot;font-style: italic; &quot;&gt;CalculadorDescuento&lt;/span&gt; se crea el siguiente método, que lee las reglas que se han definido en el fichero &lt;span style=&quot;font-style: italic; &quot;&gt;Descuentos.drl&lt;/span&gt;:&lt;br /&gt;&lt;pre class=&quot;prettyprint java&quot;&gt;private static KnowledgeBase readKnowledgeBase()&lt;br /&gt;throws Exception {&lt;br /&gt;KnowledgeBuilder kbuilder =&lt;br /&gt; KnowledgeBuilderFactory.newKnowledgeBuilder();&lt;br /&gt;kbuilder.add(&lt;br /&gt;ResourceFactory.newClassPathResource(&quot;Descuentos.drl&quot;),&lt;br /&gt;ResourceType.DRL);&lt;br /&gt;KnowledgeBuilderErrors errors = kbuilder.getErrors();&lt;br /&gt;if (errors.size() &gt; 0) {&lt;br /&gt; for (KnowledgeBuilderError error: errors) {&lt;br /&gt;  System.err.println(error);&lt;br /&gt; }&lt;br /&gt; throw new IllegalArgumentException(&quot;Could not parse knowledge.&quot;);&lt;br /&gt;}&lt;br /&gt;KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();&lt;br /&gt;kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());&lt;br /&gt;return kbase;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;El método &lt;span style=&quot;font-style: italic; &quot;&gt;main&lt;/span&gt; de esta clase crea una sesión de &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt; y crea también varios clientes que introduce en esta sesión a los que se aplican las reglas que se definen en el fichero &lt;span style=&quot;font-style: italic; &quot;&gt;Descuentos.drl&lt;/span&gt;:&lt;br /&gt;&lt;pre class=&quot;prettyprint java&quot;&gt;public static void main(String[] args) {&lt;br /&gt;try {&lt;br /&gt; // Cargar las reglas&lt;br /&gt; KnowledgeBase kbase = readKnowledgeBase();&lt;br /&gt; StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();&lt;br /&gt; KnowledgeRuntimeLogger logger =&lt;br /&gt;  KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, &quot;test&quot;);&lt;br /&gt; &lt;br /&gt; // Cliente no registrado que gasta más de 1.000 euros&lt;br /&gt; Cliente cliente1 = new Cliente();&lt;br /&gt; cliente1.setNombre(&quot;Cliente 1&quot;);&lt;br /&gt; cliente1.setRegistrado(false);&lt;br /&gt; cliente1.setGasto(1200);  &lt;br /&gt; ksession.insert(cliente1);&lt;br /&gt; &lt;br /&gt; // Cliente registrado que gasta menos de 1.000 euros&lt;br /&gt; Cliente cliente2 = new Cliente();&lt;br /&gt; cliente2.setNombre(&quot;Cliente 2&quot;);&lt;br /&gt; cliente2.setRegistrado(true);&lt;br /&gt; cliente2.setGasto(800);  &lt;br /&gt; ksession.insert(cliente2);&lt;br /&gt; &lt;br /&gt; // Cliente registrado que gasta más de 1.000 euros&lt;br /&gt; Cliente cliente3 = new Cliente();&lt;br /&gt; cliente3.setNombre(&quot;Cliente 3&quot;);&lt;br /&gt; cliente3.setRegistrado(true);&lt;br /&gt; cliente3.setGasto(1600);  &lt;br /&gt; ksession.insert(cliente3);&lt;br /&gt; &lt;br /&gt; ksession.fireAllRules();&lt;br /&gt; logger.close();&lt;br /&gt; &lt;br /&gt; System.out.println(&quot;El cliente 1 tiene un descuento de &quot;&lt;br /&gt;  + cliente1.getDescuento() + &quot; euros.&quot;);&lt;br /&gt; System.out.println(&quot;El cliente 2 tiene un descuento de &quot;&lt;br /&gt;  + cliente2.getDescuento() + &quot; euros.&quot;);&lt;br /&gt; System.out.println(&quot;El cliente 3 tiene un descuento de &quot;&lt;br /&gt;  + cliente3.getDescuento() + &quot; euros.&quot;);&lt;br /&gt; &lt;br /&gt;} catch (Throwable t) {&lt;br /&gt; t.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Ahora vamos a ver cómo se definen las reglas anteriormente descritas en el fichero&lt;span style=&quot;font-style: italic; &quot;&gt;Descuentos.drl&lt;/span&gt;:&lt;br /&gt;&lt;pre class=&quot;prettyprint mvec&quot;&gt;package com.roldan.drools&lt;br /&gt;&lt;br /&gt;rule &quot;Gastos superior a 1.000 euros&quot;&lt;br /&gt;when&lt;br /&gt; cliente : Cliente( gasto &gt; 1000 )&lt;br /&gt;then&lt;br /&gt; System.out.println(&quot;El cliente &quot;&lt;br /&gt;  + cliente.getNombre() + &quot; ha gastado más de 1.000 euros.&quot;);&lt;br /&gt; cliente.setDescuento(&lt;br /&gt;  cliente.getDescuento() + cliente.getGasto()*5/100);&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;rule &quot;Cliente registrado&quot;&lt;br /&gt;when&lt;br /&gt; cliente : Cliente( registrado == true )&lt;br /&gt;then&lt;br /&gt; System.out.println(&quot;El cliente &quot;&lt;br /&gt;  + cliente.getNombre() + &quot; está registrado.&quot;);&lt;br /&gt; cliente.setDescuento(&lt;br /&gt;  cliente.getDescuento() + cliente.getGasto()*5/100);&lt;br /&gt;end&lt;/pre&gt;&lt;br /&gt;Al ejecutar la clase principal, obtenemos la siguiente salida que nos informa sobre lo que ha pasado:&lt;br /&gt;&lt;pre class=&quot;prettyprint log&quot;&gt;El cliente Cliente 3 está registrado.&lt;br /&gt;El cliente Cliente 3 ha gastado más de 1.000 euros.&lt;br /&gt;El cliente Cliente 2 está registrado.&lt;br /&gt;El cliente Cliente 1 ha gastado más de 1.000 euros.&lt;br /&gt;&lt;br /&gt;El cliente 1 tiene un descuento de 60.0 euros.&lt;br /&gt;El cliente 2 tiene un descuento de 40.0 euros.&lt;br /&gt;El cliente 3 tiene un descuento de 160.0 euros.&lt;/pre&gt;&lt;br /&gt;En esta traza vemos qué condiciones ha cumplido cada uno de los clientes y el resultado final de aplicarles todos los descuentos a los que tienen derecho según su condición.&lt;br /&gt;&lt;br /&gt;Aunque este es un ejemplo muy sencillo, se puede apreciar que ahora, si se quisiese variar el descuento aplicado para cada uno de estos casos o aplicar un nuevo descuento según otra condición distinta, no haría falta manipular el código de la aplicación. Bastaría con modificar las reglas definidas de forma separada en el fichero Descuentos.drl.&lt;br /&gt;&lt;br /&gt;Esto no es más que una sencilla aplicación de lo que ofrece &lt;span style=&quot;font-weight: bold; &quot;&gt;Drools&lt;/span&gt;, aunque este&lt;span style=&quot;font-weight: bold; &quot;&gt;BRMS&lt;/span&gt; es mucho más potente que esto y ofrece mucha más funcionalidad que ya iremos viendo.&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/1742034356499585531/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/1742034356499585531' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/1742034356499585531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/1742034356499585531'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2011/03/jboss-drools-express.html' title='JBoss Drools EXPRESS'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJO54rtExR6vW2RDRmBv1j_ER7DDtvIeQKwoMhLH5U1Mn95ZK4wpvurXlZK8hN5OVERRRrwzQL7R8HSqOsiIQJyUT81BpbhZe6oKr5Ou28BmsQNNMMFZrCSKbc_D-nAabpkr6kNnB07Uqg/s72-c/imagen1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-2981949342535607526</id><published>2011-03-16T21:35:00.002-03:00</published><updated>2011-03-16T21:38:14.448-03:00</updated><title type='text'>Despliegue de Drools</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;Despliegue de Drools – BRMS en el servidor de aplicaciones&lt;/span&gt;&lt;br /&gt;Para realizar el despliegue de la interfaz web de administración de reglas de drools realice los siguientes pasos:&lt;br /&gt;•	Descargue el archivo zip de Drools BRMS indicado en la página de descargas&lt;br /&gt;•	Descomprima el archivo (Debió aparecer un archivo denominado drools-jbrms.war)&lt;br /&gt;•	Copie este archivo y péguelo en la carpeta de deploy en servidor de aplicaciones JBoss (JBOSS_HOME\server\default\deploy)&lt;br /&gt;•	Inicie JBoss ejecutando el archivo binario JBOSS_HOME\bin\run.bat&lt;br /&gt;•	Si le sale una notificación de Windows, dele click en Desbloquear.&lt;br /&gt;•	Una vez terminado el despliegue de JBoss, desde su navegador puede ingresar a la siguiente dirección donde se encuentra el administrador web de drools: http://localhost:8080/drools-jbrms/&lt;br /&gt;&lt;br /&gt;Luego volveremos a esta consola, por ahora detenga el servidor de aplicaciones cerrando la ventana donde se ve el log de JBoss.&lt;br /&gt;Configuración de los Proyectos de Drools&lt;br /&gt;El proyecto de la biblioteca consta de dos proyectos drools_biblioteca y drools_biblioteca_prestamo. Siga los siguientes pasos para importar correctamente los proyectos en eclipse.&lt;br /&gt; &lt;br /&gt;•	Inicie eclipse ejecutando eclipse.exe que se encuentra en el directorio de instalación.&lt;br /&gt;•	Importe todos los proyectos del tutorial y abra la vista de ANT.&lt;br /&gt;•	Arrastre todos los archivos de tareas ANT al panel de ANT. (Los archivos se encuentran en el directorio bin de cada proyecto)&lt;br /&gt;Necesitamos crear un servidor para referenciar las librerías que estamos utilizando. Para ello abra la vista Servers y al hacer clic derecho sobre el panel de trabajo seleccione la opción new Server&lt;br /&gt;&lt;br /&gt;•	Seleccione el servidor tipo JBoss versión 4.2&lt;br /&gt;•	Seleccione agregar un nuevo runtime y en la nueva ventana coloque el directorio de instalación de su JBoss AS (Es la misma ruta JBOSS_HOME). De Aceptar.&lt;br /&gt; &lt;br /&gt;•	De nuevo en la ventana de New Server, escriba un nombre al servidor y de clic en aceptar. Su servidor debe aparecer en el panel de la vista Servers.&lt;br /&gt;•	Corrija los errores de compilación arreglando el classpath con las librerías necesitadas. Para esto haga clic derecho sobre cada proyecto y seleccione la opción.&lt;br /&gt;•	Build path -&gt; Configure Build Path.&lt;br /&gt;•	En ambos proyectos agregue las librerías del JRE (La versión de Java utilizada DEBE ser la versión 5).&lt;br /&gt;•	Para importar la librería de JBoss debe configurar el runtime del servidor en eclipse. Para esto:&lt;br /&gt;o	Ubíquese en la pestaña Libraries de la ventana de configuración del Path que abrió anteriormente.&lt;br /&gt;o	Seleccione la opción add Library y en la nueva ventana seleccione la opción server Runtime.&lt;br /&gt;&lt;br /&gt;Ejecución de los proyectos de Drools&lt;br /&gt;Una vez configuradas las librerías del proyecto (No deben salir errores en la pestaña de problemas de eclipse) proseguimos en el proceso de ejecutar nuestra aplicación.&lt;br /&gt;Cada proyecto trae incluido un archivo de tareas ANT ( bin/build.xml ), una de estas es realizar el despliegue. Así que se requiere (1) abrir la vista de ANT en Eclipse, (2) adicionar a la vista de ANT el archivo build.xml de cada proyecto y (3) ejecutar la tarea de deploy de los proyectos en el orden que se especifica a continuación:&lt;br /&gt;•	Biblioteca Prestamo&lt;br /&gt;•	Biblioteca Web&lt;br /&gt;Verifique que los siguientes archivos se encuentran desplegados los archivos (a) biblioteca.war y (b) préstamo.ejb3 en la ruta JBOSS_HOME/server/default/deploy.&lt;br /&gt;Ya estamos listos para correr la aplicación:&lt;br /&gt;•	En la pestaña de server de eclipse, inicie el servidor.&lt;br /&gt;•	Una vez iniciado el servidor, ingrese desde su navegador a la aplicación de la biblioteca enhttp://localhost:8080/biblioteca/&lt;br /&gt;•	Haga login (En el archivo bibliotecaLibros.xml de la carpeta data se encuentran tanto los libros cargados como los usuarios) (Puede ingresar utilizando login: carlos, password: 123456)&lt;br /&gt;•	Haga click en buscar libro.&lt;br /&gt;•	Haga click en buscar por nombre&lt;br /&gt;•	En el cuadro de texto ingrese la cadena “el” y haga click en enviar consulta&lt;br /&gt;•	Haga click en alquilar a alguno de los libros que aparecen&lt;br /&gt;•	Note que todos los libros se alquilan por un día. Esto se debe a que en la implementación del proyecto por defecto la duración del préstamo es de 1 día y todavía no hay reglas para modificar esto.&lt;br /&gt;En la sección de Creación de Reglas se continúa con el proceso para crearlas reglas que van a modificar el comportamiento de nuestra aplicación.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/2981949342535607526/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/2981949342535607526' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/2981949342535607526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/2981949342535607526'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2011/03/despliegue-de-drools.html' title='Despliegue de Drools'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-4061460986217716192</id><published>2011-03-16T21:32:00.001-03:00</published><updated>2011-03-16T21:38:14.455-03:00</updated><title type='text'>Instalando el software</title><content type='html'>&lt;h4&gt;&lt;span style=&quot;font-family:Tahoma;color:black&quot;&gt;Drools - 4.0.7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h4&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;En el desarrollo del tutorial se utilizan las librerías de Drools en su versión binaria que se añaden al proyecto y que se añaden al servidor de aplicación JBoss AS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size: 8pt; font-family: Verdana; &quot;&gt;&lt;a href=&quot;http://www.jboss.org/drools/downloads.html&quot; style=&quot;color: black; &quot;&gt;&lt;span style=&quot;color:#CC3300&quot;&gt;http://www.jboss.org/drools/downloads.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#CC3300&quot;&gt; &lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt;&lt;span style=&quot;font-family:Tahoma;color:black&quot;&gt;Drools Brms - 4.0.7 GA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h4&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Para el desarrollo del tutorial se utiliza la versión 4.07 del BRMS (Business Rule Management System)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size: 8pt; font-family: Verdana; &quot;&gt;&lt;a href=&quot;http://www.jboss.org/drools/downloads.html&quot; style=&quot;color: black; &quot;&gt;&lt;span style=&quot;color:#CC3300&quot;&gt;http://www.jboss.org/drools/downloads.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#CC3300&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Las siguientes herramientas  tambien se necesitan:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Apache ANT&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;JBoss 4.2.2 GA&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Eclipse 3.5 Estructuras de      Datos&lt;span class=&quot;apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt; que contiene el plugin      de JBoss IDE instalado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;margin-top:8.9pt;margin-right:0cm;margin-bottom:2.15pt;margin-left: 0cm&quot;&gt;&lt;span style=&quot;font-size:4.0pt;font-family:Tahoma;color:#585858;text-transform: uppercase&quot;&gt;INSTALACIÓN DE ECLIPSE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Para instalar sólo es necesario descomprimir los archivos en una carpeta de su sistema e iniciar eclipse.exe. (Requiere JDK 5 para funcionar). Para la correcta ejecución de todas las tareas se debe iniciar Eclipse después de que se tengan todas las variables de entorno necesarias, de lo contrario no se reconocerán.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style=&quot;margin-top:8.9pt;margin-right:0cm;margin-bottom:2.15pt;margin-left: 0cm&quot;&gt;&lt;span style=&quot;font-size:4.0pt;font-family:Tahoma;color:#585858;text-transform: uppercase&quot;&gt;INSTALACIÓN DE JBOSS AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Para instalar sólo es necesario descomprimir los archivos en una carpeta de su sistema preferiblemente en una ruta que no tenga espacios entre los nombres. Se debe crear una variable de entorno JBOSS_HOME para utilizar las tareas de ant que se incluyen en el tutorial.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style=&quot;margin-top:8.9pt;margin-right:0cm;margin-bottom:2.15pt;margin-left: 0cm&quot;&gt;&lt;span style=&quot;font-size:4.0pt;font-family:Tahoma;color:#585858;text-transform: uppercase&quot;&gt;INSTALACIÓN DE ANT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Para instalar sólo es necesario descomprimir los archivos en una carpeta de su sistema preferiblemente en una ruta que no tenga espacios entre los nombres. Se debe crear una variable de entorno ANT_HOME. Agregue dicha variable en su variable PATH de la siguiente forma: %ANT_HOME%/bin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Creación de Variables de Entorno en sistemas Windows&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Entre a las propiedades del sistema y selecciona la pestaña de opciones avanzadas. En esta pestaña encontrará una opción para la edición de variables de entorno.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id=&quot;_x0000_t75&quot; coordsize=&quot;21600,21600&quot;  o:spt=&quot;75&quot; o:preferrelative=&quot;t&quot; path=&quot;m@4@5l@4@11@9@11@9@5xe&quot; filled=&quot;f&quot;  stroked=&quot;f&quot;&gt;  &lt;v:stroke joinstyle=&quot;miter&quot;/&gt;  &lt;v:formulas&gt;   &lt;v:f eqn=&quot;if lineDrawn pixelLineWidth 0&quot;/&gt;   &lt;v:f eqn=&quot;sum @0 1 0&quot;/&gt;   &lt;v:f eqn=&quot;sum 0 0 @1&quot;/&gt;   &lt;v:f eqn=&quot;prod @2 1 2&quot;/&gt;   &lt;v:f eqn=&quot;prod @3 21600 pixelWidth&quot;/&gt;   &lt;v:f eqn=&quot;prod @3 21600 pixelHeight&quot;/&gt;   &lt;v:f eqn=&quot;sum @0 0 1&quot;/&gt;   &lt;v:f eqn=&quot;prod @6 1 2&quot;/&gt;   &lt;v:f eqn=&quot;prod @7 21600 pixelWidth&quot;/&gt;   &lt;v:f eqn=&quot;sum @8 21600 0&quot;/&gt;   &lt;v:f eqn=&quot;prod @7 21600 pixelHeight&quot;/&gt;   &lt;v:f eqn=&quot;sum @10 21600 0&quot;/&gt;  &lt;/v:formulas&gt;  &lt;v:path o:extrusionok=&quot;f&quot; gradientshapeok=&quot;t&quot; o:connecttype=&quot;rect&quot;/&gt;  &lt;o:lock v:ext=&quot;edit&quot; aspectratio=&quot;t&quot;/&gt; &lt;/v:shapetype&gt;&lt;v:shape id=&quot;_x0000_i1025&quot; type=&quot;#_x0000_t75&quot; alt=&quot;&quot; style=&#39;width:258pt;  height:299.25pt&#39;&gt;  &lt;v:imagedata src=&quot;file:///C:\Windows\Temp\msohtml1\01\clip_image001.jpg&quot;   o:href=&quot;http://cupi2.uniandes.edu.co/sitio/images/tutoriales/Drools/configurar001.jpg&quot;/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img width=&quot;344&quot; height=&quot;399&quot; src=&quot;file:///C:/Windows/Temp/msohtml1/01/clip_image001.jpg&quot; v:shapes=&quot;_x0000_i1025&quot;&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;En la ventana de edición de variables de entorno cree una nueva en la sección de variables del sistema. JBOSS_HOME debe apuntar al directorio de instalación de JBoss. ANT_HOME debe apuntar al directorio de instalación de Ant.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style=&quot;margin-top:8.9pt;margin-right:0cm;margin-bottom:2.15pt;margin-left: 0cm&quot;&gt;&lt;span style=&quot;font-size:4.0pt;font-family:Tahoma;color:#585858;text-transform: uppercase&quot;&gt;INSTALACIÓN DE LAS LIBRERÍAS DE DROOLS EN EL JBOSS AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Debido a que se va a utilizar el Droold BRMS para la administración de las reglas se deben copiar dentro del servidor de aplicación JBOSS las librerías necesarias. Para esto se siguen los siguientes pasos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Descargue el archivo .zip con las librerías de Drools que se indicó la página de instaladores&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Descomprima este archivo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Copie los siguientes jars:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;ul type=&quot;circle&quot;&gt;   &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:       1.8pt;mso-list:l0 level2 lfo1;tab-stops:list 72.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;drools-core-4.0.7.jar (Se       encuentra en la carpeta donde descomprimió el archivo).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;   &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:       1.8pt;mso-list:l0 level2 lfo1;tab-stops:list 72.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;mvel-1.3.1-java1.4.jar (Se       encuentra en la carpeta /lib donde descomprimió el .zip).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;   &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:       1.8pt;mso-list:l0 level2 lfo1;tab-stops:list 72.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Pegue los jars en la carpeta       JBOSS_HOME\server\default\lib.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;/ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/4061460986217716192/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/4061460986217716192' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4061460986217716192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4061460986217716192'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2011/03/instalando-el-software.html' title='Instalando el software'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-8544626658765163992</id><published>2011-03-16T21:28:00.004-03:00</published><updated>2011-03-16T21:34:58.743-03:00</updated><title type='text'>DROOLS - retomamos el Tutorial</title><content type='html'>&lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;entro del contexto de aplicaciones empresariales, existe el concepto de regla de negocio. Estas reglas de negocio son definidas propiamente por las directivas de la organización y pueden ser condiciones o parámetros de los diferentes servicios que ésta presta. Algunos ejemplos son:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;El precio de un minuto de      telefonía celular, según el plan al que pertenezca el usuario&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Las condiciones para aceptar o      rechazar una solicitud de crédito&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Los parámetros para realizar      descuentos por compra de productos en combo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Las condiciones para admitir a      un estudiante en una Universidad&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Las reglas evolucionan a lo largo del ciclo de vida de la organización debido a su estrecha dependencia de los motivadores de negocio (e.g. autoservicio, disminución de costos, reducción del ‘time to market’) que puede tener una organización y las fuerzas externas (e.g. competencia, exigencias legales). Por tal razón, el tiempo de respuesta ante dicha evolución debe ser el mínimo posible al igual que el impacto económico ante un cambio en un motivador o en una fuerza externa. Es así como la decisión de mantener dentro del código de una o varias aplicaciones de la empresa las reglas de negocio, tiene gran impacto económico. Específicamente debido a la cantidad de cambios que se puedan requerir, para ajustar el código en las aplicaciones en el momento en que apremia satisfacer una necesidad de negocio basada en una nueva regla o en el cambio de una de éstas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Los motores de reglas de negocio o BRMS (Business Rule Manager Systems) surgen como una alternativa de solución a la problemática de administrar el cambio de las reglas de negocio en una organización. En particular los BRMS ofrecen:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Un repositorio común a las      aplicaciones donde se guardan las reglas de negocio versionadas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Herramientas que permiten      definir estas reglas tanto a usuarios técnicos (desarrolladores) como a      usuarios no técnicos (directivos, expertos de negocio)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Independencia entre el      lenguaje de programación de una aplicación y el lenguaje para expresar las      reglas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Facilidad para definir las      reglas de negocio, por categorías, en un lenguaje de alto nivel propio del      motor de reglas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;text-align:justify;mso-list:l1 level1 lfo2;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Un mecanismo de despliegue de      las reglas de negocio&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;En el desarrollo de este tutorial utilizaremos Drools, que es el administrador de reglas de negocio de JBoss, como también la consola web de administración JBRMS para modificar las reglas.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;&lt;b&gt;Requisitos&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; color:black;mso-ansi-language:ES-TRAD;mso-fareast-language:ES-TRAD;mso-bidi-language: AR-SA&quot;&gt;Para la realización de este tutorial es necesario que se encuentre familiarizado con el desarrollo de aplicaciones Java en el ambiente de desarrollo Eclipse. Además se espera un conocimiento mínimo sobre WebServices y desarrollo de aplicaciones Web con tecnología de servlets.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; color:black;mso-ansi-language:ES-TRAD;mso-fareast-language:ES-TRAD;mso-bidi-language: AR-SA&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;; color:black;mso-ansi-language:ES-TRAD;mso-fareast-language:ES-TRAD;mso-bidi-language: AR-SA&quot;&gt;&lt;table class=&quot;MsoNormalTable&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;margin-left:2.15pt;border-collapse:collapse;mso-padding-alt:0cm 0cm 0cm 0cm&quot;&gt;  &lt;tbody&gt;&lt;tr style=&quot;mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes&quot;&gt;   &lt;td valign=&quot;top&quot; style=&quot;padding:0cm 0cm 0cm 0cm&quot;&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;Se quiere construir un sistema de consulta y préstamo de libros   para una biblioteca web. De cada libro la biblioteca almacena: (1) un título,   (2) una lista de autores, (3) una referencia bibliográfica que debe ser   única, (4) una lista de descriptores y (5) un número de ejemplares   disponibles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;El periodo de préstamo de un libro se determina a partir de la   evaluación de ciertas características del libro y del usuario que lo   solicita. En particular, la biblioteca tiene como motivador de negocio   centrarse en los usuarios en el momento de ofrecer sus servicios. Es por esto   que, la biblioteca permite el ajuste de periodos de préstamo al comienzo de   cada semestre y esporádicamente en el trascurso del semestre. Este ajuste se   debe a que con el cambio de libros sugeridos en los programas de los cursos,   los profesores se ven en la necesidad de solicitar a la biblioteca un periodo   máximo para el préstamo de libros debido al volumen de préstamos que se prevé   en el semestre. De esta forma el servicio que se da a los estudiantes y al   mismo profesor es a la medida.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;Debido a lo anterior, se desea incorporar al sistema de la   biblioteca un servicio de préstamos que revise algunas características del   libro alquilado y del usuario que solicita el libro y de acuerdo a unas   reglas de negocio definidas determine el número de días que se va a prestar   el libro. El servicio de préstamos debe estar desacoplado de la aplicación   actual con lo cual se quiere que el servicio de cálculo de días de préstamo   se exponga como un webservice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;Se requiere además que la tecnología utilizada para la   administración de las reglas sea &lt;b style=&quot;mso-bidi-font-weight:normal&quot;&gt;&lt;u&gt;JBoss   Drools&lt;/u&gt;&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;Adicionalmente se tiene como restricción, que el administrador   de las reglas del negocio no necesariamente es un programador, por lo cual el   mecanismo para modificar las reglas se haga de manera independiente al   desarrollo de la aplicación. Para esta restricción se impone que se debe   acoplar &lt;b style=&quot;mso-bidi-font-weight:normal&quot;&gt;&lt;u&gt;el Drools - BRMS&lt;/u&gt;&lt;/b&gt; a   la aplicación de la biblioteca para permitir la creación y modificación de   reglas desde una interfaz web, totalmente independiente del entorno de   desarrollo de la aplicación. En particular, el cambio del periodo de préstamo   de libros lo realiza el administrador de la biblioteca.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana;   color:black&quot;&gt;La descripción de los requerimientos funcionales se encuentra en   la sección con dicho nombre.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;h4&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left: 0cm;text-align:justify&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana; color:black&quot;&gt;Las siguientes restricciones existen sobre la implementación de la solución:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;Se debe hacer un desarrollo      basado en componentes y utilizar servlets y JBoss para el sistema de la      biblioteca.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class=&quot;MsoNormal&quot; style=&quot;color:black;mso-margin-top-alt:auto;margin-bottom:      1.8pt;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt&quot;&gt;&lt;span style=&quot;font-size:8.0pt;font-family:Verdana&quot;&gt;El sistema de préstamos debe      ser implementado de manera independiente a la aplicación de la biblioteca      y la comunicación entre ambas partes se realiza mediante web services.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;span style=&quot;font-size:8.0pt;font-family:Verdana;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:black;mso-ansi-language:ES-TRAD; mso-fareast-language:ES-TRAD;mso-bidi-language:AR-SA&quot;&gt;La administración de las reglas debe hacerse mediante el drools-jbrms (JBoss  Business Rules Management System) y la aplicación debe comunicarse con la interfaz web que ofrece este sistema.&lt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;   &lt;p style=&quot;margin-top:1.8pt;margin-right:0cm;margin-bottom:1.8pt;margin-left:   0cm;text-align:justify&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;articleseparator&quot;&gt;&lt;span style=&quot;font-size:8.0pt; font-family:Verdana;color:black&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 8.0pt;font-family:Verdana;color:black&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/8544626658765163992/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/8544626658765163992' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/8544626658765163992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/8544626658765163992'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2011/03/drools-retomamos-el-tutorial.html' title='DROOLS - retomamos el Tutorial'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-8613429595276113525</id><published>2010-10-25T10:36:00.008-03:00</published><updated>2010-10-25T10:57:12.056-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drools Expert"/><category scheme="http://www.blogger.com/atom/ns#" term="Inteligencia Artificial"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Expertos"/><category scheme="http://www.blogger.com/atom/ns#" term="Teoria Inteligencia Artificial"/><title type='text'>Introducción a los sistemas expertos  -  Teoría</title><content type='html'>&lt;div&gt;No hace mucho tiempo, se creía que algunos problemas como la demostración de teoremas, el reconocimiento de la voz y el de patrones, ciertos juegos&lt;/div&gt;&lt;div&gt;(como el ajedrez o las damas), y sistemas altamente complejos de tipo determinista&lt;/div&gt;&lt;div&gt;o estocástico, debían ser resueltos por personas, dado que su&lt;/div&gt;&lt;div&gt;formulación y resolución requieren ciertas habilidades que solo se encuentran&lt;/div&gt;&lt;div&gt;en los seres humanos (por ejemplo, la habilidad de pensar, observar,&lt;/div&gt;&lt;div&gt;memorizar, aprender, ver, oler, etc.). Sin embargo, el trabajo realizado en&lt;/div&gt;&lt;div&gt;las tres ultimas décadas por investigadores procedentes de varios campos,&lt;/div&gt;&lt;div&gt;muestra que muchos de estos problemas pueden ser formulados y resueltos&lt;/div&gt;&lt;div&gt;por maquinas.&lt;/div&gt;&lt;div&gt;El amplio campo que se conoce como inteligencia artificial (IA) trata&lt;/div&gt;&lt;div&gt;de estos problemas, que en un principio parecían imposibles, intratables y&lt;/div&gt;&lt;div&gt;difíciles de formular utilizando computadoras.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;La Inteligencia Artificial es la parte de la Ciencia que se ocupa&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;del diseño de sistemas de computación inteligentes, es decir,&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;sistemas que exhiben las características que asociamos a la inteligencia&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;en el comportamiento humano que se refiere a la  comprensión del lenguaje, el aprendizaje, el razonamiento, la resolución de problemas, etc.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hoy en día, el campo de la IA engloba varias subareas tales como los&lt;/div&gt;&lt;div&gt;sistemas expertos, la demostración automática de teoremas, el juego automático, el reconocimiento de la voz y de patrones, el procesamiento del lenguaje natural, la visión artificial, la robotica, las redes neuronales, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este blog esta dedicado a los sistemas expertos. Aunque los sistemas expertos&lt;/div&gt;&lt;div&gt;constituyen una de las áreas de investigación en el campo de la IA, la mayor parte de las restantes áreas, si no todas, disponen de una componente de sistemas expertos formando parte de ellas.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;¿Qué es un Sistema Experto?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;En la literatura existente se pueden encontrar muchas definiciones de sistema&lt;/div&gt;&lt;div&gt;experto. Por ejemplo, Stevens (1984), p´agina 40, da la definici´on&lt;/div&gt;&lt;div&gt;siguiente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Los sistemas expertos son maquinas que piensan y razonan como&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;un experto lo haría en una cierta especialidad o campo. Por&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;ejemplo, un sistema experto en diagnostico medico requeriría&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;como datos los síntomas del paciente, los resultados de análisis&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;clínicos y otros hechos relevantes, y, utilizando éstos, buscaría&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;en una base de datos la información necesaria para poder identificar&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;la correspondiente enfermedad. [. . .] Un Sistema Experto&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;de verdad, no sólo realiza las funciones tradicionales de manejar&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;grandes cantidades de datos, sino que también manipula esos&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;datos de forma tal que el resultado sea inteligible y tenga significado&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;para responder a preguntas incluso no completamente&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;especificadas.&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Pero a efectos prácticos, puede resumirse como sigue:&lt;/div&gt;&lt;div&gt;&lt;b&gt;Definición  Sistema Experto:&lt;/b&gt; Un sistema experto puede definirse&lt;/div&gt;&lt;div&gt;como un sistema informático (hardware y software) que simula a los expertos&lt;/div&gt;&lt;div&gt;humanos en un área de especialización dada.&lt;/div&gt;&lt;div&gt;Como tal, un sistema experto debería ser capaz de procesar y memorizar&lt;/div&gt;&lt;div&gt;información, aprender y razonar en situaciones deterministas e inciertas,&lt;/div&gt;&lt;div&gt;comunicar con los hombres y/u otros sistemas expertos, tomar decisiones&lt;/div&gt;&lt;div&gt;apropiadas, y explicar por que se han tomado tales decisiones. Se puede&lt;/div&gt;&lt;div&gt;pensar también en un sistema experto como un consultor que puede suministrar&lt;/div&gt;&lt;div&gt;ayuda a (o en algunos casos sustituir completamente) los expertos&lt;/div&gt;&lt;div&gt;humanos con un grado razonable de fiabilidad.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para finalizar esta entrada del BLOG, quiero recordarles que los sistemas expertos tienen muchas aplicaciones. En el próximo POST se dan unos pocos ejemplos ilustrativos del tipo de problemas que pueden resolverse mediante sistemas expertos. Otros ejemplos prácticos se dan a lo largo del blog, incluso mediante su implementacion con Drools Expert. Hasta la próxima entrada.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/8613429595276113525/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/8613429595276113525' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/8613429595276113525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/8613429595276113525'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/10/introduccion-los-sistemas-expertos.html' title='Introducción a los sistemas expertos  -  Teoría'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-7121554886267414750</id><published>2010-10-11T22:56:00.002-03:00</published><updated>2010-10-11T23:01:23.168-03:00</updated><title type='text'>DROOLS - El Tutorial</title><content type='html'>Buenas! como están tanto tiempo? espero que bien, y con ganas de continuar con el aprendizaje de Drools Expert y de la Inteligencia Artificial implementada en la Plataforma Java.&lt;div&gt;En esta ocasión, les voy a enumerar los pasos que vamos a seguir a lo largo de este tutorial:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Motivación&lt;/li&gt;&lt;li&gt;Requisitos&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Descripción&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Arquitectura&lt;/li&gt;&lt;li&gt;Requerimientos Funcionales y No Funcionales&lt;/li&gt;&lt;li&gt;Objetivos Pedagógicos&lt;/li&gt;&lt;li&gt;Instaladores&lt;/li&gt;&lt;li&gt;Configurar Ambiente&lt;/li&gt;&lt;li&gt;Crear Reglas&lt;/li&gt;&lt;li&gt;Modificacion de Reglas&lt;/li&gt;&lt;li&gt;Instalacion en Produccion&lt;/li&gt;&lt;li&gt;Descargar el ejemplo completo.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;son 12 puntos, pero tal vez sean mas (o menos, aunque no lo creo!). Tenemos mucho por estudiar, asi que comenzamos...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/7121554886267414750/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/7121554886267414750' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/7121554886267414750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/7121554886267414750'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/10/drools-el-tutorial.html' title='DROOLS - El Tutorial'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-7356035622341452938</id><published>2010-09-24T19:27:00.004-03:00</published><updated>2010-09-30T10:19:55.171-03:00</updated><title type='text'>Motores de Regla Open Source en Java</title><content type='html'>&lt;div&gt;Repasemos qué encontramos en la web si nos preguntamos: ¿Qué motores de Regla Open Source existen para Java hoy? es decir, estamos buscando sobre Open Source Rule Engines in Java, entonces estoy buscando  una implementación libre de un motor de reglas de negocio compatible con la especificación &lt;b&gt;&lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=94&quot;&gt;JSR-94 Rules Engine API&lt;/a&gt;&lt;/b&gt; (http://www.jcp.org/en/jsr/detail?id=94). REPASEMOS!!!¿Y qué es un motor de reglas de negocio?. Es un componente que, a partir de una información inicial y un conjunto de reglas, detecta qué reglas deben aplicarse en un instante determinado y cuáles son los resultados de esas reglas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, entonces que tenemos disponible??....&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Drools&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Drools es un motor de reglas orientado a objetos para Java. Drools es una implementación del algoritmo Rete de Forgy, a medida para el lenguaje Java. La adaptación de Rete a una interfaz orientada a objetos permite una mayor expresión natural de reglas de negocio en lo que respecta a los objetos de negocio. Más importante aún, Drools establece la lógica de programación declarativa y es lo suficientemente flexible como para que coincida con la semántica de su dominio del problema. Las diversas partes que componen una regla podrá ser prorrogado a prestar el sentido específico de dominio a la regla.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;JESS&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Jess ® es un motor de reglas para la plataforma Java - es un superconjunto del lenguaje de programación CLIPS, desarrollado por Ernest Friedman-Hill de Sandia National Labs. Fue escrito por primera vez en finales de 1995.&lt;/div&gt;&lt;div&gt;Ofrece programación basado en normas adecuadas para la automatización de un sistema experto, y se refiere a menudo como un shell de sistema experto. En los últimos años, los sistemas de agentes inteligentes también han sido desarrollado, que dependen de una capacidad similar.&lt;/div&gt;&lt;div&gt;En lugar de un paradigma de procedimiento, en un solo programa tiene un bucle que se activa una sola vez, el paradigma declarativo utilizado por Jess aplica continuamente una colección de reglas a un conjunto de hechos mediante un proceso llamado &quot;coincidencia de patrones&quot;. &lt;/div&gt;&lt;div&gt;Las reglas se pueden modificar la colección de hechos, o que pueden ejecutar cualquier código Java.&lt;/div&gt;&lt;div&gt;Jess se puede utilizar para construir servlets Java, EJB, applets y aplicaciones completas que utilizan el conocimiento en forma de reglas declarativas para sacar conclusiones y hacer inferencias. &lt;/div&gt;&lt;div&gt;Dado que muchas de las normas puede coincidir con muchas entradas, son pocos los algoritmos eficaces de uso general correspondiente. El motor de reglas de Jess utiliza el algoritmo Rete.&lt;/div&gt;&lt;div&gt;Es OpenSource como licencia para estudiantes, como producto comercial es pago.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;OpenRules&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;OpenRules es  Business Rules Management Framework de gran escala y OpenSource. Se utiliza eficientemente el poder de MS Excel, Eclipse IDE y bibliotecas de código abierto de Java &lt;/div&gt;&lt;div&gt;para crear, implementar, ejecutar y mantener los motores de diferentes reglas de negocio complejas con la lógica controlada por los analistas de negocio. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Mandarax&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Mandarax es una biblioteca de clases Java de código abierto para generar reglas de deducción. Se proporciona una infraestructura para la definición, gestión y consulta de bases de reglas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SweetRules&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;SweetRules es un conjunto integrado de herramientas de gran alcance únicamente de las normas web semántica y ontologías, que gira alrededor de la RuleML (Regla de marcado / Modeling Language), estándar emergente de las normas web semántica, y apoyar también la estrecha relación SWRL (Web Semántica artículo Language), junto con la norma de OWL para ontologías web semántica, que a su vez el uso de XML y, opcionalmente, RDF. (Reglas SWRL son esencialmente un subconjunto expresiva de las normas RuleML.) SweetRules apoya a los poderosos Situado Cortés lógica extensión de los programas de RuleML, incluyendo el manejo de los conflictos de prioridades y accesorios de procedimiento para las acciones y pruebas. capacidades SweetRules &#39;incluyen la semántica de preservación de la traducción y la interoperabilidad entre una variedad de lenguajes de reglas y la ontología (incluyendo XSB Prolog, las reglas de producción Jess, HP Jena-2, y CommonRules IBM), altamente escalable hacia atrás y hacia adelante inferencia, y la fusión de bases de reglas / ontologías . accesorios de procedimiento, incluso puede ser WSDL Servicios Web. enchufabilidad SweetRules y capacidades de composición permiten que los componentes nuevos que se añadirán con relativa rapidez. Implementado en Java, SweetRules tiene un código base compacta (~ 40K del total de líneas de código para las herramientas de varias decenas). El proyecto SweetRules es un esfuerzo internacional, multi-institucional, su origen y coordinado por el grupo en el MIT Sloan SweetRules dirigido por Benjamin Grosof, y su creación fue financiada en gran parte por el programa de investigación DAML (DARPA Agente Markup Language) que co-fue pionero en la semántica Web. DULCE (&quot;Web Semántica Activación de la tecnología&quot;) es un conjunto global de herramientas que el Grupo de Benjamin Grosof (con colaboradores) se ha venido desarrollando desde el año 2001. Otros componentes que incluyen el enfoque SweetDeal la contratación electrónica del sistema y el prototipo, y el sistema SweetPH de ontologías de procesos de negocio establecido en el Manual de Procesos. Cientos de usuarios ya han descargado SweetRules, inspirado en parte por sus manifestaciones de buena acogida en las presentaciones detalladas de los investigadores principales de la reunión DAML y el Organismo Internacional de la Web Semántica programa de la Conferencia tutorial.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Take&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Take (también conocido como Mandarax compilador) consiste en un lenguaje de script que puede ser utilizado para definir las reglas de derivación, y un compilador que genera código ejecutable de Java y la despliega en los sistemas en funcionamiento. Take se inspira en Mandarax, tiene un API similar pero no utiliza un intérprete independiente &quot;motor de inferencia&quot;. El proceso de implementación es muy similar a cómo los servidores web, el tratamiento de las páginas del servidor. El resultado ha sido optimizado, reflexiva y fácil de mantener código.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;JRuleEngine&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;JRuleEngine es un motor de reglas de Java, basado en la &quot;Java Specification Request 94&quot;, versión 1.1, es decir, normas puede ser cargado por un archivo XML o por medio de JRuleEngine API, por lo que las reglas pueden ser almacenados en una base de datos externa, también. La distribución consta de una biblioteca que puede ser embebido en una aplicación Java, por lo que se puede utilizar en cualquier tipo de aplicación (basada en web o no).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;JLisa&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;JLisa es un framework muy poderoso para construir reglas de negocio accessibles en Java y es compatible con JSR94 V, the JavaTM Rule Engine API&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;JEOPS&lt;/b&gt; - The Java Embedded Object Production System ( Sistema Integrado de objetos de producción )&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;JEOPS es un avance basado en motores de reglas de encadenamiento. Este motor de reglas se utiliza para alimentar el proceso de negocio por las normas de servidores de aplicaciones en Java, las aplicaciones cliente, y Servlets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Prova language&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Prova (from Prolog+Java) es un sistema basado en reglas (rule-based system) para Java y el agente de secuencias de comandos y la integración de la información se extiende el motor Mandarax con una sintaxis y la semántica del lenguaje adecuado mejorada. El lenguaje abre un nuevo camino en la combinación de la programación declarativa y expresiva. Combina la sintaxis natural y la tipificación de Java con las reglas Prolog estilo y envoltorios de base de datos. llamadas de Java pueden incluir las llamadas de constructor y el método como el acceso a wellas variables públicas en las clases. Distribuidos y la programación del agente transportados a través de protocolos JMS o JADE se basa en las normas de reacción se especifica en una sintaxis natural. El idioma hace que sea fácil para los agentes para participar en conversaciones simultáneas sin iniciar nuevos hilos utilizando la reacción y la novela normas de reacción en línea en una sintaxis muy natural y ecoonomic, directamente capturar conversaciones como máquinas de estado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tambien encontrè a: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Open Lexicon&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Zilonis&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Hammurapi Rules&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;OpenL Tablets&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pero no los he investigado a ninguno de los 4. Personalmente les recomiendo introducirse de lleno a Drools, ya que es una plataforma con mucho soporte y respaldo por parte de JBOSS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bueno, esto es todo por el momento, en le proximo post, comenzaremos con el &quot;Hola Mundo&quot; de Drools Expert 5.0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;saludos! Lic. Mariano Salvetti&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/7356035622341452938/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/7356035622341452938' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/7356035622341452938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/7356035622341452938'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/09/motores-de-regla-open-source-en-java.html' title='Motores de Regla Open Source en Java'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-3617702210755021446</id><published>2010-09-24T18:39:00.008-03:00</published><updated>2010-09-26T10:53:06.334-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Base de Conocimiento"/><category scheme="http://www.blogger.com/atom/ns#" term="Drools Expert"/><category scheme="http://www.blogger.com/atom/ns#" term="Inteligencia Artificial"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Expertos"/><title type='text'>Sistemas Expertos: Arquitectura básica</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimCIN6OIoX9yJWiNztIpdVDjVhTgrCvAxDXzuMpzojZRP7f9y8m8AvNsNouQxABzd09f6Qdo6LbU8u26I3CsmH5ysyttjMzxZbiU25XGbRaE6E2u_b8QTcstkICjNstx9mrBuyIHeWEEct/s1600/arqu.png&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 270px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimCIN6OIoX9yJWiNztIpdVDjVhTgrCvAxDXzuMpzojZRP7f9y8m8AvNsNouQxABzd09f6Qdo6LbU8u26I3CsmH5ysyttjMzxZbiU25XGbRaE6E2u_b8QTcstkICjNstx9mrBuyIHeWEEct/s320/arqu.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5520607116455717730&quot;&gt;&lt;/a&gt;&lt;br /&gt;Por lo ya visto, sabemos que un Sistema Experto (SE)  es una aplicación capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee información de uno o más expertos en un área específica. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;De forma general, veamos la &lt;font class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#CC0000&quot;&gt;Arquitectura &lt;/font&gt;&lt;/font&gt;de un Sistema Experto, y luego estudiaremos como esto se implementa en Drools :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Base de conocimientos (BC):&lt;/b&gt;&lt;/font&gt; Contiene conocimiento modelado extraído del diálogo con un experto. Es una parte muy importante de definir, y muy costosa. Tambien se lo llama &lt;i&gt;knowledgebase&lt;/i&gt; en inglés; &lt;i&gt;KB, kb&lt;/i&gt; or Δ y es un tipo especial de base de datos para &lt;i&gt;&lt;b&gt;la gestión del conocimiento&lt;/b&gt;&lt;/i&gt;. Provee los medios para la recolección, organización y recuperación de conocimiento. Es donde modelaremos &quot;lo que sabemos&quot; del problema a resolver.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Base de hechos (Memoria de trabajo):&lt;/b&gt; contiene los hechos sobre un problema que se ha descubierto durante el análisis. Es donde trabajaremos.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Motor de inferencia:&lt;/b&gt; Modela el proceso de razonamiento humano. Recordemos que una inferencia es una evaluación que realiza la mente entre expresiones bien formadas de un lenguaje, para obtener un resultado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Módulos de justificación&lt;/b&gt;: Es como se explica el razonamiento utilizado por el sistema para llegar a una determinada conclusión. Parte importante!&lt;/li&gt;&lt;li&gt;&lt;b&gt;Interfaz de usuario:&lt;/b&gt; es la interacción entre el SE y el usuario, y se realiza mediante el lenguaje natural. Muchas veces esto es simplemente un resultado, un reporte o un mensaje en una pantalla. Iterativamente, se puede ir mejorando.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Ahora bien, sobre el ultimo punto, ¿como interactua el usuario con un Sistema Experto? &lt;/div&gt;&lt;div&gt;&lt;div&gt;El usuario de un SE puede estar operando en cualquiera de los siguientes modos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Verificador&lt;/b&gt;. El usuario intenta comprobar la validez del desempeño del sistema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Tutor&lt;/b&gt;. El usuario da información adicional al sistema o modifica el conocimiento que ya está presente en el sistema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Alumno&lt;/b&gt;. El usuario busca rápidamente desarrollar pericia personal relacionada con el área específica mediante la recuperación de conocimientos organizados y condensados del sistema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Cliente&lt;/b&gt;. El usuario aplica la pericia del sistema a tareas específicas reales.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El reconocimiento de las caracterizaciones anteriores contrasta con la percepción de un simple papel (el cliente) de los sistemas tradicionales de software.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En una próxima entrada volveremos un poco sobre la arquitectura recién presentada, estudiaremos la implementacion en diversos productos y herramientas. &lt;/div&gt;&lt;div&gt;Nombraremos los principales, con sus ventajas y desventajas.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hasta la próxima entrega!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/3617702210755021446/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/3617702210755021446' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/3617702210755021446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/3617702210755021446'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/09/sistemas-expertos-arquitectura-basica.html' title='Sistemas Expertos: Arquitectura básica'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimCIN6OIoX9yJWiNztIpdVDjVhTgrCvAxDXzuMpzojZRP7f9y8m8AvNsNouQxABzd09f6Qdo6LbU8u26I3CsmH5ysyttjMzxZbiU25XGbRaE6E2u_b8QTcstkICjNstx9mrBuyIHeWEEct/s72-c/arqu.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-938992746891442837</id><published>2010-09-24T16:54:00.009-03:00</published><updated>2010-09-24T18:36:23.508-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drools Expert"/><category scheme="http://www.blogger.com/atom/ns#" term="Inteligencia Artificial"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas de Produccion"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Expertos"/><title type='text'>Antes que Drools, Starting Teorico....</title><content type='html'>&lt;div&gt;&lt;i&gt;Hello World! nuevamente&lt;/i&gt;, este post es ideal para las personas que tiene interes sobre la &lt;b&gt;Inteligencia Artificial&lt;/b&gt;, que han realizado algunas lecturas sobre el tema, o han estudiado material de Inteligencia Artificial en la Universidad, pero que ni siquiera conoce la &lt;/div&gt;&lt;div&gt;plataforma Drools, o que si la conocen, solamente la conocen por el nombre. Es importante, recibir algo de orientación inicial, debido a que la documentación oficial, toma como base que estamos muy interiorizados con varios temas que a muchas personas les resulta difícil.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si te sentís desorientado, perdido, no sabes por donde empezar, leyendo la documentación te das cuenta de que no manejas conceptos como por ejemplo: de &lt;i&gt;motor de inferencia, motor de reglas, BPM, Procesos, CEP&lt;/i&gt;, etc. Este post esta orientado a ir iterativamente agregando distintas fuentes de información para introducir y relacionar todos estos temas, cuyas &lt;span class=&quot;Apple-style-span&quot;&gt;bases teóricas&lt;/span&gt; son fundamentales para entender como funciona Drools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por lo tanto a esta altura, tu gran problema es el &lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Background teórico&lt;/b&gt;&lt;/span&gt; faltante. Y entender como funciona y como esta hecho internamente un motor de inferencia (el core de Drools como proyecto desde que empezó) se hace fundamental para aclarar el panorama. No hace falta irse al otro extremo de saber como implementar un motor de inferencia (me gustaría llegar a esto en algún post) pero si es necesario entender los conceptos básicos de funcionamiento y por sobre todo entender conceptualmente que representa y que soluciona.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para esto voy a usar este post, para ir actualizandolo con artículos que explican y abordan temas conceptuales y genéricos, no solamente sobre Drools, sino sobre la teoria de fondo que es necesaria para entender como trabaja un&lt;i&gt; Sistema Experto&lt;/i&gt; y qué utiliza de la &lt;i&gt;Inteligencia Artificial.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Atacaremos los conceptos de motor de inferencias, sistemas expertos, sistemas de producción, etc, para que asi la documentación de Drools Expert empiece a tomar otra forma.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;Algunos conceptos importantes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Dejemos en claro algunas definiciones muy cortas, usadas para empezar a entrar en tema, junto con un listado de lecturas de referencia para ampliar cada tema en particular. Por mi parte voy a ir tratando de extraer las secciones de máximo interés para armar una mini guia conceptual que nos introduzca las herramientas necesarias para empezar con el pie derecho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Sistemas Expertos (Expert Systems)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Se conoce como un sistema experto, un programa o pieza de software, que intenta imitar las decisiones o acciones tomadas por un experto humano en un dominio (o tema) especifico.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Estos sistemas, hacen uso de &lt;i&gt;motores de inferencia&lt;/i&gt;, o motores de razonamiento, para ser mas genéricos, los cuales permiten basándonos en el conocimiento de un dominio, llegar a conclusiones a las que un experto humano llegaría.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Referencias&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;http://es.wikipedia.org/wiki/Sistemas_Expertos&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Motor de inferencias (Inference Engine)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Básicamente es un programa, o pieza de software, que trata de derivar una respuesta basándose en una base de conocimientos. Donde por base de conocimientos, entendemos que es algo similar a una base de datos, pero especializada para guardar conocimiento, ordenarlo y poder obtenerlo fácilmente. Teniendo como foco principal el hecho de poder llegar a nuevas conclusiones, basadas en el conocimiento almacenado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Los &lt;i&gt;motores de inferencia&lt;/i&gt; están fuertemente relacionados con el ámbito de los sistemas expertos, ya que se considera que un motor de inferencia es el cerebro de un sistema experto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Referencias&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;http://en.wikipedia.org/wiki/Inference_engine&lt;/div&gt;&lt;div&gt;http://es.wikipedia.org/wiki/Inferencia&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Sistemas de Producción (Production Systems)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Son sistemas muy relacionados con la inteligencia artificial, construidos con bases en reglas (producción/production) y comportamientos asociados. A grandes rasgos, y con mi visión muy superficial sobre estos temas tan teóricos, relaciono la palabra producción no con el hecho de producir algo, sino al revés con &lt;i&gt;que algo se produce y debemos saber que comportamiento tenemos que tomar en ese momento.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para ser mas claros, estas producciones/reglas están formadas por dos partes. La primera parte es conocida como pre condición, sensor, guarda o solamente &lt;i&gt;condición&lt;/i&gt; y es la encargada de describir un estado particular de nuestro mundo.&lt;/div&gt;&lt;div&gt;Cuando nuestro mundo coincide con algún estado expresado por alguna de las N condiciones que podemos tener, se dice que&lt;i&gt; la producción/regla es activada&lt;/i&gt;. Aquí es donde entra en juego la segunda parte de la producción, que es llamada &lt;i&gt;acción&lt;/i&gt;. La cual se ejecuta cuando la regla es disparada.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La manera mas simple de ver una producción/regla es la siguiente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;   RULE &quot;nombre&quot;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;   IF/WHEN&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;           CONDITION&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;    THEN&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;           ACTION&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cuando la acción es ejecutada, podemos decir que&lt;b&gt; la regla ha sido disparada&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Otro concepto importante aquí, es lo que se conoce como &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;i&gt;memoria de trabajo (working memory)&lt;/i&gt;&lt;/span&gt;, que es la encargada de tener el estado del mundo y sobre cual se ejecutan las acciones. Estas acciones muchas veces tienen la función de modificar el estado del mundo, pudiendo así causar la activación de otras reglas de manera recursiva.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Como últimos detalles, podemos decir que los sistemas de producción deben incluir dos cosas claves:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Un &lt;i&gt;algoritmo para comparar las condiciones y el estado&lt;/i&gt; actual del mundo eficiente, mas adelante vamos a estudiar  este tema, ya que aca entran los conceptos de &lt;i&gt;forward y backward chainning &lt;/i&gt;junto con el algoritmo RETE, LEAPS,TREAT, etc.&lt;/div&gt;&lt;div&gt;Un &lt;i&gt;algoritmo para priorizar activaciones&lt;/i&gt; en caso de que dos o mas condiciones se activen al mismo tiempo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Referencias:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;http://en.wikipedia.org/wiki/Production_system&lt;/div&gt;&lt;div&gt;http://www.cse.unsw.edu.au/~billw/cs9414/notes/kr/rules/rules.html&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Si bien las referencias son pocas, la idea es ir agregando y refinando los conceptos sobre este mismo post, a medida que las preguntas surjan, o sino tenerlo como referencia teoria al momento que se nos ocurran dudas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Espero poder avanzar con cada uno de estos temas en particular, para que el &lt;i&gt;background teórico&lt;/i&gt; vaya solidificándose hasta que el uso de la herramienta Drools sea solamente comprender como fue implementada cada parte y cada concepto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hasta la próxima entrada del blog,&lt;/div&gt;&lt;div&gt;Saludos&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/938992746891442837/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/938992746891442837' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/938992746891442837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/938992746891442837'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/09/drools-starting.html' title='Antes que Drools, Starting Teorico....'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-9201470817619217210</id><published>2010-09-20T11:17:00.006-03:00</published><updated>2010-09-20T11:40:15.322-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Drools Expert"/><category scheme="http://www.blogger.com/atom/ns#" term="Inteligencia Artificial"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Expertos"/><title type='text'>Sistemas Expertos en Java - Comenzando...</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Si googleamos y nos enfrentamos a una primera definición sobre que son estos tipos de sistemas, los &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;sistemas expertos&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; son llamados así porque emulan el comportamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;lucida grande&#39;, tahoma, verdana, arial, sans-serif; font-size: 11px; color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: sans-serif; font-size: 15px; line-height: 23px; &quot;&gt;&lt;p style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Es un software capaz de solucionar problemas que necesitan de un gran conocimiento sobre un determinado tema. &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee información de uno o más expertos en un área específica.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; Se puede entender como una rama de la &lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Inteligencia_artificial&quot; title=&quot;Inteligencia artificial&quot; style=&quot;text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;inteligencia artificial&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;, donde el poder de resolución de un problema en un programa viene del conocimiento de un dominio específico. Estos sistemas imitan las actividades de un humano para resolver problemas de distintos temas (no necesariamente tiene que ser de inteligencia artificial). También se dice que un Sistema Experto (SE) se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (información sobre el seguimiento de una acción).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;line-height: 1.5em; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 3.2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: none; &quot;&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Explicar sus razonamientos o base del conocimiento&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas, que a la vez se basan en hechos.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;u&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Adquisición de nuevos conocimientos o integrador del sistema&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Debido a esto, en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras, o al menos, realizar implementar software más seguro y estable. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en la web.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 22px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Un Sistema Experto está formado por:&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); &quot;&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Bases_de_conocimiento&quot; title=&quot;Bases de conocimiento&quot; class=&quot;mw-redirect&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Base de conocimientos&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; (BC): Contiene conocimiento modelado extraído del diálogo con un experto.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/w/index.php?title=Base_de_hechos&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Base de hechos (aún no redactado)&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Base de hechos&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; (Memoria de trabajo): contiene los hechos sobre un problema que se ha descubierto durante el análisis.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Motor de &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Inferencia&quot; title=&quot;Inferencia&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;inferencia&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;: Modela el proceso de razonamiento humano.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Módulos de justificación: Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusión.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Interfaz_de_usuario&quot; title=&quot;Interfaz de usuario&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Interfaz de usuario&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;: es la interacción entre el SE y el usuario, y se realiza mediante el lenguaje natural.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); width: auto; &quot;&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;Tipos_de_SE&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;i&gt;Tipos de SE&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Principalmente existen tres tipos de sistemas expertos:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); &quot;&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Sistemas_basados_en_reglas&quot; title=&quot;Sistemas basados en reglas&quot; class=&quot;mw-redirect&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Basados en reglas previamente establecidas&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Razonamiento_basado_en_casos&quot; title=&quot;Razonamiento basado en casos&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Basados en casos&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; o CBR (Case Based Reasoning).&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Basados en &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Red_bayesiana&quot; title=&quot;Red bayesiana&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;redes bayesianas&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;En cada uno de estos, la solución a un problema planteado se obtiene:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: url(http://bits.wikimedia.org/skins-1.5/vector/images/bullet-icon.png?1); &quot;&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Aplicando reglas &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Heur%C3%ADstica&quot; title=&quot;Heurística&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;heurísticas&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; apoyadas generalmente en &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/L%C3%B3gica_difusa&quot; title=&quot;Lógica difusa&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;lógica difusa&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; para su evaluación y aplicación.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Aplicando el razonamiento basado en casos, donde la solución a un problema similar planteado con anterioridad se adapta al nuevo problema.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;margin-bottom: 0.1em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Aplicando redes bayesianas, basadas en &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Estad%C3%ADstica&quot; title=&quot;Estadística&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;estadística&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; y el &lt;/span&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Teorema_de_Bayes&quot; title=&quot;Teorema de Bayes&quot; style=&quot;text-decoration: none; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;teorema de Bayes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 22px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 22px; font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, Times, serif; line-height: 18px; color: rgb(68, 85, 85); font-size: 14px; &quot;&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;b&gt;&lt;a name=&quot;VENTAJ&quot; id=&quot;VENTAJ&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;VENTAJAS&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Los Sistemas Expertos nos dan la &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;nobr id=&quot;epl_kw_cfa010f10016a577_43&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;capacidad&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/nobr&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; de trabajar con grandes cantidades de información, que son uno de los grandes problemas que enfrenta el analista humano que puede afectar negativamente a la &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos12/decis/decis.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;toma de decisiones&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; pues el analista humano puede depurar &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos11/basda/basda.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;datos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; que no considere relevantes, mientras un &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;SE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; debido a su gran &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos13/cinemat/cinemat2.shtml#TEORICO&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;velocidad&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; de proceso analiza toda la información incluyendo las no útiles para de esta manera aportar una decisión más sólida.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Ademas, permite manejar información y resolver problemas sin tener presente al &quot;Experto Humano&quot;, algo que  puede resultar muy costoso de tener.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;LIMITACIONES&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Es evidente que para &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;nobr id=&quot;epl_kw_cfa010f10016a577_44&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;actualizar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/nobr&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; se necesita de reprogramación de estos (tal vez este sea una de sus limitaciones más acentuadas) otra de sus limitaciones puede ser el elevado &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos7/coad/coad.shtml#costo&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;costo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; en &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos16/marx-y-dinero/marx-y-dinero.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;dinero&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; y &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos901/evolucion-historica-concepciones-tiempo/evolucion-historica-concepciones-tiempo.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;tiempo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;, además que estos programas son poco flexibles a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;nobr id=&quot;epl_kw_cfa010f10016a577_45&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;cambios&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/nobr&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; y de difícil acceso a información no estructurada. Su desarrollo inicial, sobre todo al armar la Base de Conocimientos, es muy alto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Debido a la &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos27/escasez/escasez.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;escasez&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; de expertos humanos en determinadas áreas, los &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;SE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; pueden almacenar su conocimiento para cuando sea necesario &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos35/el-poder/el-poder.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;poder&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; aplicarlo. Así mismo los &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;SE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; pueden ser utilizados por &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;nobr id=&quot;epl_kw_cfa010f10016a577_46&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;personas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/nobr&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; no especializadas para resolver problemas. Además si una &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.monografias.com/trabajos7/perde/perde.shtml&quot; id=&quot;autolink&quot; class=&quot;autolink&quot; style=&quot;text-decoration: none; border-bottom-width: 1px; border-bottom-color: rgb(51, 102, 0); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;persona&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; utiliza con frecuencia un &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;SE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;aprenderá de el.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Por otra parte la inteligencia artificial no ha podido desarrollar sistemas que sean capaces de resolver problemas de manera general, de aplicar el sentido común para resolver situaciones complejas ni de controlar situaciones ambiguas.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;El futuro de los &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;SE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; da vueltas por la cabeza de cada persona, siempre que el campo elegido tenga la necesidad y/o presencia de un experto para la obtención de cualquier tipo de beneficio. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 9px; margin-right: 0px; margin-bottom: 9px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;Nosotros aquí vamos a estudiar como integrar &lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Drools Expert &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;dentro de las aplicaciones de la Plataforma Java. Hasta la próxima entrada del blog!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/9201470817619217210/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/9201470817619217210' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/9201470817619217210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/9201470817619217210'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/09/sistemas-expertos-en-java-comenzando.html' title='Sistemas Expertos en Java - Comenzando...'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-2824858871852171835</id><published>2010-07-26T10:05:00.001-03:00</published><updated>2010-07-26T10:07:03.090-03:00</updated><title type='text'>COMPARACION: Java vs C#</title><content type='html'>&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Trebuchet MS&#39;, &#39;Lucida Grande&#39;, Arial, sans-serif; font-size: 13px; line-height: 20px; &quot;&gt;Muchas veces al enfermos de nuestras &quot;religiones&quot; opinamos sobre nuestras preferencias. A veces nos falta mirar objetivamente el horizonte para tomar alguna posición que vaya a beneficiar nuestro espacio de trabajo. Navegando por Internet obsesionado por el &quot;mito&quot; de que Java es lento, encontré este artículo que hace una &lt;a href=&quot;http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java&quot; title=&quot;comparacion c sharp versus java&quot; style=&quot;text-decoration: none; color: rgb(51, 102, 153); &quot;&gt;comparación sana de C# y Java&lt;/a&gt;. Hace hincapié tanto en el área técnica del lenguaje (comparaciones estructurales) como también en áreas más prácticas (comunidad, popularidad, mercado, etc). Está razonablemente al día ya que menciona algo que se comenta bastante sobre la versión 7 de Java que es la introducción de clausuras (estructura de lenguaje que permite pasar como parámetros funciones, algo similar a los famosos delegates de C#), sobre C# 3.0 (funciones lambda y SQL empotrado), etc. Vale la pena echarle una buena mirada. Para los neófitos de lenguajes de programación: hay un vocabulario enriquecido que puede usarse para aprender.  Espero comentarios!&lt;/span&gt;&lt;/div&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java&quot;&gt;http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/2824858871852171835/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/2824858871852171835' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/2824858871852171835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/2824858871852171835'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/07/comparacion-java-vs-c.html' title='COMPARACION: Java vs C#'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-4445310832041966215</id><published>2010-07-16T14:29:00.001-03:00</published><updated>2010-07-16T14:31:59.811-03:00</updated><title type='text'>Cursos actuales</title><content type='html'>&lt;div&gt;Gente, estos son los cursos actuales disponibles, junto con el link al plan de estudio:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1) JAVA BASICO: &lt;a href=&quot;http://www.ccirosario.org.ar/cursos/java_basico&quot;&gt;http://www.ccirosario.org.ar/cursos/java_basico&lt;/a&gt;&lt;div&gt;&lt;a href=&quot;http://www.ccirosario.org.ar/cursos/java_basico&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;2) JAVA INTERMEDIO (100% Practico!): &lt;a href=&quot;http://www.ccirosario.org.ar/cursos/java_medio&quot;&gt;http://www.ccirosario.org.ar/cursos/java_medio&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) JAVA WEB: &lt;a href=&quot;http://www.ccirosario.org.ar/cursos/java_web&quot;&gt;http://www.ccirosario.org.ar/cursos/java_web&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) DIPLOMATURA EN INFORMATICA: &lt;a href=&quot;http://www.ccirosario.org.ar/diplomaturas/diplomatura-informatica&quot;&gt;http://www.ccirosario.org.ar/diplomaturas/diplomatura-informatica&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;----------------------------------------------------------------------&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/4445310832041966215/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/4445310832041966215' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4445310832041966215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4445310832041966215'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/07/cursos-actuales.html' title='Cursos actuales'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2263519634282412925.post-4811870471377811214</id><published>2010-07-16T11:52:00.001-03:00</published><updated>2010-07-16T11:52:37.264-03:00</updated><title type='text'>Hello World!</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(51, 51, 51); line-height: 16px; font-family:&#39;Lucida Grande&#39;, Verdana, Arial, sans-serif;font-size:12px;&quot;&gt;&lt;p&gt;Bienvenidos al curso ‘Java Básico’ que se dicta en el Instituto de Capacitación perteneciente a la Asociación Gremial de Docentes de la Universidad Tecnológica Nacional (FAGDUT).Por medio de este blog realizare como docente un seguimiento y apoyo del curso a los alumnos. También vamos a intercambiar ideas, realizar consultas y encontraremos ‘post’ con las lecturas complementarias.&lt;span class=&quot;Apple-style-span&quot;   style=&quot;color: rgb(102, 102, 102);  line-height: 19px;  font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;font-size:12px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;strong&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;Programa:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 1&lt;/u&gt;: El modelo de objetos y el lenguaje Java : Se introduce el concepto de orientación a objetos y cómo se utiliza el mismo en el lenguaje Java. Se presenta el entorno de desarrollo Eclipse que se va a utilizar durante el dictado del curso. También se presenta “donde estamos” en relacion a la “Plataforma Java”&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 2:&lt;/u&gt; Programación en Java : Se presenta la sintaxis del lenguaje.&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 3&lt;/u&gt;: Manejo de Clases en Java : Se analiza la diferencia entre Clase y Tipo de Dato Primitivo. Punteros. Administración dinámica de la memoria. Se ven, en la práctica, los temas analizados en forma teórica en el capítulo 1.&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 4&lt;/u&gt;: Excepciones : Se explica qué es una excepción, la importancia de su tratamiento en una aplicación.&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 5&lt;/u&gt;: Entrada / salida: Se analiza la forma de poder leer y escribir usando Streams de entrada y de Salida, como ejemplo, se usa un archivo de acceso secuencial.&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;&lt;u&gt;Capítulo 6&lt;/u&gt;: Comunicaciones : Se analiza el concepto de comunicaciones usando el protocolo TCP/IP. Como ejemplo, se escribe una aplicación cliente/ servidor distribuida usando dicho protocolo.&lt;/span&gt;&lt;/p&gt;&lt;p  style=&quot;margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px;  font-weight: normal; line-height: 19px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size:1em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot; line-height: 19px;  font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;font-size:12px;&quot;&gt;&lt;u&gt;Capítulo 7&lt;/u&gt;: Threads (Hilos) : Se muestra la necesidad de incorporar multiprogramación para poder brindar atención simultanea a los clientes que arriban al servidor creado en el capítulo anterior y se analiza el uso de Threads en Java para poder resolver este problema.&lt;/span&gt;Recuerden que a lo largo del curso, que tiene una duración de 30hs distribuidas en 12 clases, vamos a ir agregando lecturas complementarias optativas.&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://capacitacionjava.blogspot.com/feeds/4811870471377811214/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2263519634282412925/4811870471377811214' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4811870471377811214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2263519634282412925/posts/default/4811870471377811214'/><link rel='alternate' type='text/html' href='http://capacitacionjava.blogspot.com/2010/07/hello-world.html' title='Hello World!'/><author><name>muchoandroid</name><uri>http://www.blogger.com/profile/03283745199429744571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>