blob: fbc5cb11237a6dfcebc550c3d853a2cd8996d6d5 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Documentation/Processing/JSON REST API for BPEL pipelines,SMILA/Documentation/BPEL Workflow Processor,SMILA/Documentation/JettyHttpServer,SMILA/Documentation/Using The ReST API,SMILA/Documentation for 5 Minutes to Success" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/Processing/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Documentation/Processing/JSON REST API for BPEL pipelines - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "http://wiki.eclipse.org/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines";
var wgTitle = "SMILA/Documentation/Processing/JSON REST API for BPEL pipelines";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "31279";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "286737";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<style type="text/css">/*<![CDATA[*/
.source-javascript {line-height: normal; font-size: medium;}
.source-javascript li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for javascript
* CSS class: source-javascript, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-javascript .de1, .source-javascript .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-javascript {}
.source-javascript .head {}
.source-javascript .foot {}
.source-javascript .imp {font-weight: bold; color: red;}
.source-javascript .ln-xtra {color: #cc0; background-color: #ffc;}
.source-javascript li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-javascript li.li2 {font-weight: bold;}
.source-javascript .kw1 {color: #000066; font-weight: bold;}
.source-javascript .kw2 {color: #003366; font-weight: bold;}
.source-javascript .kw3 {color: #000066;}
.source-javascript .co1 {color: #009900; font-style: italic;}
.source-javascript .coMULTI {color: #009900; font-style: italic;}
.source-javascript .es0 {color: #000099; font-weight: bold;}
.source-javascript .br0 {color: #66cc66;}
.source-javascript .st0 {color: #3366CC;}
.source-javascript .nu0 {color: #CC0000;}
.source-javascript .me1 {color: #006600;}
.source-javascript .sc0 {}
.source-javascript .sc1 {}
.source-javascript .sc2 {}
.source-javascript .sc3 {}
.source-javascript .re0 {color: #0066FF;}
/*]]>*/
</style>
<style type="text/css">/*<![CDATA[*/
@import "http://wiki.eclipse.org/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
/*]]>*/
</style><link rel="stylesheet" type="text/css" href="JSON_REST_API_for_BPEL_pipelines.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Documentation_Processing_JSON_REST_API_for_BPEL_pipelines">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;oldid=286737">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="JSON_REST_API_for_BPEL_pipelines.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/Processing/JSON&#32;REST&#32;API&#32;for&#32;BPEL&#32;pipelines"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Documentation/Processing/JSON REST API for BPEL pipelines</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../../SMILA.html" title="SMILA">SMILA</a> | <a href="../../Documentation.1.html" title="SMILA/Documentation">Documentation</a></span></div>
<div id="jump-to-nav">Jump to: <a href="JSON_REST_API_for_BPEL_pipelines.html#column-one">navigation</a>, <a href="JSON_REST_API_for_BPEL_pipelines.html#searchInput">search</a></div> <!-- start content -->
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="JSON_REST_API_for_BPEL_pipelines.html#JSON_REST_API_for_SMILA_BPEL_pipelines"><span class="tocnumber">1</span> <span class="toctext">JSON REST API for SMILA BPEL pipelines</span></a>
<ul>
<li class="toclevel-2"><a href="JSON_REST_API_for_BPEL_pipelines.html#Reference"><span class="tocnumber">1.1</span> <span class="toctext">Reference</span></a>
<ul>
<li class="toclevel-3"><a href="JSON_REST_API_for_BPEL_pipelines.html#Get_Pipeline_Overview_or_Add.2FUpdate_a_Pipeline"><span class="tocnumber">1.1.1</span> <span class="toctext">Get Pipeline Overview or Add/Update a Pipeline</span></a></li>
<li class="toclevel-3"><a href="JSON_REST_API_for_BPEL_pipelines.html#Get_or_Delete_a_Pipeline_Definition"><span class="tocnumber">1.1.2</span> <span class="toctext">Get or Delete a Pipeline Definition</span></a></li>
<li class="toclevel-3"><a href="JSON_REST_API_for_BPEL_pipelines.html#Invoke_a_Pipeline"><span class="tocnumber">1.1.3</span> <span class="toctext">Invoke a Pipeline</span></a>
<ul>
<li class="toclevel-4"><a href="JSON_REST_API_for_BPEL_pipelines.html#Current_Limitations"><span class="tocnumber">1.1.3.1</span> <span class="toctext">Current Limitations</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-2"><a href="JSON_REST_API_for_BPEL_pipelines.html#Example_Walkthrough"><span class="tocnumber">1.2</span> <span class="toctext">Example Walkthrough</span></a>
<ul>
<li class="toclevel-3"><a href="JSON_REST_API_for_BPEL_pipelines.html#Accessing_Pipelines"><span class="tocnumber">1.2.1</span> <span class="toctext">Accessing Pipelines</span></a></li>
<li class="toclevel-3"><a href="JSON_REST_API_for_BPEL_pipelines.html#Defining_Pipelines"><span class="tocnumber">1.2.2</span> <span class="toctext">Defining Pipelines</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="JSON_REST_API_for_SMILA_BPEL_pipelines"></a><h2> <span class="mw-headline"> JSON REST API for SMILA BPEL pipelines </span></h2>
<p>SMILA now has an HTTP REST API that allows managing and invoking BPEL processing workflows.
</p>
<a name="Reference"></a><h3> <span class="mw-headline"> Reference </span></h3>
<p>Note: The trailing slash in URLs is optional.
</p>
<a name="Get_Pipeline_Overview_or_Add.2FUpdate_a_Pipeline"></a><h4> <span class="mw-headline"> Get Pipeline Overview or Add/Update a Pipeline </span></h4>
<p>GET: Returns a list of all deployed BPEL pipelines including URLs to access their definition.
</p><p>POST: Adds or updates a BPEL pipeline. Returns an object containing the timestamp of the creation/modification and a URL to the pipeline definition.
</p><p><b>Supported operations:</b>
</p>
<ul><li>GET: Gets a list of all available BPEL pipelines.
</li><li>POST: Adds or updates (if already existing) a BPEL pipeline. The request JSON object consists of a "name" and a "definition" field. The latter contains the pipeline description in BPEL format. If the respective pipeline is in use, the update process will take a little longer. Also, new invocations of this pipeline are blocked until the update is finished (about 100ms usually).
</li></ul>
<p><b>Usage:</b>
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/pipeline/</tt>
</li><li>Allowed methods:
<ul><li>GET (no further URL parameters and no request body allowed)
</li><li>POST (request body with a "name" and "definition" field is mandatory)
</li></ul>
</li><li>Response status codes:
<ul><li>200 OK: Upon successful execution of GET.
</li><li>201 CREATED: Upon successful creation/update of the pipeline.
</li><li>400 BAD REQUEST: If you post with an empty body, if you try to update a predefined pipeline, if the request body has syntax errors or the name is invalid.
</li><li>500 INTERNAL SERVER ERROR: Any other error.
</li></ul>
</li></ul>
<a name="Get_or_Delete_a_Pipeline_Definition"></a><h4> <span class="mw-headline"> Get or Delete a Pipeline Definition </span></h4>
<p>GET: Returns a JSON object containing the definition of the requested pipeline. The object consists of the name of the pipeline and the BPEL XML definition as a single string value. If the pipeline is predefined in the system configuration, the object will also contain a <tt>"readOnly": true</tt> flag. Otherwise, it will contain the <tt>timestamp</tt> of the latest add operation (see above) that created this version of the pipeline.
</p><p>DELETE: Deletes the requested BPEL pipeline.
</p><p><b>Supported operations:</b>
</p>
<ul><li>GET: Get a BPEL pipeline definition.
</li><li>DELETE: Delete the specified BPEL pipeline.
</li></ul>
<p><b>Usage:</b>
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/pipeline/&lt;workflow-name&gt;/</tt>
</li><li>Allowed methods:
<ul><li>GET (no further URL parameters and no request body allowed)
</li><li>DELETE (no further URL parameters and no request body allowed)
</li></ul>
</li><li>Response status codes:
<ul><li>200 OK: Upon successful execution for GET and DELETE. If you try to delete a pipeline which does not exist, you will get 200 OK, too.
</li><li>404 NOT FOUND: If the specified BPEL pipeline does not exist.
</li><li>500 INTERNAL SERVER ERROR: Any other error.
</li></ul>
</li></ul>
<a name="Invoke_a_Pipeline"></a><h4> <span class="mw-headline"> Invoke a Pipeline </span></h4>
<p>Process a record with the selected pipeline. Returns the result record as a JSON object. Record attachments are supported by using Multipart POST requests, see <a href="../JettyHttpServer.html#Attachments" title="SMILA/Documentation/JettyHttpServer">SMILA/Documentation/JettyHttpServer#Attachments</a> for details and code example.
</p><p><b>Supported operations:</b>
</p>
<ul><li>GET: Invokes a pipeline where the record to process is specified using URL parameters.
</li><li>POST: Invokes a pipeline where the record to process is contained in the request body as JSON (recommended).
</li></ul>
<p><b>Usage:</b>
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/pipeline/&lt;workflow-name&gt;/process/</tt>
</li><li>Allowed methods:
<ul><li>POST
</li><li>GET
</li></ul>
</li><li>Response status codes:
<ul><li>200 OK: Upon successful execution
</li><li>400 BAD REQUEST: In case of empty input records or invalid JSON.
</li><li>405 METHOD NOT ALLOWED: In case of an invalid HTTP method (i.e. other than GET or POST).
</li><li>500 INTERNAL SERVER ERROR: Other errors, e.g. error during processing.
</li></ul>
</li></ul>
<a name="Current_Limitations"></a><h5> <span class="mw-headline"> Current Limitations </span></h5>
<ul><li> Only the first result record is returned, no attachments will be contained.
</li><li> The request is executed using a pure transient blackboard, so the records and attachments are not persisted to <tt>RecordStore</tt> and <tt>BinaryStorage</tt>, respectively.
</li><li> The name of the pipeline must be a valid name (see <a href="../BPEL_Workflow_Processor.html#Pipeline_definition_using_BPEL" title="SMILA/Documentation/BPEL Workflow Processor">SMILA/Documentation/BPEL Workflow Processor#Pipeline_definition_using_BPEL</a>
</li></ul>
<a name="Example_Walkthrough"></a><h3> <span class="mw-headline"> Example Walkthrough </span></h3>
<div class="messagebox" style="background-color: #def3fe; border: 1px solid #c5d7e0; color: black; padding: 5px; margin: 1ex 0; min-height: 35px; padding-left: 45px;">
<div style="float: left; margin-left: -40px;"><a href="http://wiki.eclipse.org/Image:Note.png" class="image" title="Note.png"><img alt="" src="http://wiki.eclipse.org/images/c/cc/Note.png" width="35" height="35" border="0" /></a></div>
<div><b> Some Tool recommendations</b>
<p>See <a href="../Using_The_ReST_API.html" title="SMILA/Documentation/Using The ReST API">SMILA/Documentation/Using_The_ReST_API</a> for recommendations on how to use the ReST API manually.
</p>
For sake of simplicity, the following examples were produced with Resty.<b><br /></div></b>
</div>
<p>Preparation: Start SMILA and index some documents. E.g. follow the instructions on <a href="../../Documentation_for_5_Minutes_to_Success.html" title="SMILA/Documentation for 5 Minutes to Success">SMILA/Documentation for 5 Minutes to Success</a>.
</p>
<a name="Accessing_Pipelines"></a><h4> <span class="mw-headline"> Accessing Pipelines </span></h4>
<p>Let's start with the overview:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; resty http:<span class="co1">//localhost:8080</span>
http:<span class="co1">//localhost:8080*</span>
&gt; GET <span class="re0">/smila/pipeline/</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;pipelines&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;AddFeedPipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/AddFeedPipeline/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;XmlSplitAndAddPipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/XmlSplitAndAddPipeline/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;DeletePipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/DeletePipeline/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/SearchPipeline/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;AdaptFileCrawlerWorkerOutput&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/AdaptFileCrawlerWorkerOutput/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;AdaptWebCrawlerWorkerOutput&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/AdaptWebCrawlerWorkerOutput/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;AddPipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/AddPipeline/&quot;</span>
<span class="br0">&#125;</span> <span class="br0">&#93;</span>
<span class="br0">&#125;</span></pre></div>
<p>So we have seven pipelines deployed. Fine. Let's have a look at their definitions:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; GET <span class="re0">/smila/pipeline/SearchPipeline/</span>
<span class="br0">&#123;</span><span class="st0">&quot;name&quot;</span>:<span class="st0">&quot;SearchPipeline&quot;</span>,<span class="st0">&quot;readOnly&quot;</span>:<span class="kw2">true</span>,<span class="st0">&quot;definition&quot;</span>:<span class="st0">&quot;&lt;?xml version=<span class="es0">\&quot;</span>1.0<span class="es0">\&quot;</span> encoding=<span class="es0">\&quot;</span>utf-
8<span class="es0">\&quot;</span>&nbsp;?&gt;<span class="es0">\r</span><span class="es0">\n</span>&lt;!--<span class="es0">\r</span><span class="es0">\n</span> * Copyright (c) 2009 empolis GmbH and brox IT Solutions GmbH.<span class="es0">\r</span><span class="es0">\n</span> * All
rights reserved. This program and the accompanying materials<span class="es0">\r</span><span class="es0">\n</span> * are made available unde
r the terms of the Eclipse Public License v1.0<span class="es0">\r</span><span class="es0">\n</span> * which accompanies this distribution, a
nd is available at<span class="es0">\r</span><span class="es0">\n</span> * http://www.eclipse.org/legal/epl-v10.html<span class="es0">\r</span><span class="es0">\n</span> *<span class="es0">\r</span><span class="es0">\n</span> * Contributo
rs:<span class="es0">\r</span><span class="es0">\n</span> * Juergen Schumacher (empolis GmbH) - initial design<span class="es0">\r</span><span class="es0">\n</span>--&gt;<span class="es0">\r</span><span class="es0">\n</span>&lt;process name=<span class="es0">\&quot;</span>Sear
chPipeline<span class="es0">\&quot;</span> targetNamespace=<span class="es0">\&quot;</span>http://www.eclipse.org/smila/processor<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> xmlns=<span class="es0">\&quot;</span>http://
docs.oasis-open.org/wsbpel/2.0/process/executable<span class="es0">\&quot;</span> xmlns:xsd=<span class="es0">\&quot;</span>http://www.w3.org/2001/XMLSc
hema<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> xmlns:proc=<span class="es0">\&quot;</span>http://www.eclipse.org/smila/processor<span class="es0">\&quot;</span> xmlns:rec=<span class="es0">\&quot;</span>http://www.ecl
ipse.org/smila/record<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> xmlns:bpel=<span class="es0">\&quot;</span>http://docs.oasis-open.org/wsbpel/2.0/process/exec
utable<span class="es0">\&quot;</span>&gt;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span> &lt;import location=<span class="es0">\&quot;</span>processor.wsdl<span class="es0">\&quot;</span> namespace=<span class="es0">\&quot;</span>http://www.eclipse.org/sm
ila/processor<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> importType=<span class="es0">\&quot;</span>http://schemas.xmlsoap.org/wsdl/<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span> &lt;partnerL
inks&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;partnerLink name=<span class="es0">\&quot;</span>Pipeline<span class="es0">\&quot;</span> partnerLinkType=<span class="es0">\&quot;</span>proc:ProcessorPartnerLinkType<span class="es0">\</span>
&quot;</span> myRole=\<span class="st0">&quot;service<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/partnerLinks&gt;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span> &lt;extensions&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;extension namespa
ce=<span class="es0">\&quot;</span>http://www.eclipse.org/smila/processor<span class="es0">\&quot;</span> mustUnderstand=<span class="es0">\&quot;</span>no<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/extensions&gt;<span class="es0">\r</span><span class="es0">\</span>
n<span class="es0">\r</span><span class="es0">\n</span> &lt;variables&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;variable name=<span class="es0">\&quot;</span>request<span class="es0">\&quot;</span> messageType=<span class="es0">\&quot;</span>proc:ProcessorMessage<span class="es0">\&quot;</span> /
&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/variables&gt;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span> &lt;sequence name=<span class="es0">\&quot;</span>SearchPipeline<span class="es0">\&quot;</span>&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;receive name=<span class="es0">\&quot;</span>start
<span class="es0">\&quot;</span> partnerLink=<span class="es0">\&quot;</span>Pipeline<span class="es0">\&quot;</span> portType=<span class="es0">\&quot;</span>proc:ProcessorPortType<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> operation=<span class="es0">\&quot;</span>process
<span class="es0">\&quot;</span> variable=<span class="es0">\&quot;</span>request<span class="es0">\&quot;</span> createInstance=<span class="es0">\&quot;</span>yes<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span> &lt;extensionActivity&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;p
roc:invokePipelet name=<span class="es0">\&quot;</span>invokeSolrSearchPipelet<span class="es0">\&quot;</span>&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;proc:pipelet class=
<span class="es0">\&quot;</span>org.eclipse.smila.solr.search.SolrSearchPipelet<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;proc:variables input=<span class="es0">\&quot;</span>re
quest<span class="es0">\&quot;</span> output=<span class="es0">\&quot;</span>request<span class="es0">\&quot;</span> /&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;proc:configuration&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Val key=<span class="es0">\&quot;</span>
indexname<span class="es0">\&quot;</span>&gt;DefaultCore&lt;/rec:Val&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Map key=<span class="es0">\&quot;</span>_solr.query<span class="es0">\&quot;</span>&gt;<span class="es0">\r</span><span class="es0">\n</span>
&lt;rec:Seq key=<span class="es0">\&quot;</span>highlighting<span class="es0">\&quot;</span>&gt; <span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Map&gt;<span class="es0">\r</span><span class="es0">\n</span>
&lt;rec:Val key=<span class="es0">\&quot;</span>attribute<span class="es0">\&quot;</span>&gt;global.solr.params&lt;/rec:Val&gt;<span class="es0">\r</span><span class="es0">\n</span>
&lt;rec:Val key=<span class="es0">\&quot;</span>hl<span class="es0">\&quot;</span> type=<span class="es0">\&quot;</span>boolean<span class="es0">\&quot;</span>&gt;true&lt;/rec:Val&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Val ke
y=<span class="es0">\&quot;</span>hl.fl<span class="es0">\&quot;</span>&gt;Content&lt;/rec:Val&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Val key=<span class="es0">\&quot;</span>hl.simple.pre<span class="es0">\&quot;</span>&gt;&amp;lt;b&amp;
gt;&lt;/rec:Val&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;rec:Val key=<span class="es0">\&quot;</span>hl.simple.post<span class="es0">\&quot;</span>&gt;&amp;lt;/b&amp;gt;&lt;/rec:Val&gt;
<span class="es0">\r</span><span class="es0">\n</span> &lt;/rec:Map&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/rec:Seq&gt;
&nbsp;
<span class="es0">\r</span><span class="es0">\n</span> &lt;/rec:Map&gt; <span class="es0">\r</span><span class="es0">\n</span> &lt;/proc:configuration&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/p
roc:invokePipelet&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/extensionActivity&gt;<span class="es0">\r</span><span class="es0">\n</span> <span class="es0">\r</span><span class="es0">\n</span> &lt;reply name=<span class="es0">\&quot;</span>end<span class="es0">\&quot;</span> partnerLin
k=<span class="es0">\&quot;</span>Pipeline<span class="es0">\&quot;</span> portType=<span class="es0">\&quot;</span>proc:ProcessorPortType<span class="es0">\&quot;</span> operation=<span class="es0">\&quot;</span>process<span class="es0">\&quot;</span><span class="es0">\r</span><span class="es0">\n</span> variable=<span class="es0">\</span>
&quot;</span>request\<span class="st0">&quot; /&gt;<span class="es0">\r</span><span class="es0">\n</span> &lt;/sequence&gt;<span class="es0">\r</span><span class="es0">\n</span>&lt;/process&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#125;</span></pre></div>
<p>Whoops, what's this? It's a bit awkward to read because newline and double-quote characters are printed in their JSON-escaped form. In a browser with a "JSONView" extension installed it looks quite readable, e.g. in Chrome:
</p><p><a href="http://wiki.eclipse.org/Image:SMILA-bpel-pipeline-in-jsonview-browser.png" class="image" title="Image:SMILA-bpel-pipeline-in-jsonview-browser.png"><img alt="Image:SMILA-bpel-pipeline-in-jsonview-browser.png" src="http://wiki.eclipse.org/images/f/f3/SMILA-bpel-pipeline-in-jsonview-browser.png" width="976" height="680" border="0" /></a>
</p><p>That's better. We see that the object has a <tt>readOnly</tt> flag set to true, because it is one of the predefined pipelines in the system configuration. If it was a custom pipeline defined via the API, there would be a <tt>timestamp</tt> attribute at the end of the object.
</p><p>Now we try to execute this pipeline:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; GET <span class="re0">/smila/pipeline/SearchPipeline/process/</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;message&quot;</span>&nbsp;: <span class="st0">&quot;Cannot process an empty record.&quot;</span>
<span class="br0">&#125;</span>
&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;message&quot;</span>&nbsp;: <span class="st0">&quot;Cannot process an empty record.&quot;</span>
<span class="br0">&#125;</span></pre></div>
So this did not work, as expected. In the response headers you can see the error code returned: <div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span> -v
...
&lt; HTTP/<span class="nu0">1.1</span> <span class="nu0">400</span> Bad Request
...
<span class="br0">&#123;</span>
<span class="st0">&quot;message&quot;</span>&nbsp;: <span class="st0">&quot;Cannot process an empty record.&quot;</span>
<span class="br0">&#125;</span></pre></div>
<p>So we add a query attribute:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span> <span class="st0">'{ &quot;query&quot;: &quot;SMILA&quot; }'</span>
...
&lt; HTTP/<span class="nu0">1.1</span> <span class="nu0">500</span> Server Error
...
<span class="br0">&#123;</span>
<span class="st0">&quot;message&quot;</span>&nbsp;: <span class="st0">&quot;Error processing BPEL workflow SearchPipeline: Invocation of pipeline element SearchPipeline/search failed: Error processing message SearchPipeline-7afe423a-749c-4492-aa66-38ce37dba672<span class="es0">\n</span>caused by: Invocation of pipeline element SearchPipeline/search failed: Error processing message SearchPipeline-7afe423a-749c-4492-aa66-38ce37dba672<span class="es0">\n</span>caused by: no single value for required parameter QueryAttribute&quot;</span>
<span class="br0">&#125;</span></pre></div>
<p>This time the LuceneSearchPipelet complains about a missing parameter. So let's add it:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span> <span class="st0">'{
&quot;query&quot;: &quot;SMILA&quot;,
&quot;QueryAttribute&quot;: &quot;Content&quot; }'</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;query&quot;</span>&nbsp;: <span class="st0">&quot;SMILA&quot;</span>,
<span class="st0">&quot;QueryAttribute&quot;</span>&nbsp;: <span class="st0">&quot;Content&quot;</span>,
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline-5c2d3f3f-1e56-4362-aa4c-74aa5fa9d6e8&quot;</span>,
<span class="st0">&quot;count&quot;</span>&nbsp;: <span class="nu0">58</span>,
<span class="st0">&quot;indexSize&quot;</span>&nbsp;: <span class="nu0">115</span>,
<span class="st0">&quot;records&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="br0">&#123;</span>
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;feeds:&lt;Uri=tag:search.twitter.com,2005:69739397733560320&gt;&quot;</span>,
<span class="st0">&quot;_source&quot;</span>&nbsp;: <span class="st0">&quot;feeds&quot;</span>,
<span class="st0">&quot;_weight&quot;</span>&nbsp;: <span class="nu0">0.84</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;feeds:&lt;Uri=tag:search.twitter.com,2005:69960011966713856&gt;&quot;</span>,
<span class="st0">&quot;_source&quot;</span>&nbsp;: <span class="st0">&quot;feeds&quot;</span>,
<span class="st0">&quot;_weight&quot;</span>&nbsp;: <span class="nu0">0.73</span>
<span class="br0">&#125;</span>,
...
<span class="br0">&#93;</span> <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div>
<p>A successful search ... but we probably want to see a bit more information. So we add values for the parameter <tt>resultAttributes</tt>:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span> <span class="st0">'{
&quot;query&quot;: &quot;SMILA&quot;,
&quot;QueryAttribute&quot;: &quot;Content&quot;,
&quot;resultAttributes&quot;: [ &quot;Title&quot;, &quot;Author&quot;, &quot;LastModifiedDate&quot; ] }'</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;query&quot;</span>&nbsp;: <span class="st0">&quot;SMILA&quot;</span>,
<span class="st0">&quot;QueryAttribute&quot;</span>&nbsp;: <span class="st0">&quot;Content&quot;</span>,
<span class="st0">&quot;resultAttributes&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="st0">&quot;Title&quot;</span>, <span class="st0">&quot;Author&quot;</span>, <span class="st0">&quot;LastModifiedDate&quot;</span> <span class="br0">&#93;</span>,
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline-2201c83a-a9b6-4cfe-a62e-6ec8ffe113ca&quot;</span>,
<span class="st0">&quot;count&quot;</span>&nbsp;: <span class="nu0">58</span>,
<span class="st0">&quot;indexSize&quot;</span>&nbsp;: <span class="nu0">115</span>,
<span class="st0">&quot;records&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="br0">&#123;</span>
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;feeds:&lt;Uri=tag:search.twitter.com,2005:69739397733560320&gt;&quot;</span>,
<span class="st0">&quot;_source&quot;</span>&nbsp;: <span class="st0">&quot;feeds&quot;</span>,
<span class="st0">&quot;_weight&quot;</span>&nbsp;: <span class="nu0">0.84</span>,
<span class="st0">&quot;Title&quot;</span>&nbsp;: <span class="st0">&quot;@AbrarAlAdwani smila 3alech. Latwaswiseen&quot;</span>,
<span class="st0">&quot;Author&quot;</span>&nbsp;: <span class="st0">&quot;dee_the_bee (Dalalee Boland)&quot;</span>,
<span class="st0">&quot;LastModifiedDate&quot;</span>&nbsp;: <span class="st0">&quot;2011-05-15T14:22:22.000+0200&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;feeds:&lt;Uri=tag:search.twitter.com,2005:69960011966713856&gt;&quot;</span>,
<span class="st0">&quot;_source&quot;</span>&nbsp;: <span class="st0">&quot;feeds&quot;</span>,
<span class="st0">&quot;_weight&quot;</span>&nbsp;: <span class="nu0">0.73</span>,
<span class="st0">&quot;Title&quot;</span>&nbsp;: <span class="st0">&quot;Finally found something to smila bout&nbsp;:)&quot;</span>,
<span class="st0">&quot;Author&quot;</span>&nbsp;: <span class="st0">&quot;MIGUELALMENDRAL (Miguel FG Almendral)&quot;</span>,
<span class="st0">&quot;LastModifiedDate&quot;</span>&nbsp;: <span class="st0">&quot;2011-05-16T04:59:01.000+0200&quot;</span>
<span class="br0">&#125;</span>,
...
<span class="br0">&#93;</span> <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div>
<p>Awesome! In the same way you can add more parameters as you need:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/SearchPipeline/process/</span> <span class="st0">'{
&quot;query&quot;: &quot;SMILA&quot;,
&quot;QueryAttribute&quot;: &quot;Content&quot;,
&quot;resultAttributes&quot;: [ &quot;Title&quot;, &quot;Author&quot;, &quot;LastModifiedDate&quot; ],
&quot;maxcount&quot;: 1, &quot;offset&quot;: 42, &quot;highlight&quot;: &quot;Content&quot; }'</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;query&quot;</span>&nbsp;: <span class="st0">&quot;SMILA&quot;</span>,
<span class="st0">&quot;QueryAttribute&quot;</span>&nbsp;: <span class="st0">&quot;Content&quot;</span>,
<span class="st0">&quot;resultAttributes&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="st0">&quot;Title&quot;</span>, <span class="st0">&quot;Author&quot;</span>, <span class="st0">&quot;LastModifiedDate&quot;</span> <span class="br0">&#93;</span>,
<span class="st0">&quot;maxcount&quot;</span>&nbsp;: <span class="nu0">1</span>,
<span class="st0">&quot;offset&quot;</span>&nbsp;: <span class="nu0">42</span>,
<span class="st0">&quot;highlight&quot;</span>&nbsp;: <span class="st0">&quot;Content&quot;</span>,
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline-f2a53434-36b1-4e25-a716-f8c02fba5ecd&quot;</span>,
<span class="st0">&quot;count&quot;</span>&nbsp;: <span class="nu0">58</span>,
<span class="st0">&quot;indexSize&quot;</span>&nbsp;: <span class="nu0">115</span>,
<span class="st0">&quot;records&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="br0">&#123;</span>
<span class="st0">&quot;_recordid&quot;</span>&nbsp;: <span class="st0">&quot;feeds:&lt;Uri=http://www.eclipse.org/forums/index.php/mv/msg/206311/660699/#msg_660699&gt;&quot;</span>,
<span class="st0">&quot;_source&quot;</span>&nbsp;: <span class="st0">&quot;feeds&quot;</span>,
<span class="st0">&quot;_weight&quot;</span>&nbsp;: <span class="nu0">0.19</span>,
<span class="st0">&quot;Title&quot;</span>&nbsp;: <span class="st0">&quot;Re: New SMILA tryout&quot;</span>,
<span class="st0">&quot;Author&quot;</span>&nbsp;: <span class="st0">&quot;Andreas Weber&quot;</span>,
<span class="st0">&quot;_highlight&quot;</span>&nbsp;: <span class="br0">&#123;</span>
<span class="st0">&quot;Content&quot;</span>&nbsp;: <span class="br0">&#123;</span>
<span class="st0">&quot;text&quot;</span>&nbsp;: <span class="st0">&quot;&lt;br /&gt;<span class="es0">\n</span>&amp;#62;&lt;br /&gt;<span class="es0">\n</span>&amp;#62; I've done all standard steps as we do when creating a new&lt;br /&gt;<span class="es0">\n</span>&amp;#62; &lt;b&gt;SMILA&lt;/b&gt;-workspace (and as described...-workspace (and as described on the &lt;b&gt;SMILA&lt;/b&gt; website - dont know the&lt;br... website - dont know the&lt;br /&gt;<span class="es0">\n</span>&amp;#62; exact name right now):&lt;br /&gt;<span class="es0">\n</span>&amp;#62;&lt;br /&gt;<span class="es0">\n</span>&amp;#62;&lt;br /&gt;<span class="es0">\n</span>&amp;#62; check out from eclipse SVN&lt;br /&gt;<span class="es0">\n</span>&amp;#62; add a new Target Platform with path to the &lt;b&gt;SMILA&lt;/b&gt; bundles and to eclipse&lt;br...&quot;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span> <span class="br0">&#93;</span>
<span class="br0">&#125;</span></pre></div>
<p>You can also use GET and URL parameters to invoke the pipeline, just enter something like this in the address line of your favorite browser:
</p><p><tt><a href="http://localhost:8080/smila/pipeline/SearchPipeline/process?query=SMILA&amp;QueryAttribute=Content" class="external free" title="http://localhost:8080/smila/pipeline/SearchPipeline/process?query=SMILA&amp;QueryAttribute=Content" rel="nofollow">http://localhost:8080/smila/pipeline/SearchPipeline/process?query=SMILA&amp;QueryAttribute=Content</a></tt>
</p><p>However, this gets inconvenient when you want to add lots of parameters and attributes.
</p>
<a name="Defining_Pipelines"></a><h4> <span class="mw-headline"> Defining Pipelines </span></h4>
<p>To define a new pipeline (or update it) you POST a JSON containing the pipeline name and BPEL definition to <code>/smila/pipeline</code>. E.g. copy the output of the <code>GET /smila/pipeline/SearchPipeline</code> command and rename the pipeline to "SearchPipeline2" like this:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; POST <span class="re0">/smila/pipeline/</span> <span class="st0">'{
&quot;name&quot;&nbsp;: &quot;SearchPipeline2&quot;,
&quot;definition&quot;&nbsp;: &quot;&lt;?xml version=<span class="es0">\"</span>1.0<span class="es0">\"</span>&nbsp;?&gt;<span class="es0">\r</span><span class="es0">\n</span>&lt;process name=<span class="es0">\"</span>SearchPipeline2<span class="es0">\"</span> ...&quot;
}'</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline2&quot;</span>,
<span class="st0">&quot;timestamp&quot;</span>&nbsp;: <span class="st0">&quot;2011-08-26T13:54:34.451+0200&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/SearchPipeline2/&quot;</span>
<span class="br0">&#125;</span></pre></div>
<p>If you want to push an own BPEL definition, take care of escaping linefeed (\r), newline (\n) and quotes (\") characters, or the JSON code will not be valid.
</p><p>The response contains the name, a creation timestamp and an URL to read the pipeline definition again. If you use this, you will see that the response will also contain the timestamp, but no readOnly flag:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; GET <span class="re0">/smila/pipeline/SearchPipeline2/</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline2&quot;</span>,
<span class="st0">&quot;definition&quot;</span>&nbsp;: <span class="st0">&quot;&lt;?xml version=<span class="es0">\&quot;</span>1.0<span class="es0">\&quot;</span>&nbsp;?&gt;<span class="es0">\r</span><span class="es0">\n</span>&lt;process name=<span class="es0">\&quot;</span>SearchPipeline2<span class="es0">\&quot;</span> ...&quot;</span>,
<span class="st0">&quot;timestamp&quot;</span>&nbsp;: <span class="st0">&quot;2011-08-26T13:54:34.451+0200&quot;</span>
<span class="br0">&#125;</span></pre></div>
<p>Updating the workflow would work just the same. The timestamp can be used in modelling tools to ensure that different users do not overwrite changes made by another user.
</p><p>The new pipeline should now also appears in the list of pipelines:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-javascript">&gt; GET <span class="re0">/smila/pipeline/</span>
<span class="br0">&#123;</span>
<span class="st0">&quot;pipelines&quot;</span>&nbsp;: <span class="br0">&#91;</span> <span class="br0">&#123;</span>
...,
<span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/SearchPipeline/&quot;</span>
<span class="br0">&#125;</span>, <span class="br0">&#123;</span>
<span class="st0">&quot;name&quot;</span>&nbsp;: <span class="st0">&quot;SearchPipeline2&quot;</span>,
<span class="st0">&quot;url&quot;</span>&nbsp;: <span class="st0">&quot;http://localhost:8080/smila/pipeline/SearchPipeline2/&quot;</span>
<span class="br0">&#125;</span>,
...<span class="br0">&#93;</span>
<span class="br0">&#125;</span></pre></div>
<!--
NewPP limit report
Preprocessor node count: 101/1000000
Post-expand include size: 1174/2097152 bytes
Template argument size: 644/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:31279-0!1!0!!en!2!edit=0 and timestamp 20120710093508 -->
<div class="printfooter">
Retrieved from "<a href="JSON_REST_API_for_BPEL_pipelines.html">http://wiki.eclipse.org/SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 13:56, 26 January 2012 by <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit" class="new" title="User:Juergen.schumacher.attensity.com">Juergen Schumacher</a>, <a href="http://wiki.eclipse.org/User:Tmenzel.brox.de" title="User:Tmenzel.brox.de">thomas menzel</a> and <a href="http://wiki.eclipse.org/index.php?title=User:Nadine.auslaender.attensity.com&amp;action=edit" class="new" title="User:Nadine.auslaender.attensity.com"> </a> and <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/Processing/JSON_REST_API_for_BPEL_pipelines&amp;action=credits" title="SMILA/Documentation/Processing/JSON REST API for BPEL pipelines">others</a>.</p>
<p id="footerviews">This page has been accessed 2,629 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.051 secs. --></body></html>