diff --git a/workflow/engine/methods/services/Rest/CRUD.java b/workflow/engine/methods/services/Rest/CRUD.java
new file mode 100644
index 000000000..d26b07971
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/CRUD.java
@@ -0,0 +1,203 @@
+// Main class to sent differen kind of messages to the http server
+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 fetch goal
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpEntity;
+import org.apache.http.util.EntityUtils;
+
+/**
+* Single class containing functions to show how to use GET,POST,PUT,DELETE methods.
+*/
+public class CRUD
+{
+ private static String m_user = "workflow"; // This member variable must be changed to its own dev workspace
+
+ private static void PostSample()
+ {
+ System.out.println("POST: Enter login params\n");
+
+ String loginParamsXML = "\n"
+ +"\n"
+ +"admin\n"
+ +"admin\n"
+ +"";
+ String URI = "http://"+m_user+".pmos.colosa.net/rest/"+m_user+"/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://"+m_user+".pmos.colosa.net/rest/"+m_user+"/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://"+m_user+".pmos.colosa.net/rest/"+m_user+"/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://"+m_user+".pmos.colosa.net/rest/"+m_user+"/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://"+m_user+".pmos.colosa.net/rest/"+m_user+"/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 samples.");
+ 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..ae2ed0dbe
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/CURLMessage.php
@@ -0,0 +1,149 @@
+restServer = PROTOCOL_HTTP . COLON.PATH_SEP . PATH_SEP;
+ $this->restServer .= $_SERVER['SERVER_NAME'] . PATH_SEP;
+ $this->restServer .= $this->serviceTechnic . PATH_SEP . $workspace . 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..191a693fe
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/FormatedMessage.php
@@ -0,0 +1,46 @@
+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..2a8d8f332
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/JsonMessage.php
@@ -0,0 +1,43 @@
+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..f6c7488b6
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/RestMessage.php
@@ -0,0 +1,47 @@
+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..94cfd3ec1
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/SimpleMessage.php
@@ -0,0 +1,43 @@
+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..9d33db4fd
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/XmlMessage.php
@@ -0,0 +1,48 @@
+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..3b93426e0
--- /dev/null
+++ b/workflow/engine/methods/services/Rest/testing.php
@@ -0,0 +1,37 @@
+'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", "sample", "2012-06-06" );
+$rest->sendPOST($table,$msg);
+$rest->displayResponse();
+
+$msg = array( "HOUSE", "PUSHIN", "en", "samplemod", "2012-07-06" );
+$rest->sendPUT($table,$msg);
+$rest->displayResponse();
+
+$msg = array( "HOUSE", "PUSHIN", "en");
+$rest->sendDELETE($table,$msg);
+$rest->displayResponse();
+
+?>