Aplicaciones SOA con XUL y OpenESB

  • Enlace amigable (slug) de la revisión: Project:Aplicaciones_SOA_con_XUL_y_OpenESB
  • Título de la revisión: Aplicaciones SOA con XUL y OpenESB
  • Id de la revisión: 52649
  • Creada:
  • Creador: Maharba
  • ¿Es la revisión actual? No
  • Comentario one or more formatting changes

Contenido de la revisión

Llevando la tecnología mozilla al infinito y más allá, este artículo describe como desarrollar aplicaciones distribuidas (SOA) con Firefox o xulrunner y OpenESB, los arquitectos de soluciones encontrarán una guía para hacer aplicaciones distribuidas que tendrán el performance de una aplicación de escritorio y una interfaz más rica y personalizable de lo que puede ser por ejemplo swing, aspectos en que resulta muy superior; verán que el tiempo requerido para desarrollo en esta arquitectura es mucho menor a la mayoría de lo conocido, si piensas que tiempo es dinero llegaste al lugar indicado. A los desarrolladores conocedores de mozilla, podrán ver un nuevo mundo de posibilidades.

Necesitamos algunas herramientas para este desarrollo:

XULRunner que puede ser descargado desde: http://releases.mozilla.org/pub/mozi...nner/releases/

OpenESB: http://www.logicoy.com/download_glass

Arquitectura

Esta es una arquitectura Enterprise basada en el concepto SOA, donde los sistemas funcionan en una nube de datos y la lógica requiere de una orquestación de servicios. Para ello se propone el uso de OpenESB que es gratuito y es una extensión para el servidor de aplicaciones Glassfish. Estos servicios serán consumidos en clientes basados en XUL por medio de AJAX, DOM y XSLT. Las tecnologías que involucra la arquitectura son las siguientes:

tech.jpg

En un principio nos centraremos en XULRunner y firefox así como la interfaz gráfica XUL, de manera similar se pueden usar HTML o SVG, para el caso del XUL multibrowser con ampleSDK que además incluye otros elementos de interfaz gráfica será visto en un apartado más adelante.

Una arquitectura SOA tiene como principio que los procesos son distribuidos, pero al mismo tiempo se necesita una orquestación e Integración de los mismos para obtener un sistema funcional, dichos sistemas pueden ser de índole bancaria, gobierno, comercial, maquiladoras y desde luego proyectos Open Source de índoles que muchos tal vez aún no hemos conceptualizado si quiera. La arquitectura se basa en estándares conocidos o tecnologías bastante aplicadas, AJAX, SOAP, XML, XUL, XSLT, XML-DOM, referencias a ellas son:

XSLT: http://www.w3schools.com/xsl/

SOAP: http://www.w3schools.com/soap/default.asp

AJAX: http://www.w3schools.com/ajax/default.asp

XML-DOM: http://www.w3schools.com/dom/default.asp

XUL: http://developer.mozilla.org/es/xul

Mostraré el diagrama de la arquitectura general para luego abordar cada punto en específico, este es el diagrama:

openarchitecture.jpg

Preparación del ambiente.

 

Necesitaremos una base de datos, en el ejemplo usaré mysql, deberías conocer SQL, javascript y XUL, aunque XUL es muy sencillo y ver el código en la tabla periódica de XUL te bastará para iniciar, la tabla está aquí: http://www.hevanet.com/acorbin/xul/top.xul verás los elementos XUL y una pestaña source donde puedes ver el código fuente XUL de lo que estás viendo.

Empezaremos creando la estructura de directorios de la aplicación XUL de la siguiente forma:

XULAPP-STRUCTURE.png

Los dos elementos que están al final, la carpeta xulrunner y el ejecutable xulapp, los obtienes de la versión de xulrunner que hayas bajado para linux o windows, el ejecutable es un archivo que viene dentro de la carpeta xulrunner llamado xulrunner-stub y basta con ponerlo en la carpeta raíz de la aplicación xul junto al archivo application.ini y renombrarlo con el nombre de tu aplicación, este será el ejecutable de tu aplicación sea en linux o windows. en este caso lo renombramos como xulapp. En mi caso bajé el xulrunner de linux. Lo siguiente es instalar el Open-ESB, para ello pues simplemente es ejecutar el instalador de windows o linux y seguir las instrucciones. Crearemos una base de datos llamada XULAPPDB y después hay que crear una tabla de usuarios en la base de datos, pueden usar cualquier base para la que tengan un driver JDBC para configurar el datasource en el ESB. La tabla se compondrá de sólo dos campos, usuario y password, ambos de tipo varchar al menos en mysql, oracle, mssql, sybase, etc. Este sería el script en mysql:

CREATE TABLE IF NOT EXISTS `usuarios` (
  `USR` varchar(15) NOT NULL,
  `PWD` varchar(30) NOT NULL,
  PRIMARY KEY (`USR`,`PWD`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Fuente de la revisión

<p>Llevando la tecnología mozilla al infinito y más allá, este artículo describe como desarrollar aplicaciones distribuidas (SOA) con Firefox o xulrunner y OpenESB, los arquitectos de soluciones encontrarán una guía para hacer aplicaciones distribuidas que tendrán el performance de una aplicación de escritorio y una interfaz más rica y personalizable de lo que puede ser por ejemplo swing, aspectos en que resulta muy superior; verán que el tiempo requerido para desarrollo en esta arquitectura es mucho menor a la mayoría de lo conocido, si piensas que tiempo es dinero llegaste al lugar indicado. A los desarrolladores conocedores de mozilla, podrán ver un nuevo mundo de posibilidades.</p>
<p>Necesitamos algunas herramientas para este desarrollo:</p>
<p>XULRunner que puede ser descargado desde: <a class=" external" href="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/" rel="freelink">http://releases.mozilla.org/pub/mozi...nner/releases/</a></p>
<p>OpenESB: <a class=" external" href="http://www.logicoy.com/download_glass" rel="freelink">http://www.logicoy.com/download_glass</a></p>
<h2>Arquitectura</h2>
<p><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:TargetScreenSize>800x600</o:TargetScreenSize>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves />
<w:TrackFormatting />
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning />
<w:ValidateAgainstSchemas />
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF />
<w:LidThemeOther>ES-MX</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables />
<w:SnapToGridInCell />
<w:WrapTextWithPunct />
<w:UseAsianBreakRules />
<w:DontGrowAutofit />
<w:SplitPgBreakAndParaMark />
<w:EnableOpenTypeKerning />
<w:DontFlipMirrorIndents />
<w:OverrideTableStyleHps />
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="&#45;-" />
<m:smallFrac m:val="off" />
<m:dispDef />
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" />
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" />
<w:LsdException Locked="false" Priority="39" Name="toc 1" />
<w:LsdException Locked="false" Priority="39" Name="toc 2" />
<w:LsdException Locked="false" Priority="39" Name="toc 3" />
<w:LsdException Locked="false" Priority="39" Name="toc 4" />
<w:LsdException Locked="false" Priority="39" Name="toc 5" />
<w:LsdException Locked="false" Priority="39" Name="toc 6" />
<w:LsdException Locked="false" Priority="39" Name="toc 7" />
<w:LsdException Locked="false" Priority="39" Name="toc 8" />
<w:LsdException Locked="false" Priority="39" Name="toc 9" />
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" />
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" />
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" />
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" />
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" />
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" />
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" />
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" />
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" />
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" />
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" />
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" />
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" />
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" />
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" />
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" />
<w:LsdException Locked="false" Priority="37" Name="Bibliography" />
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabla normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]--><span style="font-size: medium;"><span style='; line-height: 115%; font-family: "Calibri","sans-serif";'>Esta es una arquitectura Enterprise basada en el concepto SOA, donde los sistemas funcionan en una nube de datos y la lógica requiere de una orquestación de servicios. Para ello se propone el uso de OpenESB que es gratuito y es una extensión para el servidor de aplicaciones Glassfish.</span></span> Estos servicios serán consumidos en clientes basados en XUL por medio de AJAX, DOM y XSLT. Las tecnologías que involucra la arquitectura son las siguientes:</p>
<p><img alt="tech.jpg" class="internal default" src="/@api/deki/files/5587/=tech.jpg"></p>
<p>En un principio nos centraremos en XULRunner y firefox así como la interfaz gráfica XUL, de manera similar se pueden usar HTML o SVG, para el caso del XUL multibrowser con ampleSDK que además incluye otros elementos de interfaz gráfica será visto en un apartado más adelante.</p>
<p>Una arquitectura SOA tiene como principio que los procesos son distribuidos, pero al mismo tiempo se necesita una orquestación e Integración de los mismos para obtener un sistema funcional, dichos sistemas pueden ser de índole bancaria, gobierno, comercial, maquiladoras y desde luego proyectos Open Source de índoles que muchos tal vez aún no hemos conceptualizado si quiera. La arquitectura se basa en estándares conocidos o tecnologías bastante aplicadas, AJAX, SOAP, XML, XUL, XSLT, XML-DOM, referencias a ellas son:</p>
<p>XSLT: <a class=" external" href="http://www.w3schools.com/xsl/" rel="freelink">http://www.w3schools.com/xsl/</a></p>
<p>SOAP: <a class=" external" href="http://www.w3schools.com/soap/default.asp" rel="freelink">http://www.w3schools.com/soap/default.asp</a></p>
<p>AJAX: <a class=" external" href="http://www.w3schools.com/ajax/default.asp" rel="freelink">http://www.w3schools.com/ajax/default.asp</a></p>
<p>XML-DOM: <a class=" external" href="http://www.w3schools.com/dom/default.asp" rel="freelink">http://www.w3schools.com/dom/default.asp</a></p>
<p>XUL: <a class=" external" href="http://developer.mozilla.org/es/xul" rel="freelink">http://developer.mozilla.org/es/xul</a></p>
<p>Mostraré el diagrama de la arquitectura general para luego abordar cada punto en específico, este es el diagrama:</p>
<p><img alt="openarchitecture.jpg" class="internal default" src="/@api/deki/files/5601/=openarchitecture.jpg"></p>
<h2>Preparación del ambiente.</h2>
<p> </p>
<p>Necesitaremos una base de datos, en el ejemplo usaré mysql, deberías conocer SQL, javascript y XUL, aunque XUL es muy sencillo y ver el código en la tabla periódica de XUL te bastará para iniciar, la tabla está aquí: <a class=" external" href="http://www.hevanet.com/acorbin/xul/top.xul" rel="freelink">http://www.hevanet.com/acorbin/xul/top.xul</a> verás los elementos XUL y una pestaña source donde puedes ver el código fuente XUL de lo que estás viendo.</p>
<p>Empezaremos creando la estructura de directorios de la aplicación XUL de la siguiente forma:</p>
<p><img alt="XULAPP-STRUCTURE.png" class="internal default" src="/@api/deki/files/4345/=XULAPP-STRUCTURE.png"></p>
<p>Los dos elementos que están al final, la carpeta xulrunner y el ejecutable xulapp, los obtienes de la versión de xulrunner que hayas bajado para linux o windows, el ejecutable es un archivo que viene dentro de la carpeta xulrunner llamado xulrunner-stub y basta con ponerlo en la carpeta raíz de la aplicación xul junto al archivo application.ini y renombrarlo con el nombre de tu aplicación, este será el ejecutable de tu aplicación sea en linux o windows. en este caso lo renombramos como xulapp. En mi caso bajé el xulrunner de linux. Lo siguiente es instalar el Open-ESB, para ello pues simplemente es ejecutar el instalador de windows o linux y seguir las instrucciones. Crearemos una base de datos llamada XULAPPDB y después hay que crear una tabla de usuarios en la base de datos, pueden usar cualquier base para la que tengan un driver JDBC para configurar el datasource en el ESB. La tabla se compondrá de sólo dos campos, usuario y password, ambos de tipo varchar al menos en mysql, oracle, mssql, sybase, etc. Este sería el script en mysql:</p>
<table border="1" cellpadding="1" cellspacing="0" style="width: 100%; table-layout: fixed;"> <tbody> <tr> <td>CREATE TABLE IF NOT EXISTS `usuarios` (<br>   `USR` varchar(15) NOT NULL,<br>   `PWD` varchar(30) NOT NULL,<br>   PRIMARY KEY (`USR`,`PWD`)<br> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</td> </tr> </tbody>
</table>
Revertir a esta revisión