blob: 667c450b274f5facd4f08bfcdc7252138692fb7b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_77) on Mon Oct 24 00:05:45 UTC 2016 -->
<title>Overview (Edgent v1.0.0)</title>
<meta name="date" content="2016-10-24">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Overview (Edgent v1.0.0)";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">Apache Edgent (incubating) v1.0.0</h1>
</div>
<div class="header">
<div class="subTitle">
<div class="block">Edgent provides an programming model and runtime for executing streaming
analytics at the <i>edge</i>.</div>
</div>
<p>See: <a href="#overview.description">Description</a></p>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Providers table, listing packages, and an explanation">
<caption><span>Edgent Providers</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/providers/development/package-summary.html">org.apache.edgent.providers.development</a></td>
<td class="colLast">
<div class="block">Execution of a streaming topology in a development environment .</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/providers/direct/package-summary.html">org.apache.edgent.providers.direct</a></td>
<td class="colLast">
<div class="block">Direct execution of a streaming topology.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/providers/iot/package-summary.html">org.apache.edgent.providers.iot</a></td>
<td class="colLast">
<div class="block">Iot provider that allows multiple applications to
share an <code>IotDevice</code>.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent API table, listing packages, and an explanation">
<caption><span>Edgent API</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/execution/package-summary.html">org.apache.edgent.execution</a></td>
<td class="colLast">
<div class="block">Execution of Edgent topologies and graphs.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/execution/mbeans/package-summary.html">org.apache.edgent.execution.mbeans</a></td>
<td class="colLast">
<div class="block">Management MBeans for execution.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/execution/services/package-summary.html">org.apache.edgent.execution.services</a></td>
<td class="colLast">
<div class="block">Execution services.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/function/package-summary.html">org.apache.edgent.function</a></td>
<td class="colLast">
<div class="block">Functional interfaces for lambda expressions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/package-summary.html">org.apache.edgent.topology</a></td>
<td class="colLast">
<div class="block">Functional api to build a streaming topology.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/topology/json/package-summary.html">org.apache.edgent.topology.json</a></td>
<td class="colLast">
<div class="block">Utilities for use of JSON in a streaming topology.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/mbeans/package-summary.html">org.apache.edgent.topology.mbeans</a></td>
<td class="colLast">
<div class="block">Controls for executing topologies.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/topology/plumbing/package-summary.html">org.apache.edgent.topology.plumbing</a></td>
<td class="colLast">
<div class="block">Plumbing for a streaming topology.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/services/package-summary.html">org.apache.edgent.topology.services</a></td>
<td class="colLast">
<div class="block">Services for topologies.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Analytics table, listing packages, and an explanation">
<caption><span>Edgent Analytics</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/analytics/math3/json/package-summary.html">org.apache.edgent.analytics.math3.json</a></td>
<td class="colLast">
<div class="block">JSON analytics using Apache Commons Math.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/analytics/math3/stat/package-summary.html">org.apache.edgent.analytics.math3.stat</a></td>
<td class="colLast">
<div class="block">Statistical algorithms using Apache Commons Math.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/analytics/sensors/package-summary.html">org.apache.edgent.analytics.sensors</a></td>
<td class="colLast">
<div class="block">Analytics focused on handling sensor data.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Utilities table, listing packages, and an explanation">
<caption><span>Edgent Utilities</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/metrics/package-summary.html">org.apache.edgent.metrics</a></td>
<td class="colLast">
<div class="block">Metric utility methods, oplets, and reporters which allow an
application to expose metric values, for example via JMX.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/metrics/oplets/package-summary.html">org.apache.edgent.metrics.oplets</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/streamscope/package-summary.html">org.apache.edgent.streamscope</a></td>
<td class="colLast">
<div class="block">Stream Oscilloscope - package for instrumenting streams to capture tuples.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/streamscope/mbeans/package-summary.html">org.apache.edgent.streamscope.mbeans</a></td>
<td class="colLast">
<div class="block">Stream Oscilloscope <a href="org/apache/edgent/execution/services/ControlService.html" title="interface in org.apache.edgent.execution.services"><code>ControlService</code></a>
Management Bean interfaces.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/streamscope/oplets/package-summary.html">org.apache.edgent.streamscope.oplets</a></td>
<td class="colLast">
<div class="block">Stream Oscilloscope underlying implementation oplets.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Connectors table, listing packages, and an explanation">
<caption><span>Edgent Connectors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/command/package-summary.html">org.apache.edgent.connectors.command</a></td>
<td class="colLast">
<div class="block">Command / OS Process connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/csv/package-summary.html">org.apache.edgent.connectors.csv</a></td>
<td class="colLast">
<div class="block">Utilities for handling Comma Separated Value strings.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/file/package-summary.html">org.apache.edgent.connectors.file</a></td>
<td class="colLast">
<div class="block">File stream connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/http/package-summary.html">org.apache.edgent.connectors.http</a></td>
<td class="colLast">
<div class="block">HTTP stream connector.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/iot/package-summary.html">org.apache.edgent.connectors.iot</a></td>
<td class="colLast">
<div class="block">Edgent device connector API to a message hub.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/iotp/package-summary.html">org.apache.edgent.connectors.iotp</a></td>
<td class="colLast">
<div class="block">IBM Watson IoT Platform stream connector.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/jdbc/package-summary.html">org.apache.edgent.connectors.jdbc</a></td>
<td class="colLast">
<div class="block">JDBC based database stream connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/kafka/package-summary.html">org.apache.edgent.connectors.kafka</a></td>
<td class="colLast">
<div class="block">Apache Kafka enterprise messing hub stream connector.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/mqtt/package-summary.html">org.apache.edgent.connectors.mqtt</a></td>
<td class="colLast">
<div class="block">MQTT (lightweight messaging protocol for small sensors and mobile devices) stream connector.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/mqtt/iot/package-summary.html">org.apache.edgent.connectors.mqtt.iot</a></td>
<td class="colLast">
<div class="block">An MQTT based IotDevice connector.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/pubsub/package-summary.html">org.apache.edgent.connectors.pubsub</a></td>
<td class="colLast">
<div class="block">Publish subscribe model between jobs.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/pubsub/oplets/package-summary.html">org.apache.edgent.connectors.pubsub.oplets</a></td>
<td class="colLast">
<div class="block">Oplets supporting publish subscribe service.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/pubsub/service/package-summary.html">org.apache.edgent.connectors.pubsub.service</a></td>
<td class="colLast">
<div class="block">Publish subscribe service.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/serial/package-summary.html">org.apache.edgent.connectors.serial</a></td>
<td class="colLast">
<div class="block">Serial port connector API.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/wsclient/package-summary.html">org.apache.edgent.connectors.wsclient</a></td>
<td class="colLast">
<div class="block">WebSocket Client Connector API for sending and receiving messages to a WebSocket Server.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/connectors/wsclient/javax/websocket/package-summary.html">org.apache.edgent.connectors.wsclient.javax.websocket</a></td>
<td class="colLast">
<div class="block">WebSocket Client Connector for sending and receiving messages to a WebSocket Server.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Samples table, listing packages, and an explanation">
<caption><span>Edgent Samples</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/apps/package-summary.html">org.apache.edgent.samples.apps</a></td>
<td class="colLast">
<div class="block">Support for some more complex Edgent application samples.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/apps/mqtt/package-summary.html">org.apache.edgent.samples.apps.mqtt</a></td>
<td class="colLast">
<div class="block">Base support for Edgent MQTT based application samples.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/apps/sensorAnalytics/package-summary.html">org.apache.edgent.samples.apps.sensorAnalytics</a></td>
<td class="colLast">
<div class="block">The Sensor Analytics sample application demonstrates some common
continuous sensor analytic application themes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/package-summary.html">org.apache.edgent.samples.connectors</a></td>
<td class="colLast">
<div class="block">General support for connector samples.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/elm327/package-summary.html">org.apache.edgent.samples.connectors.elm327</a></td>
<td class="colLast">
<div class="block">OBD-II protocol sample using ELM327.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/elm327/runtime/package-summary.html">org.apache.edgent.samples.connectors.elm327.runtime</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/file/package-summary.html">org.apache.edgent.samples.connectors.file</a></td>
<td class="colLast">
<div class="block">Samples showing use of the
<a href="./org/apache/edgent/connectors/file/package-summary.html">
File stream connector</a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/iotp/package-summary.html">org.apache.edgent.samples.connectors.iotp</a></td>
<td class="colLast">
<div class="block">Samples showing device events and commands with IBM Watson IoT Platform.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/jdbc/package-summary.html">org.apache.edgent.samples.connectors.jdbc</a></td>
<td class="colLast">
<div class="block">Samples showing use of the
<a href="./org/apache/edgent/connectors/jdbc/package-summary.html">
JDBC stream connector</a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/kafka/package-summary.html">org.apache.edgent.samples.connectors.kafka</a></td>
<td class="colLast">
<div class="block">Samples showing use of the
<a href="./org/apache/edgent/connectors/kafka/package-summary.html">
Apache Kafka stream connector</a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/mqtt/package-summary.html">org.apache.edgent.samples.connectors.mqtt</a></td>
<td class="colLast">
<div class="block">Samples showing use of the
<a href="./org/apache/edgent/connectors/mqtt/package-summary.html">
MQTT stream connector</a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/connectors/obd2/package-summary.html">org.apache.edgent.samples.connectors.obd2</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/console/package-summary.html">org.apache.edgent.samples.console</a></td>
<td class="colLast">
<div class="block">Samples showing use of the
<a href="./org/apache/edgent/console/package-summary.html">
Console web application</a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/scenarios/iotp/package-summary.html">org.apache.edgent.samples.scenarios.iotp</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/topology/package-summary.html">org.apache.edgent.samples.topology</a></td>
<td class="colLast">
<div class="block">Samples showing creating and executing basic topologies .</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/samples/utils/metrics/package-summary.html">org.apache.edgent.samples.utils.metrics</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/samples/utils/sensor/package-summary.html">org.apache.edgent.samples.utils.sensor</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent Low-Level API table, listing packages, and an explanation">
<caption><span>Edgent Low-Level API</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/graph/package-summary.html">org.apache.edgent.graph</a></td>
<td class="colLast">
<div class="block">Low-level graph building API.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/graph/spi/package-summary.html">org.apache.edgent.graph.spi</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/graph/spi/execution/package-summary.html">org.apache.edgent.graph.spi.execution</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/oplet/package-summary.html">org.apache.edgent.oplet</a></td>
<td class="colLast">
<div class="block">Oplets API.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/oplet/core/package-summary.html">org.apache.edgent.oplet.core</a></td>
<td class="colLast">
<div class="block">Core primitive oplets.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/oplet/functional/package-summary.html">org.apache.edgent.oplet.functional</a></td>
<td class="colLast">
<div class="block">Oplets that process tuples using functions.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/oplet/plumbing/package-summary.html">org.apache.edgent.oplet.plumbing</a></td>
<td class="colLast">
<div class="block">Oplets that control the flow of tuples.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/oplet/window/package-summary.html">org.apache.edgent.oplet.window</a></td>
<td class="colLast">
<div class="block">Oplets using windows.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/window/package-summary.html">org.apache.edgent.window</a></td>
<td class="colLast">
<div class="block">Window API.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Edgent SPI table, listing packages, and an explanation">
<caption><span>Edgent SPI</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/spi/package-summary.html">org.apache.edgent.topology.spi</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/topology/spi/functions/package-summary.html">org.apache.edgent.topology.spi.functions</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/spi/graph/package-summary.html">org.apache.edgent.topology.spi.graph</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/topology/spi/tester/package-summary.html">org.apache.edgent.topology.spi.tester</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Other Packages table, listing packages, and an explanation">
<caption><span>Other Packages</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/apps/iot/package-summary.html">org.apache.edgent.apps.iot</a></td>
<td class="colLast">
<div class="block">Applications for use in an Internet of Things environment.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/apps/runtime/package-summary.html">org.apache.edgent.apps.runtime</a></td>
<td class="colLast">
<div class="block">Applications which provide monitoring and failure recovery to other
Edgent applications.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/javax/websocket/package-summary.html">org.apache.edgent.javax.websocket</a></td>
<td class="colLast">
<div class="block">Support for working around JSR356 limitations for SSL client container/sockets.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/javax/websocket/impl/package-summary.html">org.apache.edgent.javax.websocket.impl</a></td>
<td class="colLast">
<div class="block">Support for working around JSR356 limitations for SSL client container/sockets.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/appservice/package-summary.html">org.apache.edgent.runtime.appservice</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/etiao/package-summary.html">org.apache.edgent.runtime.etiao</a></td>
<td class="colLast">
<div class="block">A runtime for executing an Edgent streaming topology, designed as an embeddable library
so that it can be executed in a simple Java application.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/etiao/graph/package-summary.html">org.apache.edgent.runtime.etiao.graph</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/etiao/graph/model/package-summary.html">org.apache.edgent.runtime.etiao.graph.model</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/etiao/mbeans/package-summary.html">org.apache.edgent.runtime.etiao.mbeans</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/jmxcontrol/package-summary.html">org.apache.edgent.runtime.jmxcontrol</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/jobregistry/package-summary.html">org.apache.edgent.runtime.jobregistry</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/runtime/jsoncontrol/package-summary.html">org.apache.edgent.runtime.jsoncontrol</a></td>
<td class="colLast">
<div class="block">Control service that takes a Json message and invokes
an operation on a control service MBean.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/test/svt/package-summary.html">org.apache.edgent.test.svt</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/test/svt/apps/package-summary.html">org.apache.edgent.test.svt.apps</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/test/svt/apps/iotp/package-summary.html">org.apache.edgent.test.svt.apps.iotp</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/edgent/test/svt/utils/sensor/gps/package-summary.html">org.apache.edgent.test.svt.utils.sensor.gps</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/apache/edgent/topology/tester/package-summary.html">org.apache.edgent.topology.tester</a></td>
<td class="colLast">
<div class="block">Testing for a streaming topology.</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer"><a name="overview.description">
<!-- -->
</a>
<div class="block">Edgent provides an programming model and runtime for executing streaming
analytics at the <i>edge</i>.
<P>
<em>
Apache Edgent is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
</em>
</P>
<H1>Edgent</H1>
<OL>
<LI><a href="#overview">Overview</A></LI>
<LI><a href="#model">Programming Model</A></LI>
<LI><a href="#start">Getting Started</A></LI>
</OL>
<a name="overview"></a>
<H2>Overview</H2>
Edgent provides an programming model and runtime for executing streaming
analytics at the <i>edge</i>. Edgent is focusing on two edge cases:
<UL>
<LI>Internet of Things (IoT) - Widely distributed and/or mobile devices.</LI>
<LI>Enterprise Embedded - Edge analytics within an enterprise, such as local analytic applications of eash system in a machine room, or error log analytics in application servers.</LI>
</UL>
In both cases Edgent applications analyze live data and
send results of that analytics and/or data intermittently
to back-end systems for deeper analysis. An Edgent application
can use analytics to decide when to send information to back-end systems,
such as when the behaviour of the system is outside normal parameters
(e.g. an engine running too hot).
<BR>
Edgent applications do not send data continually
to back-end systems as the cost of communication may be high
(e.g. cellular networks) or bandwidth may be limited.
<P>
Edgent applications communicate with back-end systems through
some form of message hub as there may be millions of edge devices.
Edgent supports these message hubs:
<UL>
<LI> MQTT - Messaging standard for IoT</LI>
<LI> IBM Watson IoT Platform - Cloud based service providing a device model on top of MQTT</LI>
<LI> Apache Kafka - Enterprise message bus</LI>
</UL>
</P>
<P>
Back-end analytic systems are used to perform analysis on information from Edgent applications that cannot be performed at the edge. Such analysis may be:
<UL>
<LI>Running complex analytic algorithms than require more resources (cpu, memory etc.) than are available at the edge. </LI>
<LI>Maintaining more state per device that can exist at the edge, e.g. hours of state for patients' medical sensors. </LI>
<LI>Correlating device information with multiple data sources:
<UL>
<LI> Weather data</LI>
<LI> Social media data</LI>
<LI> Data of record (e.g patients' medical histories, trucking manifests).</LI>
<LI> Other devices </LI>
<LI>etc.</LI>
</UL>
</LI>
</UL>
<BR>
Back-end systems can interact or control devices based upon their analytics, by sending commands to specific devices, e.g. reduce maximum engine revs to reduce chance of failure before the next scheduled service, or send an alert of an accident ahead.
</P>
<a name="model"></a>
<H2>Programming Model</H2>
Edgent applications are streaming applications in which each <em>tuple</em>
(data item or event) in a <em>stream</em> of data is processed as it occurs.
Additionally, you can process <em>windows</em> (logical subsets) of data.
For example, you could analyze the last 90 seconds of data from a sensor to identify trends in the data
<P>
<H3>Topology functional API</H3>
<H4>Overview</H4>
The primary api is <a href="org/apache/edgent/topology/Topology.html" title="interface in org.apache.edgent.topology"><code>Topology</code></a> which uses a functional
model to build a topology of <a href="org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology"><code>streams</code></a> for an application.
<BR>
<a href="org/apache/edgent/topology/TStream.html" title="interface in org.apache.edgent.topology"><code>TStream</code></a> is a declaration of a stream of tuples, an application will create streams that source data (e.g. sensor readings) and then apply functions that transform those streams into derived streams, for example simply filtering a stream containg engine temperator readings to a derived stream that only contains readings thar are greater than 100&deg;C.
<BR>
An application terminates processing for a stream by <em>sinking</em> it. Sinking effectively terminates a stream by applying processing to each tuple on the stream (as it occurs) that does not produce a result. Typically this sinking is transmitting the tuple to an external system, for example the messgae hub to send the data to a back-end system, or locally sending the data to a user interface.
</P>
<P>
This programming style is typical for streaming systems and similar APIs are supported by systems such as Apache Flink, Apache Spark Streaming, IBM Streams and Java 8 streams.
</P>
<H4>Functions</H4>
Edgent supports Java 8 and it is encouraged to use Java 8 as functions can be easily and clearly written using lambda expressions.
<H4>Arbitrary Topology</H4>
Simple applications may just be a pipeline of streams, for example, logically:
<BR>
<code>source --&gt; filter --&gt; transform --&gt; aggregate --&gt; send to MQTT</code>
<BR>
However Edgent allows arbitrary topologies including:
<UL>
<LI>Multiple source streams in an application</LI>
<LI>Multiple sinks in an application </LI>
<LI>Multiple processing including sinks against a stream (fan-out)</LI>
<LI>Union of streams (fan-in) </LI>
<LI>Correlation of streams by allowing streams to be joined</LI>
</UL>
<H3>Graph API</H3>
<H4>Overview</H4>
The <a href="org/apache/edgent/graph/Graph.html" title="interface in org.apache.edgent.graph"><code>graph</code></a> API is a lower-level API that the
topology api is built on top of. A graph consists of
<a href="org/apache/edgent/oplet/Oplet.html" title="interface in org.apache.edgent.oplet"><code>oplet</code></a> invocations connected by streams.
The oplet invocations contain the processing applied to each tuple
on streams connected to their input ports. Processing by the oplet
submits tuples to its output ports for subsequent processing
by downstream connected oplet invocations.
<a name="start"></a>
<H2>Getting Started</H2>
Below, <code>&lt;edgent-target&gt;</code> refers to an Edgent release's platform target
directory such as <code>.../edgent/java8</code>.
<P>
A number of sample Java applications are provided that demonstrate use of Edgent.
<BR>
The Java code for the samples is under <code>&lt;edgent-target&gt;/samples</code>.
<P>
Shell scripts to run the samples are <code>&lt;edgent-target&gt;/scripts</code>.
See the <code>README</code> there.
<P>
Summary of samples:
<TABLE border=1 width="80%" table-layout="auto">
<TR class="rowColor"><TH>Sample</TH><TH>Description</TH><TH>Focus</TH></TR>
<TR class="altColor"><TD><a href="org/apache/edgent/samples/topology/HelloEdgent.html" title="class in org.apache.edgent.samples.topology"><code>HelloEdgent</code></a></TD>
<TD>Prints Hello Edgent! to standard output.</TD>
<TD>Basic mechanics of declaring a topology and executing it.</TD></TR>
<TR class="altColor"><TD><a href="org/apache/edgent/samples/topology/PeriodicSource.html" title="class in org.apache.edgent.samples.topology"><code>PeriodicSource</code></a></TD>
<TD>Polls a random number generator for a new value every second
and then prints out the raw value and a filtered and transformed stream.</TD>
<TD>Polling of a data value to create a source stream.</TD></TR>
<TR class="altColor"><TD><a href="org/apache/edgent/samples/topology/SensorsAggregates.html" title="class in org.apache.edgent.samples.topology"><code>SensorsAggregates</code></a></TD>
<TD>Demonstrates partitioned aggregation and filtering of simulated sensors
that are bursty in nature, so that only intermittently
is the data output to <code>System.out</code></TD>
<TD>Simulated sensors with windowed aggregation</TD></TR>
<TR class="altColor"><TD><a href="org/apache/edgent/samples/topology/SimpleFilterTransform.html" title="class in org.apache.edgent.samples.topology"><code>SimpleFilterTransform</code></a></TD>
<TD></TD>
<TD></TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/connectors/file/package-summary.html">
File</a></TD>
<TD>Write a stream of tuples to files. Watch a directory for new files
and create a stream of tuples from the file contents.</TD>
<TD>Use of the <a href="./org/apache/edgent/connectors/file/package-summary.html">
File stream connector</a></TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/connectors/iotf/package-summary.html">
IotfSensors, IotfQuickstart</a></TD>
<TD>Sends simulated sensor readings to an IBM Watson IoT Platform instance as device events.</TD>
<TD>Use of the <a href="./org/apache/edgent/connectors/iotf/package-summary.html">
IBM Watson IoT Platform connector</a> to send device events and receive device commands.</TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/connectors/jdbc/package-summary.html">
JDBC</a></TD>
<TD>Write a stream of tuples to an Apache Derby database table.
Create a stream of tuples by reading a table.</TD>
<TD>Use of the <a href="./org/apache/edgent/connectors/jdbc/package-summary.html">
JDBC stream connector</a></TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/connectors/kafka/package-summary.html">
Kafka</a></TD>
<TD>Publish a stream of tuples to a Kafka topic.
Create a stream of tuples by subscribing to a topic and receiving
messages from it.</TD>
<TD>Use of the <a href="./org/apache/edgent/connectors/kafka/package-summary.html">
Kafka stream connector</a></TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/connectors/mqtt/package-summary.html">
MQTT</a></TD>
<TD>Publish a stream of tuples to a MQTT topic.
Create a stream of tuples by subscribing to a topic and receiving
messages from it.</TD>
<TD>Use of the <a href="./org/apache/edgent/connectors/mqtt/package-summary.html">
MQTT stream connector</a></TD></TR>
<TR class="altColor"><TD><a href="./org/apache/edgent/samples/apps/sensorAnalytics/package-summary.html">
SensorAnalytics</a></TD>
<TD>Demonstrates a Sensor Analytics application that includes:
configuration control, a device of one or more sensors and
some typical analytics, use of MQTT for publishing results and receiving
commands, local results logging, conditional stream tracing.</TD>
<TD>A more complete sample application demonstrating common themes.</TD></TR>
</TABLE>
<BR>
Other samples are also provided but have not yet been fully documented.
Feel free to explore them.
<H2>Building Applications</H2>
You need to include one or more Edgent jars in your <code>classpath</code> depending
on what features your application uses.
<P>
Include one or more of the topology providers:
<ul>
<li><code>&lt;edgent-target&gt;/lib/edgent.providers.iot.jar</code> - if you use the
<a href="org/apache/edgent/providers/iot/IotProvider.html" title="class in org.apache.edgent.providers.iot"><code>IotProvider</code></a></li>
<li><code>&lt;edgent-target&gt;/lib/edgent.providers.direct.jar</code> - if you use the
<a href="org/apache/edgent/providers/direct/DirectProvider.html" title="class in org.apache.edgent.providers.direct"><code>DirectProvider</code></a></li>
<li><code>&lt;edgent-target&gt;/lib/edgent.providers.development.jar</code> - if you use the
<a href="org/apache/edgent/providers/development/DevelopmentProvider.html" title="class in org.apache.edgent.providers.development"><code>DevelopmentProvider</code></a></li>
</ul>
Include the jar of any Edgent connector you use:
<ul>
<li><code>&lt;edgent-target&gt;/connectors/command/lib/edgent.connectors.command.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/csv/lib/edgent.connectors.csv.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/file/lib/edgent.connectors.file.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/http/lib/edgent.connectors.http.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/iotp/lib/edgent.connectors.iotp.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/jdbc/lib/edgent.connectors.jdbc.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/kafka/lib/edgent.connectors.kafka.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/mqtt/lib/edgent.connectors.mqtt.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/pubsub/lib/edgent.connectors.pubsub.jar</code></li>
<li><code>&lt;edgent-target&gt;/connectors/wsclient-javax.websocket/lib/edgent.connectors.wsclient.javax.websocket.jar</code> [*]</li>
</ul>
[*] You also need to include a <code>javax.websocket</code> client implementation
if you use the <code>wsclient</code> connector. Include the following to use
an Eclipse Jetty based implementation:
<ul>
<li><code>&lt;edgent-target&gt;/connectors/javax.websocket-client/lib/javax.websocket-client.jar</code></li>
</ul>
<p>
Include jars for any Edgent analytic features you use:
<ul>
<li><code>&lt;edgent-target&gt;/analytics/math3/lib/edgent.analytics.math3.jar</code></li>
<li><code>&lt;edgent-target&gt;/analytics/sensors/lib/edgent.analytics.sensors.jar</code></li>
</ul>
Include jars for any Edgent utility features you use:
<ul>
<li><code>&lt;edgent-target&gt;/utils/metrics/lib/edgent.utils.metrics.jar</code> - for the <code>org.apache.edgent.metrics</code> package</li>
</ul>
Edgent uses <a href="www.slf4j.org">slf4j</a> for logging,
leaving the decision of the actual logging implementation to your application
(e.g., <code>java.util.logging</code> or <code>log4j</code>).
For <code>java.util.logging</code> you can include:
<ul>
<li><code>&lt;edgent-target&gt;/ext/slf4j-jdk-1.7.12.jar</code></li>
</ul></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://edgent.incubator.apache.org">Apache Edgent (incubating)</a></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2016 The Apache Software Foundation. All Rights Reserved - 59dfbdf-20161024-0005</small></p>
</body>
</html>