blob: f672432a8365d4997692bd8f12537f1a168cbda6 [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/TaskGenerators" />
<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/TaskGenerators - 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/TaskGenerators";
var wgTitle = "SMILA/Documentation/TaskGenerators";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "34881";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "285822";
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-java {line-height: normal; font-size: medium;}
.source-java li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-java .de1, .source-java .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-java {}
.source-java .head {}
.source-java .foot {}
.source-java .imp {font-weight: bold; color: red;}
.source-java .ln-xtra {color: #cc0; background-color: #ffc;}
.source-java li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-java li.li2 {font-weight: bold;}
.source-java .kw1 {color: #7F0055; font-weight: bold;}
.source-java .kw2 {color: #7F0055; font-weight: bold;}
.source-java .kw3 {color: #000000; font-weight: normal}
.source-java .kw4 {color: #7F0055; font-weight: bold;}
.source-java .co1 {color: #3F7F5F; font-style: italic;}
.source-java .co2 {color: #3F7F5F;}
.source-java .co3 {color: #3F7F5F; font-style: italic; font-weight: bold;}
.source-java .coMULTI {color: #3F5FBF; font-style: italic;}
.source-java .es0 {color: #000000;}
.source-java .br0 {color: #000000;}
.source-java .st0 {color: #2A00ff;}
.source-java .nu0 {color: #000000;}
.source-java .me1 {color: #000000;}
.source-java .me2 {color: #000000;}
/*]]>*/
</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="TaskGenerators.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Documentation_TaskGenerators">
<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/TaskGenerators">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/TaskGenerators">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/TaskGenerators">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/TaskGenerators&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/TaskGenerators&amp;oldid=285822">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="TaskGenerators.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/TaskGenerators&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/TaskGenerators&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/TaskGenerators&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/TaskGenerators"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Documentation/TaskGenerators</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="TaskGenerators.html#column-one">navigation</a>, <a href="TaskGenerators.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="TaskGenerators.html#Task_Generators"><span class="tocnumber">1</span> <span class="toctext">Task Generators</span></a>
<ul>
<li class="toclevel-2"><a href="TaskGenerators.html#Design"><span class="tocnumber">1.1</span> <span class="toctext">Design</span></a>
<ul>
<li class="toclevel-3"><a href="TaskGenerators.html#TaskGenerator_configuration_parameters"><span class="tocnumber">1.1.1</span> <span class="toctext">TaskGenerator configuration parameters</span></a></li>
<li class="toclevel-3"><a href="TaskGenerators.html#TaskGenerator_as_OSGi_service"><span class="tocnumber">1.1.2</span> <span class="toctext">TaskGenerator as OSGi service</span></a></li>
<li class="toclevel-3"><a href="TaskGenerators.html#Interface"><span class="tocnumber">1.1.3</span> <span class="toctext">Interface</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="TaskGenerators.html#Implementations"><span class="tocnumber">1.2</span> <span class="toctext">Implementations</span></a>
<ul>
<li class="toclevel-3"><a href="TaskGenerators.html#DefaultTaskGenerator"><span class="tocnumber">1.2.1</span> <span class="toctext">DefaultTaskGenerator</span></a></li>
<li class="toclevel-3"><a href="TaskGenerators.html#RunOnceTriggerTaskGenerator"><span class="tocnumber">1.2.2</span> <span class="toctext">RunOnceTriggerTaskGenerator</span></a></li>
<li class="toclevel-3"><a href="TaskGenerators.html#CombineInputWithAllTaskGenerator"><span class="tocnumber">1.2.3</span> <span class="toctext">CombineInputWithAllTaskGenerator</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="Task_Generators"></a><h2> <span class="mw-headline"> Task Generators </span></h2>
<p>The jobmanager workflow processing is based on the processing of tasks by the workers. Tasks for a worker are generated based on changes in its input bucket(s).
</p><p>In a simple workflow step, e.g. with <tt>pipelineProcessor</tt> worker, a worker has exactly one input bucket. When a bulk is put in the input bucket after a former workflow step finishes, we want exactly one (follow up) task to be generated referencing this bulk. For some workers the default behaviour is not sufficient. So we use an optional <tt>taskGenerator</tt> attribute in the worker definition referencing a task generator that is used to create the follow up tasks. If no <tt>taskGenerator</tt> is specified in a worker definition, the default taskgenerator is used (see below).
</p>
<a name="Design"></a><h3> <span class="mw-headline"> Design </span></h3>
<a name="TaskGenerator_configuration_parameters"></a><h4> <span class="mw-headline"> TaskGenerator configuration parameters </span></h4>
<p>If a task generator needs configuration parameters, these parameters have to be defined as (configuration) parameters by the appropriate worker.
</p>
<a name="TaskGenerator_as_OSGi_service"></a><h4> <span class="mw-headline"> TaskGenerator as OSGi service </span></h4>
<p>The general idea is to define the different kinds of TaskGenerators as OSGi services. A worker can optionally reference a TaskGenerator service by name. If no TaskGenerator is specified, the DefaultTaskGenerator service is used.
</p><p>If a special TaskGenerator needs access to other OSGi services this can be easily handled by OSGi service configuration.
</p><p>At the moment, there's no need to let users define their own task generators. We will provide the needed task generators by software (-&gt; similar to Workers and Data Object Types). But with the concept of task generators as OSGi service, there could be a future extension to allow users to create their own TaskGenerator services if needed.
</p>
<a name="Interface"></a><h4> <span class="mw-headline"> Interface </span></h4>
<p>As a TaskGenerator, what information do we need to create the follow-up tasks for a specific (follow-up) action/worker:
</p>
<ul><li> changed input bulks of the action, containing the (added) bulks that triggered the task generation
</li><li> all input buckets of the action (may be needed to combine bucket objects of other input buckets with the changed input bucket objects)
</li><li> all output buckets of the action, to create data object IDs to put them in the new generated tasks
</li><li> parameters (for task generator configuration and for adding to the new generated tasks)
</li><li> worker name
</li></ul>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="kw1">interface</span> TaskGenerator <span class="br0">&#123;</span>
&nbsp;
<span class="kw3">String</span> getName<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
List&lt;Task&gt; createTasks<span class="br0">&#40;</span><span class="kw1">final</span> Map&lt;String, List&lt;BulkInfo&gt;&gt; changedInput, <span class="kw1">final</span> Map&lt;String, Bucket&gt; inputBuckets,
<span class="kw1">final</span> Map&lt;String, Bucket&gt; outputBuckets, <span class="kw1">final</span> Map&lt;String, String&gt; parameters, <span class="kw1">final</span> <span class="kw3">String</span> workerName<span class="br0">&#41;</span>
<span class="kw1">throws</span> TaskGeneratorException;
&nbsp;
List&lt;Task&gt; createRunOnceTasks<span class="br0">&#40;</span><span class="kw1">final</span> Map&lt;String, Bucket&gt; inputBuckets, <span class="kw1">final</span> Map&lt;String, Bucket&gt; outputBuckets,
<span class="kw1">final</span> Map&lt;String, String&gt; parameters, <span class="kw1">final</span> <span class="kw3">String</span> workerName<span class="br0">&#41;</span> <span class="kw1">throws</span> TaskGeneratorException;
&nbsp;
<span class="kw4">void</span> finishTask<span class="br0">&#40;</span><span class="kw1">final</span> Task task, <span class="kw1">final</span> TaskCompletionStatus status<span class="br0">&#41;</span> <span class="kw1">throws</span> TaskGeneratorException;
<span class="br0">&#125;</span>
&lt;/tt&gt;</pre></div>
<a name="Implementations"></a><h3> <span class="mw-headline"> Implementations </span></h3>
<p>These Task Generators are already contained in bundle <tt>org.eclipse.smila.jobmanager</tt>.
</p>
<a name="DefaultTaskGenerator"></a><h4> <span class="mw-headline"> DefaultTaskGenerator </span></h4>
<p>This service is used either if there's no <tt>taskGenerator</tt> attribute in the worker definition, or if the following is set:
</p><p><tt>"taskGenerator": "default"</tt>
</p><p>If used for a worker without input slots, it generates exactly one task with one output bulk for each output slot. For each output bulk a different <tt>${_uuid</tt>} value is generated.
</p><p>If used for a worker with input slots, it generates one task for each input bulk, regardless if the input bulks are in one or different slots. Each task contains only one input bulk and one output bulk for each output slot. The generator tries to extract the <tt>${_uuid</tt>} value from the respective input bulk's name and reuse it for all respective output bulks. If no <tt>${_uuid</tt>} value can be extracted from an input bulk, the output bulks in this task use each an own <tt>${_uuid</tt>} value.
</p><p>In <tt>runOnce</tt> mode the generator creates one task per existing object in the one allowed input bucket. Details are the same as for follow-up tasks.
</p>
<a name="RunOnceTriggerTaskGenerator"></a><h4> <span class="mw-headline"> RunOnceTriggerTaskGenerator </span></h4>
<p>This is a simple specialisation of the default taskgenerator that allows to start jobs in <tt>runOnce</tt> mode when the first worker has only transient (and therefore usually empty) input buckets. It is selected in the worker description by setting:
</p><p><tt>"taskGenerator": "runOnceTrigger"</tt>
</p><p>For follow-up tasks it behaves exactly like the default task generator.
</p><p>If called to start a <tt>runOnce</tt> job it simply creates a single task without input bulks.
</p><p>This task generator has been introduced for crawler workers that need to be initially started without any input data being available. I.e. the crawler should crawl a data source and the start point (root directory, seed URL) is specified in the data source configuration or as a job parameter. Then a first task needs to be created that does not process input bulks but just starts the crawl at the configured start point.
</p>
<a name="CombineInputWithAllTaskGenerator"></a><h4> <span class="mw-headline"> CombineInputWithAllTaskGenerator </span></h4>
<p>TaskGenerator for two input buckets that generates tasks for each <i>unique</i>(see example-2 below) combination of:
</p><p><tt> [changed input bulk of first bucket X (all) object(s) from second input bucket] </tt>
</p><p>If the second input bucket is empty, no tasks will be generated.
</p><p>This service is used if the following <tt>taskgenerator</tt> attribute value is set in the worker definition:
</p><p><tt>"taskGenerator": "combine"</tt>
</p><p>__Examples__:
Assume we have a DeleteWorker action that has as input a partitionBucket with index partition objects and a deleteBucket with delete objects (objects = bulks)
</p>
<ul><li> current index partitions: P1, P2, P3
</li><li> current delete objects: D1, D2
</li></ul>
<p>A new delete bulk must be applied to all existing index partitions, and also all existing delete bulks must be applied to a new index partition.
</p><p>Example 1: Input change for the task generator is a new delete object D3 in the deleteBucket
</p>
<ul><li> we will combine the changed input D3 with all objects from the other input bucket (partitionBucket)
</li><li> so we create three new tasks: T1(input: D3,P1), T2(D3,P2), T3(D3,P3)
</li></ul>
<p>Example 2: Input change for the task generator is a new delete object D3 in the deleteBucket <i>and</i> a new partition object P4 in the partitionBucket
</p>
<ul><li> we will combine the changed input D3 with all objects from the partitionBucket, and the changed input P4 with all objects from the deleteBucket
</li><li> so we create new tasks: T1(D3,P1), T2(D3,P2), T3(D3,P3), T4(D3,P4) and T5(P4,D1), T6(P4,D2), T7(P4,D3)
</li><li> T3 and T7 are equals so we eliminate T7 and deliver six new tasks
</li></ul>
<p>The generator can set additional optional parameters on the created tasks:
</p>
<ul><li> <tt>_triggeredBy: &lt;slotname&gt;</tt>: The task was created because the object in the named slot is new. This is not set for the single task that contains both changed input bulks in case both input slots had changes.
</li><li> <tt>_partner.&lt;slotname&gt;: &lt;objectid&gt;</tt>: If both input slots had changed bulks, this parameters contains the object id of the first changed object in the <i>other</i> slot, i.e. the one not named in the <tt>_triggeredBy</tt> parameter.
</li></ul>
<p>The purpose of this is to allow the worker to check dependencies between the new objects.
</p>
<!--
NewPP limit report
Preprocessor node count: 33/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:34881-0!1!0!!en!2!edit=0 and timestamp 20120710093516 -->
<div class="printfooter">
Retrieved from "<a href="TaskGenerators.html">http://wiki.eclipse.org/SMILA/Documentation/TaskGenerators</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 15:33, 23 January 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>. </p>
<p id="footerviews">This page has been accessed 382 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.048 secs. --></body></html>