<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chrisrod&#039;s Weblog</title>
	<atom:link href="http://chrisrod.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrisrod.wordpress.com</link>
	<description>My blog for taking notes</description>
	<lastBuildDate>Mon, 03 Jan 2011 20:12:52 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='chrisrod.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Chrisrod&#039;s Weblog</title>
		<link>http://chrisrod.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://chrisrod.wordpress.com/osd.xml" title="Chrisrod&#039;s Weblog" />
	<atom:link rel='hub' href='http://chrisrod.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Los números de 2010</title>
		<link>http://chrisrod.wordpress.com/2011/01/03/los-numeros-de-2010/</link>
		<comments>http://chrisrod.wordpress.com/2011/01/03/los-numeros-de-2010/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 09:15:24 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/?p=135</guid>
		<description><![CDATA[Los duendes de estadísticas de WordPress.com han analizado el desempeño de este blog en 2010 y te presentan un resumen de alto nivel de la salud de tu blog: El Blog-Health-o-Meter™ indica: Minty-Fresh™. Números crujientes Un duende de estadísticas ha creado esta pintura abstracta, inspirada en tus estadísticas. Un Boeing 747-400 transporta hasta 416 pasajeros. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=135&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[
<p>Los duendes de estadísticas de WordPress.com han analizado el desempeño de este blog en 2010 y te presentan un resumen de alto nivel de la salud de tu blog:</p>
<p align="center"><img style="border:1px solid #ddd;background:#f5f5f5;padding:20px;" src="http://s0.wp.com/i/annual-recap/meter-healthy.gif" width="250" height="183" alt="Healthy blog!"></p>
<p align="center">El <em>Blog-Health-o-Meter™</em> indica: Minty-Fresh™.</p>
<h2>Números crujientes</h2>
<div style="width:288px;float:right;border:1px solid #ddd;background:#fff;margin:0 0 1em 1em;padding:6px;">
<p>				<img src="http://s0.wp.com/i/annual-recap/abstract-stats-6.png" alt="Featured image" /><br />
				<br /><em>Un duende de estadísticas ha creado esta pintura abstracta, inspirada en tus estadísticas.</em></p></div>
<p>Un Boeing 747-400 transporta hasta 416 pasajeros. Este blog fue visto cerca de <strong>2,900</strong> veces en 2010. Eso son alrededor de 7 Boeings 747-400.</p>
<p>
<p>En 2010, publicaste <strong>3</strong> entradas nueva, haciendo crecer el arquivo para 15 entradas. Subiste <strong>11</strong> imágenes, ocupando un total de 546kb. Eso es alrededor de una imagen por mes.</p>
<p>The busiest day of the year was 28 de octubre with <strong>30</strong> views. The most popular post that day was <a style="color:#08c;" href="http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/">Creating a Selenium RC test case in 7 simple steps</a>.</p>
<p></p>
<h2>¿De dónde vienen?</h2>
<p>Los sitios de referencia más populares en 2010 fueran <strong>facebook.com</strong>, <strong>es.wordpress.com</strong>, <strong>google.com.ar</strong>, <strong>google.cl</strong> y <strong>google.es</strong>.</p>
<p>Algunos visitantes buscan tu blog, sobre todo por <strong>tutorial seam</strong>, <strong>seam tutorial</strong>, <strong>jboss seam tutorial</strong>, <strong>jbpm seam</strong> y <strong>jbpm tutorial</strong>.</p>
<div style="clear:both;"></div>
<h2>Lugares de interés en 2010</h2>
<p>Estas son las entradas y páginas con más visitas en 2010.</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">1</div>
<p>					<a style="margin-right:10px;" href="http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/">Creating a Selenium RC test case in 7 simple steps</a> <span style="color:#999;font-size:8pt;">febrero, 2010</span>											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">2</div>
<p>					<a style="margin-right:10px;" href="http://chrisrod.wordpress.com/2008/10/06/jbpm-seam-en-07-pasos-un-simple-tutorial-para-ver-la-integracion-del-jbpm-en-seam/">jBPM + SEAM en 07 pasos (Un simple tutorial para ver la integracion del JBpm en SEAM)</a> <span style="color:#999;font-size:8pt;">octubre, 2008</span><br />7 comentários											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">3</div>
<p>					<a style="margin-right:10px;" href="http://chrisrod.wordpress.com/2008/10/06/instanciacion-de-workflows-del-jbpm-mediante-web-services-2/">Instanciacion de WorkFlows del jBPM mediante Web Services</a> <span style="color:#999;font-size:8pt;">octubre, 2008</span><br />3 comentários											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">4</div>
<p>					<a style="margin-right:10px;" href="http://chrisrod.wordpress.com/2008/10/06/uso-del-ldap-para-el-modulo-de-autenticaciones-en-seam/">Uso del LDAP para el modulo de autenticaciones en SEAM</a> <span style="color:#999;font-size:8pt;">octubre, 2008</span><br />1 comentario											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">5</div>
<p>					<a style="margin-right:10px;" href="http://chrisrod.wordpress.com/2008/10/10/uso-del-nodo-process-state-en-jbpm/">Uso del nodo Process State en jBPM</a> <span style="color:#999;font-size:8pt;">octubre, 2008</span>											</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=135&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2011/01/03/los-numeros-de-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/meter-healthy.gif" medium="image">
			<media:title type="html">Healthy blog!</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/abstract-stats-6.png" medium="image">
			<media:title type="html">Featured image</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating a Selenium RC test case in 7 simple steps</title>
		<link>http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/</link>
		<comments>http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:40:15 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[Selenium Test]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/</guid>
		<description><![CDATA[In this little tutorial I will explain as clear as I can, how to create a test case using Selenium IDE, Selenium RC and JUnit, hope it will be useful for everybody. 01.&#160;&#160; Download Selenium RC and after downloading Selenium IDE (http://seleniumhq.org/download/) install it in Firefox Figure 01. Download page of Selenium IDE and RC. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=127&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin:0 0 10pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">In this little tutorial I will explain as clear as I can, how to create a test case using Selenium IDE, Selenium RC and JUnit, hope it will be useful for everybody. </font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraph"><span lang="EN-US"><span><font size="3" face="Calibri">01.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3" face="Calibri">Download Selenium RC and after downloading Selenium IDE (</font></span><a href="http://seleniumhq.org/download/"><span lang="EN-US"><font color="#0000ff" size="3" face="Calibri">http://seleniumhq.org/download/</font></span></a><span lang="EN-US"><font size="3"><font face="Calibri">) install it in Firefox</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraph"><span lang="EN-US"><font size="3" face="Calibri"><img border="0" alt="Seleniumrc" src="http://chrisrod.files.wordpress.com/2010/02/seleniumrc.png" /></font></span></p>
<p><span lang="EN-US"></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><b><span lang="EN-US"><font size="3"><font face="Calibri">Figure 01. Download page of Selenium IDE and RC.</font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><span><font size="3" face="Calibri">02.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Open Selenium IDE in firefox, look for my blog in google and click on the first link that appears:</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><font size="3"><font face="Calibri"><img border="0" alt="SeleniumIDE" src="http://chrisrod.files.wordpress.com/2010/02/seleniumide1.png" /></font></font></span></p>
<p><span lang="EN-US"><font size="3"><font face="Calibri"></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span lang="EN-US">Figure 02. Selenium IDE on firefox.</span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><b><span lang="EN-US">&nbsp;</span></b></p>
<p style="text-indent:-18pt;margin:0 0 0 18pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span>03.<span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US">Export the test case to JUnit clicking on Options </span><span style="font-family:Wingdings;" lang="EN-US"><span>à</span></span><span lang="EN-US"> Format </span><span style="font-family:Wingdings;" lang="EN-US"><span>à</span></span><span lang="EN-US">java JUnit </span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 18pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><span>04.<span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US">Personally, I don&rsquo;t want just to copy and paste the code that is just autogenerated<span>&nbsp; </span>by Selenium IDE, you can do this, but it is more fun to create some classes and subclasses and then make run your test cases </span><span style="font-family:Wingdings;" lang="EN-US"><span>J</span></span><span lang="EN-US">. So you can check at the code that I generated from the help that I got from Selenium IDE.</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">package</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> com.selenium.test;</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">import</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> com.thoughtworks.selenium.SeleneseTestCase;</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;">/**</span><span style="font-family:'Courier New';font-size:10pt;"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;"><span>&nbsp;</span>* </span><span style="font-family:'Courier New';font-size:10pt;"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>* Abstract class that will setUp() and tearDown() all the test classes that</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>* will extend this class.</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>* </span><b><span style="font-family:'Courier New';color:#7f9fbf;font-size:10pt;" lang="EN-US">@author</span></b><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"> Christian Roman</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;</span>*/</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">abstract</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">class</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> SeleniumTestBase </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">extends</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> SeleneseTestCase {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US">/**</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>* Method that will open the web browser and redirect it to the main page of</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>* <u>google</u>.</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>*/</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#646464;font-size:10pt;" lang="EN-US">@Override</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">void</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> setUp() </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">throws</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> Exception {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setUp(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;http://www.google.com.bo/&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">, </span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;*chrome&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.open(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;/webhp?hl=es&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US">/**</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>* Method that will close the session opened by the method setUp().</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:#3f5fbf;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>*/</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#646464;font-size:10pt;" lang="EN-US">@Override</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">void</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> tearDown() </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">throws</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> Exception {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.close();</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.stop();</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">void</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> clickGoogleLink(String keyword, String link){</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.type(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;q&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">, keyword);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.click(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;btnG&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.waitForPageToLoad(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;30000&#8243;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.click(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;link=&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">+link);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.waitForPageToLoad(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;30000&#8243;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span style="line-height:115%;font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">}</span><span lang="EN-US"></span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span lang="EN-US">Listing 01. SeleniumTestBase.java</span></b></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span lang="EN-US"><span>&nbsp;</span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">package</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> com.selenium.test;</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">import</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> org.junit.Test;</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">class</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> GoogleSearchTest </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">extends</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> SeleniumTestBase {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#646464;font-size:10pt;" lang="EN-US">@Test</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">void</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> testChrisrodWordpress() </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">throws</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> Exception {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US">&nbsp;</span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>clickGoogleLink(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;chrisrod wordpress&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">, </span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;SEAM &laquo; Chrisrod&#8217;s Weblog&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><i><span style="font-family:'Courier New';color:black;font-size:10pt;">assertTrue</span></i><span style="font-family:'Courier New';color:black;font-size:10pt;">(</span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;">selenium</span><span style="font-family:'Courier New';font-size:10pt;"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.isTextPresent(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;">&#8220;Uso del LDAP para el modulo de autenticaciones en SEAM&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;">));</span><span style="font-family:'Courier New';font-size:10pt;"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">}</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:#646464;font-size:10pt;" lang="EN-US">@Test</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">public</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">void</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> testHowToDraw() </span><b><span style="font-family:'Courier New';color:#7f0055;font-size:10pt;" lang="EN-US">throws</span></b><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"> Exception {</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>clickGoogleLink(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;how to draw faces&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">, </span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;Portrait Drawing &#8211; Learn to Draw Faces&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">);</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i>assertTrue</i>(</span><span style="font-family:'Courier New';color:#0000c0;font-size:10pt;" lang="EN-US">selenium</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">.isTextPresent(</span><span style="font-family:'Courier New';color:#2a00ff;font-size:10pt;" lang="EN-US">&#8220;Learn portrait drawing skills including face proportions&#8221;</span><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US">));</span><span style="font-family:'Courier New';font-size:10pt;" lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span style="font-family:'Courier New';color:black;font-size:10pt;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family:'Courier New';color:black;font-size:10pt;">}</span><span style="font-family:'Courier New';font-size:10pt;"></span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span style="line-height:115%;font-family:'Courier New';color:black;font-size:10pt;">}</span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span style="line-height:115%;font-family:'Courier New';color:black;font-size:10pt;">Listing 02. GoogleSearchTest.java</span></b><b><span lang="EN-US"></span></b></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraph"><span lang="EN-US"><span>05.<span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US">The structure of my code looks like this:</span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span lang="EN-US">Figure 03. Code structure for running the test cases and libraries needed to accomplish this objective.</span></b></p>
<p style="margin:0 0 0 18pt;" class="MsoListParagraphCxSpFirst"><span lang="EN-US">&nbsp;</span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span>06.<span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US">Run selenium server, I mean double click over the jar file: selenium-server.jar, that comes with Selenium RC.</span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><span>07.<span style="font:7pt 'Times New Roman';">&nbsp;&nbsp; </span></span></span><span lang="EN-US">Run your JUnit test case and enjoy watching how your web browser open, executes commands and close by itself (well actually controlled by Selenium Server)</span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"></font></font></span><img border="0" alt="CodeStructureRC" src="http://chrisrod.files.wordpress.com/2010/02/codestructurerc.png" /></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span lang="EN-US"><font size="3"><font face="Calibri">Figure 04. Running JUnit on GoogleSearchTest. </font></font></span></b></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraph"><img border="0" alt="SeleniumRCinAction" src="http://chrisrod.files.wordpress.com/2010/02/seleniumrcinaction_small1.jpg" /></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><b><span lang="EN-US"><font size="3"><font face="Calibri">Figure 05. Selenium Server in action.</font></font></span></b></p>
<p></span>
<div class="bjtags">Tags:  <a rel="tag" href="http://technorati.com/tag/selenium">selenium</a>, <a rel="tag" href="http://technorati.com/tag/test">test</a>, <a rel="tag" href="http://technorati.com/tag/web+test">web+test</a>, <a rel="tag" href="http://technorati.com/tag/selenium+RC">selenium+RC</a>, <a rel="tag" href="http://technorati.com/tag/selenium+IDE">selenium+IDE</a>, <a rel="tag" href="http://technorati.com/tag/JUnit">JUnit</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=127&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2010/02/21/creating-a-selenium-rc-test-case-in-7-simple-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/seleniumrc.png" medium="image">
			<media:title type="html">Seleniumrc</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/seleniumide1.png" medium="image">
			<media:title type="html">SeleniumIDE</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/codestructurerc.png" medium="image">
			<media:title type="html">CodeStructureRC</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/seleniumrcinaction_small1.jpg" medium="image">
			<media:title type="html">SeleniumRCinAction</media:title>
		</media:content>
	</item>
		<item>
		<title>A BRIEF EXPLANATION OF SELENIUM TEST</title>
		<link>http://chrisrod.wordpress.com/2010/02/16/a-brief-explanation-of-selenium-test/</link>
		<comments>http://chrisrod.wordpress.com/2010/02/16/a-brief-explanation-of-selenium-test/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 23:09:05 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[Selenium Test]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2010/02/16/a-brief-explanation-of-selenium-test/</guid>
		<description><![CDATA[&#160;01.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; What is selenium? &#160; Selenium is a set of tools that is used to automate web application testing, across many platforms. &#160; Between the biggest advantages of Selenium, we can mention: -&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Runs in many browsers. -&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Can be controlled with programming language like Java or PHP, that makes selenium very handy to integrate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=121&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img border="0" alt="Se" src="http://chrisrod.files.wordpress.com/2010/02/se_small.jpg" /></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><span><font face="Calibri">01.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">What is selenium?</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">&nbsp;</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">Selenium is a set of tools that is used to automate web application testing, across many platforms.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">Between the biggest advantages of Selenium, we can mention:</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Runs in many browsers.</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 54pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Can be controlled with programming language like Java or PHP, that makes selenium very handy to integrate it to unit tests.</font></font></span></p>
<p style="margin:0 0 10pt 36pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">Selenium is usually used to have test cases that need to be run frequently,<span>&nbsp; </span>with unlimited iterations and at the same time through this is possible to have a disciplined test documentation.</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><span><font face="Calibri">02.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">Components</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span></span><span lang="EN-US"></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri"><img border="0" alt="Selenium-ide-logo" src="http://chrisrod.files.wordpress.com/2010/02/selenium_2dide_2dlogo_small.jpg" /></font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri">2.1 Selenium IDE</font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Selenium IDE is a Firefox Add on, that can be easily download from this site:</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><a href="http://seleniumhq.org/download/"><span lang="EN-US"><font color="#0000ff" size="3" face="Calibri">http://seleniumhq.org/download/</font></span></a><span><font size="3"><font face="Calibri"> <span lang="EN-US"></span></font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This tool is integrated with Firefox and the way to use it is very easy and friendly to use.<span>&nbsp;&nbsp; </span>Selenium IDE works like a recorder, recording all the actions that one has on a specific website, like clicks, data typed in a form, <span>&nbsp;</span>making it possible to reproduce all steps took, and by this way create a test suite, that can be easily run with this handy tool.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">Another great feature of this IDE, is that one can have a well structured explanation of all the possible commands that can be recorded or executed by Selenium IDE. Talking about the commands, with Selenium IDE is possible to have assertion or verifications when they are needed, set some delays, wait a determined time to a page to load, etc, etc.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">If there is a disadvantage on using Selenium IDE, is that all the test cases have to be recorded on Firefox.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">Getting into the programming world, Selenium IDE make possible to export all the commands that were set or recorded to one or all these programming languages:</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Java (JUnit or TestNG)</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Groovie (JUnit)</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">C#</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Perl</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">PHP</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 54pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Python</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 54pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><span><font size="3" face="Calibri">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri">Ruby</font></font></span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" alt="SeleniumIDE" src="http://chrisrod.files.wordpress.com/2010/02/seleniumide.png" /></span></font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><span></span><span lang="EN-US"></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri">Figure 01. Selenium IDE</font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span></span><span lang="EN-US"></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri"><img border="0" alt="Selenium-rc-logo" src="http://chrisrod.files.wordpress.com/2010/02/selenium_2drc_2dlogo.png" /></font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri">2.2 Selenium RC.</font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Selenium Remote Control, gives Selenium all the flexibility that just a programming language can offer, making possible the development of test cases well structured, with programming logic (like iterations, control flow, etc), that at the end</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;</span>means a real automation of a suit of testing cases on an automated build environment.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span></span><span lang="EN-US"></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri"><img border="0" alt="Selenium-grid-logo" src="http://chrisrod.files.wordpress.com/2010/02/selenium_2dgrid_2dlogo.png" /></font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><font size="3"><font face="Calibri">2.3 Selenium Grid.</font></font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Selenium Grid is on my opinion, one of the most interesting technologies in the field of web application testing, because apart of the fact of flexibility that Selenium RC offer to the testing cases, with Selenium Grid, is possible to run as many tests as we want<span>&nbsp; </span>in a parallel way, relying on the HW capabilities or number of computers available to run the test cases.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">With the help of Selenium Grid, one can run test cases in different browsers at the same time, on different operating systems, and by this way, having at the end a report that tells how the web application is behaving with all the test cases that run on it.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp; </span></font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span style="line-height:115%;font-size:14pt;"><span><font face="Calibri">03.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b><span style="line-height:115%;font-size:14pt;"><font face="Calibri">Selenium RC</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span style="line-height:115%;font-size:14pt;"><font face="Calibri">&nbsp;</font></span></b></p>
<p style="line-height:normal;text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span lang="EN-US"><span><font size="3" face="Calibri">3.1.</font><span style="font:7pt 'Times New Roman';"> </span></span></span></b><b><span lang="EN-US"><font face="Calibri"><font size="3">What is Selenium RC?</font></font></span></b></p>
<p style="line-height:normal;margin:0 0 0 36pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font size="3">As was mentioned previously, Selenium RC allow the creation of more complex test cases, because now is possible to rely on all the facilities that a programming language can offer, like querying to a Data Base, reading files, sending e-mails, etc.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font size="3">Is important to mention that Selenium RC is composed by these components:</font></font></span></p>
<p style="line-height:normal;text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span style="font-family:'Times New Roman',serif;"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><font face="Calibri"><font size="3">Selenium Server</font></font></span></p>
<p style="line-height:normal;text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span style="font-family:'Times New Roman',serif;"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><font face="Calibri"><font size="3">Selenium Core</font></font></span></p>
<p style="line-height:normal;text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span style="font-family:'Times New Roman',serif;"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><font size="3"><font face="Calibri">Client Libraries</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="text-indent:18pt;margin:0 0 10pt;" class="MsoNormal"><span><font size="3"><font face="Calibri"><span>&nbsp;</span><b><span lang="EN-US">Selenium Server.</span></b></font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The Selenium Server is the hearth of Selenium RC, because is on this place, where all the commands sent by the programming language and all the messages answered by the web browser, are processed, interpreted and sent to the corresponding party.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">Other functions that take place in the Selenium Server, is launching and closing the web browser, as mentioned at the previous paragraph, running the Selenese Commands to be executed in the browser through the injection of Selenium Core in the browser, HTTP proxy from which all the HTTP messages pass. </font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">The way Selenium Server accomplish all these tasks, is basically because Selenium Server works relying on GET/POST request, that makes possible to any programming language to send request to the Selenium Server.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><b><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;</span>Selenium Core.</font></font></span></b></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">As was mentioned previously, Selenium Core is a chunk of JavaScript functions that interpret and run Selenese Commands in the browser where the test is executed.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">Selenium Core resides into the Selenium<span>&nbsp; </span>Server and when this opens the Web Browser, the Selenium Core is injected in it and by this way any Selenese Command can be executed in the browser.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><b><span lang="EN-US"><font size="3"><font face="Calibri">Client Libraries.</font></font></span></b></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3"><font face="Calibri">The client libraries are the interface between the Selenium Server and a Programming language. For the very same reason Selenium provides many methods to interact with the Web Browser, there is even a method to execute JS commands directly in the browser.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Calibri"><img border="0" alt="SeleniumRC Squema" src="http://chrisrod.files.wordpress.com/2010/02/seleniumrc_20squema.png" />&nbsp;</font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span></span><span lang="EN-US"></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><b><span lang="EN-US"><font size="3"><font face="Calibri">Figure 02. Selenium RC</font></font></span></b></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraph"><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><span><font face="Calibri">04.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">Selenium Grid</font></span></b></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><b><span style="line-height:115%;font-size:12pt;" lang="EN-US"><font face="Calibri">4.1 What is Selenium Grid?</font></span></b></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font size="3">Selenium Grid is the best thing that Selenium could ever develop (so far), and I say this because with Selenium Grid, as mentioned before, is possible to run test cases in a parallel way in one or many computers, and not just that, because is possible to run on different operate systems, different browsers, and all at the same time, fantastic, isn&rsquo;t it?</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font size="3">The components of Selenium Grid, are:</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri"><font size="3">Selenium Hub</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri"><font size="3">Selenium RCs</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><b><span lang="EN-US"><font face="Calibri"><font size="3">Selenium Hub. </font></font></span></b></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font size="3">Basically the functions of the Selenium Hub are the functions of a network switch, because all the test cases are now addressed to the hub instead of the RC and<span>&nbsp; </span>this hub allocates all the test cases on every RC that is connected to it.<span>&nbsp; </span>This means that the main function of the Selenium Hub is redirect all the Selenese commands sent by the Test Cases, to the corresponding RC and at the same time keep track of the testing sessions.</font></font></span></p>
<p style="margin:0 0 10pt 18pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Calibri">To make possible to Selenium work on this way, it is necessary to implement test cases that have to be executed in a parallel mode. Talking about JUnit, there is an extra library called &ldquo;Parallel JUnit&rdquo; </font></span><a href="https://parallel-junit.dev.java.net/"><span lang="EN-US"><font color="#0000ff" size="3" face="Calibri">https://parallel-junit.dev.java.net/</font></span></a><span lang="EN-US"><font size="3" face="Calibri">, and through this library is possible to execute more than one test case at the same time. The other possibility, that I personally recommend, is using TestNG </font></span><a href="http://testng.org/"><span lang="EN-US"><font color="#0000ff" size="3" face="Calibri">http://testng.org</font></span></a><span lang="EN-US"><font face="Calibri"><font size="3"> that is a testing framework inspired in JUnit, and for this reason the logic of creating testing cases is basically the same, TestNG also includes many annotations to its framework, that make the life easier when creating test cases. To mention other advantages of TestNG, we can say that:</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri"><font size="3">TestNG has a configuration file (testing.xml) that makes possible to configure the way that we want to run the test cases, and between these possibilities, running test cases in parallel.</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri"><font size="3">TestNG has support of parameters.</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font face="Calibri"><font size="3">TestNG has an Eclipse plug-in.</font></font></span></p>
<p style="text-indent:-18pt;margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span style="font-family:'Times New Roman',serif;" lang="EN-US"><span><font size="3">-</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US"><font size="3"><font face="Calibri"><span>&nbsp;</span>TestNG makes possible to classify test cases by groups and by this way control the order and priority of the execution of the test cases.</font></font></span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;<img border="0" alt="Selenium Grid Setup" src="http://chrisrod.files.wordpress.com/2010/02/selenium_20grid_20setup.png?w=826&#038;h=625" width="826" height="625" /></font></span></p>
<p style="margin:0 0 10pt;" class="MsoNormal"><span lang="EN-US"><font size="3" face="Calibri"><strong>Figure 03. Selenium Grid</strong></font></span></p>
<p style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoListParagraphCxSpFirst"><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><span><font face="Calibri">05.</font><span style="font:7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">Conclusions</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><b><span style="line-height:115%;font-size:14pt;" lang="EN-US"><font face="Calibri">&nbsp;</font></span></b></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3"><font face="Calibri">Selenium is a powerful tool that can be used in many ways, but is particularly interesting the way that Selenium can be used to run and automate test cases, what makes possible to have testing cases that can be executed periodically and with this to have at the same time a good documentation of all the test cases that were created for a web application.</font></font></span></p>
<p style="margin:0 0 0 36pt;" class="MsoListParagraphCxSpMiddle"><span lang="EN-US"><font size="3" face="Calibri">&nbsp;</font></span></p>
<p style="margin:0 0 10pt 36pt;" class="MsoListParagraphCxSpLast"><span lang="EN-US"><font size="3"><font face="Calibri">With the use of Selenium RC and Selenium Grid, the automation and running of test cases takes a different perspective, making possible to have a very detailed coverage of all the possibilities available in a web application, reviewing as well the behavior of it on different Operating Systems and Web Browsers especially when cross browser compatibility is a must.</font></font></span></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=121&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2010/02/16/a-brief-explanation-of-selenium-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/se_small.jpg" medium="image">
			<media:title type="html">Se</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/selenium_2dide_2dlogo_small.jpg" medium="image">
			<media:title type="html">Selenium-ide-logo</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/seleniumide.png" medium="image">
			<media:title type="html">SeleniumIDE</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/selenium_2drc_2dlogo.png" medium="image">
			<media:title type="html">Selenium-rc-logo</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/selenium_2dgrid_2dlogo.png" medium="image">
			<media:title type="html">Selenium-grid-logo</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/seleniumrc_20squema.png" medium="image">
			<media:title type="html">SeleniumRC Squema</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2010/02/selenium_20grid_20setup.png" medium="image">
			<media:title type="html">Selenium Grid Setup</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook Demographics Bolivia</title>
		<link>http://chrisrod.wordpress.com/2010/01/09/facebook-demographics-bolivia/</link>
		<comments>http://chrisrod.wordpress.com/2010/01/09/facebook-demographics-bolivia/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 01:07:27 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2010/01/09/facebook-demographics-bolivia/</guid>
		<description><![CDATA[A day of doing nothing interesting, I decided to check it out how many people of my country Bolivia has a Facebook account, and I came out with this results: Total of users:&#160;&#160; 472 520 Below 18:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 99 10018 &#8211; 20:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 98 06020 &#8211; 25: &#160; &#160; &#160; &#160; &#160;&#160; 158 640 25 &#8211; 30:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=112&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A day of doing nothing interesting, I decided to check it out how many people of my country Bolivia has a Facebook account, and I came out with this results:</p>
<p><big><b>Total of users:&nbsp;&nbsp; 472 520</b></big></p>
<p><b>Below 18:&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99 100<br /><b>18 &#8211; 20:&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98 060<br /><b>20 &#8211; 25: </b>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 158 640 <br /><b>25 &#8211; 30:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 103 760<br /><b>30 &#8211; 35:&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 53 820<br /><b>35 &#8211; 40:&nbsp;&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28 620<br /><b>40 &#8211; 45:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15 340<br /><b>45 &#8211; 50:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9 840<br /><b>50 &#8211; 55:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 700<br /><b>55 &#8211; 60:&nbsp;</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 480<br /><b>Above 60:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 540</p>
<p>One of the things that amaze me the most, was the fact that I found that almost 10000 people over 50 years old has a facebook account, that was more than I expected, considering that Bolivia has just 10E6 people and people born before the 60s were supposed to scared computers, well one thing is for sure&#8230; I was completly wrong <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . <br />Anyway, some times when you don&#8217;t have nothing to do, you find things that never passed through your mind, or at least mine <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> &#8230; oh! by the way, I&#8217;m intending to take a JSCP certification on May, so I will be posting the most interenting stuff that I found to tackle this tricky test.</p>
<p><big><big><big><font color="#000099" face="sans-serif"><b><big>Facebook</big> users distribution in BOLIVIA</b></font></big></big></big><br /><img style="max-width:800px;" src="http://lh6.ggpht.com/_U2qzVX5jHOc/S0fSohWIaQI/AAAAAAAAABA/nz3eP4KiCmA/%5BUNSET%5D.png?imgmax=800" /></p>
<p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=506f1053-2b53-8172-992e-3ebf938e4ad6" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=112&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2010/01/09/facebook-demographics-bolivia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://lh6.ggpht.com/_U2qzVX5jHOc/S0fSohWIaQI/AAAAAAAAABA/nz3eP4KiCmA/%5BUNSET%5D.png?imgmax=800" medium="image" />

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=506f1053-2b53-8172-992e-3ebf938e4ad6" medium="image" />
	</item>
		<item>
		<title>A brief overview of EC2 and GigaSpaces</title>
		<link>http://chrisrod.wordpress.com/2009/08/07/a-brief-overview-of-ec2-and-gigaspaces/</link>
		<comments>http://chrisrod.wordpress.com/2009/08/07/a-brief-overview-of-ec2-and-gigaspaces/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 13:21:44 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[GigaSpaces]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2009/08/07/a-brief-overview-of-ec2-and-gigaspaces/</guid>
		<description><![CDATA[Elastic Compute Cloud Elastic Compute Cloud (EC2) is an Amazon’s web service that provides resizable compute capacity in a cloud. One of the main characteristics of EC2, and at the same time one of its great advantage, is that it was designed to make web-scale computing easier for developers. Amazon EC2’s simple web service interface [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=106&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!--[if !mso]&gt;  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}  &lt;![endif]--><!--[if gte mso 9]&gt;   Normal  0      false  false  false                     MicrosoftInternetExplorer4  &lt;![endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--></p>
<p class="MsoNormal" style="text-align:justify;"><strong><span style="font-size:14pt;">Elastic Compute Cloud</span></strong></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;"><strong>Elastic Compute Cloud (<span class="caps">EC2</span>)</strong> is an Amazon’s web service that provides <strong>resizable compute capacity</strong> in a cloud. One of the main characteristics of EC2, and at the same time one of its great advantage, is that it was designed to make <strong>web-scale computing easier</strong> for developers.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">Amazon <span class="caps">EC2</span>’s simple web service interface allows to obtain and configure capacity with minimal friction. It provides as well a complete control of the computing resources and lets run on an Amazon’s computing environment.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">Between the advantages that one can find using EC2, we could mention the reduction of time required to obtain and boot new server instances to minutes, allowing a quickly scale capacity, both up and down, as the change<span> </span>of computing requirements. Other advantages are the possibility to count with a diversity of Operating Systems, the possibility of run on multiple locations or utilize static IP endpoints.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">To use EC2, it is necessary to sign up to the Amazon’s web page, and with this, get the two keys to use the web service; on of them is the <strong>Access Key ID</strong>, and the other one is the <strong>Secret Access Key</strong>, that can be generated as many times as one desire, depending on the security requirements that one has.<span> </span>With these two keys it is possible to access to all the web service’s facilities, depending on the type of account created.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">To see EC2 in action, first it is needed to create an Amazon Machine Image (AMI) that will contain the application, libraries and the configuration settings. It is also possible to use one of the image templates to achieve the same objective, and one can do this using a firefox extension called “<strong>ElasticFox</strong>”, that can be download clicking on the next link: <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609">http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609</a>, once it is installed, you will see a GUI like the one is showed on the figure 01; once this extension is launched in firefox, it is possible to create the AMI, using the keys obtained on the Amazon web page, as it was explained on the previous paragraph. A really helpful tutorial to create a simple AMI can be found on the next link: <a href="http://www.youtube.com/watch?v=9QKnORsJKt4&amp;annotation_id=annotation_297897&amp;feature=iv">http://www.youtube.com/watch?v=9QKnORsJKt4&amp;annotation_id=annotation_297897&amp;feature=iv</a>, that explains how to create an Amazon account, the installation of the ElasticFox extension, and finally the creation and test of the new AMI. Once the AMI is created, the next step is to upload the web application to the Amazon Simple Storage Service (S3); between the tools used to accomplish this task, there is a firefox extension that can be smoothly installed on it, that is called “<strong>S3 Fox</strong>”, this extension can be downloaded clicking on the next link: <a href="https://addons.mozilla.org/en-US/firefox/addon/3247">https://addons.mozilla.org/en-US/firefox/addon/3247</a>. Finally, it is possible to configure the security and network access, with the <strong>ElasticFox</strong> tool.</p>
<p class="MsoNormal" style="text-align:center;" align="justify"><!--[if !mso]&gt;  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}  &lt;![endif]--><!--[if gte mso 9]&gt;   Normal  0      false  false  false                     MicrosoftInternetExplorer4  &lt;![endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:612.0pt 792.0pt; 	margin:72.0pt 90.0pt 72.0pt 90.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --> <!--[if gte mso 10]&gt;  /* Style Definitions */ table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	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:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;}  &lt;![endif]--><strong><span style="font-size:12pt;font-family:&quot;"><!--[if gte vml 1]&gt;                                &lt;![endif]--><!--[if !vml]--></span><span style="font-size:11pt;"><br />
<img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/11.jpg" alt="" /></span></strong></p>
<p class="MsoNormal" style="text-align:center;" align="justify"><strong><span style="font-size:11pt;">Figure 01. The ElasticFox extension</span></strong></p>
<p class="MsoNormal" style="text-align:justify;"><strong> </strong></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;"><strong><span style="font-size:14pt;">GigaSpaces XAP<span> </span></span></strong></p>
<p class="MsoNormal" style="text-align:justify;">
<p style="text-align:justify;"><strong>GigaSpaces XAP (eXtreme Application Platform)</strong> is a <strong>scale-out application server</strong>. Among the advantages that one can find working with GigaSpaces, we can mention:</p>
<p style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->High-throughput</p>
<p style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Low-latency</p>
<p style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]--><strong>Scalability</strong></p>
<p style="text-align:justify;">and these advantages give the possibility to use GigaSpaces to build the next generation class of applications.</p>
<p style="text-align:justify;">It can be said that a usual Web-Application that stores its data within the IMDG (In-Memory Data Grid) would basically have the next machines:</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->GSM Machine</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Load-Balancer Machine</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Database and Mirror Machines</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->GSC Machines – Running Web Application, IMDG and Services</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;"><img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/2.jpg" alt="" /><br />
</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;">Figura 02. A basic Web Application running on a cloud.</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">As can be seen in the last figure, the whole cloud is composed for many machines that can be created very easily editing a XML file and uploading it, with the aid of the <strong>GigaSpaces Cloud Console</strong> that can be found at the GigaSpaces web page (<a href="http://www.gigaspaces.com/mycloud">http://www.gigaspaces.com/mycloud</a>), this console has many tools to create and manage all the clouds that one needs or have already been deployed. Comparing this tool, with the one that creates an Amazon’s AMI using the <strong>ElasticFirefox</strong>, this console is specially oriented to the creation and management of <strong>GigaSpaces </strong>clouds.</p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">About the XML file that has to be edited for the creation of all the machines that one needs in a cloud, a basic template can be checked on the lines below this paragraph.</p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;cloud-config&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;cloud-name&gt;my-data-grid&lt;/cloud-name&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;license&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em><span style="font-size:8pt;">Nov 16, 2009~CloudTestUser@bPS8NOufjXOuPNSYMWPO#PREMIUM^7.0XAPPremium%UNBOUND+UNLIMITED</span></em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;/license&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;gigaspaces-build-location&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>gigaspacesversions/gigaspaces-xap-premium-7.0.0-m9-b3496-87.zip</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;/gigaspaces-build-location&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;ami-id&gt;ami-91db3cf8&lt;/ami-id&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em><span style="background:yellow none repeat scroll 0 0;">&lt;machines&gt;</span></em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em><span style="background:yellow none repeat scroll 0 0;">&lt;!&#8211; Insert here &#8211;&gt;</span></em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em><span style="background:yellow none repeat scroll 0 0;">&lt;/machines&gt;</span></em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;start-ui&gt;admin-application&lt;/start-ui&gt;</em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em>&lt;/cloud-config&gt; <span> </span></em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><em> </em></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">Between the “<strong>machine</strong>” tags one can create all the machines required for the Web Application; referring to the example of the figure 02, the XML file can be downloaded from the next link: <a href="http://cloud.gigaspaces.com/cloudtools/session-resources/demo/files/petclinic-mysql-example.xml">http://cloud.gigaspaces.com/cloudtools/session-resources/demo/files/petclinic-mysql-example.xml</a> <span> </span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">To upload this file, and by this way create the required machines, follow the next procedure:</p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>01.<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Log into the <strong>Cloud Console</strong> using your GigaSpaces and Amazon Web Service (AWS) <strong>keys</strong> on this web page: <a href="http://www.gigaspaces.com/mycloud">http://www.gigaspaces.com/mycloud</a></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><!--[if gte vml 1]&gt;  &lt;![endif]--><!--[if !vml]--><br />
<!--[endif]--></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;"><img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/3.jpg" alt="" /><br />
</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;">Figure 03. Log into the Cloud Console</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>02.<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Upload the XML file that has all the information of the machines to be used in the cloud,<span> </span>filling the “<strong>Deployment Descriptor</strong>” field and clicking in the button “<strong>Deploy</strong>”</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><!--[if gte vml 1]&gt;  &lt;![endif]--><!--[if !vml]--><br />
<!--[endif]--></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;"><img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/4.jpg" alt="" /><br />
</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;">Figure 04. Deploying the machines with the Cloud Console</span></strong>.</p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">Now to upload the Web Application to the Amazon’s S3, an easy way to do this task is using the “<strong>S3Fox</strong>” extension, following the next procedure:</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>01.<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Start the <strong>S3Fox</strong> extension signing up with the Amazon’s Access Keys.</p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;">
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><!--[if gte vml 1]&gt;  &lt;![endif]--><!--[if !vml]--><br />
<!--[endif]--></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;"><img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/5.jpg" alt="" /><br />
</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:center;" align="center"><strong><span style="font-size:11pt;">Figure 05. Signing up to the S3 through the S3Fox</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:justify;"><strong><span style="font-size:11pt;"> </span></strong></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>02.<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Create a test folder at the root level of the S3 account by clicking the button at the right side panel.</p>
<p class="MsoNormal" style="margin-left:36pt;text-align:justify;text-indent:-18pt;"><!--[if !supportLists]--><span>03.<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span><!--[endif]-->Upload all the necessary files from the left side of the panel to the right side that, by the way, corresponds to the S3.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">Finally for testing the web application, observe the link next to the “<strong>Load_Balancer</strong>” field in the <strong>Cloud Console</strong> and click on it, the application that you upload on the S3 should be displayed on the web browser.</p>
<p class="MsoNormal" style="text-align:justify;"><!--[if gte vml 1]&gt;  &lt;![endif]--><!--[if !vml]--><!--[endif]--></p>
<p class="MsoNormal" style="text-align:center;" align="center"><strong><span style="font-size:11pt;"><img style="max-width:800px;" src="http://chrisrod.files.wordpress.com/2009/08/6.jpg" alt="" /><br />
</span></strong></p>
<p class="MsoNormal" style="text-align:center;" align="center"><strong><span style="font-size:11pt;">Figure 06. Checking the Web Application deployed in the S3.</span></strong></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;"><strong><span style="font-size:16pt;">Conclusions</span></strong></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">After reviewing the documentation found in the internet about GigaSpaces, I think that is a technology very promising for the future developments of applications that will need to be reliable and at the same time very flexible.</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">Talking about the service given by Amazon EC2, I think that the price they offer to have a cloud deployed on its servers is very reasonable, knowing that taking care of a Data Center needs people specialized on its maintenance and management.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=e27b6736-6f74-8e19-b899-ec1fb729b5a7" alt="" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=106&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2009/08/07/a-brief-overview-of-ec2-and-gigaspaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/11.jpg" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/2.jpg" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/3.jpg" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/4.jpg" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/5.jpg" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/08/6.jpg" medium="image" />

		<media:content url="http://img.zemanta.com/pixy.gif?x-id=e27b6736-6f74-8e19-b899-ec1fb729b5a7" medium="image" />
	</item>
		<item>
		<title>Uso del nodo Process State en jBPM</title>
		<link>http://chrisrod.wordpress.com/2008/10/10/uso-del-nodo-process-state-en-jbpm/</link>
		<comments>http://chrisrod.wordpress.com/2008/10/10/uso-del-nodo-process-state-en-jbpm/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 16:54:51 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBPM]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2008/10/10/uso-del-nodo-process-state-en-jbpm/</guid>
		<description><![CDATA[Este nodo es especialmente util para ir a un sub-flujo y luego volver al flujo original. Figura 01.Nodo Process State&#160; El uso de este nodo se puede apreciar mejor en un flujo de ejemplo: Figura 02. Flujo principal Figura 03. Sub-flujo &#8220;Apellido&#8221; Figura 04. Sub-flujo &#8220;Edad&#8221; Como se puede apreciar en las anteriores figuras, el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=44&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img alt="Jbpm-logo" src="http://chrisrod.files.wordpress.com/2009/01/jbpm-2dlogo.png" border="0" /></p>
<p>Este nodo es especialmente util para ir a un sub-flujo y luego volver al flujo original.</p>
<p><img alt="Dibujo-small" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall.jpg" border="0" /></p>
<p><strong><em>Figura 01.Nodo Process State&nbsp;</em></strong></p>
<p>El uso de este nodo se puede apreciar mejor en un flujo de ejemplo:</p>
<p><img alt="Dibujo-small1" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall1.jpg" border="0" /></p>
<p><strong><em>Figura 02. Flujo principal</em></strong></p>
<p><img alt="Dibujo-small2" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall2.jpg" border="0" /></p>
<p><strong><em>Figura 03. Sub-flujo &ldquo;Apellido&rdquo;</em></strong></p>
<p><img alt="Dibujo-small3" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall3.jpg" border="0" /></p>
<p><strong><em>Figura 04. Sub-flujo &ldquo;Edad&rdquo;</em></strong></p>
<p>Como se puede apreciar en las anteriores figuras, el flujo principal escala a dos sub-flujos en paralelo, los cuales pueden tener una estructura totalmente diferente del original, y una vez que ambos flujos terminen se procede a la impresion de las variables seteadas en ambos sub-flujos.</p>
<p><strong>PASO DE VARIABLES ENTRE FLUJOS</strong></p>
<p><strong></strong>&nbsp;Para el paso de variables entre flujos realizar lo siguiente desde el IDE apuntandio al nodo &ldquo;Sub Process&rdquo;:</p>
<p><img alt="Dibujo-small4" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall4.jpg" border="0" /></p>
<p>&nbsp;<strong><em>Figura 05. Paso de variables de un Flujo a un Sub-flujo</em></strong></p>
<p>Donde:</p>
<blockquote>
<p><strong>01. Nombre del Sub-flujo</strong></p>
<p><strong>02. Version del sub-flujo</strong></p>
<p><strong>03. Variables de ida</strong></p>
<p><strong>04. Variables de vuelta</strong></p>
</blockquote>
<p>&nbsp;</p>
<p>Como se puede ver en este pequenio tutorial del nodo &ldquo;Process Sate&rdquo;, no es necesario el uso de ningun codigo java, y los escalamientos y el paso de variables&nbsp;son transparentes para el usuario final.</p>
<p><strong>Christian</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=44&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2008/10/10/uso-del-nodo-process-state-en-jbpm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/jbpm-2dlogo.png" medium="image">
			<media:title type="html">Jbpm-logo</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall.jpg" medium="image">
			<media:title type="html">Dibujo-small</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall1.jpg" medium="image">
			<media:title type="html">Dibujo-small1</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall2.jpg" medium="image">
			<media:title type="html">Dibujo-small2</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall3.jpg" medium="image">
			<media:title type="html">Dibujo-small3</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall4.jpg" medium="image">
			<media:title type="html">Dibujo-small4</media:title>
		</media:content>
	</item>
		<item>
		<title>Uso del LDAP para el modulo de autenticaciones en SEAM</title>
		<link>http://chrisrod.wordpress.com/2008/10/06/uso-del-ldap-para-el-modulo-de-autenticaciones-en-seam/</link>
		<comments>http://chrisrod.wordpress.com/2008/10/06/uso-del-ldap-para-el-modulo-de-autenticaciones-en-seam/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 19:46:17 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[SEAM]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2008/10/06/uso-del-ldap-para-el-modulo-de-autenticaciones-en-seam-2/</guid>
		<description><![CDATA[&#160; LDAP (Lightweight Directory Access Protocol), (Protocolo Ligero de Acceso a Directorios) es un protocolo a nivel de aplicacion que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos(aunque su sistema de almacenamiento puede ser diferente) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=40&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><b></b>&nbsp;<img alt="Untitled" src="http://chrisrod.files.wordpress.com/2009/01/untitled-small.jpg" border="0" /> </p>
<p><b></b></p>
<p><b></b></p>
<p><b>LDAP</b> (<i>Lightweight Directory Access Protocol</i>), (Protocolo Ligero de Acceso a Directorios) es un protocolo a nivel de aplicacion que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos(aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas. </p>
<p>Habitualmente, almacena la información de login (usuario y contrasenia) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc).</p>
<p>En conclusión, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red.</p>
<p><em><strong>Fuente: Wikipedia</strong></em></p>
<p>Una ves dada esta pequenia introduccion&nbsp;de lo que es LDAP, ahora procedo a explicar como podemos aprovechar un servidor LDAP para el modulo de autenticacion en SEAM&nbsp;<img src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile32.gif" /></p>
<p>&nbsp;Primeramente se necesitara realizar unas cuantas modificaciones al codigo de autenticacion &ldquo;Authenticator.java&rdquo; que viene por defecto cuando creamos un proyecto SEAM.</p>
<p><img alt="Dibujo-small5" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall5.jpg" border="0" /></p>
<p><img alt="Dibujo-small13" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall13.jpg" border="0" /></p>
<p><strong><em>Figura 01. Codigo modificado del &ldquo;Authenticator.java&rdquo;</em></strong></p>
<p>&nbsp;</p>
<p>Una ves realizadas dichas &ldquo;modificaciones&rdquo; al codigo de autenticacion, se procede a la utilizacion de la pagina &ldquo;login.xhtml&rdquo; que ya viene por defecto cuando creamos un proyecto en SEAM:</p>
<p><img alt="Dibujo-small5" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall5.jpg" border="0" /></p>
<p><strong><em>Figura 02. Pagina de autenticacion &ldquo;login.xhtml&rdquo;</em></strong></p>
<p>Y listo <img src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile32.gif" /></p>
<p>Una ves que hayas deployado tu proyecto y hayas seguido mis indicaciones al pie de la letra, veras lo siguiente cuando la autenticacion sea erronea:</p>
<p><img alt="Dibujo-small31" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall31.jpg" border="0" /></p>
<p><strong><em>Figura 03. Contrasenia Incorrecta</em></strong></p>
<p>Caso contrario podras ver lo siguiente </p>
<p><img alt="Dibujo-small41" src="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall41.jpg" border="0" /></p>
<p><strong><em>Figura 04. Contrasenia Correcta</em></strong></p>
<p>&nbsp;</p>
<p>Espero que les haya servido</p>
<p>&nbsp;</p>
<p><strong>Christian</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="bjtags">Tags:  <a rel="tag" href="http://technorati.com/tag/LDAP">LDAP</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=40&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2008/10/06/uso-del-ldap-para-el-modulo-de-autenticaciones-en-seam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/untitled-small.jpg" medium="image">
			<media:title type="html">Untitled</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile32.gif" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall5.jpg" medium="image">
			<media:title type="html">Dibujo-small5</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall13.jpg" medium="image">
			<media:title type="html">Dibujo-small13</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall5.jpg" medium="image">
			<media:title type="html">Dibujo-small5</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile32.gif" medium="image" />

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall31.jpg" medium="image">
			<media:title type="html">Dibujo-small31</media:title>
		</media:content>

		<media:content url="http://chrisrod.files.wordpress.com/2009/01/dibujo-2dsmall41.jpg" medium="image">
			<media:title type="html">Dibujo-small41</media:title>
		</media:content>
	</item>
		<item>
		<title>Uso de programas java para la asignacion de usuarios en jBPM</title>
		<link>http://chrisrod.wordpress.com/2008/10/06/uso-de-programas-java-para-la-asignacion-de-usuarios-en-jbpm-2/</link>
		<comments>http://chrisrod.wordpress.com/2008/10/06/uso-de-programas-java-para-la-asignacion-de-usuarios-en-jbpm-2/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 19:45:36 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[JBPM]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2008/10/06/uso-de-programas-java-para-la-asignacion-de-usuarios-en-jbpm-2/</guid>
		<description><![CDATA[&#160; Utilizando la interfaz &#8220;org.jbpm.taskmgmt.def.AssignmentHandler&#8221; es posible asignar un usuario o un grupo de usuarios a una tarea especifica del jBPM. Lo unico que se tiene que hacer en la opcion de &#8220;Assignment&#8221; de cada tarea, escoger la opcion &#8220;Handler&#8221;, tal como se puede apreciar en la siguiente figura: Figura 01. Task Assignment El codigo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=38&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><img alt="Jbpm+users" src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/jbpm-2busers.gif" border="0" /></p>
<p>Utilizando la interfaz &ldquo;<font size="2">org.jbpm.taskmgmt.def.AssignmentHandler</font>&rdquo; es posible asignar un usuario o un grupo de usuarios a una tarea especifica del jBPM.</p>
<p>Lo unico que se tiene que hacer en la opcion de &ldquo;Assignment&rdquo; de cada tarea, escoger la opcion &ldquo;Handler&rdquo;, tal como se puede apreciar en la siguiente figura:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small2.jpg" border="0" /></p>
<p><strong>Figura 01. Task Assignment</strong></p>
<p>El codigo java que ha de asignar&nbsp;un usuario en funcion de una variable&nbsp;es el siguiente:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small11.jpg" border="0" /></p>
<p><strong>Figura 02. Codigo java que asigna un solo usuario a una tarea</strong></p>
<p>El codigo java que ha de asignar un grupo de usuarios, es el siguiente:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small21.jpg" border="0" /></p>
<p><strong>Figura 03. Codigo java que asigna un grupo de usuarios</strong></p>
<p>Como pueden apreciar, el anterior codigo asigna una tarea a un grupo de usuarios en funcion del grupo al&nbsp;que pertenecen, el cual es extraido de una Base de Datos.</p>
<p>De esta forma es posible asignar usuarios de forma dinamica y lo mas importante la actualizacion de los actores a los cuales es asignada una determinada tarea solo necesita ser actualizada desde una Base de Datos <img src="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile31.gif" />&nbsp;sin variar el codigo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=38&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2008/10/06/uso-de-programas-java-para-la-asignacion-de-usuarios-en-jbpm-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/jbpm-2busers.gif" medium="image">
			<media:title type="html">Jbpm+users</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small2.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small11.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/dibujo-small21.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/08/smile31.gif" medium="image" />
	</item>
		<item>
		<title>Instanciacion de WorkFlows del jBPM mediante Web Services</title>
		<link>http://chrisrod.wordpress.com/2008/10/06/instanciacion-de-workflows-del-jbpm-mediante-web-services-2/</link>
		<comments>http://chrisrod.wordpress.com/2008/10/06/instanciacion-de-workflows-del-jbpm-mediante-web-services-2/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 19:44:35 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[JBPM]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2008/10/06/instanciacion-de-workflows-del-jbpm-mediante-web-services-2/</guid>
		<description><![CDATA[Como mucho de ustedes sabran, los Servicios Web son un conjunto de protocolos y&#160;estandares que permiten intercambiar datos&#160;entre aplicaciones, es de esta&#160;manera que de forma estandar podemos realizar la interconexion de diferentes equipos sin tener que preocuparnos de su tecnologia o su procedencia. En pocas palabras, la definicion de &#8220;Web Services&#8221; segun la Wikipedia es [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=36&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como mucho de ustedes sabran, los Servicios Web son un conjunto de protocolos y&nbsp;estandares que permiten intercambiar datos&nbsp;entre aplicaciones, es de esta&nbsp;manera que de forma estandar podemos realizar la interconexion de diferentes equipos sin tener que preocuparnos de su tecnologia o su procedencia.</p>
<p>En pocas palabras, la definicion de &ldquo;Web Services&rdquo; segun la Wikipedia es la siguiente:</p>
<blockquote>
<p>Un <b>servicio web</b> (en inglés <i>Web service</i>) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estandares abiertos. Las organizaciones&nbsp;<a title="OASIS (organización)" href="http://es.wikipedia.org/wiki/OASIS_%28organizaci%C3%B3n%29">OASIS</a> y <a title="World Wide Web Consortium" href="http://es.wikipedia.org/wiki/World_Wide_Web_Consortium">W3C</a> son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares.</p>
</blockquote>
<p>&nbsp;</p>
<p>Una ves dado el breve marco teorico, procedere a explicar la solucion de un problema que me tuvo pensando e investigando por mucho tiempo (al rededor de un mes aproximadamente), mediante el cual es posible instanciar flujos del jBPM desde una aplicacion externa simplemente utlizando Web Services.</p>
<p>Los IDEs que utilice para estas tareas fueron: NetBeans 6.1 (mi preferido) y Eclipse (al cual le estoy empezando a hallar el gustito).</p>
<p>Utilice Eclipse para la elaboracion de mi flujo jBPM y utilice NetBeans 6.1 para la elaboracion del EJB Module el cual sera el que alvergara el Web Services que escuchara nuestros requerimientos.</p>
<p>Este pequeño tutorial se enfocara principalmente en la elaboracion del EJB Module con el cual crearemos el Web Service que podra instanciar flujos de una manera externa al jBPM.</p>
<p><strong>Creacion del EJB Module</strong></p>
<p>En el NetBeans crea un nuevo proyecto de la categoria enterprise tal como se aprecia en la figura:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small1.jpg" border="0" /></p>
<p><strong><em>Figura 01. Creacion del EJB Module</em></strong></p>
<p>Sigue los mismos pasos descritos en el libro &ldquo;<strong>Building SOA-Based Composite Applications Using NetBeans IDE 6</strong>&rdquo; acerca de la creacion de un&nbsp;&ldquo;EJB Module&rdquo;. Este libro es muy bueno si uno quiere meterse en el mundo de SOA tal como lo comente hace un tiempo atras en este mismo Blog.</p>
<p>Pienso que dos partes son muy importantes para que este Servicio Web funcione correctamente:</p>
<p>01) La configuracion correcta de los archivos xml: <strong>jbpm.cfg.xml</strong> y <strong>hibernate.cfg.xml</strong></p>
<p>02) El codigo que instanciara remotamente el flujo</p>
<p>Empecemos por lo primero, es decir los archivos xml.</p>
<p><strong>Los archivos XML</strong></p>
<p>Tu archivo <strong>jbpm.cfg.xml</strong> debe tener la siguiente estructura:</p>
<blockquote>
<p>&lt;jbpm-configuration&gt;</p>
<p>&nbsp; &lt;jbpm-context&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;persistence&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;factory&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean class=&#8221;org.jbpm.persistence.db.DbPersistenceServiceFactory&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;field name=&#8221;isTransactionEnabled&#8221;&gt;&lt;false/&gt;&lt;/field&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bean&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/factory&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/service&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;tx&#8221; factory=&#8221;org.jbpm.tx.TxServiceFactory&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;message&#8221; factory=&#8221;org.jbpm.msg.db.DbMessageServiceFactory&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;scheduler&#8221; factory=&#8221;org.jbpm.scheduler.db.DbSchedulerServiceFactory&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;logging&#8221; factory=&#8221;org.jbpm.logging.db.DbLoggingServiceFactory&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;service name=&#8221;authentication&#8221; factory=&#8221;org.jbpm.security.authentication.DefaultAuthenticationServiceFactory&#8221; /&gt;<br />&nbsp; &lt;/jbpm-context&gt;</p>
<p>&lt;/jbpm-configuration&gt;</p>
</blockquote>
<p>&nbsp;y el archivo <strong>hibernate.cfg.xml</strong> la siguiente:</p>
<blockquote>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />&lt;!DOCTYPE hibernate-configuration PUBLIC &#8220;-//Hibernate/Hibernate Configuration DTD 3.0//EN&#8221;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;<A href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</A>&#8220;&gt;<br />&lt;hibernate-configuration&gt;<br />&nbsp;&lt;session-factory name=&#8221;Acceso&#8221;&gt;<br />&nbsp; &lt;property name=&#8221;show_sql&#8221;&gt;false&lt;/property&gt;<br />&nbsp; &lt;property name=&#8221;connection.datasource&#8221;&gt;java:/dvdDatasource&lt;/property&gt;<br />&nbsp; &lt;property name=&#8221;transaction.factory_class&#8221;&gt;org.hibernate.transaction.JTATransactionFactory&lt;/property&gt;<br />&nbsp; &lt;property name=&#8221;transaction.manager_lookup_class&#8221;&gt;org.hibernate.transaction.JBossTransactionManagerLookup&lt;/property&gt;<br />&nbsp; &lt;property name=&#8221;cache.provider_class&#8221;&gt;org.hibernate.cache.HashtableCacheProvider&lt;/property&gt;<br />&nbsp; &lt;property name=&#8221;hbm2ddl.auto&#8221;&gt;create-drop&lt;/property&gt;<br />&nbsp; &lt;!&#8211;property name=&#8221;transaction.flush_before_completion&#8221;&gt;true&lt;/property<br />&nbsp;############################################ <br />&nbsp;# mapping files with external dependencies # <br />&nbsp;############################################ <br />&nbsp;following mapping file has a dependendy on&nbsp;&nbsp; <br />&nbsp;&#8217;bsh-{version}.jar&#8217;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;uncomment this if you don&#8217;t have bsh on your <br />&nbsp;classpath.&nbsp; you won&#8217;t be able to use the&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;script element in process definition files&nbsp;&nbsp; &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/action/Script.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; following mapping files have a dependendy on&nbsp; <br />&nbsp;&#8217;jbpm-identity.jar&#8217;, mapping files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;of the pluggable jbpm identity component.&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;Uncomment the following 3 lines if you&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;want to use the jBPM identity mgmgt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;component.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;identity mappings (begin) ===<br />&nbsp;&nbsp;&nbsp; &lt;mapping resource=&#8221;org/jbpm/identity/User.hbm.xml&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mapping resource=&#8221;org/jbpm/identity/Group.hbm.xml&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mapping resource=&#8221;org/jbpm/identity/Membership.hbm.xml&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; ==== identity mappings (end) <br />&nbsp;following mapping files have a dependendy on&nbsp; <br />&nbsp;the JCR API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;jcr mappings (begin) ===<br />&nbsp;&nbsp;&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; ==== jcr mappings (end) <br />&nbsp;###################### <br />&nbsp;# jbpm mapping files # <br />&nbsp;###################### <br />&nbsp;hql queries and type defs &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/db/hibernate.queries.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; graph.action mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/action/MailAction.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; graph.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/ProcessDefinition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/Node.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/Transition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/Event.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/Action.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/SuperState.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/def/ExceptionHandler.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/instantiation/Delegation.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; graph.node mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/StartState.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/EndState.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/ProcessState.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/Decision.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/Fork.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/Join.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/MailNode.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/State.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/node/TaskNode.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; context.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/def/ContextDefinition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/def/VariableAccess.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; taskmgmt.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/def/Swimlane.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/def/Task.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/def/TaskController.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; module.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/module/def/ModuleDefinition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; bytes mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/bytes/ByteArray.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; file.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/file/def/FileDefinition.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; scheduler.def mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/scheduler/def/CreateTimerAction.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/scheduler/def/CancelTimerAction.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; graph.exe mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/exe/Comment.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/exe/ProcessInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/exe/Token.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/exe/RuntimeAction.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; module.exe mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/module/exe/ModuleInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; context.exe mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/ContextInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/TokenVariableMap.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/VariableInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/exe/variableinstance/ StringInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; job mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/job/Job.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/job/Timer.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/job/ExecuteNodeJob.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/job/ExecuteActionJob.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; taskmgmt.exe mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/exe/PooledActor.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;!&#8211; logging mapping files &#8211;&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/logging/log/ProcessLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/logging/log/MessageLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/logging/log/CompositeLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/ActionLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/NodeLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/ProcessStateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/SignalLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/TokenCreateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/TokenEndLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/graph/log/TransitionLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/VariableLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/VariableCreateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/VariableDeleteLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/VariableUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/TaskLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml&#8221;/&gt;<br />&nbsp; &lt;mapping resource=&#8221;org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml&#8221;/&gt;<br />&nbsp;&lt;/session-factory&gt;<br />&lt;/hibernate-configuration&gt;</p>
</blockquote>
<p>&nbsp;</p>
<p>Ambos archivos debes localizarlos en el directorio &ldquo;Source Packages&rdquo; de tu EJB Module</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small11.jpg" border="0" /></p>
<p><strong><em>Figura 02. Ubicacion de los archivos xml</em></strong></p>
<p><strong>El Codigo</strong></p>
<p>El codigo que permitira que tu Servicio Web instancie un flujo remotamente es el siguiente:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small2.jpg" border="0" /></p>
<p><strong><em>Figura 03. Codigo que instancia flujos remotamente</em></strong></p>
<p>&nbsp;</p>
<p>Para concluir en el anterior codigo utilice el exelente Tutorial &ldquo;<strong>jbpm3.2.2-handsontutorial</strong>&rdquo; el cual te lo puedes descargar de la Wiki de jBoss, el cual es tremendamente recomendable si quieres entender la logica de funcionamiento de jBPM.</p>
<p>Y listo, deploya este EJB Module en tu servidor jBoss, y testea el Servicio Web con cualquier programa que realice esto, el que YO utlizo es: &ldquo;<strong>SOAP UI</strong>&rdquo; el cual tambien te lo puedes descargar de la red <img src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/smile33.gif" /></p>
<p>El resultado que obtuve fue el siguiente:</p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small3.jpg" border="0" /></p>
<p><strong><em>Figura 04. Web Service deployado (</em></strong><a href="http://127.0.0.1:8080/jbossws/services"><strong><em>http://127.0.0.1:8080/jbossws/services</em></strong></a><strong><em>)</em></strong></p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small4.jpg" border="0" /></p>
<p><strong><em>Figura 05. Resultado del Servicio Web consumido</em></strong></p>
<p>&nbsp;</p>
<p>Espero que les haya servido </p>
<p>&nbsp;</p>
<p><strong>Christian</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="bjtags">Tags:  <a rel="tag" href="http://technorati.com/tag/jbpm">jbpm</a>, <a rel="tag" href="http://technorati.com/tag/soa">soa</a>, <a rel="tag" href="http://technorati.com/tag/instanciar+flujos">instanciar+flujos</a>, <a rel="tag" href="http://technorati.com/tag/jboss">jboss</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=36&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2008/10/06/instanciacion-de-workflows-del-jbpm-mediante-web-services-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small1.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small11.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small2.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/smile33.gif" medium="image" />

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small3.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small4.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>
	</item>
		<item>
		<title>Importante TIP para utilizar variables de los beans del SEAM con las clases del jBPM</title>
		<link>http://chrisrod.wordpress.com/2008/10/06/importante-tip-para-utilizar-variables-de-los-beans-del-seam-con-las-clases-del-jbpm-3/</link>
		<comments>http://chrisrod.wordpress.com/2008/10/06/importante-tip-para-utilizar-variables-de-los-beans-del-seam-con-las-clases-del-jbpm-3/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 16:49:10 +0000</pubDate>
		<dc:creator>chrisrod</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBPM]]></category>
		<category><![CDATA[SEAM]]></category>

		<guid isPermaLink="false">http://chrisrod.wordpress.com/2008/10/06/importante-tip-para-utilizar-variables-de-los-beans-del-seam-con-las-clases-del-jbpm-3/</guid>
		<description><![CDATA[&#160; Uno de las grandes posibilidades que nos da SEAM es la posibilidad de integrarlo con el jBPM, es de esta forma que&#160;encotre un camino para utilizar las variables seteadas en un Bean del SEAM dentro de una clase del jBPM. La forma es la siguiente: 01. Seteamos una variable del SEAM a traves de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=34&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img alt="Jbpm_logo9" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/jbpm-logo9.gif" border="0" /></p>
<p>&nbsp;</p>
<p>Uno de las grandes posibilidades que nos da SEAM es la posibilidad de integrarlo con el jBPM, es de esta forma que&nbsp;encotre un camino para utilizar las variables seteadas en un Bean del SEAM dentro de una clase del jBPM.</p>
<p>La forma es la siguiente:</p>
<p><strong>01.</strong> Seteamos una variable del SEAM a traves de un bean utilizando la siguiente notacion:</p>
<p><font color="#646464" size="2"></p>
<p align="left">@Out</font><font size="2">(value=</font><font color="#2a00ff" size="2"><font color="#000000">&#8220;</FONT>variableX&#8221;</font><font size="2">,scope=ScopeType.</font><i><font color="#0000c0" size="2">BUSINESS_PROCESS</i></font><font size="2">)</p>
<p></font><b><font color="#7f0055" size="2">private</b></font><font size="2"> </font><b><font color="#7f0055" size="2">boolean</b></font><font size="2"> valorDeVariableX</font><font size="2">;</font></p>
<p><font size="2">De esta forma &ldquo;variableX&rdquo; a de ser el nombre de la variable a ser almacenada en la base de datos del jBPM (Especificamente hablando, esta variable es almacenada en la tabla &ldquo;<strong>jbpm_variableinstance</strong>&rdquo;) y &ldquo;valorDeVariableX&rdquo; ha de ser el valor de esa variable.</font></p>
<p><img alt="Dibujo" src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small.jpg" border="0" /></p>
<p><strong><em>Figura 01. Tabla de almacenamiento de variables del jBPM</em></strong></p>
<p><strong><em></em></strong>&nbsp;</p>
<p><strong>02.&nbsp; </strong>Obtener &ldquo;variableX&rdquo; utilizando clases del jBPM. </p>
<p>Estas clases pueden ser &ldquo;<font size="2">DecisionHandler (que en realidad es una interfaz utilizada en el nodo de toma de decisiones)</font>&rdquo; o la clase &ldquo;<font size="2">ActionHandler&rdquo; (que tambien es otra interfaz utlizada para ejecutar una accion en cualquier nodo del jBBPM)</font></p>
<p>La forma de obtener esta &ldquo;variableX&rdquo; sera la siguiente:</p>
<p><b><font color="#7f0055" size="2">boolean</b></font><font size="2"> decide=(Boolean)Contexts.<i>getBusinessProcessContext</i>().get(</font><font color="#0000c0" size="2">&#8220;<FONT color="#2a00ff">variableX</FONT><FONT color="#0000c0">&#8220;</font></font><font size="2"><font color="#0000c0">);</font></font></p>
<p><font size="2"></font>&nbsp;</p>
<p><font size="2">Como pueden apreciar esta no es una forma muy elegante de darle uso al SEAM, pero puesto que soy un Ingeniero Electronico al que principalmente le importa que las cosas funcionen, para mi es una solucion que me quita un problema de la cabeza <img src="http://noc/blog/christian.roman/wp-content/uploads/2008/07/smile32.gif" />.</font></p>
<p><strong><font size="2">Espero que les sirva </font></strong></p>
<p><strong></strong>&nbsp;</p>
<p><strong>Christian <font size="2"></p>
<p></font></strong></p>
<p>&nbsp;</p>
<div class="bjtags">Tags:  <a rel="tag" href="http://technorati.com/tag/jbpm">jbpm</a>, <a rel="tag" href="http://technorati.com/tag/seam">seam</a>, <a rel="tag" href="http://technorati.com/tag/flujos">flujos</a>, <a rel="tag" href="http://technorati.com/tag/variableinstance">variableinstance</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisrod.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisrod.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisrod.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisrod.wordpress.com&amp;blog=3967017&amp;post=34&amp;subd=chrisrod&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisrod.wordpress.com/2008/10/06/importante-tip-para-utilizar-variables-de-los-beans-del-seam-con-las-clases-del-jbpm-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d394bd162b4b3df7e65c9bc52572c09?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chrisrod</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/jbpm-logo9.gif" medium="image">
			<media:title type="html">Jbpm_logo9</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/dibujo-small.jpg" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://noc/blog/christian.roman/wp-content/uploads/2008/07/smile32.gif" medium="image" />
	</item>
	</channel>
</rss>
