Metronome Operator Sample

This sample uses a Metronome operator to output the current share price of all stocks every five seconds. The current prices are stored in a query table.

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 Metronome Sample

Running Metronome.sbapp in StreamBase Studio

  1. In the Package Explorer, double-click to open the Metronome.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 CurrentPrices stream. Observe a tuple showing every five seconds, with the current time, a null symbol, and a null price. This indicates that no prices are currently known. Once we record some share prices, the nulls will be replaced with actual values.

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

  5. Enter INTC for symbol, and 23.25 for price.

  6. Click Send Data. Within five seconds, look for a tuple on the CurrentPrices output stream, stating that the current price of INTC is 23.25.

  7. Enter MSFT for symbol, and 25.75 for price.

  8. Click Send Data. Within five seconds, look for two tuples emitted on the CurrentPrices output stream. These tuples are repeated every five seconds.

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

Running Metronome.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 Metronome.sbapp

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

  3. In window 2, type:

    sbc dequeue CurrentPrices

    Look for a tuple every five seconds tuple with the current time, a null symbol, and a null price. This indicates that no prices are currently known. Once we record some share prices, the nulls will be replaced with actual values.

  4. In window 3, type:

    sbc enqueue SetPrice

    The sbc command is now waiting for keyboard input. Type:

    INTC, 23.25

    Within five seconds, look for a tuple in the dequeue window, stating that the current price of INTC is 23.25.

  5. In window 3, type:

    MSFT, 25.75

    Within five seconds, look for two tuples emitted in the dequeue window. These tuples are repeated every five seconds.

  6. In window 3, 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 Metronome 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 Metronome 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's General tab, added Name: SetPrice.

    4. On the Edit Schema tab, added:

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

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

  5. Saved input stream schema:

    1. On the canvas, right-clicked the SetPrice input stream, and chose Save Schema.

    2. In the Save Schema dialog, clicked OK to save the schema using the default name, SetPriceSchema.

  6. Added a Query Table:

    1. Dragged a Query Table data construct from the palette to the canvas, and placed it on the right side of the canvas (allowing room to add components after the input stream).

    2. Selected the new Query Table. On the properties view's General tab, added Name: NameValuePairs.

    3. On the Edit Schema tab, clicked the Copy Schema From Existing Component button.

    4. In the Save Resources dialog, clicked OK to save the application and dismiss the dialog.

    5. Clicked the From Saved Schemas drop-down control and chose SetPriceSchema.

    6. Clicked OK to load the saved schema's rows in the Edit Schema tab.

    7. On the Primary Index tab, selected symbol under Available Fields, then clicked the right arrow button to load symbol into the Selected Fields column.

  7. Added a Query operator to write to the Query Table:

    1. Dragged a Query operator from the palette to the canvas. Placed it between the input stream and Query Table (moving those components apart to make room for the new operator).

    2. Connected the input stream to the Query operator.

    3. Connected the output port on the bottom of the Query operator to the input port on top of the Query Table.

    4. Clicked the Query operator to open its properties. On the Properties view's General tab, added Name: RecordPrice.

    5. On the Query Settings tab, added:

      • Operation: write

      • Where: Primary Index

        The primary key was loaded in the Matches table.

      • In the primary key row, entered symbol in the Expression column.

    6. On the Operation Settings tab, added:

      • Type of write: Insert

      • Where: Primary Index

        The price field was loaded in the Values to Insert table.

      • In the price row, entered price in the Expression column.

    7. On the Output Settings tab, added:

      • Output: explicitly specified fields

      • Scrolled down to Fields Available from Query Table, and deselected both fields.

      • In the price row, entered price in the Expression column.

  8. Add a Metronome operator:

    1. Dragged a Metronome operator from the palette to the canvas, above the input stream.

    2. Clicked the Metronome operator to open its properties. On the Properties view General tab, added Name: EveryFiveSeconds.

    3. On the Output Settings tab, added:

      • Tuple output interval: 5 (seconds)

      • Output field name: time

  9. Added a Query operator to read the Query Table:

    1. Dragged a Query operator from the palette to the canvas. Placed it above the first Query operator .

    2. Connected the Metronome operator to the new Query operator.

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

    4. On the Query Settings tab, added:

      • Operation: Read

      • Where: All Rows

    5. On the Output Settings tab, removed the optional prefixes for input and table fields.

  10. Added an output stream:

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

    2. Connected the ReadAllRows Query operator to the output stream.

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

Back to Top ^