Skip to main content

Configuration Files Creation Example

Use the configuration files required to create a custom loader to pass data to your Connect instance.

Table Configuration File Example

Download or create configuration file County.xml to store county information.

The file XML example can be used as a basic template and contains inline assistance.

File XML

<?xml version="1.0" encoding="UTF-8"?>
<xforms-apps xmlns="http://semanta.cz/schema/xf3">
<!-- this is a really minimalistic example of the application, it can be used as a template for your new application -->    
<!-- start with definition of the application -->
    <xforms-app>
        
<!-- xid is the unique identifier for the application -->
        <xid>county</xid>
        
<!-- insert an icon visually representing entities of your application, use base64 code of the icon here -->
<!-- use base64 code of the icon here which can be encoded by various online services such as https://www.base64encode.org/ -->        
        <icon> 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
        </icon>

<!-- entry-name is a label which will be used in the application as a type for you entries -->                
        <entry-name>County</entry-name>
        
<!-- now we are going to declare the structure of the application, it's a grid structure to ensure great design potential on all platforms (desktop, mobile) -->
<!-- structure of the app is rows, columns - one or more (max 12) columns in a row, group which is a container for the fields, field stores information and can have various data types such as rich-text, plain-text, relation, date ... -->

        <structure>
            <row>
                <column>
                    <width>9</width>
                    <group>
                        <id>stream</id>
                        <name>Description</name>
                        <fields>

<!-- we are using fragments which are parts of definitions we have declared once and used many times, every app has entry name, business name, description -->                                                                        
                            <!--@import fragment="entry-name" name="Term Name"-->
                            <!--@import fragment="business-name" -->
                            <!--@import fragment="description" -->
                            <field>
                                <code>entryAttachments</code>
                                <name>Attachments</name>
                                <type>
                                    <attachments>
                                        <display-as>thumbnails</display-as>
                                    </attachments>
                                </type>
                            </field>
                        </fields>
                    </group>
                    <group>
                        <id>nexus</id>
                        
<!-- again generic relationship field which shows nexus tool inside the page -->                                        
                        <name>Relationships</name>
                        <fields>
                            <field>
                                <code>my_relations</code>
                                <name>Relations</name>
                                <hide-in-edit-if-loaded>true</hide-in-edit-if-loaded>
                                <type>
                                    <info>
                                        <velocity>
                                            <![CDATA[
                                            #embeddedNexus("All", $entry)
                                        ]]>
                                        </velocity>
                                    </info>
                                </type>
                            </field>
                        </fields>
                    </group>

                </column>
            </row>
            
<!-- now we will declare which fields from above definition will be displayed on the list of entries (list of counties in this case) -->                            
            <list>
                <fieldCode>entryName</fieldCode>
                <fieldCode human-readable="Description">entryExcerpt</fieldCode>
                <fieldCode human-readable="Rating">entryLikeCount</fieldCode>
            </list>
        </structure>
    </xforms-app>
</xforms-apps>

Upload File

Upload the completed configuration file to your Connect instance.

  1. Sign in to Connect using an admin account.

  2. Select your user avatar in the top right and select Administration.

  3. In the Upload section, drag and drop or browse to the configuration file: county.xml.

Alternatively, see Configuration File Upload Workflow to upload files with a Designer workflow via the REST API.

Verify Configuration

Check that the uploaded configuration file is valid.

  1. Sign in to Connect.

  2. Select Data Sources.

  3. Select the red plus sign in the lower right.

  4. Enter the Title "County Test" and select CREATE.

  5. Under Folders, enter:

    • Folder entry type: County

      Creates County instances in the folder.

    • All Entries: "type:county"

      Define which entries are displayed in the folder, allowing multiple entry types from the descendants.

  6. Select SAVE. A new folder is now available.

  7. Select the red plus sign in the lower right.

  8. Select County in this Folder.

  9. Enter the Title "Orange County" and select CREATE.

  10. Access the folder "County Test" one level up. The descendant "Orange County" should be available.

Load Job Configuration File Example

Download or create a loading job configuration file, which maps between the stage table and the Connect interface, allowing users to access loaded data.

The file XML example can be used as a basic template and contains inline assistance.

File XML

<?xml version="1.0" encoding="UTF-8"?>

<!-- The definition of the application. -->
<loading-instructions xmlns="http://semanta.cz/schema/xf3/load">
        <loading-instruction>
        
                <!-- The  unique job identifier, called from the API. -->
                <job-id>load-alteryx-countries</job-id>
       
                <!-- every job can have sub-jobs, creating hierarchical loaded structures. In this example, we load a top level folder containing one County entry per record in the stage table. -->       
                <for-each-row>
                        <sub-job-id>mainFolder</sub-job-id>
          
                        <!-- The query to retrieve data from the stage table, to map to Connect's UI configuration. -->            
                        <of-query>
                                <sql>
                                        <connection-id>master</connection-id>
                                        <query-body>select 1</query-body>
                                </sql>
                        </of-query>
                        
                        <!-- For each row in the dataset returned from the query, an entry is created. In this example, there is only one row in the dataset, so only the top level folder entry is created.  -->
                        <define-entry>
              
                                <!-- The definition of the entry type. -->                                        
                                <app>folder</app>
              
                                <!-- The unique identifier of the parent entry, which must already exist to hold the entry being created. In this example, we use the Data Source folder ID, creating sub-folder. -->                                       
                                <parent>f19f38ae-1c68-49f9-8654-288b92284bab</parent>
                                <parent-field>subfolders</parent-field>
                                
                                <!-- The unique identifier of the entry, usually the UUID taken from the source system. In this example, we use a hash created out of string "counties". -->                                                       
                                <xid>$lu.toXidEncoded("counties")</xid>
                                
                                <!-- The name of the entry as it is displayed in Connect's UI. -->                                                                        
                                <name>Countries Example</name>
                                
                                <!-- Set individual fields by defining the fieldcode of the application and the associated value from the datasource. In this example, the values are hardcoded. -->
                                <fields>
                                        <![CDATA[
                                                #set($foldertype="county")
                                                #set($entrytypelist="type:county")
                                                #set($platformDescription="<p>SDK Sample Countries.</p>")
                                                #set($displaytype="smallcard")
                                                #set($displaytype_readable="Small Card")
                                                #set($displaytypeallentries="smallcard")
                                                #set($displaytypeallentries_readable="Small Card")
                                                #set($displaytypefolder="smallcard")
                                                #set($displaytypefolder_readable="Small Card")
                                                #set($integrationcode="promoteInstances")
                                                #set($entriesgroupname="Promote Instances")
                                                #set($subfoldersgroupname="Subfolders")
                                                #set($allentriesgroupname="Counties")
                                        ]]>
                                </fields>
                                
                                <!-- do not touch fields are fields which should be editable in UI and should not be touch (overwritten) by the loading job -->
                                <!-- usually description, owner are such fields -->               
                                <do-not-touch>
                                        <!--@import fragment="common-dont-touch"-->
                                        <field>MainThumbnail</field>
                                        <field>orderbytype</field>
                                        <field>orderascending</field>
                                        <field>entryOwner</field>
                                </do-not-touch>
                                <for-each-row>
                                
                                        <!-- this is the tick how to add attachment, in this case thumbnail of the folder -->                                    
                                        <add-attachment>
                                                <xid>$lu.toXidEncoded("counties-icon")</xid>
                                                <name>Alteryx_Counties.png</name>
                                                <field-code>MainIcon</field-code>
                                                <base64content>
                                                        <!-- Set to an icon encoded in base64 code (https://www.base64encode.org/). The icon will be used to visually represent your application. -->
                                                </base64content>
                                        </add-attachment>
                                </for-each-row>
                        </define-entry>
                </for-each-row>
                
                <!-- so right now, we have created just one folder -->
                <!-- right now we are going to iterate on dataset of Counties and create a record for each County -->               
                <for-each-row>           
                        <sub-job-id>countriesList</sub-job-id>
                        
                        <!-- get datset of Counties (from the stage table EXT_COUNTRIES) -->                
                        <of-query>
                                <sql>
                                        <connection-id>master</connection-id>
                                        <query-body>
                                                <![CDATA[
                                                        SELECT name, key FROM EXT_COUNTRIES
                                                ]]>
                                        </query-body>
                                </sql>
                        </of-query>
                        
                        <!-- and now create entry one per each row from dataset -->                            
                        <define-entry>
                        
                                <!-- creating entry of "county" app we have defined in previous chapter -->                                
                                <app>county</app>
                                
                                <!-- start under folder created in previous step -->                                
                                <parent>$lu.toXidEncoded("counties")</parent>
                                <parent-field>entries</parent-field>
                                
                                <!-- create uuid out of the county name -->                                
                                <xid>$lu.toXidEncoded("${name}")</xid>
                                
                                <!-- county name -->                                                
                                <name>${name}</name>
                                
                                <!-- set values for the entry -->
                                <!-- in our case we are setting just one which is description, others are parameters for setting displaying behavior of the folder, entries, subentries and are not important for this example too much -->                           
                                <fields>
                                        <![CDATA[
                                                #set($description="${key}")
                                                #set($foldertype="folder")
                                                #set($entrytypelist="folder")
                                                #set($platformDescription="<p>SDK Example.</p>")
                                                #set($displaytype="table")
                                                #set($displaytype_readable="Table")
                                                #set($displaytypeallentries="table")
                                                #set($displaytypeallentries_readable="Table")
                                                #set($displaytypefolder="smallcard")
                                                #set($displaytypefolder_readable="Small Card")
                                                #set($integrationcode="")
                                                #set($entriesgroupname="Promote Owners")
                                                #set($subfoldersgroupname="Subfolders")
                                                #set($allentriesgroupname="County List")
                                        ]]>
                                </fields>
                                <do-not-touch>
                                        <!--@import fragment="common-dont-touch"-->
                                        <field>entryOwner</field>
                                </do-not-touch>
                        </define-entry>
                </for-each-row>
        </loading-instruction>
</loading-instructions>

Upload File

Upload the completed configuration file to your Connect instance.

  1. Sign in to Connect using an admin account.

  2. Select your user avatar in the top right and select Administration.

  3. In the Upload section, drag and drop or browse to the configuration file: loading-alteryx-counties.xml.

Alternatively, see Configuration File Upload Workflow to upload files with a Designer workflow via the REST API.

Verify Configuration

Check that the uploaded configuration file is valid. The best way to test this is to perform an end-to-end test by running a workflow that pulls metadata into stage tables and calls a loading job to create entries in Connect.

See Data Upload Workflow.