<!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/DataObjectTypesAndBuckets,SMILA/Documentation/JobManagerConfiguration,SMILA/Documentation/JobParameters" />
		<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/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/DataObjectTypesAndBuckets - 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/DataObjectTypesAndBuckets";
var wgTitle = "SMILA/Documentation/DataObjectTypesAndBuckets";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "32418";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "288878";
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-text {line-height: normal; font-size: medium;}
.source-text li {line-height: normal;}
/**
 * GeSHi Dynamically Generated Stylesheet
 * --------------------------------------
 * Dynamically generated stylesheet for text
 * CSS class: source-text, CSS id: 
 * GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
 */
.source-text .de1, .source-text .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-text  {}
.source-text .head {}
.source-text .foot {}
.source-text .imp {font-weight: bold; color: red;}
.source-text .ln-xtra {color: #cc0; background-color: #ffc;}
.source-text li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-text li.li2 {font-weight: bold;}

/*]]>*/
</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="DataObjectTypesAndBuckets.html" />	</head>
<body  class="mediawiki ns-0 ltr page-SMILA_Documentation_DataObjectTypesAndBuckets">
	<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/DataObjectTypesAndBuckets">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/DataObjectTypesAndBuckets">What links here</a></li>
				<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/DataObjectTypesAndBuckets">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/DataObjectTypesAndBuckets&amp;printable=yes">Printable version</a></li>				<li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/DataObjectTypesAndBuckets&amp;oldid=288878">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="DataObjectTypesAndBuckets.html"><span class="tab">Page</span></a></li>
                                                         <li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/DataObjectTypesAndBuckets&amp;action=edit"><span class="tab">Discussion</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/DataObjectTypesAndBuckets&amp;action=edit"><span class="tab">View source</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/DataObjectTypesAndBuckets&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/DataObjectTypesAndBuckets"><span class="tab">Edit</span></a></li>
                  </ul>
        </div>


          <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
            <h1 class="firstHeading">SMILA/Documentation/DataObjectTypesAndBuckets</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="DataObjectTypesAndBuckets.html#column-one">navigation</a>, <a href="DataObjectTypesAndBuckets.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="DataObjectTypesAndBuckets.html#Buckets_and_Data_Object_Types"><span class="tocnumber">1</span> <span class="toctext">Buckets and Data Object Types</span></a>
<ul>
<li class="toclevel-2"><a href="DataObjectTypesAndBuckets.html#Buckets"><span class="tocnumber">1.1</span> <span class="toctext">Buckets</span></a>
<ul>
<li class="toclevel-3"><a href="DataObjectTypesAndBuckets.html#List.2C_create.2C_and_modify_buckets"><span class="tocnumber">1.1.1</span> <span class="toctext">List, create, and modify buckets</span></a>
<ul>
<li class="toclevel-4"><a href="DataObjectTypesAndBuckets.html#All_buckets"><span class="tocnumber">1.1.1.1</span> <span class="toctext">All buckets</span></a></li>
<li class="toclevel-4"><a href="DataObjectTypesAndBuckets.html#Specific_buckets"><span class="tocnumber">1.1.1.2</span> <span class="toctext">Specific buckets</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-2"><a href="DataObjectTypesAndBuckets.html#Data_Object_Types"><span class="tocnumber">1.2</span> <span class="toctext">Data Object Types</span></a>
<ul>
<li class="toclevel-3"><a href="DataObjectTypesAndBuckets.html#List_data_object_types"><span class="tocnumber">1.2.1</span> <span class="toctext">List data object types</span></a>
<ul>
<li class="toclevel-4"><a href="DataObjectTypesAndBuckets.html#All_data_object_types"><span class="tocnumber">1.2.1.1</span> <span class="toctext">All data object types</span></a></li>
<li class="toclevel-4"><a href="DataObjectTypesAndBuckets.html#Specific_data_object_type"><span class="tocnumber">1.2.1.2</span> <span class="toctext">Specific data object type</span></a></li>
</ul>
</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="Buckets_and_Data_Object_Types"></a><h1> <span class="mw-headline"> Buckets and Data Object Types </span></h1>
<p>Please note that job manager element names (like buckets and data object types) must conform to the job manager naming convention:
</p>
<ul><li> names must inly consist of the following characters: <b>a-zA-Z._-</b>
</li></ul>
<p>If they do not conform, they won't be accessible in SMILA.
</p>
<ul><li> Pushing elements with invalid names will result in a 400 Bad Request,
</li><li> predefined elements with invalid names won't be loaded, a warning will be logged in the SMILA.log file.
</li></ul>
<p>E.g.
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-text">... WARN  ...  internal.DefinitionPersistenceImpl            - Error parsing predefined data object type definitions from configuration area
org.eclipse.smila.common.exceptions.InvalidDefinitionException: Value 'record?store' in field 'name' is not valid: A name must match pattern ^[a-zA-Z0-9-_\.]+$.</pre></div>
<a name="Buckets"></a><h2> <span class="mw-headline"> Buckets  </span></h2>
<p>A bucket is a data container comprising logically grouped data objects that are to processed by some asynchronous workflow in SMILA. All data objects in a bucket are physically located in the same store and therefore share the same naming convention. For example, data objects could be sequences of records (so called "record bulks") or indices. Also, the contents within one bucket have the same structure as is determined by its data object type. The actual data object types from which you can select when creating a bucket are predefined by the software and cannot be changed during runtime. 
</p><p>An important aspect of buckets is that they can be persistent or transient: Objects in transient buckets are deleted automatically when the workflow run that created them has ended while objects in persistent buckets survive until they are deleted explicitly or another workflow uses them. Whereas persistent buckets have to be created explicitly via the respective REST/JSON API call (see below) before they can be used in a workflow, transient ones are generated automatically by the system based on the definition of the respective workflow and need not and also cannot be created explicitly via this API. Similar, a store referenced by some transient bucket is created automatically by the Job Manager but a store referenced by a persistent bucket must be created beforehand.
</p><p>Persistent buckets can have <a href="JobParameters.html" title="SMILA/Documentation/JobParameters">parameters</a> that are required for the referenced data object type or for the involved workers to operate when the bucket is referenced in a workflow. They can be set in the bucket definition itself, in the global section of the respective workflow definition, or later in the job definition.
</p><p>Buckets can have additional information (e.g. comments or additional layouting information for a configuration tool) apart from name, type or parameter. But a plain GET request will only display relevant information (i.e. relevant to the jobprocessing system). When you want to retrieve the additional info that is present in the json file or has been posted with thte buckets, add <tt>?returnDetails=true</tt> as request parameter.
</p>
<a name="List.2C_create.2C_and_modify_buckets"></a><h3> <span class="mw-headline"> List, create, and modify buckets </span></h3>
<a name="All_buckets"></a><h4> <span class="mw-headline"> All buckets  </span></h4>
<p>Use a GET request to list all persistent buckets. Transient buckets are not shown in the list.
</p><p>Use POST to add new persistent buckets or to edit them. Transient buckets cannot be created explicitly via this API.
</p><p><b>Supported operations:</b> 
</p>
<ul><li>GET: Returns a list of all buckets. If there are no buckets defined, you will get an empty list.
</li><li>POST: Add a new persistent bucket or edit an existing one. The bucket definition must at least contain the name and the data object type of the bucket. Bucket parameters are optional. If the bucket already exists, it will be updated after successful validation. However, the changes will not apply until the next job run, i.e. the current job run is not influenced by the changes. 
</li></ul>
<p><b>Usage:</b> 
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/jobmanager/buckets/</tt>
</li><li>Allowed methods: 
<ul><li>GET
</li><li>POST
</li></ul>
</li><li>Response status codes: 
<ul><li>200 OK: Upon successful execution (GET).
</li><li>201 CREATED: Upon successfull execution (POST). The result object returns a JSON object giving the name and URI of the created bucket.
</li><li>400 Bad Request: If the parameters in the bucket definition would result in incorrect store names or the bucket's name is invalid. The result object returns an error message in JSON format.
</li></ul>
</li></ul>
<p><br />
<b>Examples:</b> 
</p><p>To list all buckets:
</p>
<pre>
GET /smila/jobmanager/buckets/
</pre>
<p>The result would be:
</p>
<pre>
HTTP/1.x 200 OK

{
   &quot;buckets&quot;:[
      {
         &quot;name&quot;:&quot;myBucket&quot;,
         &quot;url&quot;:&quot;http://localhost:8080/smila/jobmanager/buckets/myBucket/&quot;
      },
      {
         &quot;name&quot;:&quot;myOtherBucket&quot;,
         &quot;url&quot;:&quot;http://localhost:8080/smila/jobmanager/buckets/myOtherBucket/&quot;
      }
   ]
}
</pre>
<p>To create a bucket:
</p>
<pre>
POST /smila/jobmanager/buckets/

{
  &quot;name&quot;: &quot;myBucket&quot;,
  &quot;type&quot;: &quot;recordBulks&quot;,
  &quot;comment&quot;: &quot;A bucket I created all by myself.&quot;,
  &quot;parameters&quot;: 
  {
     &quot;store&quot;: &quot;mystore&quot;
  }
}
</pre>
<p>Note that this definition contains an unspecific "comment" field.
</p><p>The result would be:
</p>
<pre>
HTTP/1.x 201 CREATED

{
  &quot;name&quot;&nbsp;: &quot;myBucket&quot;,
  &quot;timestamp&quot;: &quot;2011-08-15T10:53:42+0200&quot;,
  &quot;url&quot;&nbsp;: &quot;http://localhost:8080/smila/jobmanager/buckets/myBucket/&quot;
}
</pre>
<a name="Specific_buckets"></a><h4> <span class="mw-headline"> Specific buckets </span></h4>
<p>Use a GET request to get the definition of a bucket. Use DELETE to delete a bucket.
</p><p><b>Supported operations:</b> 
</p>
<ul><li>GET: Returns the definition of the given bucket. When you want to retrieve additional info apart from name, type and parameters add returnDetails=true as request parameter.
</li><li>DELETE: Deletes a bucket. Buckets cannot be deleted when their data object type does not have a definition for transient mode and the bucket is used in a current workflow definition.
</li></ul>
<p><b>Usage:</b> 
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/jobmanager/buckets/&lt;bucket-name&gt;/</tt> 
</li><li>Allowed methods: 
<ul><li>GET
</li><li>DELETE
</li></ul>
</li><li>Response status codes: 
<ul><li>200 OK: Upon successful execution (GET, DELETE). When trying to delete a bucket that does not exist, the call will be ignored (DELETE) and 200 OK is returned nevertheless.
</li><li>404 Server error: In case &lt;bucket-name&gt; does not exist (GET). 
</li><li>400 Bad Request: If the bucket is referenced by an existing workflow. Also, if a bucket is predefined in the configuration it cannot be removed.
</li></ul>
</li></ul>
<p><b>Examples:</b> 
</p><p>To get a bucket definition:
</p>
<pre>
GET /smila/jobmanager/buckets/myBucket/
</pre>
<p>The result would be:
</p>
<pre>
HTTP/1.x 200 OK

{
  &quot;name&quot;&nbsp;: &quot;myBucket&quot;,
  &quot;timestamp&quot;: &quot;2011-08-15T11:55:00.482+0200&quot;,
  &quot;type&quot;&nbsp;: &quot;recordBulks&quot;,
  &quot;parameters&quot;&nbsp;: {
    &quot;store&quot;&nbsp;: &quot;mystore&quot;
  }
}
</pre>
<p>To get the complete bucket definition with additional data: 
</p>
<pre>
GET /smila/jobmanager/buckets/myBucket/?returnDetails=true
</pre>
<p>The result would now be:
</p>
<pre>
HTTP/1.x 200 OK

{
  &quot;name&quot;&nbsp;: &quot;myBucket&quot;,
  &quot;timestamp&quot;: &quot;2011-08-15T11:55:00.482+0200&quot;,
  &quot;type&quot;&nbsp;: &quot;recordBulks&quot;,
  &quot;comment&quot;: &quot;A bucket I created all by myself.&quot;,
  &quot;parameters&quot;&nbsp;: {
    &quot;store&quot;&nbsp;: &quot;mystore&quot;
  }
}
</pre>
<p>To delete a bucket:
</p>
<pre>
DELETE /smila/jobmanager/buckets/myBucket/
</pre>
<p>The result would be:
</p>
<pre>
HTTP/1.x 200 OK
</pre>
<a name="Data_Object_Types"></a><h2> <span class="mw-headline"> Data Object Types </span></h2>
<p>The definition of the data object types available in the system are provided with the software and cannot be added or changed during runtime. 
</p><p>They contain parameter variables denoted by "${...}". System parameter variables, names starting with "_" (underscore), are resolved automatically. Just parameters on root level with non complex values are used for resolving.
Values for other variables must be set as a bucket parameter or a higher-level definition, e.g. as a workflow or job parameter. Where a type specifies both persistent and transient data, you will have to resolve only those parameter variables defined for the respective type.
</p><p>Data Object Type definitions can have additional information (e.g. comments). But a plain GET request will only display relevant information (i.e. relevant to the jobprocessing system). When you want to retrieve the additional info that is present in the definitions of the json file, add returnDetails=true as request parameter.
</p>
<a name="List_data_object_types"></a><h3> <span class="mw-headline"> List data object types </span></h3>
<a name="All_data_object_types"></a><h4> <span class="mw-headline"> All data object types  </span></h4>
<p>Use a GET request to retrieve information about all object data types. This API is read-only: You cannot add or modify data object types during runtime.
</p><p><b>Supported operations:</b> 
</p>
<ul><li>GET: Returns a list of all data object types. To obtain additional information (if present) add returnDetails=true as request parameter.
</li></ul>
<p><b>Usage:</b> 
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/jobmanager/dataobjecttypes/</tt> 
</li><li>Allowed methods: 
<ul><li>GET
</li></ul>
</li><li>Response status codes: 
<ul><li>200 OK: Upon successful execution.
</li></ul>
</li></ul>
<p><b>Examples:</b> 
</p><p>To list all data object types:
</p>
<pre>
GET /smila/jobmanager/dataobjecttypes/
</pre>
<p>The result would be:
</p>
<pre>
HTTP/1.x 200 OK

{
   &quot;dataObjectTypes&quot;:[
      {
         &quot;name&quot;:&quot;recordBulks&quot;,
         &quot;url&quot;:&quot;http://localhost:8080/smila/jobmanager/dataobjecttypes/recordBulks/&quot;
      }
   ]
}
</pre>
<a name="Specific_data_object_type"></a><h4> <span class="mw-headline"> Specific data object type </span></h4>
<p>Use a GET request to retrieve information about a specific object data type.
</p><p><b>Supported operations:</b> 
</p>
<ul><li>GET: Returns the definition of a specific data object type. 
</li></ul>
<p><b>Usage:</b> 
</p>
<ul><li>URL: <tt>http://&lt;hostname&gt;:8080/smila/jobmanager/dataobjecttypes/&lt;dataobjecttype-name&gt;/</tt> 
</li><li>Allowed methods: 
<ul><li>GET
</li></ul>
</li><li>Response status codes: 
<ul><li>200 OK: Upon successful execution
</li></ul>
</li></ul>
<p><b>Examples:</b> 
</p><p>To get the definition of one data object type:
</p>
<pre>
GET /smila/jobmanager/dataobjecttypes/recordBulks/
</pre>
<p>The result would be:
</p>
<pre>
HTTP/1.x 200 OK

{
   &quot;name&quot;:&quot;recordBulks&quot;,
   &quot;readOnly&quot;: true,
   &quot;persistent&quot;:{
      &quot;object&quot;:&quot;${_bucketName}/${_uuid}&quot;,
      &quot;store&quot;:&quot;${store}&quot;
   },
   &quot;transient&quot;:{
      &quot;object&quot;:&quot;${_bucketName}/${_uuid}&quot;,
      &quot;store&quot;:&quot;${tempStore}&quot;
   }
}
</pre>
<p>As data object types cannot be defined using an API, but are pre-configured in the system configuration, they are all marked as "readOnly". See <a href="JobManagerConfiguration.html" title="SMILA/Documentation/JobManagerConfiguration">SMILA/Documentation/JobManagerConfiguration</a> for details.
</p><p><b>Available data object types:</b> 
</p><p>Currently, there is only one data object type available, namely the type "recordBulks" (see its definition above).
</p><p>The "recordBulk" type allows for sequences of records (record bulks). It is the standard intermediate object type in workflows, meaning there can be workers in a workflow that use objects of the "recordBulk" type as their input data and also workers that write objects of the same type as their result. 
</p><p>The "recordBulk" type allows both transient and persistent data. If a persistent bucket uses this type, one has to set the value of the <tt>${store}</tt> variable. Vice versa, when a transient bucket uses this type, one has to set the value of the <tt>${tempStore}</tt> variable. The variables <tt>${store}</tt> and <tt>${tempStore}</tt> define the name of the object store in which the respective data objects should be stored. They can be set in the bucket definition itself or either as a global workflow parameter or as a job parameter alternatively. However, they cannot be set as a local worker parameter (see <a href="JobParameters.html" title="SMILA/Documentation/JobParameters">SMILA/Documentation/JobParameters</a>).
</p><p>The system variable <tt>${_uuid}</tt> need not be set by the user. It is set automatically by the system. New <tt>uuid</tt>s are only generated when creating new bulks. When transforming existing bulks, they are resused.
</p>
<!-- 
NewPP limit report
Preprocessor node count: 79/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->

<!-- Saved in parser cache with key wikidb:pcache:idhash:32418-0!1!0!!en!2!edit=0 and timestamp 20120710135636 -->
<div class="printfooter">
Retrieved from "<a href="DataObjectTypesAndBuckets.html">http://wiki.eclipse.org/SMILA/Documentation/DataObjectTypesAndBuckets</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 14:54, 7 February 2012 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>. Based on work by <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a>, <a href="http://wiki.eclipse.org/User:Drazen.cindric.attensity.com" title="User:Drazen.cindric.attensity.com">Drazen Cindric</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>.</p>
	      <p id="footerviews">This page has been accessed 966 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.122 secs. --></body></html>
