Working with the Design View
This section provides an overview of the design view of the Stream Processor Studio.
Accesing the Design View
To open the design view of the Stream Processor Studio:
- Start the Stream Processor Studio and log in with your credentials. For detailed instructions, see Stream Processor Studio Overview - Starting Stream Processor Studio.
- Click New and open a new Siddhi file, or click Open and open an existing Siddhi file.
- Click Design View to open the Design View.
The design view opens as shown in the example below. It consists of a grid to which you can drag and drop the Siddhi components represented by icons displayed in the left panel to design a Siddhi application.
Adding Siddhi components
To add a Siddhi component to the Siddhi application that you are creating/editing in the design view, click on the relevant icon in the left pane, and then drag and drop it to the grid as demonstrated in the example below.
The following is the complete list of Siddhi components that you can add to the grid of the design view when you create a Siddhi application.
Stream
Icon | |
---|---|
Description | A stream represents a logical series of events ordered in time. For a detailed description of streams, see Siddhi Query Guide - Stream. |
Form | Once you add a stream component to a Siddhi application in the design view, the Define Stream form appears below the grid. To configure the stream, following information can be specified in this form: Stream Name : A unique name for the stream. This should be specified in title caps, and without spaces (e.g., Attributes: Attributes of streams are specified as name and type pairs in the Attributes table. |
Example | The above creates a stream with the following configuration: define stream SweetProductionStream (amount double, name string); |
Source |
|
Target |
|
Source
Icon | |
---|---|
Description | A source receives events in the specified transport and in the specified format. For more information, see Siddhi Query Guide - Source. |
Form | Once you add a source component to a Siddhi application in the design view, the Define Source form appears below the grid. To configure the event source, following information can be specified in this form:
|
Example | This source configuration is represented as follows in the source view. @Source(type = 'tcp', context='SweetProductionData', @map(type='binary')) |
Source | No connection can start from another Siddhi component and link to a source because a source is the point from which events selected into the event flow of the Siddhi application start. |
Target | Streams |
Sink
Icon | |
---|---|
Description | A sink publishes events via the specified transport and in the specified format. For more information, see Siddhi Query Guide - Sink . |
Form | Once you add a source component to a Siddhi application in the design view, the Sink Configurations form appears below the grid. To configure the event sink, following information can be specified in this form:
|
Example | |
Source | Streams |
Target | N/A A sink cannot be followed by another Siddhi component because it represents the last stage of the event flow where the results of the processing carried out by the Siddhi application are communicated via the required interface. |
Table
Icon | |
---|---|
Description | A table is a stored version of an stream or a table of events. For more information, see Siddhi Query Guide - Table. |
Form | Once you add a table component to a Siddhi application in the design view, the Table Configuration form appears below the grid. To configure the table, following information can be specified in this form: Name : This field specifies unique name for the table. This should be specified in title caps, and without spaces (e.g., Attributes: Attributes of tables are specified as name and type pairs in the Attributes table. To add a new attribute, click +Attribute. |
Example | The details entered in the above Table Configuration form creates a table definition as follows: define table ShipmentDetails(name string, supplier string, amount double); |
Source |
|
Target |
|
Window
Icon | |
---|---|
Description | This icon represents a window definition that can be shared across multiple queries. For more information, see Siddhi Query Guide - (Defined) Window. |
Form | Once you add a window component to a Siddhi application in the design view, the Window Configuration form appears below the grid. To configure the window, following information can be specified in this form:
|
Example | The details entered in the above Window Configuration form creates a window definition as follows: define window FiveMinTempWindow (roomNo int, temp double) time(5 min) output all events; |
Source |
|
Target |
|
Trigger
Icon | |
---|---|
Description | a trigger allows you to generate events periodically. For more information, see Siddhi Query Guide - Trigger. |
Form | Once you add a trigger component to a Siddhi application in the design view, the Trigger Configuration form appears below the grid. To configure the trigger, following information can be entered in this form:
|
Example | The details entered in the above Trigger Configuration form creates a trigger definition as follows: define trigger FiveMinTriggerStream at every 5 min; |
Source | N/A |
Target |
|
Aggregation
Icon | |
---|---|
Description | Incremental aggregation allows you to obtain aggregates in an incremental manner for a specified set of time periods. For more information, see Siddhi Query Guide - Incremental Aggregation. Before you add an aggregation: Make sure that you have already added the stream with the events to which the aggregation is applied is already defined. |
Form | Once a connection is made from a stream to an aggregation, move the cursor over the aggregation and click the settings icon on the aggregation (shown below) to open the Aggregation Configuration form. The following information can be entered in this form:
|
Example | The details entered in the above Aggregation Configuration form creates an aggregation definition as follows: define aggregation TradeAggregation from TradeStream select symbol, avg(price) as avgPrice, sum(price) as total aggregate every seconds...years; |
Source | N/A |
Target | Join queries |
Function
Icon | |
---|---|
Description | The function icon represents Script in Siddhi Query Language. It allows you to write functions in other programming languages and execute them within Siddhi queries. A function component in a Siddhi application is not connected to ther Siddhi components in the design UI. However, the configuration of one or more Query components can include a reference to it. |
Form | Once you add a function component to a Siddhi application in the design view, the Function Configuration appears below the grid. To configure the function, following information can be specified in this form:
|
Example | The details entered in the above Function Configuration form creates a function definition as follows: define function concatFN[JAVASCRIPT] return string { var str1 = data[0]; var str2 = data[1]; var str3 = data[2]; var responce = str1 + str2 + str3; return responce; }; |
Projection Query
Icon | |
---|---|
Description | This icon represents a query to project the events in an input stream to an output stream. This invoves selectng the attributes to be included in the output, renaming attributes, introducing constant values, and using mathematical and/or logical expressions. For more information, see Siddhi Query Guide - Query Projection. |
Form | Once you connect the query to an input stream (source) and an output stream (target), move the cursor over the query and click the settings icon on the projection query (shown below) to open the Query Configuration form. The following information needs to be entered in this form:
|
Example | The details entered in the above Query Configuration form creates a query definition as follows: from TradeStream select symbol, avg(price) as averagePrice, sum(amount) as total insert all events into OutputStream; |
Source |
|
Target |
|
Filter Query
Icon | |
---|---|
Description | A filter query filters information in an input stream based on a given condition. For more information, see Siddhi Query Guide - Filters. |
Form | Once you connect the query to an input stream (source) and an output stream (target), move the cursor over the query and click the settings icon on the filter query (shown below) to open the Query Configuration form.
The following information needs to be entered in this form:
|
Example | The details entered in the above Query Configuration form creates a query definition with a filter as follows: from TradeStream[sum(amount) > 10000] select symbol, avg(price) as averagePrice, sum(amount) as total insert all events into OutputStream; |
Source |
|
Target |
|
Window Query
Icon | |
---|---|
Description | Window queries include a window to select a subset of events to be processed based on a specific criterion. For more information, see Siddhi Query Guide - (Defined) Window . |
Form | Once you connect the query to an input stream (source) and an output stream (target), move the cursor over the query and click the settings icon on the window query (shown below) to open the Query Configuration form.
|
Example | The details entered in the above Query Configuration form creates a query definition with a window as follows: from TradeStream#window.time(1 month) select symbol, avg(price) as averagePrice, sum(amount) as total insert all events into OutputStream; |
Source | A window query can have only one source at a given time.
|
Target |
|
Join Query
Icon | |
---|---|
Description | A join query derives a combined result from two streams in real-time based on a specified condition. For more information, see Siddhi Query Guide - Join. |
Form | Once you connect two Siddhi components to the join query as sources and another Siddhi component as the target, move the cursor over the join query and click the settings icon on the projection query (shown below) to open the Join Query Configuration form.
The following information needs to be entered in this form: Configurations common for both sources
The stream handlers need to be separateley configured for the left source and the right source of the join. Configurations for each source The following configurations are entered under Left Source and Right Source.
|
Example | A join query is configured as follows:
The above configurations result in creating the following join query. from TempStream[temp > 30.0]#window.time(1 min) as T join RegulatorStream[isOn == false]#window.length(1) as R on T.roomNo == R.roomNo select T.roomNo, R.deviceID, 'start' as action insert into RegulatorActionStream; |
Source | A join query must always be connected to two sources, and at least one of them must be a defined stream/trigger/window.
|
Target | A join query must always be connected to a single target.
|
Pattern Query
Icon | |
---|---|
Description | A pattern query detects patterns in events that arrive overtime. For more information, see Siddhi Query Guide - Patterns. |
Form | Once you connect the query to an input stream (source) and an output stream (target), move the cursor over the query and click the settings icon on the pattern query component (shown below) to open the Pattern Query Configuration form. The following information is configured in the P attern Query Configuration form:
|
Example | The above configuration results in creating the following query. from every (e1=MaterialSupplyStream) -> not MaterialConsumptionStream[name == e1.name and amount == e1.amount] for 15 sec select e1.name, e1.amount insert into ProductionDelayAlertStream; |
Source |
|
Target |
|
Sequence Query
Icon | |
---|---|
Description | A sequence query detects sequences in event occurrences over time. For more information, see Siddhi Query Guide - Sequence. |
Form | Once you connect the query to an input stream (source) and an output stream (target), move the cursor over the query and click the settings icon on the sequence query component (shown below) to open the Sequence Query Configuration form. The following information is configured in the Sequence Query Configuration form:
|
Example | The above configuration results in creating the following query. from every e1 = SweetProductionStream , e2 = SweetProductionStream[e1.amount > amount and (timestamp - e1.timestamp) < 10 * 60000]* , e3 = SweetProductionStream[timestamp - e1.timestamp > 10 * 60000 and e1.amount > amount] select e1.name as name, e1.amount as initialAmount, e2.amount as finalAmount, e2.timestamp as timestamp insert into DecreasingTrendAlertStream; |
Source |
|
Target |
|
Partitions
Icon | |
---|---|
Description | Before you add a partition: You need to add the stream to be partitioned. Partitions divide streams and queries into isolated groups in order to process them in parallel and in isolation. For more information, see Siddhi Query Guide - Partition. |
Form | Once the stream to be partitioned is connected as a source to the partition, move the cursor over the partition and click the settings icon to open the Partition form. In this form, you can enter expressions to convert the attributes of the stream selected to be partitioned, to create output events. |
Example | The above configuration creates the following partition query. partition with ( roomNo >= 1030 as 'serverRoom' or roomNo < 1030 and roomNo >= 330 as 'officeRoom' or roomNo < 330 as 'lobby' of TempStream) begin from TempStream#window.time(10 min) select roomNo, deviceID, avg(temp) as avgTemp insert into AreaTempStream end; |
Source | Streams |
Target | N/A |
Connecting Siddhi components
In order to define how the Siddhi components in a Siddhi application interact with each other to process events, you need to define connections between Siddhi components. A connection is defined by drawing an arrow from one component to another by dragging the cursor as demonstrated below.
Saving, running and debugging Siddhi applications
To save a Siddhi application that you created in the design view, you need to switch to the source view. You also need to switch to the source view to run or debug a Siddhi application. For more information, see the following sections: