blob: f06f54ec176e140bbc3246c657b0fbb98749a54e [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>SMILA/Documentation/HowTo/Howto integrate a component in SMILA - Eclipsepedia</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="generator" content="MediaWiki 1.23.2" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/eclipse.org-common/themes/solstice/public/images/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.eclipse.org/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom feed" href="http://wiki.eclipse.org/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.ui.button&amp;only=styles&amp;skin=solstice&amp;*" />
<link rel="stylesheet" href="http://wiki.eclipse.org/skins/solstice/public/stylesheets/styles.min.css?303" media="screen, print" /><meta name="ResourceLoaderDynamicStyles" content="" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: my_wiki:resourceloader:filter:minify-css:7:14ece53a42aa314864e5fd8c57f0d98f */</style>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA","wgTitle":"SMILA/Documentation/HowTo/Howto integrate a component in SMILA","wgCurRevisionId":319756,"wgRevisionId":319756,"wgArticleId":15994,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["SMILA"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":false,"dialogs":false,"hidesig":true,"preview":false,"previewDialog":false,"publish":false},"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}"});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"solstice","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,
"useeditwarning":1,"prefershttps":1,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: my_wiki:resourceloader:filter:minify-js:7:70d74423d3fc1e1c18fa9a1ff645a84a */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax"]);
}</script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-SMILA_Documentation_HowTo_Howto_integrate_a_component_in_SMILA skin-solstice action-view" id="solstice">
<a class="sr-only" href="Howto_integrate_a_component_in_SMILA.html#content">Skip to main content</a>
<div class="thin-header">
<header role="banner" class="hidden-print noprint">
<div class="container-fluid">
<div id="row-logo-search">
<div id="header-left">
<div class="row">
<div class="hidden-xs col-sm-6 logo-container">
<a href="https://www.eclipse.org/" ><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia"></a>
</div>
<div class="navbar col-sm-18 yamm" id="main-menu">
<div class="navbar-collapse collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a target="_self" href="https://eclipse.org/downloads/">Download</a></li>
<li><a target="_self" href="https://eclipse.org/users/">Getting Started </a></li>
<li><a target="_self" href="https://eclipse.org/membership/">Members</a></li>
<li><a target="_self" href="https://eclipse.org/projects/">Projects</a></li>
<li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Howto_integrate_a_component_in_SMILA.html#">Community <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Howto_integrate_a_component_in_SMILA.html#">Participate <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Howto_integrate_a_component_in_SMILA.html#">Working Groups <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul></li><!-- More -->
<li class="dropdown hidden-xs"><a class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<!-- Content container to add padding -->
<div class="yamm-content">
<div class="row">
<ul class="col-sm-8 list-unstyled"><li><p><strong>Community</strong></p></li><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Participate</strong></p></li><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Working Groups</strong></p></li><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul> </div>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="navbar-header">
<button data-target="#navbar-collapse-1" data-toggle="collapse" class="navbar-toggle" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="https://www.eclipse.org/" class="visible-xs navbar-brand"><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia" width="174"></a>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<section class="defaut-breadcrumbs hidden-print noprint hidden-print clearfix" id="breadcrumb">
<div>
<ol class="breadcrumb">
<li><a href="https://www.eclipse.org/">Home</a></li>
<li><a href="http://wiki.eclipse.org/Main_Page">Eclipse Wiki</a></li>
<li class="active">SMILA/Documentation/HowTo/Howto integrate a component in SMILA</li></ol>
</div>
</section>
</div>
<div class="toolbar-menu breadcrumbs-offset noprint hidden-print margin-bottom-0 clearfix">
<div class="col-md-24">
<ol class="breadcrumb" role="navigation">
<li id="pt-login">
<a href="http://wiki.eclipse.org/index.php?title=Special:UserLogin&amp;returnto=SMILA%2FDocumentation%2FHowTo%2FHowto+integrate+a+component+in+SMILA">
<i class="fa fa-sign-in fa-fw orange"></i> Log in </a>
</li>
</ul>
</div>
</div>
<main role="main" class="background-grey">
<div class="container-full padding-top-25">
<!-- content -->
<section id="content" class="mw-body container-full clearfix 0">
<div id="mw-js-message" style="display:none;"></div>
<!-- bodyContent -->
<div id="bodyContent">
<!-- jumpto -->
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="Howto_integrate_a_component_in_SMILA.html#mw-head">navigation</a>,
<a href="Howto_integrate_a_component_in_SMILA.html#p-search">search</a>
</div>
<!-- /jumpto -->
<!-- leftcol -->
<aside class="col-md-4 noprint hidden-print" id="leftcol">
<form class="input-group" role="form" id="form-eclipse-search" action="http://wiki.eclipse.org/index.php" id="searchform">
<input id="searchInput" class="search-query form-control" type="search" accesskey="f" title="Special:Search" placeholder="Search" name="search" value="">
<span class="input-group-btn">
<button value="search" id="mw-searchButton" type="submit" class="btn btn-default" title="Search the pages for this text" name="fulltext">
<i class="fa fa-search"></i>
</button>
</span>
</form>
<select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Navigation---</span></option><option value="/Main_Page">Main Page</option><option value="/Eclipsepedia:Community_portal">Community portal</option><option value="/Eclipsepedia:Current_events">Current events</option><option value="/Special:RecentChanges">Recent changes</option><option value="/Special:Random">Random page</option><option value="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">Help</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Navigation</span></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Main_Page" id="n-mainpage" title="Visit the main page [z]" accesskey="z">Main Page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Community_portal" id="n-portal" title="About the project, what you can do, where to find things">Community portal</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Current_events" id="n-currentevents" title="Find background information on current events">Current events</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChanges" id="n-recentchanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:Random" id="n-randompage" title="Load a random page [x]" accesskey="x">Random page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" id="n-help" title="The place to find out">Help</a></li></ul> <select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Toolbox---</span></option><option value="/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=info">Page information</option><option value="/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;oldid=319756">Permanent link</option><option value="/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;printable=yes">Printable version</option><option value="/Special:SpecialPages">Special pages</option><option value="/Special:RecentChangesLinked/SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA">Related changes</option><option value="/Special:WhatLinksHere/SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA">What links here</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Toolbox</span></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=info" id="t-info">Page information</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;oldid=319756" id="t-permalink" title="Permanent link to this revision of the page">Permanent link</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;printable=yes" id="t-print" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:SpecialPages" id="t-specialpages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChangesLinked/SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA" id="t-recentchangeslinked" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:WhatLinksHere/SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA" id="t-whatlinkshere" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li></ul> </aside>
<!-- /leftcol -->
<!-- mainContent -->
<div id="mainContent" class="col-md-20">
<ul class="nav nav-tabs noprint hidden-print" role="tablist">
<li id="ca-nstab-main" class="active"><a href="Howto_integrate_a_component_in_SMILA.html" title="View the content page [c]" accesskey="c" tabindex="-1">Page</a></li>
<li id="ca-talk" class="new"><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t" tabindex="-1">Discussion</a></li>
<li id="ca-viewsource"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e" tabindex="-1">View source</a></li>
<li id="ca-history" class="collapsible"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=history" title="Past revisions of this page [h]" accesskey="h" tabindex="-1">History</a></li>
</ul> <div class="tab-content background-white">
<div id="tab-pane-main-page-content" class="tab-pane active">
<h1 id="firstHeading" class="firstHeading page-header">
<span dir="auto">SMILA/Documentation/HowTo/Howto integrate a component in SMILA</span>
</h1>
<div id="main-page-content">
<!-- subtitle -->
<div id="contentSub" class="alert alert-small alert-warning"><span class="subpages">&lt; <a href="../../../SMILA.html" title="SMILA">SMILA</a>&lrm; | <a href="../../Documentation.1.html" title="SMILA/Documentation">Documentation</a>&lrm; | <a href="../HowTo.html" title="SMILA/Documentation/HowTo">HowTo</a></span></div>
<!-- /subtitle -->
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><p>This page summarizes the different types and complexity levels for the integration of components in SMILA.
</p>
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="Howto_integrate_a_component_in_SMILA.html#Introduction"><span class="tocnumber">1</span> <span class="toctext">Introduction</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="Howto_integrate_a_component_in_SMILA.html#Conventions"><span class="tocnumber">2</span> <span class="toctext">Conventions</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href="Howto_integrate_a_component_in_SMILA.html#Handling_of_Character_Encoding"><span class="tocnumber">2.1</span> <span class="toctext">Handling of Character Encoding</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-4"><a href="Howto_integrate_a_component_in_SMILA.html#Integrating_a_SMILA_pipelet"><span class="tocnumber">3</span> <span class="toctext">Integrating a SMILA pipelet</span></a>
<ul>
<li class="toclevel-2 tocsection-5"><a href="Howto_integrate_a_component_in_SMILA.html#Examples"><span class="tocnumber">3.1</span> <span class="toctext">Examples</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="Howto_integrate_a_component_in_SMILA.html#Further_reading"><span class="tocnumber">3.2</span> <span class="toctext">Further reading</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-7"><a href="Howto_integrate_a_component_in_SMILA.html#Integrating_own_workers"><span class="tocnumber">4</span> <span class="toctext">Integrating own workers</span></a>
<ul>
<li class="toclevel-2 tocsection-8"><a href="Howto_integrate_a_component_in_SMILA.html#Description"><span class="tocnumber">4.1</span> <span class="toctext">Description</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="Howto_integrate_a_component_in_SMILA.html#Further_reading_2"><span class="tocnumber">4.2</span> <span class="toctext">Further reading</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-10"><a href="Howto_integrate_a_component_in_SMILA.html#Integrating_data_sources"><span class="tocnumber">5</span> <span class="toctext">Integrating data sources</span></a>
<ul>
<li class="toclevel-2 tocsection-11"><a href="Howto_integrate_a_component_in_SMILA.html#Further_reading_3"><span class="tocnumber">5.1</span> <span class="toctext">Further reading</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-12"><a href="Howto_integrate_a_component_in_SMILA.html#Integrating_alternative_implementations_of_SMILA_core_components"><span class="tocnumber">6</span> <span class="toctext">Integrating alternative implementations of SMILA core components</span></a>
<ul>
<li class="toclevel-2 tocsection-13"><a href="Howto_integrate_a_component_in_SMILA.html#Examples_2"><span class="tocnumber">6.1</span> <span class="toctext">Examples</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="Howto_integrate_a_component_in_SMILA.html#Further_reading_4"><span class="tocnumber">6.2</span> <span class="toctext">Further reading</span></a></li>
</ul>
</li>
</ul>
</div>
<h2><span class="mw-headline" id="Introduction">Introduction</span></h2>
<p>Due to its architecture SMILA allows for the easy integration of third-party components into its framework. Actually there are four different possible integration scenarios available that are depicted in the following table.
</p>
<table class="wikitable" border="1" cellpadding="5">
<tr>
<td> <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_a_SMILA_pipelet">Integrating a SMILA pipelet</a>
</td></tr>
<tr valign="top">
<td> This is probably the most frequently used integration scenario. It allows for the integration or exchange of functionality (services, 3rd party software, etc.) used to process records in the workflow engine.
</td></tr>
<tr valign="top">
<td> <a href="http://wiki.eclipse.org/File:Integrate-Service_1.1.0.png" class="image"><img alt="Integrate-Service 1.1.0.png" src="http://wiki.eclipse.org/images/thumb/2/25/Integrate-Service_1.1.0.png/900px-Integrate-Service_1.1.0.png" width="900" height="716" srcset="/images/2/25/Integrate-Service_1.1.0.png 1.5x, /images/2/25/Integrate-Service_1.1.0.png 2x" /></a>
</td></tr>
<tr valign="top">
<td> The figure demonstrates how you can integrate the functionality of your service or your piece of software to SMILA by adding it to the workflow engine.
</td></tr></table>
<p><br />
</p>
<table class="wikitable" border="1" cellpadding="5">
<tr>
<td> <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_workers">Integrating workers</a>
</td></tr>
<tr valign="top">
<td> Integrating your own <a href="../../Glossary.html#W" title="SMILA/Glossary">worker</a> implementation is another common scenario for adding functionality or adapting workflows to SMILA.
</td></tr>
<tr valign="top">
<td> <a href="http://wiki.eclipse.org/File:Integrate-Worker_1.1.0.png" class="image"><img alt="Integrate-Worker 1.1.0.png" src="http://wiki.eclipse.org/images/thumb/b/bd/Integrate-Worker_1.1.0.png/900px-Integrate-Worker_1.1.0.png" width="900" height="706" srcset="/images/b/bd/Integrate-Worker_1.1.0.png 1.5x, /images/b/bd/Integrate-Worker_1.1.0.png 2x" /></a>
</td></tr>
<tr valign="top">
<td> The figure above exemplary shows how you can add your own worker implementation to SMILA. Please note that you also have to add the worker to the job manager configuration files (workers.json, workflows.json) and add your worker as an OSGi service to activate it.
</td></tr></table>
<p><br />
</p>
<table class="wikitable" border="1" cellpadding="5">
<tr>
<td> <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_data_sources">Integrating data sources</a>
</td></tr>
<tr valign="top">
<td> Integrating a data source by implementing your own crawler is another scenario for adding functionality to SMILA. By doing so, further data sources can be unlocked to provide additional input to SMILA.
</td></tr>
<tr valign="top">
<td> <a href="http://wiki.eclipse.org/File:Integrate-DataSources_1.1.0.png" class="image"><img alt="Integrate-DataSources 1.1.0.png" src="http://wiki.eclipse.org/images/thumb/a/aa/Integrate-DataSources_1.1.0.png/900px-Integrate-DataSources_1.1.0.png" width="900" height="716" srcset="/images/a/aa/Integrate-DataSources_1.1.0.png 1.5x, /images/a/aa/Integrate-DataSources_1.1.0.png 2x" /></a>
</td></tr>
<tr valign="top">
<td> The figure above exemplary shows how you can add your own crawler implementation to SMILA. Please note that eventually you have to add a new Fetcher or extractors or further workers as well and you also have to add a new workflow definition, which is not shown in the figure. This was chosen due to simplicity.
</td></tr></table>
<p><br />
</p>
<table class="wikitable" border="1" cellpadding="5">
<tr>
<td> <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_alternative_implementations_of_SMILA_core_components">Integrating alternative implementations of SMILA core components</a>
</td></tr>
<tr valign="top">
<td> This scenario is particularly intended for the experienced (SMILA) developer and comprises the possibility to exchange existing implementations of the SMILA core components by your own implementations.
</td></tr>
<tr valign="top">
<td> <a href="http://wiki.eclipse.org/File:Provide-Alternative-To-Core-Component_1.1.0.png" class="image"><img alt="Provide-Alternative-To-Core-Component 1.1.0.png" src="http://wiki.eclipse.org/images/thumb/9/93/Provide-Alternative-To-Core-Component_1.1.0.png/900px-Provide-Alternative-To-Core-Component_1.1.0.png" width="900" height="651" srcset="/images/thumb/9/93/Provide-Alternative-To-Core-Component_1.1.0.png/1350px-Provide-Alternative-To-Core-Component_1.1.0.png 1.5x, /images/9/93/Provide-Alternative-To-Core-Component_1.1.0.png 2x" /></a>
</td></tr>
<tr valign="top">
<td> The figure above demonstrates one of the SMILA core components -- <i>data store</i> -- may be exchanged by your own implementation. This serves as examples only, that is, you may also exchange other core components such as the <a href="../../Glossary.html#B" title="SMILA/Glossary">blackboard service</a>.
</td></tr></table>
<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/File:Note.png" class="image"><img alt="Note.png" src="http://wiki.eclipse.org/images/c/cc/Note.png" width="35" height="35" /></a></div>
<div><b>The above figures exemplary demonstrate at which levels in the <a rel="nofollow" class="external text" href="http://www.eclipse.org/smila">SMILA architecture</a> an integration of new components is applicable. However, for simplicity reason, we restricted the above figures to the index processing chain while completely ignoring the search processing chain that offers the same integration options (except for the integration of agents and crawlers), but is currently not in the focus of this page.</b>
<b><br /></div></b>
</div>
<p><br />
</p>
<h2><span class="mw-headline" id="Conventions">Conventions</span></h2>
<h3><span class="mw-headline" id="Handling_of_Character_Encoding">Handling of Character Encoding</span></h3>
<p>To make processing of data in SMILA easier: If external data must be converted to a string (e.g. an attribute value), the crawler/fetcher or any other component accessing an external data source should try everything that is possible to ensure that the conversion is done using the correct encoding. For example, HTTP clients should use the encoding reported by the HTTP server. If the data source does not provide information about the character encoding, you can use the class <tt>org.eclipse.smila.utils.file.EncodingHelper</tt> that tries to convert a byte[] to a string by trying to detect the correct encoding from a <tt>byte[]</tt> by checking BOMs or checking XML and HTML content for instructions and finally by using UTF-8 or, if this fails, the default platform encoding. You may find this helpful.
</p><p>On the other hand, if valid string data must be converted to a byte[] (e.g. if it is stored as a attachment after pipelet processing), the conversion must always use UTF-8 encoding.
</p>
<h2><span class="mw-headline" id="Integrating_a_SMILA_pipelet">Integrating a SMILA pipelet</span></h2>
<p>As already shown in the overview above, SMILA offers the possibility to integrate your own service or piece of software into SMILA <a href="../../Glossary.html#BPEL" title="SMILA/Glossary">BPEL</a> workflows.
In SMILA we simply call these workflows <a href="../../Glossary.html#P" title="SMILA/Glossary">pipelines</a>. A pipeline is the definition of a BPEL process (or workflow) that orchestrates <a href="../../Glossary.html#P" title="SMILA/Glossary">pipelets</a> and other BPEL services (e.g. web services).
</p><p>The default and thus recommended technique to integrate simple and small functionality or software in SMILA is to provide a <a href="../../Glossary.html#P" title="SMILA/Glossary">pipelet</a>. Pipelets are easy to implement as they require only standard Java knowledge. They are not shared between multiple pipelines, even multiple invocations of a Pipelet in the same Pipeline do not share the same instance. The lifecycle and configuration of pipelets is managed by the workflow engine, not by OSGi runtime. Pipelets have full access to SMILA <a href="../../Glossary.html#R" title="SMILA/Glossary">records</a> by using the <a href="../../Glossary.html#B" title="SMILA/Glossary">blackboard service</a>, which makes it easy to read, modify, and store <a href="../../Glossary.html#R" title="SMILA/Glossary">records</a>. For further information on pipelets refer to the <a href="../Pipelets.html" title="SMILA/Documentation/Pipelets">Pipelets documentation</a>.
</p><p>In general pipelets follow the same (sometimes optional) logical steps (of course this depends highly on the business logic to be executed). These steps are:
</p>
<ul>
<li> Read the configuration (optional)
</li>
<li> Read input data from blackboard (optional)
</li>
<li> Execute the business logic
</li>
<li> Write result data to blackboard (optional)
</li>
</ul>
<p>In terms of the pipelet that implements the business logic you are totally free to use any desired technology. Some of the posibilities include:
</p>
<ul>
<li> Using POJOs (For examples refer to the <a href="../Bundle_org.eclipse.smila.processing.pipelets.xmlprocessing.html" title="SMILA/Documentation/Bundle org.eclipse.smila.processing.pipelets.xmlprocessing">XML processing pipelets</a>)
</li>
<li> Using any local available OSGi service (For an example refer to the <a href="../Bundle_org.eclipse.smila.processing.pipelets.html#org.eclipse.smila.processing.pipelets.MimeTypeIdentifyPipelet" title="SMILA/Documentation/Bundle org.eclipse.smila.processing.pipelets">MimeTypeIdentifyPipelet</a> which uses a MimeTypeIdentifier service)
</li>
<li> Using other technologies such as JNI, RMI, or CORBA to integrate remote or non Java components.
</li>
</ul>
<h5><span class="mw-headline" id="Examples">Examples</span></h5>
<ul>
<li> Typical examples for pipelets are the <a href="../Bundle_org.eclipse.smila.processing.pipelets.xmlprocessing.html" title="SMILA/Documentation/Bundle org.eclipse.smila.processing.pipelets.xmlprocessing">XML processing pipelets</a>. These lightweight pipelets are used for XML processing (e.g. XSL transformation). Each pipeline uses its own <a href="../../Glossary.html#P" title="SMILA/Glossary">pipelet</a> instance.
</li>
</ul>
<h5><span class="mw-headline" id="Further_reading">Further reading</span></h5>
<p>Please consult the following how-to tutorials for a more detailed technical description:
</p>
<ul>
<li> <a href="../../Development_Guidelines/How_to_write_a_Pipelet.html" title="SMILA/Development Guidelines/How to write a Pipelet" class="mw-redirect">How to write a pipelet</a>
</li>
<li> <a href="../../Development_Guidelines/How_to_integrate_the_HelloWorld_webservice_as_a_Pipelet.html" title="SMILA/Development Guidelines/How to integrate the HelloWorld webservice as a Pipelet" class="mw-redirect">How to integrate the HelloWorld <b>web service</b> as a pipelet</a>
</li>
</ul>
<h2><span class="mw-headline" id="Integrating_own_workers">Integrating own workers</span></h2>
<p>When the desired changes to the functionality are not simple and small or the desired functionality requires more than just accessing the records, it is recommended to integrate your functionality as new <a href="../../Glossary.html#W" title="SMILA/Glossary">workers</a>.
These workers have to be defined in the asynchronous job processing configuration and can then be integrated in workflows.
</p>
<h3><span class="mw-headline" id="Description">Description</span></h3>
<p>A worker is an OSGi service, that implements the Worker interface, i.e. provides a name (to collect tasks and to be identified in workflows) and offers a threadsafe <tt>perform</tt> method, which takes a <tt>TaskContext</tt> object (generated by the WorkerManager) as an argument.
</p><p>Normally the worker will handle a bulk of records in the perform method, manipulate the contained records, may access external services or stores and create new bulks of records.
</p><p>The worker does not have to handle tasks or check if tasks are available. These menial tasks are done by the WorkerManager that cares for all registered workers, handles the invocations of their perform methods and copes with input and output bulks, up-scaling or exception handling. The worker just has to provide the perfom method to deal with the records.
</p><p>If the worker requires direct access to the JobManager/TaskManager, e.g. because it is an initial worker and has to get initial tasks to start workflow runs without being triggered by previous workers, it must not register itself as a Worker service but has to tackle TaskManager and JobManager itself. Be careful, this is tedious work! So if possible stick to the Worker interface and let everything else be handled by the WorkerManager.
</p>
<h3><span class="mw-headline" id="Further_reading_2">Further reading</span></h3>
<p>Please consult at least the following pages about asynchronous job processing:
</p>
<ul>
<li> <a href="../JobManager.html" title="SMILA/Documentation/JobManager">JobManager</a>
</li>
<li> <a href="../WorkerManager.html" title="SMILA/Documentation/WorkerManager">WorkerManager</a>
</li>
<li> [<a rel="nofollow" class="external text" href="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/taskworker/package-summary.html%7CTaskWorker">JavaDoc</a>]
</li>
<li> <a href="../../Development_Guidelines/How_to_write_a_Worker.html" title="SMILA/Development Guidelines/How to write a Worker" class="mw-redirect">How to write a <b>worker</b></a>
</li>
</ul>
<h2><span class="mw-headline" id="Integrating_data_sources">Integrating data sources</span></h2>
<p>If you like to integrate data sources, you should do so by writing a new Importing-Wokrflow along with apropriate crawler/fetcher workers (and eventually an extractor worker) as is described in <a href="How_to_add_a_new_Data_Source_to_the_importing_framework.html" title="SMILA/Documentation/HowTo/How to add a new Data Source to the importing framework">HowTo add a new Data Source to the Importing Framework</a>.
</p><p>This also involves integration of own workers (see <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_own_workers">Integrating own workers</a> above).
</p>
<h3><span class="mw-headline" id="Further_reading_3">Further reading</span></h3>
<p>Please consult the following how-to tutorials for a more detailed technical description:
</p>
<ul>
<li> <a href="How_to_add_a_new_Data_Source_to_the_importing_framework.html" title="SMILA/Documentation/HowTo/How to add a new Data Source to the importing framework">HowTo add a new Data Source to the Importing Framework</a>
</li>
<li> <a href="Howto_integrate_a_component_in_SMILA.html#Integrating_own_workers">Integrating own workers</a>
</li>
</ul>
<h2><span class="mw-headline" id="Integrating_alternative_implementations_of_SMILA_core_components">Integrating alternative implementations of SMILA core components</span></h2>
<p>The component-based architecture of SMILA even allows you to provide your own implementations of SMILA core components, since these are implemented as OSGi service components (see <a href="../../Development_Guidelines/Declarative_Services.html" title="SMILA/Development Guidelines/Declarative Services" class="mw-redirect">Declarativ Services</a>) and can thus be exchanged in a standard way.
</p>
<ul>
<li> Include a new plug-in that exposes a service implementing the interface of the core component (e.g. <tt>ObjectStoreService</tt>)
</li>
<li> modify the config.ini configuration file in SMILA.application to include and start the new plug-in instead of the plug-in provided by SMILA core.
</li>
<li> build your application and run it.
</li>
</ul>
<h3><span class="mw-headline" id="Examples_2">Examples</span></h3>
<p>A typical example could be an alternative implementation of the <tt>ObjectStoreService</tt> that does not store the objects in the file system but in memory or in a database.
</p>
<h3><span class="mw-headline" id="Further_reading_4">Further reading</span></h3>
<ul>
<li> <a href="../../Development_Guidelines/Declarative_Services.html" title="SMILA/Development Guidelines/Declarative Services" class="mw-redirect">SMILA/Development_Guidelines/Declarative_Services</a>
</li>
<li> <a rel="nofollow" class="external text" href="http://eclipse.org/equinox">Eclipse Equinox</a>
</li>
<li> <a rel="nofollow" class="external text" href="http://live.eclipse.org/node/407">Webinar: Getting started with OSGi</a>
</li>
</ul>
<!--
NewPP limit report
CPU time usage: 0.168 seconds
Real time usage: 0.217 seconds
Preprocessor visited node count: 91/1000000
Preprocessor generated node count: 268/1000000
Post‐expand include size: 1917/2097152 bytes
Template argument size: 1385/2097152 bytes
Highest expansion depth: 5/40
Expensive parser function count: 0/100
-->
<!-- Saved in parser cache with key my_wiki:pcache:idhash:15994-0!*!0!!en!2!* and timestamp 20150414080902 and revision id 319756
-->
</div>
<!-- catlinks -->
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="http://wiki.eclipse.org/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="http://wiki.eclipse.org/Category:SMILA" title="Category:SMILA">SMILA</a></li></ul></div></div> <!-- /catlinks -->
</div>
</div>
</div>
</div>
<!-- /maincontent -->
<!-- printfooter -->
<div class="printfooter">
Retrieved from "<a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;oldid=319756">http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;oldid=319756</a>" </div>
<!-- /printfooter -->
<!-- debughtml -->
<!-- /debughtml -->
</div>
<!-- /bodyContent -->
</section>
<!-- /content -->
<!-- footer -->
</div> <section id="footer-contribution-info" style="border-top:1px solid #ccc;" class="footer-offset background-white margin-top-25"><div class="container text-center padding-top-10 padding-bottom-10"><p id="footercredit">This page was last modified 13:58, 23 October 2012 by <a href="http://wiki.eclipse.org/User:Andreas.weber.empolis.com" title="User:Andreas.weber.empolis.com">Andreas Weber</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Andreas.schank.empolis.com&amp;action=edit&amp;redlink=1" class="new" title="User:Andreas.schank.empolis.com (page does not exist)">Andreas Schank</a>, <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit&amp;redlink=1" class="new" title="User:Juergen.schumacher.attensity.com (page does not exist)">Juergen Schumacher</a> and <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a> and <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Howto_integrate_a_component_in_SMILA&amp;action=credits" title="SMILA/Documentation/HowTo/Howto integrate a component in SMILA">others</a>.</p><p id="footerviews">This page has been accessed 9,361 times.</p></div></section> </main> <!-- /#main-content-container-row -->
<p id="back-to-top" class="noprint hidden-print">
<a class="visible-xs" href="Howto_integrate_a_component_in_SMILA.html#top">Back to the top</a>
</p>
<footer role="contentinfo" class="noprint hidden-print">
<div class="container">
<div class="row">
<section id="footer-eclipse-foundation" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Eclipse Foundation</h2>
<ul class="nav">
<li><a href="https://eclipse.org/org/">About us</a></li>
<li><a href="https://eclipse.org/org/foundation/contact.php">Contact Us</a></li>
<li><a href="https://eclipse.org/donate">Donate</a></li>
<li><a href="https://eclipse.org/org/documents/">Governance</a></li>
<li><a href="https://eclipse.org/artwork/">Logo and Artwork</a></li>
<li><a href="https://eclipse.org/org/foundation/directors.php">Board of Directors</a></li>
</ul>
</section>
<section id="footer-legal" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Legal</h2>
<ul class="nav">
<li><a href="https://eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="https://eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="https://eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="https://eclipse.org/org/documents/epl-v10.php">Eclipse Public License </a></li>
<li><a href="https://eclipse.org/legal/">Legal Resources </a></li>
</ul>
</section>
<section id="footer-useful-links" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Useful Links</h2>
<ul class="nav">
<li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
<li><a href="http://help.eclipse.org/">Documentation</a></li>
<li><a href="https://eclipse.org/contribute/">How to Contribute</a></li>
<li><a href="https://eclipse.org/mail/">Mailing Lists</a></li>
<li><a href="https://eclipse.org/forums/">Forums</a></li>
<li><a href="http://marketplace.eclipse.org/">Marketplace</a></li>
</ul>
</section>
<section id="footer-other" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Other</h2>
<ul class="nav">
<li><a href="https://eclipse.org/ide/">IDE and Tools</a></li>
<li><a href="https://eclipse.org/projects">Community of Projects</a></li>
<li><a href="https://eclipse.org/org/workinggroups/">Working Groups</a></li>
</ul>
<ul class="list-inline social-media">
<li><a href="https://twitter.com/EclipseFdn"><i class="fa fa-twitter-square"></i></a></li>
<li><a href="https://plus.google.com/+Eclipse"><i class="fa fa-google-plus-square"></i></a></li>
<li><a href="https://www.facebook.com/eclipse.org"><i class="fa fa-facebook-square"></i> </a></li>
<li><a href="https://www.youtube.com/user/EclipseFdn"><i class="fa fa-youtube-square"></i></a></li>
</ul>
</section>
<div id="copyright" class="col-xs-offset-1 col-sm-14 col-md-24 col-md-offset-0">
<div>
<span><img src="http://eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-logo-bw-800x188.png" alt="Eclipse.org black and white logo" width="166" height="39" id="logo-eclipse-white"/></span>
<p id="copyright-text">Copyright &copy; 2014 The Eclipse Foundation. All Rights Reserved.</p>
</div>
</div>
<a href="Howto_integrate_a_component_in_SMILA.html#" class="scrollup">Back to the top</a>
</div>
</div>
</footer>
<script src="http://wiki.eclipse.org/skins/solstice/public/javascript/main.min.js"></script>
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-910670-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> <!-- /footer -->
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"skins.solstice":"loading","site":"ready","user":"ready","user.groups":"ready"});
}</script>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=skins.solstice&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest"],null,true);
}</script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":382});
}</script> </body>
</html>