This function works the same way as LookupValue
but in case nothing is found it will create the missing record. This is useful for integration and ETL projects where you can simplify the data import scripts.
NAMESPACE
xmlns:AS="http://schema.advantages.cz/AsapFunctions"
SYNTAX
string LookupOrCreate(string lookupElementId, string parameterValue, NodeSet createParameters)
PARAMETERS
Name | Description |
---|---|
lookupId | Unique identifier (Guid) of lookup model element |
parameterValue | Value to lookup by (that the lookup’s data structure will use as a filter parameter). |
createParameters | Key-value pairs providing data for a new record (in case it does not exist). |
REMARKS
This function uses the ListDataStructure entity of the lookup for creating the record. For this you will need to set AllFields to True
so the data will be safely inserted to the database. This is mandatory. Primary key and other system fields (creation time and user) will be filled in automatically.
Warning
You should use this function carefully as it writes data during transformations. Especially be careful when state-machines exist on the entity being written to. For a sake of simplicity you should mainly use this function for inserting missing records into simple lists e.g. while importing data from external data sources.
EXAMPLE
Stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:AS="http://schema.advantages.cz/AsapFunctions"
xmlns:date="http://exslt.org/dates-and-times" exclude-result-prefixes="AS date">
<xsl:template match="ROOT">
<!-- we are trying to get an airline id by its code -->
<xsl:variable name="code" select="'OA'"/>
<ROOT>
<!-- if not found we let it to be created -->
<xsl:variable name="valueParams">
<parameter key="Name" value="Origam Air"/>
<parameter key="IataCode" value="{$code}"/>
</xsl:variable>
<airlineId>
<!-- this single function will then always return a value -->
<xsl:value-of select="AS:LookupOrCreate('3abe98c3-e3b1-4960-b426-1f69532f8cd0', $code, $valueParams)"/>
</airlineId>
</ROOT>
</xsl:template>
</xsl:stylesheet>