A value holding a single piece of information (string, number, date etc).
A container for other values both complex or primitive. Only a complex value can contain child values.
A sequence of 0 or more values (complex or primitive), all items in a sequence will be of the same type.
A connection point is either a source of data (output connection point) or the destination (input connection point).
Connectors can join connection point outputs to connection point inputs, the connector draws the value from the input when the output connection point is evaluated.
Component - The component highlighted is called "Equal 1", but the transform contains others, "Xml Reader 1", "Genre Filter" and "Xml Writer 1" the constant value 'Reference' is also a Component, but to save space does not display its name. Components can be created by dragging them from the Component Palette Window.
Primitive Output Value - The price output is of type 'double' (see the type system for more information). A primitive value contains a single piece of information (string, number, date etc).
Complex Output Value - The author output is a complex node, it contains structured data, in this case first-name and last-name. The bookstore and book outputs are other examples of complex nodes.
Input Value - Inputs can be primitive or complex in the same way that outputs can be, this can be seen in the 'Xml Writer 1'. The highlighted input Nodes is a special case, it belongs to a component that has Dynamic Output Values, so the output of the component takes on the type that is passed to the input.
Simple Connector - Takes all the values read from the output (the connection point on the left, also referred to as the source) and passes them to the input (the connection point on the right, also referred to as the destination), if the input is complex (as is the case for bookstore) then a bookstore node will be created for each input value (regardless of its type), but its child items (book) will not be created or populated.
Recursive Connector - Takes all the values read from the source (input) and passes them to the destination (output), if the input is complex (as is the case for book) then a book node will be created for each input value, all child nodes will also be copies recursively. Note in order to create a recursive connector the input and output types must be the same.
Each output has a number of properties, which can be viewed and edited (if applicable) using the Properties Window
The image above shows the properties for the selected output genre.
The 2 of particular interest are the Type and Cardinality.
This shows the data type of the output. When an output is connected to an input if the data types differ, casting will be done to convert one type to another, some casts are not possible (i.e. an integer can never be cast to a date), and some may fail at runtime (i.e. a string converted to an int), when data conversion errors may take place at runtime warnings are generated.
This indicates the number of values that this output is capable of returning (within the context of its parent node).
Values are
Internally the transform treats all outputs as sequences, but the cardinality determines how many values a sequence may contain.
Inputs are a little more complex
Shows the type of the input and the type that is being provided via the input connector, this is displayed as [INPUT TYPE] ([CONNECTOR TYPE]).
So in this case publicationDate input is a Date, but the value being provided via the connector is a String.
When the value of publicationDate is evaluated it will read a String value from the connector and cast it to a Date (this may fail if the formatting is not as expected).
When casts are performed that require more formatting information the 'Cast Type' property is also available, this allows casting rules to provided inline.
If the value taken from the connector is different from input type then the value needs to be cast. If the casting rules for the conversion are complex or ambiguous (typically converting strings to other types like dates), then an extra 'Cast Type' property is also shown. This allows specific Inline Casting rules to be applied.
This property is only presented on data targets (i.e. XML Writer, JSON Writer etc), this property allows the incoming value to be formatted as it is written to the target file.
Inputs with formatting rules are shown with a *
i.e. publicationDate*