from 8f907c4d440328cc181797207885a72916f258d4
Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/commit/99f8415f Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/tree/99f8415f Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/diff/99f8415f Branch: refs/heads/asf-site Commit: 99f8415fae54b7319b82235e42af7c32c9ef8abb Parents: ca85497 Author: Queenie Ma <queeni...@ucla.edu> Authored: Thu Sep 8 07:49:35 2016 -0700 Committer: Queenie Ma <queeni...@ucla.edu> Committed: Thu Sep 8 07:49:35 2016 -0700 ---------------------------------------------------------------------- content/404.html | 12 +- content/algolia_search.json | 15 +- content/docs/committers.html | 12 +- content/docs/common-edgent-operations.html | 12 +- content/docs/community.html | 12 +- content/docs/console.html | 12 +- content/docs/edgent-getting-started.html | 13 +- content/docs/edgent_index.html | 12 +- content/docs/faq.html | 12 +- content/docs/home.html | 12 +- content/docs/overview.html | 12 +- content/docs/quickstart.html | 12 +- content/docs/samples.html | 12 +- content/docs/search.html | 12 +- content/docs/streaming-concepts.html | 1430 ++++++++++++++++++ content/docs/tag_collaboration.html | 14 +- content/docs/tag_content_types.html | 14 +- content/docs/tag_formatting.html | 14 +- content/docs/tag_getting_started.html | 14 +- content/docs/tag_mobile.html | 14 +- content/docs/tag_navigation.html | 14 +- content/docs/tag_publishing.html | 14 +- content/docs/tag_single_sourcing.html | 14 +- content/docs/tag_special_layouts.html | 14 +- content/prince-file-list.txt | 5 + .../recipe_adaptable_deadtime_filter.html | 12 +- .../recipes/recipe_adaptable_filter_range.html | 12 +- .../recipe_adaptable_polling_source.html | 12 +- ...pe_combining_streams_processing_results.html | 12 +- .../recipes/recipe_concurrent_analytics.html | 12 +- ...ipe_different_processing_against_stream.html | 12 +- .../recipe_dynamic_analytic_control.html | 12 +- .../recipes/recipe_external_filter_range.html | 12 +- content/recipes/recipe_hello_edgent.html | 12 +- content/recipes/recipe_parallel_analytics.html | 12 +- content/recipes/recipe_source_function.html | 12 +- content/recipes/recipe_value_out_of_range.html | 12 +- content/search.json | 11 + content/title-checker.html | 143 ++ content/titlepage.html | 14 +- content/tocpage.html | 18 +- content/urls_mydoc.txt | 7 + 42 files changed, 2032 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/404.html ---------------------------------------------------------------------- diff --git a/content/404.html b/content/404.html index a4b1b7f..b04a581 100644 --- a/content/404.html +++ b/content/404.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -632,7 +642,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/algolia_search.json ---------------------------------------------------------------------- diff --git a/content/algolia_search.json b/content/algolia_search.json index 3619ed0..e3ab390 100644 --- a/content/algolia_search.json +++ b/content/algolia_search.json @@ -65,7 +65,7 @@ "keywords": "", "url": "../docs/edgent-getting-started", "summary": "", -"body": "## What is Apache Edgent?Edgent is an open source programming model and runtime for edge devices that enables you to analyze streaming data on your edge devices. When you analyze on the edge, you can:* Reduce the amount of data that you transmit to your analytics server* Reduce the amount of data that you storeFor more information, see the [Edgent overview](home).### Apache Edgent and streaming analyticsThe fundamental building block of an Edgent application is a **stream**: a continuous sequence of tuples (messages, events, sensor readings, and so on).The Edgent API provides the ability to process or analyze each tuple as it appears on a stream, resulting in a derived stream.Source streams are streams that originate data for analysis, such as readings from a device's temperature sensor.Streams are terminated using sink functions that can perform local device control or send information to centralized analytic systems through a message hub.Edgent's primary API is functional where streams are sourced, transformed, analyzed or sinked though functions, typically represented as lambda expressions, such as `reading -> reading 80` to filter temperature readings in Fahrenheit.### Downloading Apache EdgentTo use Edgent, access the source code and build it. You can read more about building Edgent [here]({{ site.data.project.source_repository_mirror }}/blob/master/DEVELOPMENT.md).After you build the Edgent package, you can set up your environment.### Setting up your environmentEnsure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8.The Edgent Java 8 JAR files are located in the `edgent/java8/lib` directory.1. Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE: 2. Modify the Java build path to include all of the JAR files in the `edgent\\java8\\lib` directory: Your environment is set up! You can start writing your first Edgen t application.## Creating a simple applicationIf you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or Raspberry Pi—before you send data over a network.For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:```javaimport java.util.Random;import org.apache.edgent.function.Supplier;/** * Every time get() is called, TempSensor generates a temperature reading. */public class TempSensor implements Supplier { double currentTemp = 65.0; Random rand; TempSensor(){ rand = new Random(); } @Override public Double get() { // Change the current temperature some random amount double newTemp = rand.nextGaussian() + currentTemp; currentTemp = newTemp; return currentTemp; }}```Every time you call `TempSensor.get()`, it returns a new temperature reading. The continuous temperature readings are a stream of data that an Edgent application can process.Our sample Edgent application processes this stream by filtering the data and printing the results. Let's define a TempSensorApplication class for the application:```javaimport java.util.concurrent.TimeUnit;import org.apache.edgent.providers.direct.DirectProvider;import org.apache.edgent.topology.TStream;import org.apache.edgent.topology.Topology;public class TempSensorApplication { public static void main(String[] args) throws Exception { TempSensor sensor = new TempS ensor(); DirectProvider dp = new DirectProvider(); Topology topology = dp.newTopology(); TStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS); TStream filteredReadings = tempReadings.filter(reading -> reading 80); filteredReadings.print(); dp.submit(topology); }}```To understand how the application processes the stream, let's review each line.### Specifying a providerYour first step when you write an Edgent application is to create a [`DirectProvider`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html):```javaDirectProvider dp = new DirectProvider();```A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its `submit()` method is called.### Creating a topologyAdditionally a Provider is used to cr eate a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:```javaTopology topology = dp.newTopology();```In Edgent, `Topology` is a container that describes the structure of your application:* Where the streams in the application come from* How the data in the stream is modifiedIn the TempSensor application above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling `topology.poll()`, which takes both a `Supplier` function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:```javaTStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);```### Defining the `TStream` objectCalling `topology.poll()` to define a source stream creates a `TStream` instance, which represents the series of readings taken from the temperature sensor.A streaming application can run indefinitely, so the `TSt ream` might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.### Filtering a `TStream`In our example, we want to filter the stream of temperature readings, and remove any \"uninteresting\" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s `filter` method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:```javaTStream filteredReadings = tempReadings.filter(reading -> reading 80);```As you can see, the function that is passed to `filter` operates on each tuple individually. Unlike data streaming frameworks like [Apache Spark](https://spark.apache.org/), which operate on a collection of data in batch mode, Edgent achieves low latency processing by manipulating each piece of data as soon as it becomes availa ble. Filtering a `TStream` produces another `TStream` that contains only the filtered tuples; for example, the `filteredReadings` stream.### Printing to outputWhen our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the `TStream.print()` method, which prints using `.toString()` on each tuple that passes through the stream:```javafilteredReadings.print();```Unlike `TStream.filter()`, `TStream.print()` does not produce another `TStream`. This is because `TStream.print()` is a **sink**, which represents the terminus of a stream.In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking `TStream.sink()` and passing in your own function.### Submitting your applicationNow that your application has been completely declared, the final step is to run your application.`Dir ectProvider` contains a `submit()` method, which runs your application directly within the current virtual machine:```javadp.submit(topology);```After you run your program, you should see output containing only \"interesting\" data coming from your sensor:```49.90403231177259647.9783750403908446.5927233630903146.68154455165293447.400819234155236...```As you can see, all temperatures are outside the 50-80 degree range. In terms of a real-world application, this would prevent a device from sending superfluous data over a network, thereby reducing communication costs.## Further examplesThis example demonstrates a small piece of Edgent's functionality. Edgent supports more complicated topologies, such as topologies that require merging and splitting data streams, or perform operations which aggregate the last *N* seconds of data (for example, calculating a moving average).For more complex examples, see:* [Edgent sample programs](samples)* [Common Edgent operations](common-edgent-operati ons)" +"body": "## What is Apache Edgent?Edgent is an open source programming model and runtime for edge devices that enables you to analyze streaming data on your edge devices. When you analyze on the edge, you can:* Reduce the amount of data that you transmit to your analytics server* Reduce the amount of data that you storeFor more information, see the [Edgent overview](home).### Apache Edgent and streaming analyticsThe fundamental building block of an Edgent application is a **stream**: a continuous sequence of tuples (messages, events, sensor readings, and so on).The Edgent API provides the ability to process or analyze each tuple as it appears on a stream, resulting in a derived stream.Source streams are streams that originate data for analysis, such as readings from a device's temperature sensor.Streams are terminated using sink functions that can perform local device control or send information to centralized analytic systems through a message hub.Edgent's primary API is functional where streams are sourced, transformed, analyzed or sinked though functions, typically represented as lambda expressions, such as `reading -> reading 80` to filter temperature readings in Fahrenheit.### Downloading Apache EdgentTo use Edgent, access the source code and build it. You can read more about building Edgent [here]({{ site.data.project.source_repository_mirror }}/blob/master/DEVELOPMENT.md).After you build the Edgent package, you can set up your environment.### Setting up your environmentEnsure that you are running a supported environment. For more information, see the [Edgent overview](home). This guide assumes you're running Java 8.The Edgent Java 8 JAR files are located in the `edgent/java8/lib` directory.1. Create a new Java project in Eclipse, and specify Java 8 as the execution environment JRE: 2. Modify the Java build path to include all of the JAR files in the `edgent\\java8\\lib` directory: Your environment is set up! You can start writing your first Edgen t application.## Creating a simple applicationIf you're new to Edgent or to writing streaming applications, the best way to get started is to write a simple program.Edgent is a framework that pushes data analytics and machine learning to *edge devices*. (Edge devices include things like routers, gateways, machines, equipment, sensors, appliances, or vehicles that are connected to a network.) Edgent enables you to process data locally—such as, in a car engine, on an Android phone, or Raspberry Pi—before you send data over a network.For example, if your device takes temperature readings from a sensor 1,000 times per second, it is more efficient to process the data locally and send only interesting or unexpected results over the network. To simulate this, let's define a (simulated) TempSensor class:```javaimport java.util.Random;import org.apache.edgent.function.Supplier;/** * Every time get() is called, TempSensor generates a temperature reading. */public class TempSensor implements Supplier { double currentTemp = 65.0; Random rand; TempSensor(){ rand = new Random(); } @Override public Double get() { // Change the current temperature some random amount double newTemp = rand.nextGaussian() + currentTemp; currentTemp = newTemp; return currentTemp; }}```Every time you call `TempSensor.get()`, it returns a new temperature reading. The continuous temperature readings are a stream of data that an Edgent application can process.Our sample Edgent application processes this stream by filtering the data and printing the results. Let's define a TempSensorApplication class for the application:```javaimport java.util.concurrent.TimeUnit;import org.apache.edgent.providers.direct.DirectProvider;import org.apache.edgent.topology.TStream;import org.apache.edgent.topology.Topology;public class TempSensorApplication { public static void main(String[] args) throws Exception { TempSensor sensor = new TempS ensor(); DirectProvider dp = new DirectProvider(); Topology topology = dp.newTopology(); TStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS); TStream filteredReadings = tempReadings.filter(reading -> reading 80); filteredReadings.print(); dp.submit(topology); }}```To understand how the application processes the stream, let's review each line.### Specifying a providerYour first step when you write an Edgent application is to create a [`DirectProvider`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/providers/direct/DirectProvider.html):```javaDirectProvider dp = new DirectProvider();```A `Provider` is an object that contains information on how and where your Edgent application will run. A `DirectProvider` is a type of Provider that runs your application directly within the current virtual machine when its `submit()` method is called.### Creating a topologyAdditionally a Provider is used to cr eate a [`Topology`]({{ site.docsurl }}/index.html?org/apache/{{ site.data.project.unix_name }}/topology/Topology.html) instance:```javaTopology topology = dp.newTopology();```In Edgent, `Topology` is a container that describes the structure of your application:* Where the streams in the application come from* How the data in the stream is modifiedIn the TempSensor application above, we have exactly one data source: the `TempSensor` object. We define the source stream by calling `topology.poll()`, which takes both a `Supplier` function and a time parameter to indicate how frequently readings should be taken. In our case, we read from the sensor every millisecond:```javaTStream tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);```### Defining the `TStream` objectCalling `topology.poll()` to define a source stream creates a `TStream` instance, which represents the series of readings taken from the temperature sensor.A streaming application can run indefinitely, so the `TSt ream` might see an arbitrarily large number of readings pass through it. Because a `TStream` represents the flow of your data, it supports a number of operations which allow you to modify your data.### Filtering a `TStream`In our example, we want to filter the stream of temperature readings, and remove any \"uninteresting\" or expected readings—specifically readings which are above 50 degrees and below 80 degrees. To do this, we call the `TStream`'s `filter` method and pass in a function that returns *true* if the data is interesting and *false* if the data is uninteresting:```javaTStream filteredReadings = tempReadings.filter(reading -> reading 80);```As you can see, the function that is passed to `filter` operates on each tuple individually. Unlike data streaming frameworks like [Apache Spark](https://spark.apache.org/), which operate on a collection of data in batch mode, Edgent achieves low latency processing by manipulating each piece of data as soon as it becomes availa ble. Filtering a `TStream` produces another `TStream` that contains only the filtered tuples; for example, the `filteredReadings` stream.### Printing to outputWhen our application detects interesting data (data outside of the expected parameters), we want to print results. You can do this by calling the `TStream.print()` method, which prints using `.toString()` on each tuple that passes through the stream:```javafilteredReadings.print();```Unlike `TStream.filter()`, `TStream.print()` does not produce another `TStream`. This is because `TStream.print()` is a **sink**, which represents the terminus of a stream.In addition to `TStream.print()` there are other sink operations that send tuples to an MQTT server, JDBC connection, file, or Kafka cluster. Additionally, you can define your own sink by invoking `TStream.sink()` and passing in your own function.### Submitting your applicationNow that your application has been completely declared, the final step is to run your application.`Dir ectProvider` contains a `submit()` method, which runs your application directly within the current virtual machine:```javadp.submit(topology);```After you run your program, you should see output containing only \"interesting\" data coming from your sensor:```49.90403231177259647.9783750403908446.5927233630903146.68154455165293447.400819234155236...```As you can see, all temperatures are outside the 50-80 degree range. In terms of a real-world application, this would prevent a device from sending superfluous data over a network, thereby reducing communication costs.## Further examplesThis example demonstrates a small piece of Edgent's functionality. Edgent supports more complicated topologies, such as topologies that require merging and splitting data streams, or perform operations which aggregate the last *N* seconds of data (for example, calculating a moving average).For more complex examples, see:* [Edgent sample programs](samples)* [Stream processing concepts](streaming-concepts) * [Common Edgent operations](common-edgent-operations)" }, @@ -328,6 +328,19 @@ +{ +"title": "Streaming concepts", +"tags": "", +"keywords": "", +"url": "../docs/streaming-concepts", +"summary": "", +"body": "An Edgent application is most useful when processing some sort of data. This page is intended to help you understand stream processing concepts by visually demonstrating some of the operations that can be invoked on a stream, along with code snippets. For example,* [filter]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#filter-org.apache.{{ site.data.project.unix_name }}.function.Predicate-)* [split]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#split-int-org.apache.{{ site.data.project.unix_name }}.function.ToIntFunction-)* [union]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#union-org.apache.{{ site.data.project.unix_name }}.topology.TStream-)* [partitioned window]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TStream.html#last-long-java.util.concurrent.TimeUnit-org.apache.{{ site.data.project.unix_name }}.function.Function-)* [continuous aggregation]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TWindow.html#aggregate-org.apache.{{ site.data.project.unix_name }}.function.BiFunction-)* [batch]({{ site.docsurl }}/org/apache/{{ site.data.project.unix_name }}/topology/TWindow.html#batch-org.apache.{{ site.data.project.unix_name }}.function.BiFunction-)## Filter### Edgent code```javaTStream filtered = stream.filter(t -> t >= 5);```### Explanation**Input stream**: Tuples, such as sensor readings, are continually produced and represented as a red stream on the left.**Filtered stream**: A filter operation of `t >= 5` is applied, resulting in a green output stream on the right that contains tuples with values greater than or equal to five.---## Split### Edgent code```javaList> streams = stream.split(2, tuple -> tuple.getVal());```### Explanation**Input streams**: Tuples, such as sensor readings, are continually produced and represented as a red stream on the left.**Split streams**: A sp lit operation of `getVal()` is applied, resulting in two output streams on the right, one green and one purple. The green stream contains tuples with values that are even integers, while the purple stream contains tuples with values that are odd integers.---## Union### Edgent code```javaTStream stream = stream1.union(stream2);```### Explanation**Input streams**: Tuples, such as sensor readings, are continually produced on two different streams, represented as a red stream and a green stream on the left.**Unioned stream**: A union operation is applied, resulting in a single purple output stream on the right. The stream contains tuples from both input streams.---## Window (last 5 seconds)### Edgent code```javaTWindow window = stream.last(5, TimeUnit.SECONDS, tuple -> 0);```### Explanation**Input stream**: Tuples, such as sensor readings, are continually produced and represented as a red stream on the left.**Window**: A window declaration of the last five seconds of tuples results in t he window outlined in blue containing green tuples. A tuple is inserted into the window when it appears on the stream and is evicted five seconds later, since it will have been in the window for five seconds at that point.---## Continuous aggregate (max, last 5 seconds)### Edgent code```javaTWindow window = stream.last(5, TimeUnit.SECONDS, tuple -> 0);TStream max = window.aggregate((tuples, key) -> { return Collections.max(tuples);});```### Explanation**Input stream**: Tuples, such as sensor readings, are continually produced and represented as a red stream on the left.**Window**: A window declaration of the last five seconds of tuples results in the window outlined in blue containing green tuples. A tuple is inserted into the window when it appears on the stream and is evicted five seconds later, since it will have been in the window for five seconds at that point.**Aggregation**: The window is *continuously* aggregated to find the maximum value in the window. *Continuously aggr egated* means that every time the window contents changes, the aggregate is calculated and a tuple is produced on the purple output stream. The window changes every time a tuple is inserted or evicted, where time-based window insertions and evictions are independent events.---## Batch (size, last 5 seconds)### Edgent code```javaTWindow window = stream.last(5, TimeUnit.SECONDS, tuple -> 0);TStream size = window.batch((tuples, key) -> { return tuples.size();});```### Explanation**Input stream**: Tuples, such as sensor readings, are continually produced and represented as a red stream on the left.**Window**: A window declaration of the last five seconds of tuples results in the window outlined in blue containing green tuples. A tuple is inserted into the window when it appears on the stream and is evicted five seconds later, since it will have been in the window for five seconds at that point.**Batch**: The window is batched to find the number of tuples in the window. A *batch* mean s that every 5 seconds, the size of the window is calculated and a tuple is produced on the purple output stream." + +}, + + + + http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/committers.html ---------------------------------------------------------------------- diff --git a/content/docs/committers.html b/content/docs/committers.html index 252c76c..0d3dca3 100644 --- a/content/docs/committers.html +++ b/content/docs/committers.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -644,7 +654,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/common-edgent-operations.html ---------------------------------------------------------------------- diff --git a/content/docs/common-edgent-operations.html b/content/docs/common-edgent-operations.html index a5ec941..61bb872 100644 --- a/content/docs/common-edgent-operations.html +++ b/content/docs/common-edgent-operations.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li class="active"><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -677,7 +687,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/community.html ---------------------------------------------------------------------- diff --git a/content/docs/community.html b/content/docs/community.html index 3f97fc5..9db2a86 100644 --- a/content/docs/community.html +++ b/content/docs/community.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -698,7 +708,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/console.html ---------------------------------------------------------------------- diff --git a/content/docs/console.html b/content/docs/console.html index 6d4fb2c..5909889 100644 --- a/content/docs/console.html +++ b/content/docs/console.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -1103,7 +1113,7 @@ Metrics.rateMeter(individualAlerts3.get(0)); <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/edgent-getting-started.html ---------------------------------------------------------------------- diff --git a/content/docs/edgent-getting-started.html b/content/docs/edgent-getting-started.html index 071f7b1..66df22c 100644 --- a/content/docs/edgent-getting-started.html +++ b/content/docs/edgent-getting-started.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -769,6 +779,7 @@ $('#toc').on('click', 'a', function() { <ul> <li><a href="samples">Edgent sample programs</a></li> +<li><a href="streaming-concepts">Stream processing concepts</a></li> <li><a href="common-edgent-operations">Common Edgent operations</a></li> </ul> @@ -803,7 +814,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/edgent_index.html ---------------------------------------------------------------------- diff --git a/content/docs/edgent_index.html b/content/docs/edgent_index.html index 0b9c10e..0db9a87 100644 --- a/content/docs/edgent_index.html +++ b/content/docs/edgent_index.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -657,7 +667,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/faq.html ---------------------------------------------------------------------- diff --git a/content/docs/faq.html b/content/docs/faq.html index 1fa6d15..d8514db 100644 --- a/content/docs/faq.html +++ b/content/docs/faq.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -718,7 +728,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/home.html ---------------------------------------------------------------------- diff --git a/content/docs/home.html b/content/docs/home.html index dc94c53..6b77a19 100644 --- a/content/docs/home.html +++ b/content/docs/home.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -719,7 +729,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/overview.html ---------------------------------------------------------------------- diff --git a/content/docs/overview.html b/content/docs/overview.html index 56a026f..adf8a82 100644 --- a/content/docs/overview.html +++ b/content/docs/overview.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -704,7 +714,7 @@ medical device.</li> <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/quickstart.html ---------------------------------------------------------------------- diff --git a/content/docs/quickstart.html b/content/docs/quickstart.html index 2d22916..a956db4 100644 --- a/content/docs/quickstart.html +++ b/content/docs/quickstart.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -674,7 +684,7 @@ and Edgent provides a <a href="http://edgent.incubator.apache.org/javadoc/latest <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/samples.html ---------------------------------------------------------------------- diff --git a/content/docs/samples.html b/content/docs/samples.html index 99cfd4b..c94d184 100644 --- a/content/docs/samples.html +++ b/content/docs/samples.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -695,7 +705,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div> http://git-wip-us.apache.org/repos/asf/incubator-edgent-website/blob/99f8415f/content/docs/search.html ---------------------------------------------------------------------- diff --git a/content/docs/search.html b/content/docs/search.html index 3c533c6..03fae50 100644 --- a/content/docs/search.html +++ b/content/docs/search.html @@ -308,6 +308,16 @@ window.location.href = uri; + <li><a href="../docs/streaming-concepts.html">Streaming concepts</a></li> + + + + + + + + + <li><a href="../docs/common-edgent-operations.html">Common operations</a></li> @@ -622,7 +632,7 @@ $('#toc').on('click', 'a', function() { <div class="col-lg-12 footer"> Site last - generated: Sep 6, 2016 <br/> + generated: Sep 8, 2016 <br/> </div> </div>