TIBCO is proud to announce that we have scheduled a Summer 2017 update to our Software Development Kit (SDK) with new features that allow Connector developers to enable support for hierarchical data. TIBCO has always had the ability to handle related entities, however this new feature set supports committing an entire hierarchical complex object. We will evaluate updating existing Connectors on a case-by-case basis.
The sections below provide details for developers already familiar with the Connector Development Kit (CDK), which is part of the SDK, to leverage the new capability. Changes to support this functionality are minimal, but provide a powerful new feature set. Hierarchical data support has not been incorporated into the Fast Framework, however, it is under consideration.
Existing Connectors
If Hierarchical data is not a requirement, existing Connectors do not need to be updated.
Object Definitions
Object Definitions, which represent the metadata or entities accessed by the Connector, can be included as part of other ObjectDefinitions, allowing them to have no top level actions. The nesting of objects within objects can go deeper than one level.
Property Definitions
Property Definitions represent the fields associated with the metadata objects. A Property Definition can now assign a PropertyType that matches the name of one of your ObjectDefinitions. If the MaxOccurs is > 1 or “unbounded” (-1) then it is considered a Collection. If MaxOccurs is set to 1 it is considered a single object, such as a Parent or 1 to 1 relationship.
Data Entities
The data for single complex properties and collections of complex properties are stored in the “Children” property of the DataEntity object passed in and out of the Connectors. The name of the property is the key and a DataEntity collection is the value in the Children dictionary property.
Actions / New Blocks
Two new actions are available, CreateWith and UpdateWith, which are container Blocks in the UI. These actions are used to build and commit the entire object. Add these actions for any object definitions that can either create or update the target when they include nested objects or entities. If either CreateWith or UpdateWith is defined, a new Add Block automatically becomes available for the Connection. The Add Block is used in conjunction with CreateWith and UpdateWith to add to the collection.
Relationships
If you are using hierarchical data structures, you do not define relationships. This is because hierarchical data works like relationships for user defined types, however the relationships can extend beyond two levels. Whenever you set the PropertyType of a PropertyDefinition to be the name of one of your ObjectDefinitions, one of two new relationships is created automatically – either Property (1 to 1) or PropertyCollection (1 to N).
Property Definitions with a PropertyType set to the name ObjectDefinition are available to be included in a Query Block, or used in an Add Block within a CreateWith or UpdateWith Blocks. This allows the Connector to traverse the hierarchical data through more levels than traditional relationships.
Operations
Operations can include other objects in the same way that Queries can include them in its results. Query includes the shape of the data and its hierarchy as it is retrieved from the source. Target operations include the shape of the data and its hierarchy as it will be written to the target.
For additional information, see the following:
In the Developer Portal:
IS2 Or MS2 Connectors and
IS2 Or MS2 Connector MethodsIn GitLab:
Hierarchical Data - Sample Connector Code