diff --git a/workflow/engine/methods/services/Rest/CRUD.java b/workflow/engine/methods/services/Rest/CRUD.java
new file mode 100644
index 000000000..c9dea78f0
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/CRUD.java
@@ -0,0 +1,200 @@
+//Archivo HolaMundo.java
+
+// Main class to sent differen kind of messages
+import org.apache.http.impl.client.DefaultHttpClient;
+
+// Enter CRUD memebers
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpDelete;
+
+// Used to set JSON or XML messages request
+import org.apache.http.entity.StringEntity;
+
+// Needed for response goal
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpEntity;
+import org.apache.http.util.EntityUtils;
+
+
+public class CRUD
+{
+ private static void PostSample()
+ {
+ System.out.println("POST: Enter login params\n");
+
+ String loginParamsXML = "\n"
+ +"\n"
+ +"admin\n"
+ +"admin\n"
+ +"";
+ String URI = "http://ralph.pmos.colosa.net/rest/ralph/login/";
+
+ System.out.println( "Request: "+URI + "\n"+ loginParamsXML + "\n");
+
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ HttpPost postRequest = new HttpPost(URI);
+ try
+ {
+ StringEntity input = new StringEntity( loginParamsXML);
+ input.setContentType("application/xml");
+ postRequest.setEntity(input);
+ HttpResponse httpResponse = httpClient.execute(postRequest);
+
+ HttpEntity responseEntity = httpResponse.getEntity();
+ if( responseEntity != null)
+ {
+ String response = new String();
+ response = EntityUtils.toString( responseEntity);
+ System.out.println( "Response: " + response + "\n");
+ }
+ }
+ catch( java.io.IOException x)
+ {
+ throw new RuntimeException("I/O error" + x.toString());
+ }
+ }
+
+ private static void GetSample()
+ {
+ System.out.println("GET: Display TRANSLATION table row\n");
+
+ String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/LABEL/LOGIN/en/";
+ System.out.println( "Request: " + URI + "\n");
+
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ HttpGet getRequest = new HttpGet(URI);
+ try
+ {
+ HttpResponse httpResponse = httpClient.execute(getRequest);
+
+ HttpEntity responseEntity = httpResponse.getEntity();
+ if( responseEntity != null)
+ {
+ String response = new String();
+ response = EntityUtils.toString( responseEntity);
+ System.out.println( "Response: " + response + "\n");
+ }
+ }
+ catch( java.io.IOException x)
+ {
+ throw new RuntimeException("I/O error" + x.toString());
+ }
+ }
+
+ private static void AnotherPostSample()
+ {
+ System.out.println("POST: Insert new row in TRANLATION\n");
+
+ String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/";
+ String newRow = "BUTTON/ESCAPE/en/sample/2012-05-05/";
+ System.out.println( "Request: " + URI + " new row: " + newRow + "\n");
+ URI = URI + newRow;
+
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ HttpPost postRequest = new HttpPost(URI);
+ try
+ {
+ HttpResponse httpResponse = httpClient.execute(postRequest);
+
+ HttpEntity responseEntity = httpResponse.getEntity();
+ if( responseEntity != null)
+ {
+ String response = new String();
+ if(response.isEmpty())
+ {
+ System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n");
+ return;
+ }
+ response = EntityUtils.toString( responseEntity);
+ System.out.println( "Response: " + response + "\n");
+ }
+ }
+ catch( java.io.IOException x)
+ {
+ throw new RuntimeException("I/O error" + x.toString());
+ }
+ }
+
+ private static void PutSample()
+ {
+ System.out.println("POST: Update a row in TRANLATION\n");
+
+ String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/";
+ String index = "BUTTON/ESCAPE/en/";
+ String updateData = "changesample/2011-07-06/";
+
+ System.out.println( "Request: " + URI + " index: " + index + " updateData: " + updateData + "\n");
+ URI = URI + index + updateData;
+
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ HttpPut putRequest = new HttpPut(URI);
+ try
+ {
+ HttpResponse httpResponse = httpClient.execute(putRequest);
+
+ HttpEntity responseEntity = httpResponse.getEntity();
+ if( responseEntity != null)
+ {
+ String response = new String();
+ if(response.isEmpty())
+ {
+ System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n");
+ return;
+ }
+ response = EntityUtils.toString( responseEntity);
+ System.out.println( "Response: " + response + "\n");
+ }
+ }
+ catch( java.io.IOException x)
+ {
+ throw new RuntimeException("I/O error" + x.toString());
+ }
+ }
+
+ private static void DeleteSample()
+ {
+ System.out.println("DELETE: Remove a row in TRANLATION\n");
+
+ String URI = "http://ralph.pmos.colosa.net/rest/ralph/TRANSLATION/";
+ String index = "BUTTON/ESCAPE/en/";
+
+ System.out.println( "Request: " + URI + "index:" + index + "\n");
+ URI = URI + index;
+
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ HttpDelete deleteRequest = new HttpDelete(URI);
+ try
+ {
+ HttpResponse httpResponse = httpClient.execute(deleteRequest);
+
+ HttpEntity responseEntity = httpResponse.getEntity();
+ if( responseEntity != null)
+ {
+ String response = new String();
+ if(response.isEmpty())
+ {
+ System.out.println( "Response: Status code: " + httpResponse.getStatusLine().getStatusCode()+ "\n");
+ return;
+ }
+ response = EntityUtils.toString( responseEntity);
+ System.out.println( "Response: " + response + "\n");
+ }
+ }
+ catch( java.io.IOException x)
+ {
+ throw new RuntimeException("I/O error" + x.toString());
+ }
+ }
+
+ public static void main(String args[])
+ {
+ System.out.println("CRUD sample.");
+ PostSample();
+ GetSample();
+ AnotherPostSample();
+ PutSample();
+ DeleteSample();
+ }
+}
\ No newline at end of file
diff --git a/workflow/engine/methods/services/Rest/CURLMessage.php b/workflow/engine/methods/services/Rest/CURLMessage.php
new file mode 100644
index 000000000..7ca2f992a
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/CURLMessage.php
@@ -0,0 +1,116 @@
+restServer = PROTOCOL_HTTP.COLON.PATH_SEP.PATH_SEP;
+ $this->restServer .= $_SERVER['SERVER_NAME'].PATH_SEP;
+ $this->restServer .= $this->serviceTechnic.PATH_SEP.$user.PATH_SEP;
+
+ $this->ch = curl_init();
+ curl_setopt( $this->ch, CURLOPT_TIMEOUT, 2);
+ curl_setopt( $this->ch, CURLOPT_POST, 1);
+ curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 1);
+ }
+ //set the message in order to follow the message format
+ abstract protected function format( array $message);
+
+ //Set properties used in a simpleMessage Class like a set in a URI, or formatted as a JSon msg.
+ abstract protected function setMoreProperties( $messageFormated);
+
+ //attach the method to the restServer path, set the type of the message, and the message itself.
+ protected function setMessageProperties( $method, array $message)
+ {
+ $messageFormated = $this->format( $message);
+ $this->server_method = $this->restServer . $method;
+ $this->setMoreProperties( $messageFormated);
+ }
+ //Send or execute(curl notation) the message using a rest method
+ public function send( $method, array $message)
+ {
+ self::setMessageProperties( $method, $message);
+ $this->output = curl_exec( $this->ch);
+ return $this->output;
+ }
+ //set the message to GET method type
+ public function sendGET( $method, array $message)
+ {
+ curl_setopt($this->ch, CURLOPT_HTTPGET, true);
+ return $this->send( $method, $message);
+ }
+ //set the message to POST method type
+ public function sendPOST( $method, array $message)
+ {
+ curl_setopt($this->ch, CURLOPT_POST, true);
+ return $this->send( $method, $message);
+ }
+ //set the message to PUT method type
+ public function sendPUT( $method, array $message)
+ {
+ curl_setopt($this->ch, CURLOPT_PUT, true);
+ return $this->send( $method, $message);
+ }
+ //set the message to DELETE method type
+ public function sendDELETE( $method, array $message)
+ {
+ curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, "DELETE");
+ return $this->send( $method, $message);
+ }
+ //Display all the data that the response could got.
+ public function displayResponse()
+ {
+ $error = curl_error($this->ch);
+ $result = array( 'header' => '',
+ 'body' => '',
+ 'curl_error' => '',
+ 'http_code' => '',
+ 'last_url' => '');
+ if ( $error != "" )
+ {
+ $result['curl_error'] = $error;
+ return $result;
+ }
+ $response = $this->output;
+ $header_size = curl_getinfo($this->ch,CURLINFO_HEADER_SIZE);
+ $result['header'] = substr($response, 0, $header_size);
+ $result['body'] = substr( $response, $header_size );
+ $result['http_code'] = curl_getinfo($this -> ch,CURLINFO_HTTP_CODE);
+ $result['last_url'] = curl_getinfo($this -> ch,CURLINFO_EFFECTIVE_URL);
+
+ echo $this->type." Response: ".$response."
";
+ foreach($result as $index => $data)
+ {
+ if( $data != "")
+ {
+ echo $index."=".$data."
";
+ }
+ }
+ echo "
";
+ }
+ //Close the Curl session using the Curl Handle set by curl_init() function.
+ public function close()
+ {
+ curl_close( $this->ch);
+ }
+}
+
+?>
diff --git a/workflow/engine/methods/services/Rest/FormatedMessage.php b/workflow/engine/methods/services/Rest/FormatedMessage.php
new file mode 100644
index 000000000..7909acfbc
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/FormatedMessage.php
@@ -0,0 +1,29 @@
+server_method . PATH_SEP . $messageFormated."
";
+ //
+ curl_setopt($this->ch, CURLOPT_URL, $this->server_method);
+ $contentSelected = $this->content . $this->type;
+ curl_setopt($this->ch, CURLOPT_HTTPHEADER, array($contentSelected));
+ curl_setopt($this->ch, CURLOPT_POSTFIELDS, $messageFormated);
+ }
+}
+?>
\ No newline at end of file
diff --git a/workflow/engine/methods/services/Rest/JsonMessage.php b/workflow/engine/methods/services/Rest/JsonMessage.php
new file mode 100644
index 000000000..535657aa8
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/JsonMessage.php
@@ -0,0 +1,29 @@
+type = "json";
+ }
+ //Format the array parameter to a json format.
+ protected function format( array $message)
+ {
+ if ( empty( $message) )
+ {
+ return ;
+ }
+ if ( is_array( $message) )
+ {
+ $jsonMessage = json_encode( $message);
+ }
+ return $jsonMessage;
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/workflow/engine/methods/services/Rest/RestMessage.php b/workflow/engine/methods/services/Rest/RestMessage.php
new file mode 100644
index 000000000..a12fd8ee1
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/RestMessage.php
@@ -0,0 +1,33 @@
+type = "rest";
+ }
+ //Format the array parameter to a single rest line format separed by '/'.
+ protected function format( array $message)
+ {
+ $rest = "";
+ if ( !empty( $message) )
+ {
+ if ( is_array( $message) )
+ {
+ foreach( $message as $index => $data)
+ {
+ $rest .= "/" . $data;
+ }
+ $rest .= "/";
+ }
+ }
+ return $rest;
+ }
+}
+
+?>
diff --git a/workflow/engine/methods/services/Rest/SimpleMessage.php b/workflow/engine/methods/services/Rest/SimpleMessage.php
new file mode 100644
index 000000000..b9b26606b
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/SimpleMessage.php
@@ -0,0 +1,26 @@
+server_method . PATH_SEP . $messageFormated."
";
+ //
+ curl_setopt($this->ch, CURLOPT_URL, $this->server_method . $messageFormated);
+ }
+}
+?>
\ No newline at end of file
diff --git a/workflow/engine/methods/services/Rest/XmlMessage.php b/workflow/engine/methods/services/Rest/XmlMessage.php
new file mode 100644
index 000000000..fdc96ca3e
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/XmlMessage.php
@@ -0,0 +1,34 @@
+type = "xml";
+ }
+ //Format the array parameter to a xml valid format. TODO: Need to find out a better way to do it.
+ protected function format( array $message)
+ {
+ if ( empty( $message) )
+ {
+ return ;
+ }
+ if ( is_array( $message) )
+ {
+ $xml = "";
+ foreach( $message as $index => $data)
+ {
+ $xml .= "<".$index.">".$data."".$index.">";
+ }
+ $xml .= "";
+ }
+ return $xml;
+ }
+}
+
+?>
diff --git a/workflow/engine/methods/services/Rest/testing.php b/workflow/engine/methods/services/Rest/testing.php
new file mode 100644
index 000000000..86e3d85a1
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/testing.php
@@ -0,0 +1,38 @@
+'admin', 'password'=>'admin');
+$method = "login";
+
+$jsonm = new JsonMessage();
+$jsonm->send( $method, $msg);
+$jsonm->displayResponse();
+
+$xmlm = new XmlMessage();
+$xmlm->send( $method, $msg);
+$xmlm->displayResponse();
+
+$msg = array("LABEL","LOGIN","en");
+$table = "TRANSLATION";
+
+$rest = new RestMessage();
+$rest->sendGET( $table, $msg);
+$rest->displayResponse();
+
+$msg = array("HOUSE","PUSHIN","en","maullidin","2012-06-06" );
+$rest->sendPOST( $table, $msg);
+$rest->displayResponse();
+
+$msg = array("HOUSE","PUSHIN","en","wacheneger","2012-07-06" );
+$rest->sendPUT( $table, $msg);
+$rest->displayResponse();
+
+$msg = array("HOUSE","PUSHIN","en" );
+$rest->sendDELETE( $table, $msg);
+$rest->displayResponse();
+
+
+?>