JSON Format for Graphs - IBMStreams/streamsx.topology GitHub Wiki
JSON Format for Graphs
A Topology contains a representation of its graph built using GraphBuilder. A graph is a collection of operators and the connections between them. GraphBuilder
produces a JSON representation of the graph which is then transformed into SPL (from the JSON) using SPLGenerator.
JSON is used as an intermediary to allow other languages to produce a JSON representation of a graph and then utilise the Java code to generate SPL and submit to an instance, etc.
Graph (top-level) object
Attribute |
Type |
Value |
name |
string |
Name of the topology/graph |
namespace |
string |
Namespace of the topology/graph |
public |
boolean |
Is the graph public (true for top-level graphs) |
config |
object |
Graph configuration object |
operators |
array |
Array of Operator objects (nodes) in the graph |
parameters |
object |
Object with key,value pairs with key being the parameter name, value is a Parameter |
Graph configuration object
Attribute |
Type |
Value |
topology.vmArgs |
array of strings |
Additional Java virtual machine arguments for Java operators |
Operator object
Attribute |
Type |
Value |
name |
string |
name of the operator, needs to be unique within the graph |
kind |
string |
SPL kind of the operator |
sourcelocation |
object |
JSON object with information about the original source locations (optional) |
parallelOperator |
boolean |
True if the operator is parallelized (optional) |
width |
any |
width of parallel region (required if parallelOperator is true). May be a number or a SubmissionParameter. |
partitioned |
boolean |
true if parallel partitioned |
parallelInputPortName |
string |
partitioning port for parallel (required if parallelOperator is true) |
outputs |
array |
Output ports objects (optional) |
inputs |
array |
Input port objects (optional) |
runtime |
string |
Runtime for operator (if known) (optional): spl.java SPL Java primitive |
parameters |
object |
Object with key,value pairs with key being the parameter name, value is a Parameter value object |
config |
object |
Operator configuration object |
lowlatencyTag |
string |
Operators with the same id are part of the same low latency region and must be fused together. (optional) (pending rename to lowLatencyRegion and move to Operator Placement object) |
autonomous |
boolean |
True if the operator starts a autonomous region (optional). |
Output Port object
Attribute |
Type |
Value |
type |
string |
SPL type of the output (e.g.tuple<int32 a rstring b> ) |
type.native |
string |
Optional Native language (Java/Scala) type when known. |
name |
string |
name of the output port |
connections (??) |
string array |
Names of input ports connected to input port |
Input Port object
Attribute |
Type |
Value |
type (??) |
string |
SPL type of the input (e.g.tuple<int32 a rstring b> ) |
name |
string |
name of the input port |
connections |
string array |
Names of output ports connected to input port |
window |
object |
Window input port object for input port (optional) |
queue |
object |
Queue input port object (optional) - not present means no input port queue |
Window Input Port object
Attribute |
Type |
Value |
type |
string |
StreamWindow.Type name including NOT_WINDOWED |
evictPolicy |
string |
Evict StreamWindow.Policy name (optional if NOT_WINDOWED) |
evictConfig |
number |
Time in milliseconds or count of tuples |
triggerPolicy |
string |
Trigger StreamWindow.Policy name (required if SLIDING) |
triggerConfig |
number |
Time in milliseconds or count of tuples |
Queue Input Port object
If an input port has a queue then it is also threaded. Currently only default
queue size & number of threads (1) is supported, but future may add multi-threading
and configurable queue size.
Attribute |
Type |
Value |
functional |
boolean |
True if this is for a functional operator. if true then there will be a parameter queueSize for the operator (assumes a single input port at the moment). |
Parameter value object
Attribute |
Type |
Value |
value |
any |
Value of the parameter |
type |
string |
Optional type for the value. Present when value requires a non-default interpretation. For a string value, type can be one of: enum , spltype , attribute , USTRING (utf16). For a Byte,Short,Integer,Long value, type can be UINT8,UINT16,UINT32,UINT64 respectively. For a object, type can be: submissionParameter for SubmissionParameter value. |
SubmissionParameter parameter value object
Attribute |
Type |
Value |
name |
string |
The submission parameter name. |
metaType |
string |
The type of the submission parameter. One of: RSTRING (utf8), USTRING (utf16), BOOLEAN , FLOAT32 , FLOAT64 , INT8 , INT16 , INT32 , INT64 , UINT8 , UINT16 , UINT32 , UINT64 . |
defaultValue |
any |
Optional default value for the parameter whose type is appropriate for the metaType. |
Source code location object
Attribute |
Type |
Value |
file |
string |
Optional source file name |
class |
string |
Optional class name |
method |
string |
Optional method name (Java/scala) |
line |
string |
Optional line number in file |
topology.method |
string |
method name for the application api |
Operator Configuration object
Attribute |
Type |
Value |
streamViewability |
boolean |
Can the stream be viewed by external applications/admin. |
placement |
object |
Operator placement object |
Operator Placement object
Attribute |
Type |
Value |
explicitColocate |
string |
Operators with the same value must be fused together. |
isolateRegion |
string |
Operators with the same value are part of the same isolation region. Operators from one region must not be fused with operators in another region. |
resourceTags |
string array |
The operator must be placed in a container that will be associated with a resource that has all of the specified tags. |