Contents
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.
In StreamBase Studio, import this sample with the following steps:
-
From the top menu, click → .
-
Select operator from the Applications list.
-
Click OK.
StreamBase Studio creates a single project for the operator samples.
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 Studion.mWorkspace\ sample_operator Windows Vista: C:\Users\username\Documents\StreamBase Studion.mWorkspace\ sample_operator
-
In the Package Explorer, double-click to open the
Metronome.sbappapplication. Make sure the application is the currently active tab in the EventFlow Editor. -
Click the
Run button. This opens the
SB Test/Debug perspective and starts the application.
-
In the Application Output view, select the
CurrentPricesstream. 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. -
In the Manual Input view, select the
SetPriceinput stream -
Enter
INTCfor symbol, and23.25for price. -
Click Send Data. Within five seconds, look for a tuple on the
CurrentPricesoutput stream, stating that the current price of INTC is 23.25. -
Enter
MSFTfor symbol, and25.75for price. -
Click Send Data. Within five seconds, look for two tuples emitted on the
CurrentPricesoutput stream. These tuples are repeated every five seconds. -
When done, press F9 or click the
Stop Running Application button.
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.
-
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.
-
In window 1, type:
sbd Metronome.sbappThe window shows
notice[StreamBaseServer] listening on port 10000. -
In window 2, type:
sbc dequeue CurrentPricesLook 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.
-
In window 3, type:
sbc enqueue SetPriceThe sbc command is now waiting for keyboard input. Type:
INTC, 23.25Within five seconds, look for a tuple in the dequeue window, stating that the current price of INTC is 23.25.
-
In window 3, type:
MSFT, 25.75Within five seconds, look for two tuples emitted in the dequeue window. These tuples are repeated every five seconds.
-
In window 3, type: Ctrl-Z (Windows) or Ctrl-D (UNIX) to exit the sbc session.
-
In window 3, type the following command to terminate the server and dequeuer:
sbadmin shutdown
-
Launched StreamBase Studio
-
Created (or subsequently used) the
sample_operatorproject. -
From the top menu, in the SB Authoring perspective, selected → → . Selected the
sample_operatorproject and enteredMetronomefor the diagram name. -
Added an input stream:
-
Dragged an input stream from the palette to the canvas.
-
Clicked the new input stream to open its properties.
-
On the Input Stream Properties view's General tab, added Name:
SetPrice. -
On the Edit Schema tab, added:
-
Field Name:
symbol, Type:string, Size:4 -
Field Name:
price, Type:double, Size:8
-
-
-
Saved input stream schema:
-
On the canvas, right-clicked the
SetPriceinput stream, and chose . -
In the Save Schema dialog, clicked to save the schema using the default name,
SetPriceSchema.
-
-
Added a Query Table:
-
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).
-
Selected the new Query Table. On the properties view's General tab, added Name:
NameValuePairs. -
On the Edit Schema tab, clicked the button.
-
In the Save Resources dialog, clicked to save the application and dismiss the dialog.
-
Clicked the From Saved Schemas drop-down control and chose .
-
Clicked to load the saved schema's rows in the Edit Schema tab.
-
On the Primary Index tab, selected
symbolunder Available Fields, then clicked the right arrow button to loadsymbolinto the Selected Fields column.
-
-
Added a Query operator to write to the Query Table:
-
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).
-
Connected the input stream to the Query operator.
-
Connected the output port on the bottom of the Query operator to the input port on top of the Query Table.
-
Clicked the Query operator to open its properties. On the Properties view's General tab, added Name:
RecordPrice. -
On the Query Settings tab, added:
-
Operation:
write -
Where:
Primary IndexThe primary key was loaded in the
Matchestable. -
In the primary key row, entered
symbolin theExpressioncolumn.
-
-
On the Operation Settings tab, added:
-
Type of write:
Insert -
Where:
Primary IndexThe price field was loaded in the
Values to Inserttable. -
In the price row, entered
pricein theExpressioncolumn.
-
-
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
pricein theExpressioncolumn.
-
-
-
Add a Metronome operator:
-
Dragged a Metronome operator from the palette to the canvas, above the input stream.
-
Clicked the Metronome operator to open its properties. On the Properties view General tab, added Name:
EveryFiveSeconds. -
On the Output Settings tab, added:
-
Tuple output interval:
5(seconds) -
Output field name:
time
-
-
-
Added a Query operator to read the Query Table:
-
Dragged a Query operator from the palette to the canvas. Placed it above the first Query operator .
-
Connected the Metronome operator to the new Query operator.
-
Clicked the Query operator. On the Properties view's General tab, added Name:
ReadAllRows. -
On the Query Settings tab, added:
-
Operation:
Read -
Where:
All Rows
-
-
On the Output Settings tab, removed the optional prefixes for input and table fields.
-
-
Added an output stream:
-
Dragged an output stream from the palette to the canvas, placing it after the
ReadAllRowsQuery operator. -
Connected the
ReadAllRowsQuery operator to the output stream. -
Selected the new output stream. On the Properties view's General tab, added Name:
CurrentPrices
-
