Heartbeat Aggregate Sample

The HeartbeatAggregate.sbapp sample uses a Heartbeat operator to output the number of stock quotes received every five seconds. The actual counting is done by an Aggregate operator, but it depends on the Heartbeat to trigger output during periods when no quotes are received.

Importing This Sample into StreamBase Studio

In StreamBase Studio, import this sample with the following steps:

  • From the top menu, click FileLoad StreamBase Sample.

  • Select operator from the Applications list.

  • Click OK.

StreamBase Studio creates a single project for the operator samples.

Sample Location

By default, the sample files are installed in:

  • On Windows: C:\Program Files\StreamBase Systems\StreamBase.n.m\sample\operator

  • On UNIX: /opt/streambase/sample/operator

When you load the sample into StreamBase Studio, Studio copies the sample project's files to your Studio workspace. StreamBase Systems recommends that you use the workspace copy of the sample, especially on UNIX, where you may not have write access to /opt/streambase. In the default installation, the path to this sample in your Studio workspace is:

UNIX:       
  ~/streambase-studio-n.m-workspace/sample_operator
Windows XP:
  C:\Documents and Settings\username\My Documents\StreamBase Studio n.m Workspace\
      sample_operator
Windows Vista:
  C:\Users\username\Documents\StreamBase Studio n.m Workspace\
      sample_operator

Running the Heartbeat Aggregate Sample

Running HeartbeatAggregate.sbapp in StreamBase Studio

  1. In the Package Explorer, double-click to open the HeartbeatAggregate.sbapp application. Make sure the application is the currently active tab in the EventFlow Editor.

  2. Click the Run button. This opens the SB Test/Debug perspective and starts the application.

  3. In the Application Output view, select the TicCounts stream. No output is displayed at this point, but the Output View is prepared to receive output. This view will eventually show the output of the application.

  4. In the Manual Input view, select the InputTics input stream

  5. Enter IBM for symbol, and 83.17 for price.

  6. Click Send Data. Within five seconds, look for a tuple on the TicCounts output stream, stating that one quote was received in the last five seconds.

  7. Click Send Data three times in rapid succession. Within five seconds, look for a tuple on the TicCounts output stream, stating that three quotes were received in the last five seconds.

  8. Wait five seconds and look for a tuple on the TicCounts output stream, stating that zero quotes were received in the last five seconds.

  9. When done, press F9 or click the Stop Running Application button.

Running HeartbeatAggregate.sbapp in Terminal Windows

This section describes how to run the sample in UNIX terminal windows or Windows command prompt windows. On Windows, be sure to use the StreamBase Command Prompt from the Start menu as described in the Test/Debug Guide, not the default command prompt.

  1. Open three terminal windows on UNIX, or three StreamBase Command Prompts on Windows. In each window, navigate to the directory where the sample is installed, or to your workspace copy of the sample, as described above.

  2. In window 1, type:

    sbd HeartbeatAggregate.sbapp

    The window shows notice[StreamBaseServer] listening on port 10000.

  3. In window 2, type:

    sbc dequeue TicCounts

    No output is displayed at this point, but the dequeuer is prepared to receive output of the application.

  4. In window 3, type:

    echo IBM,84.17 | sbc enqueue SetPrice

    Within five seconds, look for a tuple in the dequeue window stating that one quote was received in the last five seconds.

  5. Wait five seconds and look for another tuple in the dequeue window stating that zero quotes were received in the last five seconds.

  6. In window 2, type: Ctrl-Z (Windows) or Ctrl-D (UNIX) to exit the sbc session.

  7. In window 3, type the following command to terminate the server and dequeuer:

    sbadmin shutdown

Back to Top ^

How We Created the Heartbeat Aggregate Sample

  1. Launched StreamBase Studio

  2. Created (or subsequently used) the sample_operator project.

  3. From the top menu, in the SB Authoring perspective, selected FileNewEventFlow Application. Selected the sample_operator project and entered HeartbeatAggregate for the diagram name.

  4. Added an input stream:

    1. Dragged an input stream from the palette to the canvas.

    2. Clicked the new input stream to open its properties.

    3. On the Input Stream Properties view General tab, added Name: InputTics.

    4. On the Edit Schema tab, added:

      • Field Name: symbol, Type: string, Size: 4

      • Field Name: price, Type: double, Size: 8

  5. Added a Map operator:

    1. Dragged a Map operator from the palette to the canvas.

    2. Dragged a connector from the InputTics input stream to the Map operator.

    3. Selected the new Map operator. On the Properties view General tab, added Name: Timestamp

    4. On the Output Settings tab:

      1. Selected the All input fields with specified changes option.

      2. Clicked the Add button and added the following Output Fields row:

        Action: Add, Field Name: time, Expression: now()

  6. Added a Heartbeat operator:

    1. Dragged a Heartbeat operator from the palette to the canvas.

    2. Connected the Map operator to the new Heartbeat operator.

    3. Clicked the Heartbeat operator. On the Properties view's General tab, added Name: EverySecond

    4. On the Output Settings tab, added:

      • Tuple output interval: 1 (seconds)

      • Input tuple timestamp field: time

      • Maximum delay: 0.01 (seconds)

  7. Added an Aggregate operator:

    1. Dragged an Aggregate operator from the palette to the canvas. Placed it after the Heartbeat operator.

    2. Connected the Heartbeat operator to the Aggregate operator.

    3. Selected the Aggregate operator. On the Properties view General tab, added Name: CountTics

    4. On the Dimensions tab, clicked the Add button. In the Edit dimension dialog, added:

      • Name: time

      • Type Field: time

      • Opening policy, Open per, Advance: 5, Offset: 0

      • Window size Close and emit after 5

      Clicked OK.

    5. On the Aggregate functions tab, clicked the Add button twice and added these two rows:

      Aggregate functions

      Output Field Name Expression
      count count(symbol)
      time lastval(time)

  8. Added an output stream:

    1. Dragged an output stream from the palette to the canvas, placing it after the Aggregate operator.

    2. Connected the Aggregate operator to the output stream.

    3. Selected the new output stream. On the Properties view General tab, added Name: TicCounts

Back to Top ^