Components are one stop for data in Exaptive's dataflow programming paradigm. As a generalization, a component takes in some data, performs an operation on the data of some kind, and then outputs it for use in the next component(s). 


The Exaptive platform provides a number of features to enable components to be agnostic to each other and thereby work together without knowing anything about each other. A component can get used by someone who did not make it and be created by someone who can't foresee all its potential use-cases. 


To make a component work for a particular xap, the xap builder has to configure its ports to understand the data it's getting and what to do with them. This article, Part 1 of 3, will explain some concepts and get you ready for Part 2 on using the configuration interface


We recommend you be familiar with the Exaptive Data Model before learning about component configuration.



The Expected Data Type

When you expand a component (by double clicking on it or clicking on a port), you'll see that each port has a subheading that indicates what type of data it expects. In the example below the

"data" input takes data of type dynamic, the "options" input takes an entity, etc.

 

Expanding Ports and Port Options


The component interface works kind of like a file tree. Once you've expanded a component, you have further selections to make to find the field you need to configure. Look for the ^ style arrows (looks like 2/3 of triangle), either to the far right of the port's name or within the bar to the right of the port name (visible when hovering over the bar). Click on either the arrow or the bar to expand the port further and see configuration fields. What those fields are and how to work with them will depend on the component. (Parts 2 and 3 of this documentation on component configuration cover much of how those fields work.)


Data Mapping

Your primary task when configuring a component for your xap is to map attributes of the data to the targets of a component. It's easiest to imagine this in the context of visualization components. Take this scatter plot. The data coming into it via the "data" input port can be mapped to the scatter plot's target "points." The "points" target has a number of facets - x and y axis, size, color, etc. - that the user can map the incoming data to. (These aspects of a visualization or an algorithm are known as channels when component authoring. Learn more here.)  


dhNaELtgAoVS7lursl-lF8yLUHR88XVepQ.png


The data being passed to the plot could be be in a variety of formats and structures. The user gets to choose what entities, attributes, and values he or she wants to show up in the plot and how. 

The architectural concept that makes this possible is what we call data projections. The user is projecting data of a particular nature in a way the scatter plot can see and use. 


After this article, read Part 2 to learn more about these projection ports and how to use them.


Other Configuration Options 

Some ports will have other configuration options that have nothing to do with the incoming data. A button component, for instance, may have options for the styling the button is and what text appears on the button. Opening a port by clicking on it will give you the ability to configure these aspects of a component.

Submitting Your Entries / Sending Data

Once you've entered something or edited a field, make sure to hit enter or click the arrow that appears to the right of it. Clicking the ellipsis will reveal other options, covered in the Dataflow User Interface article and Part 2 of Component Configuration

Now, continue to Part 2 to learn how to configure these ports to work with incoming data.