Skip to content

Working with the Design View

This section provides an overview of the design view of the Streaming Integrator Tooling.

Accesing the Design View

To open the design view of the Streaming Integrator Tooling:

  1. Start the Streaming Integrator Tooling and log in with your credentials. For detailed instructions, see Streaming Integrator Tooling Overview - Starting Streaming Integrator Tooling.
  2. Click New and open a new Siddhi file, or click Open and open an existing Siddhi file.
  3. Click Design View to open the Design View.
    Design View button
    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.
    Design View

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.

Dragging and dropping Siddhi components

Once you add a Siddhi component, you can configure it as required. To configure a Siddhi component, click the settings icon on the component. This opens a form with parameters related to the relevant component.

Configure Siddhi component settings

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

To configure the stream, click the settings icon on the stream component you added to the grid. Then enter values as follows:

Stream Name : A unique name for the stream. This should be specified in title caps, and without spaces (e.g., ProductionDataStream ).

Attributes : Attributes of streams are specified as name and type pairs in the Attributes table.

Example

The details entered in the above form creates a stream configuration as follows:

define stream SweetProductionStream (amount double, name string);
Source
  • Sources
  • Projection queries
  • Filter queries
  • Window queries
  • Join queries
Target
  • Sinks
  • Projection queries
  • Filter queries
  • Window queries
  • Join queries

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

To configure the source, click the settings icon on the source component you added to the grid. This opens a form where you can enter the following information:

To access the form in which you can configure a source, you must first connect the source as the source (input) object to a stream component.
  • Source Type : This specifies the transport type via which the events are received. The value should be entered in lower case (e.g., t cp ). The other parameters displayed for the source depends on the source type selected.
  • Map Type : This specifies the format in which you want to receive the events (e.g., xml ). The other parameters displayed for the map depends on the map type selected. If you want to add more configurations to the mapping, click Customized Options and set the required properties and key value pairs.
  • Map Attribute as Key/Value Pairs : If this check box is selected, you can define custom mapping by entering key value pairs. You can add as many key value pairs as required under this check box.

Example

The details entered in the above form creates a source configuration as follows:

@source(type = 'tcp', 
    @map(type = 'json', 
        @attributes(name = "$.sweet", amount = "$.batch.count")))
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

To configure the sink, click the settings icon on the sink component you added to the grid.

!!! info To access the form in which you can configure a sink, you must first connect the sink as the target object to a stream component.
  • Sink Type : This specifies the transport via which the sink publishes processed events. The value should be entered in lower case (e.g., log ).
  • Map Type : This specifies the format in which you want to publish the events (e.g., passThrough ). The other parameters displayed for the map depends on the map type selected. If you want to add more configurations to the mapping, click Customized Options and set the required properties and key value pairs.
  • Map Attribute as Key/Value Pairs : If this check box is selected, you can define custom mapping by entering key value pairs. You can add as many key value pairs as required under this check box.

Example

The details entered in the above form creates a sink configuration as follows:

@sink(type = 'log', prefix = "Sweet Totals:")
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

To configure the table, click the settings icon on the table component you added to the grid.

Name : This field specifies unique name for the table. This should be specified in title caps, and without spaces (e.g., ProductionDataTable ).

Attributes : Attributes of tables are specified as name and type pairs in the Attributes table. To add a new attribute, click +Attribute.

Store Type : This specifies the specific database type in which you want to stopre data or whether the data is to be stored in-memory. Once the store type is selected, select an option to indicate whether the datastore needs to be defined inline, whether you want to use a datasource defined in the <SP_HOME>/conf/worker/deployment.yaml file, or connected to a JNDI resource. For more information, see Defining Tables for Physical Stores. The other parameters configured under Store Type depend on the store type you select.

Annotations : This section allows you to specify the table attributes you want to use as the primary key and indexes via the @primarykey and @index annotations. For more information, see Defining Data Tables. If you want to add any other custom annotations to your table definition, click +Annotation to define them.

Example

The details entered in the above form creates a table definition as follows:

@store(type = 'rdbms', datasource = "SweetProductionDB")
define table ShipmentDetails (name string, supplier string, amount double);
Source
  • Projection queries
  • Window queries
  • Filter queries
  • Join queries
Target
  • Projection queries
  • Window queries
  • Filter queries
  • Join queries

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

To configure the window, click the settings icon on the window component you added to the grid, and update the following information.

  • Name : This field specifies a unique name for the window. PascalCase is used for window names as a convention.
  • Attributes : Attributes of windows are specified as name and type pairs in the Attributes table.
  • Window Type : This specifies the function of the window (i.e., the window type such as time , length , frequent etc.). The window types supported include time , timeBatch , timeLength , length , lengthBatch , sort , frequent , lossyFrequent , cron , externalTime , externalTimeBatch.
  • Parameters : This section allows you to define one or more parameters for the window definition based on the window type you entered in the Window Type field.
  • Annotations : If you want to add any other custom annotations to your window definition, click +Annotation to define them.
Example

The details entered in the above form creates a window definition as follows:

define window FiveMinTempWindow (roomNo int, temp double) time(5 min) output all events;
Source
  • Projection queries
  • Window queries
  • Filter queries
  • Join queries
Target
  • Projection queries
  • Window queries
  • Filter queries
  • Join queries

Trigger

Icon

Description A trigger allows you to generate events periodically. For more information, see Siddhi Query Guide - Trigger.
Form

To configure the trigger, click the settings icon on the trigger component you added to the grid, and update the following information.

  • Name : A unique name for the trigger.
  • Trigger Criteria : This specifies the criteria based on which the trigger is activated. Possible values are as follows:
    • start : Select this to trigger events when the Streaming Integrator server has started.
    • every : Select this to specify a time interval at which events should be triggered.
    • cron-expression : Select this to enter a cron expression based on which the events can be triggered. For more information about cron expressions, see the quartz-scheduler.
Example


The details entered in the above orm creates a trigger definition as follows:

define trigger FiveMinTriggerStream at every 5 min;


Source N/A
Target
  • Projection queries
  • Window queries
  • Filter queries
  • Join queries

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.

!!! tip 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

To configure the aggregation, click the settings icon on the aggregation component you added to the grid, and update the following information.

  • Aggregation Meta Information : In this section, define a unique name for the aggregation in the Name field, and specify the stream from which the input information is taken to perform the aggregations. You can also select the optional annotations you want to use in the aggregation definition by selecting the relevant check boxes. For more information about configuring the annotations once you select them, see Incremental Analysis.
  • Projection : This section specifies the attributes to be included in the aggregation query. In the Select field, you can select All attributes to perform the aggregation for all the attributes of the stream specified under Input , or select User Defined Attributes to select specific attributes. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Aggregation Criteria : Here, you can specify the time values based on which the aggregates are calculated.
Example

The details entered in the above form creates an aggregation definition as follows:

define aggregation TradeAggregation
from TradeStream
select symbol, avg(price) as avgPrice, sum(price) as total
    group by symbol
    aggregate by timestamp 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

To configure the function, click the settings icon on the function component you added to the grid, and update the following information.

  • Name : A unique name for the function.
  • Script Type : The language in which the function is written.
  • Return Value : The data format of the value that is generated as the output via the function.
  • Script Body : This is a free text field to write the function in the specified script type.
Example

The details entered in the above 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
!!! tip

Before you add a projection query:

You need to add and configure the following:

  • The input stream with the events to be processed by the query.
  • The output stream to which the events processed by the query are directed.

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), you can configure it. To configure the projection query, click the settings icon on the projection query component you added to the grid, and update the following information.

  • Query Meta Information : This section specifies the stream to be considered as the input stream with the events to which the query needs to be applied. The input stream connected to the query as the source is automatically displayed.
  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.|
Example

The details entered in the above form creates a query as follows:

from TradeStream
select symbol, avg(price) as averagePrice, sum(volume) as total
insert all events into OutputStream;
Source
  • Streams
  • Tables
  • Triggers
  • Windows
Target
  • Streams
  • Tables
  • Windows

Filter Query

Icon

Description
!!! tip

Before you add a filter query:

You need to add and configure the following:

  • The input stream with the events to be processed by the query.
  • The output stream to which the events processed by the query are directed.

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), you can configure it. To configure the filter query, click the settings icon on the filter query component you added to the grid, and update the following information.

  • By default, the Stream Handler check box is selected, and a stream handler of the filter type is available under it to indicate that the query is a filter. Expand this stream handler, and enter the condition based on which the information needs to be filtered.

    !!! info

    A Siddhi application can have multiple stream handlers. To add another stream handler, click the + Stream Handler. Multiple functions, filters and windows can be defined within the same form as stream handlers.

  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.
Example

The details entered in the above form creates a query 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
  • Streams
  • Tables
  • Triggers
  • Windows
Target
  • Streams
  • Tables
  • Windows

Window Query

Icon

Description
!!! tip

Before you add a window query:

You need to add and configure the following:

  • The input stream with the events to be processed by the query.
  • The output stream to which the events processed by the query are directed.

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), you can configure it. To configure the window query, click the settings icon on the window query component you added to the grid, and update the following information.

  • By default, the Stream Handler check box is selected, and a stream handler of the window type is available under it to indicate that the query is a filter. Expand this stream handler, and enter details to determine the window including the window type and the basis on which the subset of events considered by the window is determined (i.e., based on the window type selected).

    !!! info

    A Siddhi application can have multiple stream handlers. To add another stream handler, click the + Stream Handler. Multiple functions, filters and windows can be defined within the same form as stream handlers.

  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.
Example

The details entered in the above Query Configuration form creates a query 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
!!! info

A window query can have only one source at a given time.

  • Streams
  • Tables
  • Triggers
  • Windows
Target
  • Streams
  • Tables
  • Windows

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, you can configure the join query. To configure the join query, click the settings icon on the join query component you added to the grid and update the following information.

  • Query Meta Information : In this section, enter a unique name for the query and any annotations that you want to include in the query. The @dist annotation is supported by default to use the query in a fully distributed deployment if required (for more information, see Converting to a Distributed Streaming Application ). You can also add customized annotations.
  • Input : Here, you can specify the input sources, the references, the join type, join condition, and stream handlers for the left source and right source of the join. For a detailed explanation of the join concept, see Siddhi Query Guide - Joins.
  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.
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
!!! info A join query must always be connected to two sources, and at least one of them must be a defined stream/trigger/window.
  • Streams
  • Tables
  • Aggregations
  • Windows
Target
!!! info A join query must always be connected to a single target.
  • Streams
  • Tables
  • Windows

Pattern Query

Icon

Description
!!! tip

Before you add a pattern query:

You need to add and configure the following:

  • The input stream with the events to be processed by the query.
  • The output stream to which the events processed by the query are directed.

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), you can configure it. To configure the pattern query, click the settings icon on the pattern query component you added to the grid and update the following information.

  • Query Meta Information : In this section, enter a unique name for the query and any annotations that you want to include in the query. The @dist annotation is supported by default to use the query in a fully distributed deployment if required (for more information, see Converting to a Distributed Streaming Application ). You can also add customized annotations.
  • Input : This section defines the conditions based on which patterns are identified. This involves specifying a unique ID and the input stream considered for each condition. Multiple conditions can be added. Each condition is configured in a separate tab within this section. For more information about the Pattern concept, see Siddhi Query Guide - Patterns.
  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.
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
  • Streams
  • Tables
  • Triggers
  • Windows
Target
  • Streams
  • Tables
  • Windows

Sequence Query

Icon

Description
!!! tip

Before you add a sequence query:

You need to add and configure the following:

  • The input stream with the events to be processed by the query.
  • The output stream to which the events processed by the query are directed.

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), you can configure it. To configure the sequence query, click the settings icon on the sequence query component you added to the grid and update the following information.

  • Query Meta Information : In this section, enter a unique name for the query and any annotations that you want to include in the query. The @dist annotation is supported by default to use the query in a fully distributed deployment if required (for more information, see Converting to a Distributed Streaming Application ). You can also add customized annotations.
  • Input : This section defines the conditions based on which sequences are identified. This involves specifying a unique ID and the input stream considered for each condition. Multiple conditions can be added. Each condition is configured in a separate tab within this section. For more information about the Sequence concept, see Siddhi Query Guide - Sequences.
  • Projection : This section specifies the attributes to be included in the output. In the Select field, you can select All Attributes to select all the attributes of the events, or select User Defined Attributes to select specific attributes from the input stream. If you select User Defined Attributes , you can add attributes to be selected to be inserted into the output stream. Here, you can enter the names of specific attributes in the input stream, or enter expressions to convert input stream attribute values as required to generate output events. You can also specify the attribute(s) by which you want to group the output.
  • Output : This section specifies the action to be performed on the output event. The fields to be configured in this section are as follows:
    • Operation : This field specifies the operation to be performed on the generated output event (e.g., Insert to insert events to a selected stream/table/window).
    • Into : This field specifies the stream/table/window in which the operation specified need to be performed.
    • Event Type This field specifies whether the operation needs to be performed for all output events, only current events or for only expired events.
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, e1.amount as initialAmount, e2.amount as finalAmount, e2.timestamp
insert into DecreasingTrendAlertStream;
Source
  • Streams
  • Tables
  • Triggers
  • Windows
Target
  • Streams
  • Tables
  • Windows

Partitions

Icon

Description
!!! tip

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, you can configure the partition. In order to do so, move the cursor over the partition and click the settings icon on the partition component. This opens the Partition Configuration form. In this form, you can enter expressions to convert the attributes of the stream that is selected to be partitioned.

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.

Connecting Siddhi components

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:

Top