<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SOA Suite &#8211; Oscar Blancarte &#8211; Software Architecture</title>
	<atom:link href="https://www.oscarblancarteblog.com/category/soa-suite/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.oscarblancarteblog.com</link>
	<description>Software Architect &#38; FullStack developer</description>
	<lastBuildDate>Tue, 22 Jul 2014 16:47:13 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.oscarblancarteblog.com/wp-content/uploads/2019/03/cropped-ob-32x32.png</url>
	<title>SOA Suite &#8211; Oscar Blancarte &#8211; Software Architecture</title>
	<link>https://www.oscarblancarteblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">89905023</site>	<item>
		<title>SOA Suite &#8211; Como usar el DataBase Adapter</title>
		<link>https://www.oscarblancarteblog.com/2014/07/22/soa-suite-como-usar-el-database-adapter-en-una-composicion-soa/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/22/soa-suite-como-usar-el-database-adapter-en-una-composicion-soa/#respond</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Tue, 22 Jul 2014 16:47:13 +0000</pubDate>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[bpel]]></category>
		<category><![CDATA[Data Base Adapter]]></category>
		<category><![CDATA[soa suite]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=167</guid>

					<description><![CDATA[En post pasados ya he hablado de que es una Composición SOA y de los Componentes que ofrece Oracle SOA Suite sin embargo es esta ocasión nos enfocaremos al DataBase Adapter para crear una composición la cual se conecte a una base de datos y guarde los datos de un registro de usuario. En este punto asumimos que ya [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>				<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite21.png"><img decoding="async" class="alignleft wp-image-188" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite21.png" alt="DataBase Adapter" width="207" height="100" /></a>En post pasados ya he hablado de que es una <a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/" target="_blank" rel="noopener noreferrer">Composición SOA</a> y de los <a href="https://www.oscarblancarteblog.com/2014/07/17/soa-suite-componentes-de-una-composicion-soa/" target="_blank" rel="noopener noreferrer">Componentes</a> que ofrece Oracle SOA Suite sin embargo es esta ocasión nos enfocaremos al DataBase Adapter para crear una composición la cual se conecte a una base de datos y guarde los datos de un registro de usuario.</p>
<p>En este punto asumimos que ya sabes como crear un proyecto SOA, configurar un <a href="https://www.oscarblancarteblog.com/2014/07/21/como-crear-un-datasource-en-weblogic/" target="_blank" rel="noopener noreferrer">Data Source</a> y un <a href="https://www.oscarblancarteblog.com/2014/07/21/como-crear-un-connection-pool-en-weblogic/" target="_blank" rel="noopener noreferrer">Connection Pool</a> desde la consola de WebLogic.<span id="more-167"></span></p>
<p>&nbsp;</p>
<p>Una vez creado nuestro proyecto SOA lo que sigue es crear un <a href="https://www.oscarblancarteblog.com/2014/07/16/que-es-un-schema-en-xml/" target="_blank" rel="noopener noreferrer">Schema</a> el cual contenga los tipos de datos que usaremos para el Request y Response de nuestro servicio el cual quedaría a sí.</p>
<p><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schema.png"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-172 size-full" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schema.png" alt="DataBase Adapter" width="343" height="557" /></a></p>
<p style="text-align: center;">fig.1: Muestra la estructura del schema necesario para crear el servicio de registro de usuarios.</p>
<p style="text-align: left;">Ya con el schema procedemos a crear un proceso <a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/" target="_blank" rel="noopener noreferrer">BPEL</a> con el schema anterior y configuramos para que quede de la siguiente manera:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpel2.png"><img decoding="async" class="aligncenter wp-image-173" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpel2.png" alt="DataBase Adapter" width="512" height="355" /></a></p>
<p style="text-align: center;">Fig.2: Muestra la configuración del BPEL con el Reques y Response del Schema anterior.</p>
<p style="text-align: left;">El paso siguiente es crear la tabla de USUARIOS en nuestra base de datos la cual deberá estar accesible con el usuario que usaremos en el registro del DataSource.</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/tablausuarios.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-176 size-full" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/tablausuarios.png" alt="DataBase Adapter" width="353" height="145" /></a></p>
<p style="text-align: left;">En este punto tendremos la Composición SOA de la siguiente manera:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite1.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-174" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite1.png" alt="DataBase Adapter" width="525" height="246" /></a></p>
<p style="text-align: center;">Fig.3: Estado de la Composición después de crear el proceso BPEL.</p>
<p style="text-align: left;">Lo que sigue a continuación es crear un DataBase Adapter para lo cual arrastramos el <strong>DataBase Adaper</strong> de la paleta a la sección de <strong>External References</strong> y nos saldrá el Wizzard y presionamos siguiente en la primera pantalla llevándonos a la siguiente pantalla:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard2.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-180" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard2.png" alt="DataBase Adapter" width="451" height="378" /></a></p>
<p style="text-align: left;">En esta pantalla solo podremos el nombre que le daremos al Adaptador dentro de Composite por lo que ponemos un nombre que lo identifique rápidamente y presionamos <strong>Next </strong>para continuar.</p>
<p style="text-align: left;"> La siguiente tendremos que definir la forma en que nos vamos a conectar a la base de datos para lo cual vamos a requerir dos conexiones distintas, la primera(Arriba) es una conexión diracta con la base de datos que se utilizara exclusivamente en tiempo de desarrolla, ya que sera necesaria para introspectar la base de datos y crear los Schemas necesarios para hacer la comunicación. En caso de no tener ninguna disponible tendremos que crear una nueva con el botón verde de +.</p>
<p style="text-align: left;">Una vez configurada nuestra conexión tendremos que configurar la segunda(Abajo) esta es exclusiva para tiempo de ejecución y tendremos que poner el nombre del JNDI de un Connection Pool (<a href="https://www.oscarblancarteblog.com/2014/07/21/como-crear-un-connection-pool-en-weblogic/" target="_blank" rel="noopener noreferrer">Como crear un Connection Pool</a>) registrado en WebLogic y presionamos <strong>Next</strong> para continuar.<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard3.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-181" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard3.png" alt="DataBase Adapter" width="509" height="427" /></a></p>
<p style="text-align: left;">En la siguiente pantalla tendremos que especificar el tipo de operaciones que realizaremos, En este caso como solo haremos Insert y Select seleccionamos las opciones siguientes y presionamos <strong>Next.<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard4.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-182" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard4.png" alt="DataBase Adapter" width="501" height="419" /></a></strong></p>
<p style="text-align: left;"> La siguiente pantalla es para seleccionar las tablas con las que estaremos trabajando por lo que el botón de <strong>Import Tables </strong>y seleccionamos la tabla de usuarios para continuar.</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard5.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-183" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard5.png" alt="DataBase Adapter" width="495" height="254" /></a></p>
<p style="text-align: left;">La siguiente pantalla es para realizar las asociaciones pero como no tenemos solo presionamos <strong>Next</strong>.</p>
<p style="text-align: left;">El wizzard nos dirigirá a la pantalla para seleccionar los campo con lo cuales podremos interactuar por lo que seleccionamos todos y continuamos.<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard7.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-184" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard7.png" alt="DataBase Adapter" width="512" height="432" /></a></p>
<p style="text-align: left;"> En el siguiente paso configuramos el Query del Select de la siguiente manera pues buscaremos al Usuario por medio de su nombre de usuario o correo.</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard8.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-185" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/dbadapterwizzard8.png" alt="DataBase Adapter" width="503" height="421" /></a>Finalmente presionamos Next en las dos siguientes pantalla para finalizar y tendremos el DBAdapter en nuestra composición.</p>
<p style="text-align: left;">El siguiente paso sera asociar el DBAdapter al BPEL como se muestra en la siguiente imagen:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite21.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-188" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite21.png" alt="DataBase Adapter" width="500" height="247" /></a></p>
<p style="text-align: left;">En este punto la composición SOA ya esta lista pero faltara programar el BPEL para que realice las operaciones necesaria para registrar al usuario.</p>
<p style="text-align: left;">En este caso la lógica del BPEL sera la siguiente, Cuando llega una solicitud validara que el nombre de usuario no exista consultando la tabla por medio del nombre de usuario, si no existe registrara al usuario y regresara el código &#8216;000&#8217; y la leyenda &#8216;Registro Exitoso&#8217;, en caso de que el usuario ya exista regresaremos el error &#8216;111&#8217; y la leyenda &#8216;Usuario existente&#8217; y finalizara.</p>
<p style="text-align: left;"><strong>DESARROLLO DEL BPEL</strong></p>
<p style="text-align: left;">Primero que nada abrimos el BPEL dando doble click sobre el, esto nos llevara al editor y veremos lo siguiente en pantalla:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel1.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-189" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel1.png" alt="DataBase Adapter" width="465" height="281" /></a>Si prestamos atención en la imagen veremos en rojo el DBAdapter que configuramos hace un momento como un PartnerLink lo cual indica que todo va bien hasta ahorita.</p>
<p style="text-align: left;">El siguiente paso sera crear una actividad Invoke de la siguiente manera:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel21.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-191" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel21.png" alt="DataBase Adapter" width="524" height="297" /></a>En esta pantalla tendremos que definir primero que nada el nombre de la actividad en en el campo <strong>Name</strong>, después seleccionar el PartnerLink que deseamos invocar y tener cuidad de seleccionar la Operación de Select, Otro paso importante es crear la variables Input y Output de la parte de abajo y ponerles el nombre <strong>QueryUserInputVariable</strong> y <strong>QueryUserOutputVariable</strong> para finalizar.</p>
<p style="text-align: left;">Seguido creamos un actividad Assign para asignar los valores de entrada(InputVariable) a la variable de entrada del servicio (<strong>QueryUserInputVariable</strong>) para lo cual aremos la siguiente asignación:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assign.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-193" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assign.png" alt="DataBase Adapter" width="493" height="309" /></a></p>
<p style="text-align: left;">El BPEL nos quedara de la siguiente manera:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel3.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-194" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel3.png" alt="DataBase Adapter" width="520" height="311" /></a>En este momento la variable QueryUserOutputVariable contendrá los resultados de la invocación del servicio por lo que tendremos que validar si encontró resultados mediante una actividad IF debajo del la actividad Invoke y la configuraremos de la siguiente manera:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel4.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-195 size-full" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel4.png" alt="DataBase Adapter" width="422" height="397" /></a>En este IF contamos los nodos del resultado, si es mayor que cero entonces quiere decir que el usuario ya existe y tendremos que regresar el error. Por lo cual agregamos una actividad Assign y un Reply quedando el IF de la siguiente manera:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel5.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-197" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel5.png" alt="DataBase Adapter" width="425" height="309" /></a></p>
<p style="text-align: left;">La actividad <strong>ErrorAssign</strong> lo configuramos de la siguiente manera:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel6.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-198" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel6.png" alt="DataBase Adapter" width="530" height="333" /></a></p>
<p style="text-align: left;">La actividad <strong>ErrorReply </strong>la configuramos de la siguiente manera:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel7.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-200" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel7.png" alt="DataBase Adapter" width="531" height="305" /></a>Con esto lograremos que el BPEL regrese el error al detectar que ya existe el usuario.</p>
<p style="text-align: left;">El siguiente paso sera crear otra actividad Invoke para el mismo PartnerLink pero esta vez para la operación de Insert y definiremos las variables de entrada(InsertUsuarioInputVariable).</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel8.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-201" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel8.png" alt="DataBase Adapter" width="505" height="531" /></a></p>
<p style="text-align: left;">Creamos una actividad Assign para asignar los valores de la variable <strong>InsertUsuarioInputVariable </strong>para que quede de la siguiente manera:<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel9.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-203 size-full" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpel9.png" alt="DataBase Adapter" width="660" height="411" /></a></p>
<p style="text-align: left;">Finalmente con un assign modificamos la variable OutputVariable para regresar el código 000 y la leyenda Registro Exitoso.</p>
<p style="text-align: left;">y el BPEL quedara de la siguiente manera:</p>
<p style="text-align: left;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelfinal.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-204 size-full" title="DataBase Adapter" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelfinal.png" alt="DataBase Adapter" width="317" height="451" /></a></p>
<p style="text-align: left;">Solo nos queda deployar y probar el servicio.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/22/soa-suite-como-usar-el-database-adapter-en-una-composicion-soa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">167</post-id>	</item>
		<item>
		<title>Que es la Virtualización de Servicios</title>
		<link>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Fri, 18 Jul 2014 15:58:01 +0000</pubDate>
				<category><![CDATA[ESB]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[enterprice service bus]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[osb]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[servicio]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[virtualización]]></category>
		<category><![CDATA[webservice]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=97</guid>

					<description><![CDATA[Para los que ya tenemos mas experiencia en la arquitectura SOA y comprendemos perfectamente que es un Enterprise Service Bus este tema las ha de parecer muy simple pero para todos aquellos que no han tenido la oportunidad de adentrarse a los obscuros territorios de lo que es SOA les tengo buenas noticias pues en [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Para los que ya tenemos mas experiencia en la arquitectura SOA y comprendemos perfectamente que es un Enterprise Service Bus este tema las ha de parecer muy simple pero para todos aquellos que no han tenido la oportunidad de adentrarse a los obscuros territorios de lo que es SOA les tengo buenas noticias pues en esta Entrada hablaremos que es la virtualización.</p>
<p style="text-align: justify;">Para empezar virtualizar viene de la palabra virtual como cuando hablamos de maquinas virtuales, pues esto es algo parecido pues un servicio virtual no es mas que una mascara que lo único que hace es <span id="more-97"></span>exponer un WebService que por dentro hace la llamada a otro u otros WebServices para dar una funcionalidad nuevo o extendida.</p>
<p style="text-align: justify;"><em>Imaginemos que estamos desarrollando una aplicación móvil para una empresa la cual dentro de sus sistemas ya tiene un conjunto de webservices desarrollados para las principales tareas que realiza, sin embargo hasta el momento no tiene ningún desarrollo para móviles y le preocupa la seguridad ya que al exponer sus webservices tema que alguna persona mal intencionada pueda entrar y hacer algún mal.</em></p>
<p style="text-align: justify;"><em>Por lo que desarrollo un WebService para que el usuario se Autentifique cuando entre a la aplicación, sin embargo eso no es todo, también requiere que cuando el usuario realice alguna acción se validen sus privilegios para denegar cualquier acción no permita para ese usuario.</em></p>
<p style="text-align: justify;"><em>Otro punto importante es que el cliente quiere que cuando una persona intente hacer una acción no autorizada o falle en el Login se registre tal acción para poder auditar y detectar situaciones sospechosas.</em></p>
<p style="text-align: justify;">El cliente nos brinda los siguientes WebServices con los que debemos diseñar nuestra aplicación:</p>
<pre style="text-align: justify;"><strong>SecurityService  </strong><em>//WebServices que expone el sistema de seguridad centralizado.</em></pre>
<ul style="text-align: justify;">
<li><strong>login(usuario, password) : boolean: </strong>Operación que autentifica al usuario y nos dice indica si el login fue exitoso o no.</li>
<li><strong>autorization(usuario,password, accion ):boolean: </strong>Operación que nos indica si un usuario tiene privilegios para realizar una acción determinada, El parámetro acción representa el ID de la operación a ejecutar.</li>
</ul>
<pre><strong>AuditService </strong>//WebService que expone el sistema de Auditoria Informática</pre>
<ul style="text-align: justify;">
<li><strong>intentoAccion(usuario, accion, DateTime, autorizationResult): void: </strong>Operación que registra cuando una acción es solicitada</li>
</ul>
<pre><strong>ClienteService </strong>//WebService para consultar los datos del cliente</pre>
<ul style="text-align: justify;">
<li><strong>consultaDatosPersonales(idCliente):</strong> <strong>Cliente: </strong>Operación que regresa los datos básicos del cliente como nombre,apellido, sexo, CURP, etc.</li>
<li><strong> consultaSaldo(idCliente): double: </strong>Operación que regresa el saldo del cliente</li>
</ul>
<h1 style="text-align: justify;"><strong>Desarrollando la solución</strong></h1>
<p style="text-align: justify;">Imaginemos que la aplicación lo único que hace es consultar los datos del cliente y su saldo sin embargo no todos los usuarios pueden saber el saldo de un cliente por lo que el servicio se separa y se consulta de forma independiente.</p>
<p style="text-align: justify;">Lo primero que se nos ocurre es hacer una pantalla de login y autenticarnos con el servicio de login pasandole el nombre de usuario y password. Si el login se realiza correctamente entramos a la aplicación, sin embargo el cliente quiere que cuando un login falle o se de correctamente notifiquemos el evento al departamento de Auditoria mediante la operación de <strong>intentoAccion</strong> y pesarla el ID de la operación Login y la fecha y hora del intento.</p>
<p style="text-align: justify;">Esto desde luego nos implicaría dos llamadas a Webservices, uno para Login y otro para Auditoria:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/loginnovirtual.png"><img loading="lazy" decoding="async" class="aligncenter  wp-image-101" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/loginnovirtual.png" alt="LoginNoVirtual" width="555" height="347" /></a></p>
<p style="text-align: justify;"> Fig.1: Muestra la comunicación con los dos webservices de forma separada.</p>
<p style="text-align: justify;">Para la pantalla de datos del cliente tendríamos que implementar nuevamente un sistema de llamadas donde primero verificaríamos si tenemos privilegios para leer los datos del cliente con el webservices de autorizacion, de darse los privilegios entonces se consulta el Webservices de <strong>consultaDatosPerosnales</strong>, seguido de consultar los privilegios para autorizar al usuario para leer el saldo del cliente y consultar el servicio de  <strong>consultaSaldo. </strong>Nuevamente si alguna autorización falla es requerido notificar al departamento de Auditoria mediante el Webservices <strong>intentoAccion. </strong>Este esquema quedaría algo a sí.</p>
<p style="text-align: justify;"> <a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientnovirtual.png"><img loading="lazy" decoding="async" class="aligncenter  wp-image-103" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientnovirtual.png" alt="ConsultaClientNoVirtual" width="555" height="397" /></a></p>
<p style="text-align: justify;"> Fig.2: Fugura que muestra el número de acción a realizar solo para completar la consulta de los datos del cliente y saldo.</p>
<p style="text-align: justify;"><strong>Un esquema con Virtualización:</strong></p>
<p style="text-align: justify;">Una vez que examinamos como tendríamos que desarrollar una aplicación sin virtualización podemos empezar a examinar el esquema con virtualización.</p>
<p style="text-align: justify;">La primera acción que deberíamos hacer es crear un proxy que cumpla casi exactamente con el contrato(WSDL) que sirve como punto de entrada a nuestra aplicación pero que ademas de esto le estaríamos pasando los datos de autenticación y autorización en el Header del mensaje SOAP de tal forma que el proxy tomara el header lo enviara al servicio de <strong>autorization </strong>en caso de autorización continuara con la llamada al servicio de <strong>consultaDatosPerosnales </strong>y regresara el resultado.Pero en caso de haber fallado la autorización llamaría al servicio de Auditoria y regresaría un Throw para indicar que el servicio ha fallado por seguridad.</p>
<p style="text-align: justify;">La aplicación se viera de esta manera para el escenario de consulta de datos del suscriptor:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientevirtual.png"><img loading="lazy" decoding="async" class="aligncenter  wp-image-104" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/consultaclientevirtual.png" alt="ConsultaClienteVirtual" width="568" height="427" /></a></p>
<p style="text-align: justify;">Fig.3: Escenario con virtualización</p>
<p style="text-align: justify;">Si nos damos cuenta en este escenario ya solo tenemos una invocación a un único servicio el cual se encarga de realizar las operaciones previas a la consulta de los datos del cliente y también notificar al departamento de Auditoria en caso de haber fallado la autorización.</p>
<p style="text-align: justify;">Este enfoque tiene las siguientes ventajas:</p>
<ul>
<li>Se reduce el numero de llamadas al servidor</li>
<li>Aumentan los tiempos de respuesta</li>
<li>Las operaciones se realizan desde la misma infraestructura del cliente por lo que la seguridad es mucho mejor.</li>
<li>El implementar un Enterprice Service Bus nos da la cualidad de poder medir el performance (KPI o Key Performance Indicator).</li>
<li>Definir los acuerdos de nivel de servicio o SLA.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/18/que-es-la-virtualizacion-de-servicios/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">97</post-id>	</item>
		<item>
		<title>SOA Suite &#8211; Componentes de una Composición SOA</title>
		<link>https://www.oscarblancarteblog.com/2014/07/17/soa-suite-componentes-de-una-composicion-soa/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/17/soa-suite-componentes-de-una-composicion-soa/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Thu, 17 Jul 2014 21:03:07 +0000</pubDate>
				<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[soa suite]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=95</guid>

					<description><![CDATA[En una entrada pasada ya hable acerca de lo que es una Composición SOA por lo que les dejo de nuevo el link por si quieren leerlo antes de empezar a ver los diferentes componentes que Oracle SOA Suite nos proporciona Componentes de una Composición SOA: Service Component HumanTask: Cuando automatizamos proceso por medio de BPEL [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">En una entrada pasada ya hable acerca de lo que es una <a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/">Composición SOA</a> por lo que les dejo de nuevo el link por si quieren leerlo antes de empezar a ver los diferentes componentes que Oracle SOA Suite nos proporciona</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>Componentes de una Composición SOA:</strong><span id="more-95"></span></p>
<p style="text-align: justify;"><strong>Service Component</strong></p>
<ul style="text-align: justify;">
<li><strong>HumanTask: </strong>Cuando automatizamos proceso por medio de BPEL o BPM llega el momento en que la computadora no es capaz de tomar una decisión por si mismo por lo que requiere de la intervención de un Humano para que toma la decisión mas apropiada y a si continuar con el resto del flujo. Estas decisiones se hacen mediante HumanTask las cuales son mini-aplicaciones ADF que son desplegadas en el portal WorkList de la SOA Suite.</li>
</ul>
<ul style="text-align: justify;">
<li><strong>Business Rule: </strong>Este componente sirve para exponer reglas de negocio re-utilizables que pueden ser modificadas sin necesidad de desplegar nuevamente. En una Business Rule podemos definir funciones que ayuden a hacer cálculos o tomar sediciones de una forma mas inteligente, También nos da la posibilidad de crear Tablas de sección las cuales arrojan un resultado mediante la evaluación de reglas cruzadas.</li>
<li><strong>BPEL Process: </strong>Los BPEL estan diseñados para orquestar servios y realizar integraciones de forma automática con la menor interacción humana. Ya tengo una Entrada en la cual hablo mucho mas a detalle de lo <a href="https://www.oscarblancarteblog.com/2014/07/15/que-es-bpel/">que es un BPEL</a> y también hablo de <a href="https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/">como crear un BPEL</a>.</li>
<li><strong>Mediator:</strong> Los mediator están diseñados para mediar entre un component y otro, es decir nos ayuda a convertir el formato de salida de un servicio en la entrada de otro, pero también nos sirve para inyectar nuevos parámetros.</li>
<li><strong>Spring Context: </strong>Para los ya familiarizados con este potente framework se le hará muy simple comprender su funcionalidad pero para lo que no les podría comentar que este componte nos sirve para tener una interacción mas directa con Java ya que a través de este componente es posible ejecutar clases java para hacer funcionalidad muy especificas que con BPEL serie imposible o muy difícil de realizar.</li>
<li></li>
</ul>
<p style="text-align: justify;"><strong>Service Adapter</strong></p>
<ul>
<li><strong>B2B Adapter: </strong>Este es un adaptador especifico para comunicarnos con la plataforma de B2B de Oracle SOA Suite por medio de una cola de mensajes JMS</li>
<li><strong>BAM Adapter: </strong>Este adaptador nos permite comunicarnos con Business Activity Monitor(BAM) una plataforma de monitorio en tiempo real.</li>
<li><strong>Data Base Adapter: </strong>Adaptador que nos permite interactuar con una base de datos determinada, Esta comunicación se hacer siempre a través de un Pool de conexiones que se tiene que configurar desde la consola de WebLogc y que es accedida por medio del JNDI.</li>
<li><strong>Direct Binding Adapter: </strong>Este es un adaptador que nos permite comunicarnos con nuestros recursos a a través del protocolo propietario de Oracle llamado t3 el cual tiene la ventaja que es mucho mas directo y que ayuda al performance.</li>
<li><strong>EJB Services: </strong>Adaptador que nos ayuda a comunicarnos por medio de EJB los cuales son parte del JavaEE.</li>
<li><strong>File Adapter:  </strong>Este adaptador esta diseñado para interactuar con sistemas de archivos o servidores FTP/SFTP y nos permite hacer operaciones de lectura, escritura y borrado.</li>
<li><strong>HTTP Binding: </strong>Este componente nos permite leer o enviar cualquier tipo dato a través de una conexión HTTP.</li>
<li><strong>JMS Adapter: </strong>Adaptador que nos permite recuperar y encolar mensajes en una Cola(Queue) JMS. Les comparto una entrada que habla de las <a href="https://www.oscarblancarteblog.com/2014/07/15/jms-en-las-integraciones/">Colas JMS</a>.</li>
<li><strong>Web Services: </strong>Uno de los mas usados y sirve para exponer un webservice o comunicarse con algún WebService externo.</li>
<li><strong>MQ Adapter: </strong>Bastante parecido al JMS Adapter pero este sirve para comunicarse con el proveedor MQ que le pertenece a IBM, Aun que al final sigue las especificaciones de JMS.</li>
</ul>
<p>&nbsp;</p>
<p>Por lo pronto lo dejo hasta aquí, mas adelante estaré publicando entradas para cada componente.		</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/17/soa-suite-componentes-de-una-composicion-soa/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">95</post-id>	</item>
		<item>
		<title>Oracle SOA Suite &#8211; Como crear un BPEL</title>
		<link>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Wed, 16 Jul 2014 22:21:14 +0000</pubDate>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[bpel]]></category>
		<category><![CDATA[soa]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=49</guid>

					<description><![CDATA[Una vez mas les quiero compartir pequeño Post donde les enseñare a crear un BPEL muy siempre el cual lo único que hace es sumar dos numero y regresar el resultado, quizás no sea gran cosa pero si apenas estas aprendiendo este es un ejemplo bastante simple que te puede ayudar a comprender mejor la [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Una vez mas les quiero compartir pequeño Post donde les enseñare a crear un BPEL muy siempre el cual lo único que hace es sumar dos numero y regresar el resultado, quizás no sea gran cosa pero si apenas estas aprendiendo este es un ejemplo bastante simple que te puede ayudar a comprender mejor la forma de desarrollar un BPEL con Oracle SOA Suite.<span id="more-49"></span></p>
<p style="text-align: justify;"><strong>Paso 1: Crear una proyecto SOA.</strong></p>
<p style="text-align: justify;">Entraremos a JDeveloper y daremos click en File/New/SOA Project y nos saldrá la pantalla siguiente, Solo cambiamos el nombre del proyecto a &#8220;Calculadora&#8221; y damos Next en las dos pantallas.</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createsoaproject.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-45" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createsoaproject.png" alt="CreateSOAProject" width="542" height="409" /></a> <a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createsoaproject2.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-46" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createsoaproject2.png" alt="CreateSOAProject2" width="546" height="413" /></a></p>
<p style="text-align: justify;">En este punto ya habrás creado una SOA Project y te abrirá la pantalla del Composite, de no ser a podemos abrirlo desde el archivo composite.xml que se genera en la estructura del proyecto:</p>
<p style="text-align: justify;"><strong>Paso 3: Crear los tipos de datos en un Schema</strong></p>
<p style="text-align: justify;">El siguiente paso es clave ya que es indispensable definir los tipos de datos que recibirá y responderá nuestro servicio para lo cual crearemos un Schema de la siguiente manera File/New/XML Schema asegurándonos que la pestaña All Technologies este seleccionada.</p>
<p style="text-align: justify;"> <a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/newschema.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-50" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/newschema.png" alt="NewSchema" width="539" height="389" /></a></p>
<p style="text-align: justify;"> En la siguiente pantalla solo cambiamos el nombre del archivo a &#8220;Calculadora.xsd&#8221; y continuamos.</p>
<p style="text-align: justify;">Continuaremos con crear los tipos de tal forma que nuestro Schema quede de la siguiente manera:</p>
<p style="text-align: justify;"><strong>NOTA: En la siguiente entrada explico mas a detalle <a href="https://www.oscarblancarteblog.com/category/xsd/">como crear un Schema</a></strong></p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schematypes.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-51" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schematypes.png" alt="SchemaTypes" width="383" height="378" /></a></p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schematypessource.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-52" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/schematypessource.png" alt="SchemaTypesSource" width="586" height="243" /></a></p>
<p style="text-align: justify;"><strong>Paso 3: Crear un BPEL</strong></p>
<p style="text-align: justify;"> Con el Schema creado ya podemos crear un BPEL que reciba SumaRequestType y que tenga como resultado un SumaResponseType</p>
<p style="text-align: justify;">Abriremos el archivo composite.xml que se crea con el proyecto en el cual daremos click derecho en la sección del medio &#8220;Components&#8221; y seleccionamos Insert/BPEL Process como se muestra en la siguiente figura.</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-48" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpel1.png" alt="CreateBPEL" width="536" height="301" /></p>
<p style="text-align: justify;"> Nos deberá aparecer una pantalla como la siguiente y pondremos los datos como aparecen:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpelandwsdl.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-54" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpelandwsdl.png" alt="CreateBPELandWSDL" width="559" height="294" /></a></p>
<p style="text-align: justify;">Seleccionamos la opción de BPEL 2.0, Cambiamos el nombre a CalculadoraProcess, En NameSpace podemos poner lo que mas nos agrade no es necesario dejarlo igual, En Temple seleccionamos Synchronous BPEL Process para que sea un servicio con entrada y respuesta y finalmente en Input y Output seleccionamos los tipos que definimos en el Schema del paso 2. Seleccionar los correctamente los Input y Output es un paso clave ya que definen los tipos que se utilizaran como parámetro de entrada y salida de nuestro servicio. Finalmente presionamos OK y tendremos creado en BPEL que se mirara a sí:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpelfinish.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-56" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/createbpelfinish.png" alt="CreateBPELFinish" width="537" height="330" /></a></p>
<p style="text-align: justify;">En el centro tenemos el BPEL(Azul) el cual lo creamos en el paso anterior, Del lado izquierdo tenemos expuesto un WebService que para los parámetros<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/newbpel.png"><br />
</a> al BPEL y de igual forma regresara al consumidor el resultado del BPEL, Entre medio de los dos tenemos una linea que indica que el WebService y el BPEL están conectados por lo que la información fluirá entre los dos.</p>
<p style="text-align: justify;">Ya con el BPEL creaso solo faltara programar el BPEL para que realice el calculo de la suma para lo cual daremos doble click sobre el BPEL para abrir el editor y nos dirigirá a la siguiente pantalla:</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-57" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/newbpel.png" alt="NewBPEL" width="533" height="302" /></p>
<p style="text-align: justify;">La imagen anterior nos muestra la forma mas simple del BPEL el cual solo tiene dos actividades receiveInput que solo recibe los parámetros de entrada en la variable llamada &#8220;InputVariable&#8221; y la actividad replyOutput las cual regresa el resultado del BPEL en la variable &#8220;OutputVariable&#8221;. Ambas variables son creadas de forma automática y corresponden con los tipos definidos en el Schema (SumaRequestType y SumaResponseType).</p>
<p style="text-align: justify;">El siguiente paso consiste en sumar los dos valores y ponerlos en la variable OutputVariable para que BPEL regrese el resultado al terminar. Para esto tendremos que crear una actividad llamada Assign la cual se encuentra en la paleta de componentes del lado  Derecho:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelassignresponse.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-59" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelassignresponse.png" alt="BPELAssignResponse" width="531" height="242" /></a></p>
<p style="text-align: justify;">Presionamos sobre &#8220;Assign&#8221; y sin soltar arrastramos hasta colocarlo en medio de las dos actividades existentes y le ponemos el nombre de SumaAssign quedando como se muestra en la figura anterior.</p>
<p style="text-align: justify;">La actividad Assign sirve para asignar valores a cualquier variable que tengamos en el BPEL por lo cual daremos doble click sobre la actividad Assign:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelassignresponse1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-61" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/bpelassignresponse1.png" alt="BPELAssignResponse" width="660" height="413" /></a><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assignresponsestep1.png"><br />
</a>Veremos la pantalla anterior la cual esta dividida en tres secciones:</p>
<ul style="text-align: justify;">
<li><strong>Izquierda: </strong>De esta parte tomaremos los valores para hacer las asignaciones</li>
<li><strong>Derecho: </strong>En esta sección ponemos los valores asignados mediante la sección de la izquierda.</li>
<li><strong>Abajo: </strong>Aquí solo se en listan las asignaciones que vamos haciendo.</li>
</ul>
<p style="text-align: justify;">Para sumar los dos valores necesitaremos mas de un campo por lo que tendremos que hacer una formula arrastrando la calculadora hasta el nodo llamado result:</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assignresponsestep2.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-62" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assignresponsestep2.png" alt="AssignResponseStep2" width="557" height="448" /></a>En la pantalla siguiente solo seleccionamos el nodo num1 para que se coloque arriba agregamos el operador &#8220;+&#8221; y hacemos lo mismo para el num2, Con esto ya tenemos lista la formula y damos ok.<a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assignresponsestep3.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-63" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/assignresponsestep3.png" alt="AssignResponseStep3" width="545" height="357" /></a></p>
<p style="text-align: justify;">Finalmente tendremos la asignación en la parte de abajo y presionamos OK para finalizar la asignación.</p>
<p style="text-align: justify;">Guardamos los cambios del proyecto y nuestro BPEL esta listo para deployarse</p>
<p style="text-align: justify;"><strong>Paso 4: Deploy</strong></p>
<p style="text-align: justify;">Para hacer el deploy tendremos que tener corriendo una instancia de WebLogic con la SOA Suite instalada y seguir los siguientes pasos.</p>
<p style="text-align: justify;">Sobre el proyecto hacemos click derecho y precionamos /Deploy/Composite&#8230; y nos saldrá una pantalla nueva. Seleccionamos Deploy to Aplicaction server/Next en la pantalla siguiente Next sin hacer ningún cambio, en la siguiente pantalla seleccionamos el servidor al que queremos hacer deploy o damos de alta uno nuevo en caso de no tener ninguno registrado, En la siguiente pantalla solo seleccionamos next, y finish.</p>
<p style="text-align: justify;">Con estos pasos tendremos la composicion SOA y el BPEL deployados y ya solo faltara hacer una prueba con algún cliente de WebServices como soapUI o la consola de Weblogic.</p>
<p style="text-align: justify;"><strong>Paso 5: Prueba</strong></p>
<p style="text-align: justify;">Para obtener la URL del webservice nos vamos al portal EnterpriceManager el cual esta en la url</p>
<p style="text-align: justify;">http://localhost:7001/em en caso de no estar instalado el weblogic en la misma maquina cambiar localhost por la IP.</p>
<p style="text-align: justify;">Una vez autenticados del lado izquierdo entramos a la ruta /SOA/soa-infra/default/Calculadora</p>
<p style="text-align: justify;">nos abrirá un dashboard solo de la composición y en ella veremos un icono con un mondo y una pieza de rompecabeza, damos click y aparecera una url que termina en ?wsdl esa la copiamos y la usamos en cualquier cliente para consumir webservices.</p>
<p style="text-align: justify;"><strong>NOTA: Mas adelante publicare como instalar JDeveloper, WebLogic, SOA Suite y OSB.. </strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-como-crear-un-bpel/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">49</post-id>	</item>
		<item>
		<title>Oracle SOA Suite &#8211; Que es un Composite</title>
		<link>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/</link>
					<comments>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/#comments</comments>
		
		<dc:creator><![CDATA[oblancarte]]></dc:creator>
		<pubDate>Wed, 16 Jul 2014 18:15:20 +0000</pubDate>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA Suite]]></category>
		<category><![CDATA[bpel]]></category>
		<category><![CDATA[composite]]></category>
		<category><![CDATA[soa]]></category>
		<guid isPermaLink="false">http://javamex.wordpress.com/?p=42</guid>

					<description><![CDATA[Esta pequeña explicación va dirigida a todas las personas que están interesadas en comprender un poco del mundo de SOA enfocado a la SOA Suite de Oracle la cual es una de las plataformas lideres del mercado. Hoy en día los sistemas de información generan una gran cantidad de información mediante la operación del día [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Esta pequeña explicación va dirigida a todas las personas que están interesadas en comprender un poco del mundo de SOA enfocado a la SOA Suite de Oracle la cual es una de las plataformas lideres del mercado.</p>
<p style="text-align: justify;">Hoy en día los sistemas de información generan una gran cantidad de información mediante la operación del día a día. Estos sistemas generalmente están comunicados con otros sistemas o módulos para compartir o extraer información.  Esta comunicación entre sistemas es llamado &#8220;Integraciones&#8221; y son muy importantes ya que de no existir <span id="more-42"></span>los sistemas no se podrían comunicar y se generaría un caos.</p>
<p style="text-align: justify;"><strong>Un ejemplo claro de integración:</strong></p>
<p style="text-align: justify;">Imagínate un sistema de punto de venta en donde se capturan las ventas diarias, se cobra y se consulta inventario. El punto de venta cada vez que realiza una venta tiene que descontar del almacén las unidades vendidas las cuales el Sistema de Almacén resta y lleva la cuenta para hacer los pedidos cuando la existencia esta bajando. Por otra parte las vendedoras consultan el inventario para saber si algún producto lo aun lo tiene en existencia y poder dar cotizaciones a los clientes.</p>
<p style="text-align: justify;">Al finalizar el día todas las ventas se van al sistema de contabilidad para hacer las pólizas contables.</p>
<p style="text-align: justify;">Si nos damos cuenta el sistema de ventas necesita una &#8220;Integración&#8221; constante con el sistema de Almacén ya que desde allí consulta la existencia pero también la modifica cuando venden.</p>
<p style="text-align: justify;">Al final del día el sistema se tiene que &#8220;Integrar&#8221; con el sistema de contabilidad para realizar las pólizas.</p>
<p style="text-align: justify;">Hora imaginemos que estas integraciones no existieran!!, Te imaginas como se pudiera operar si esta comunicación con los sistemas no se pudiera dar o no fuera eficiente?</p>
<p style="text-align: justify;"><strong>SOA Composite</strong></p>
<p style="text-align: justify;">Bien un composite es donde diseñamos a un alto nivel la integración o Integraciones las cuales serán expuestas como servicios para que los sistemas los consuman y logren la integración.</p>
<p style="text-align: justify;">Una composición SOA se divide en tres secciones:</p>
<ul style="text-align: justify;">
<li><strong>Exposed Services: </strong>En esta sección describimos la forma en que expondremos los servicios ante los consumidores(Aplicaciones), esta sección podemos exponer WebServices, EJB, Servicios HTTP, Sockets los cuales sirven para que los clientes puedan iniciar la integración bajo demanda, pero también existen métodos que hacen que muestra integración se ejecutaba bajo algún evento en especial como por ejemplo, Colas de mensaje(Queue) JMS, Base de datos(Poolling), B2B. En resumen esta sección representa la entrada de la integración y el inicio de su ejecución.</li>
<li><strong>External References:</strong> En esta sección ponemos los servicios externos que requeriremos para que nuestra integración se pueda realizar. Aquí podemos poner WebServices, Base de datos, HTTP, Colas de mensaje, B2B,etc.</li>
<li><strong>Components: </strong>Aquí es donde se programa las acciones a seguir para que nuestra integración realice lo que esperamos, A qui podemos poner BPEL, Human Task, Business Rules,BPM las cuales son componentes diseñados para atacar diferentes problemáticas.</li>
</ul>
<p style="text-align: justify;">Un composite para la integración del sistema de punto de ventas y almacén se vería algo a sí</p>
<p style="text-align: justify;"><a href="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-41" src="http://www.oscarblancarteblog.com/wp-content/uploads/2014/07/composite.png" alt="Composite" width="570" height="247" /></a></p>
<p style="text-align: justify;">Fig.1: Composite para integrar Punto de venta con Almacén.</p>
<p style="text-align: justify;">En la figura anterior podemos ver que tenemos dos servicios del lado izquierdo los cuales representa los servicios que estamos exponiendo para ser consumidos por el Punto de venta.</p>
<p style="text-align: justify;">En medio vemos dos BPEL(En Azul) los cuales se encargan de Orquestar las acciones necesarias para realizar la operación deseada.</p>
<p style="text-align: justify;">Y del lado derecho tenemos el WebService que expone el almacén, el cual tiene las operaciones consultaExistencia y actualizarExistencia necesarias para realizar la integración.</p>
<p style="text-align: justify;">Por ultimo les dejo esta liga donde donde podrán encontrar mucha mas información de lo que es un Composite</p>
<p style="text-align: justify;">http://docs.oracle.com/cd/E14571_01/integration.1111/e10223/arch_02.htm</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.oscarblancarteblog.com/2014/07/16/oracle-soa-suite-que-es-un-composite/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">42</post-id>	</item>
	</channel>
</rss>
