Environment Map Extension functions
Map functions allow you to apply transformation logic to individual field values during mapping. You can use functions to augment base field mappings when configuring processes deployed as part of an integration pack. You can use the Environment Map Extension object to retrieve or update map functions.
Map Function syntax
The following section describes the general structure and attributes used to update or retrieve a map function contained within the Environment Map Extension object. For general information about how map functions work within the service, refer to the Map Function components topic.
Structure
<bns:Function cacheType="" id="" type="">
<bns:Inputs>
<bns:Input default="" name="" key=""/>
...
</bns:Inputs>
<bns:Outputs>
<bns:Output name="" key=""/>
...
</bns:Outputs>
<bns:Configuration>
...
</bns:Configuration>
</bns:Function>
| Field | Type | Description |
|---|---|---|
| type | string | Required. Indicates the type of map function. See the following section, Function Type reference, for more information about how each function type is represented in the Environment Map Extension object. |
| id | string | Required. Represents the unique ID assigned to a specific instance of a function. Extended map functions added through the user interface are assigned IDs with a "FUNCEXT-XXXXXXXXX" formatted value. When adding a new function with the Environment Map Extension object, the client is responsible for generating a unique ID value without a specific format.The id value of the function must be unique within the given map. If the ID is not unique, it can be used elsewhere unintentionally in the request for mapping inputs and outputs. Warning: If you have added a function from the Environment Map Extension object and then open and save the extended map in the user interface, automatically replaces the custom ID values with a " FUNCEXT-XXXXXXXXX” formatted value.Before modifying mappings, always retrieve the current mappings from the Environment Map Extension object first. Do not rely on a locally cached copy and instead use the IDs returned by . Only generate your id when adding new functions and their mappings. |
| cacheType | string | Required. This value indicates the caching behavior of the individual function step. The allowed cacheType values are:- None (default, if omitted in the request)— Does not use Map function caching.- ByDocument — Caches the map function’s input and output values for each processed document.For more information about map function caching, refer to the topic Map Function components. |
| Inputs/Outputs | string | Required. Indicates which values to pass into or return by the function. The number of inputs and outputs varies by function type. When creating or updating functions, the requirement is that all input and output values are in the request regardless if they are mapped or populated with a default value. The maximum number of inputs or outputs is 100. |
| name | string | Required. Represents the label for each input or output as it exists in the user interface. The name value must match the name of input or output field specific to the individual function. |
| key | integer | Required. Represents the unique identifier for each input or output. The key is the value used when configuring mappings. The key must start at 1 and then increment by 1 number for the list of inputs and outputs, respectively. The sequence of inputs or outputs is critical and varies for each function type.For more information, see the following section, Function Type reference |
| default | string | Optional. Applicable only for inputs. The default represents the default value used for a given function input if the mapped value is empty or the input is unmapped. For example, set a default for static input values that you do not want to be passed dynamically from the mapped data. |
| Configuration | complex | Represents the additional configuration requirements needed to update the following map functions: - User Defined - String Concatenation - String Split - Sequential Value - Cross Reference Lookup - Simple Lookup - Connector Call - Scripting - Get Document property - Set Document property - Get Dynamic Process Property - Set Dynamic Process Property See the following section, Map Function reference, for details about how to properly construct or interpret these additional configuration requirements. |
Map Function reference
The following table lists the structure for each type of standard or user-defined function that you use in the API object's requests and responses. The <bns:Function> elements are included within the <bns:ExtendedFunctions> section of the Environment Map Extension object. Refer to the Usage Notes column in the table for additional information about properly configuring map functions in your request, if applicable.
For more information, refer to the topic Map Function components and its related subtopics for general information about how each function works within the service.
All function types are available to use within an extended map.
User Defined
- Function API
type- ``
Example API structure:
<bns:FunctioncacheType="None" id="FUNCEXT--012345678" type="UserDefined"><bns:Inputs><bns:Input name="input1" key="1"/>
<bns:Input name="input2" key="2"/><bns:Input name="input3" key="3"/></bns:Inputs><bns:Outputs><bns:Output name="result" key="1"/></bns:Outputs><bns:Configuration>
<bns:UserDefinedFunction id="12345eb6-78c9-0123-b4c0-5678b9dc0afb" version="1"/></bns:Configuration></bns:Function>
When working with user defined functions, you need only to specify the ID of the userDefinedFunction. You can retrieve a userDefinedFunction ID by querying the Environment Map Extensions User Defined Function object.
Left Character Trim
- Function API
type-LeftTrim
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--618231271" type="LeftTrim">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
<bns:Input default="2" name="Fix to Length" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Right Character Trim
- Function API
type-RightTrim
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1836904619" type="RightTrim">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
<bns:Input default="2" name="Fix to Length" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Whitespace Trim
- Function API
type-TrimWhitespace
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1225362690" type="TrimWhitespace">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
String Prepend
- Function API
type-StringPrepend
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--725153852" type="StringPrepend">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
<bns:Input default="mydefault" name="Fix to Length" key="2"/>
<bns:Input default="mydefault" name="Char to Prepend" key="3"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
String Concat
- Function API
type-StringConcat
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--79485089" type="StringConcat">
<bns:Inputs>
<bns:Input default="mydefault" name="myfirst" key="1"/>
<bns:Input default="mydefault" name="mysecond" key="2"/>
<bns:Input default="mydefault" name="mythird" key="3"/>
<bns:Input default="mydefault" name="myfourth" key="4"/>
...
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
<bns:Configuration>
<bns:StringConcat delimiter="^" fixedLength="17"/>
</bns:Configuration>
</bns:Function>
- 1 to N Inputs
- Input names are arbitrary and user-defined
- The fields under
Configuration,delimiterandfixedLengthare optional
String Replace
- Function API
type-StringReplace
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--874551608" type="StringReplace">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
<bns:Input default="mydefault" name="String to Search" key="2"/>
<bns:Input default="mydefault" name="String to Replace" key="3"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
You can use regular expressions to search for String to Search characters.
String Remove
- Function API
type-StringRemove
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1074578401" type="StringRemove">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
<bns:Input default="mydefault" name="String to Remove" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
You can use regular expressions to search for String to Search characters.
String To Lower
- Function API
type-StringToLower
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1819226320" type="StringToLower">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
String to Upper
- Function API
type-StringToUpper
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1240199221" type="StringToUpper">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
String Split
- Function API
type-StringSplit
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1142627267" type="StringSplit">
<bns:Inputs>
<bns:Input default="mydefault" name="Original String" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="myfirst" key="1"/>
<bns:Output name="mysecond" key="2"/>
...
</bns:Outputs>
<bns:Configuration>
<bns:StringSplit delimiter="_"/>
OR
<bns:StringSplit splitLength="10"/>
</bns:Configuration>
</bns:Function>
- 1 to N Outputs
- Input names are arbitrary and user-defined
- Under
Configuration, you must specify eitherdelimiterorsplitLength
Math Absolute Value
- Function API
type-MathABS
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1713216871" type="MathABS">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Add
-Function API type - MathAdd
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1831189707" type="MathAdd">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
<bns:Input default="000" name="Value to Add" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Subtract
- Function API
type-MathSubtract
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-181410044" type="MathSubtract">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
<bns:Input default="000" name="Value to Subtract" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Multiply
- Function API
type-MathMultiply
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1859103506" type="MathMultiply">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
<bns:Input default="000" name="Value to Multiply" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Divide
- Function API
type-MathDivide
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--123747783" type="MathDivide">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
<bns:Input default="000" name="Value to Divide" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math (Ceil) Ceiling
- Function API
type-MathCeil
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-476209684" type="MathCeil">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Floor
- Function API
type-MathFloor
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-407027961" type="MathFloor">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Math Set Precision
- Function API
type-MathSetPrecision
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--818684778" type="MathSetPrecision">
<bns:Inputs>
<bns:Input default="000" name="Value" key="1"/>
<bns:Input default="4" name="Number of Precision" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Number Format
- Function API
type-NumberFormat
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1716104291" type="NumberFormat">
<bns:Inputs>
<bns:Input default="000" name="Number String" key="1"/>
<bns:Input default="#" name="Input Mask" key="2"/>
<bns:Input default="000.00" name="Output Mask" key="3"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
For information about number formatting, refer to the topic Number Data Type.
Running Total
- Function API
type-RunningTotal
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-542647789" type="RunningTotal">
<bns:Inputs>
<bns:Input default="1" name="Value to Sum" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Sum
- Function API
type-Sum
Example API structure:
<bns:Function cacheType="None" id="FUNCEXT-736813092" type="Sum">
<bns:Inputs>
<bns:Input default="1" name="Value to Sum" key="1"/>
<bns:Input default="mydefault" name="Reset Value" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Count
- Function API
type-Count
Example API structure:
<bns:Function cacheType="None" id="FUNCEXT-1160370589" type="Count">
<bns:Inputs>
<bns:Input default="mydefault" name="Field to Count" key="1"/>
<bns:Input default="mydefault" name="Reset Value" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Line Item Increment
- Function API
type-LineItemIncrement
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1414701942" type="LineItemIncrement">
<bns:Inputs>
<bns:Input default="mydefault" name="Increment Basis" key="1"/>
<bns:Input default="mydefault" name="Reset Value" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Sequential Value
- Function API
type-SequentialValue
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--2070903340" type="SequentialValue">
<bns:Inputs>
<bns:Input default="mydefault" name="Increment Basis" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
<bns:Configuration>
<bns:SequentialValue keyName="somekey" batchSize="1" keyFixToLength="12"/>
</bns:Configuration>
</bns:Function>
keyName is an arbitrary, unique name.
Date Format
- Function API
type-DateFormat
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1077578718" type="DateFormat">
<bns:Inputs>
<bns:Input default="mydefault" name="Date String" key="1"/>
<bns:Input default="yyyyMMdd HHmmss.SSS" name="Input Mask" key="2"/>
<bns:Input default="yyyy-MM-dd" name="Output Mask" key="3"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
For information about date formatting, refer to the topic Date/Time data Type.
Get Current Date
- Function API
type-CurrentDate
Example API structure:
<bns:Function cacheType="None" id="FUNCEXT-1731138631" type="CurrentDate">
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
This function type has no Inputs.
Cross Reference Lookup
- Function API
type-CrossRefLookup
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1170764515" type="CrossRefLookup">
<bns:Inputs>
<bns:Input name="Column 1" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Column 2" key="2"/>
</bns:Outputs>
<bns:Configuration>
<bns:CrossReferenceLookup lookupTableId="2b5955b7-56ae-42f4-9a94-ce691f66c8fd">
<bns:Inputs>
<bns:Input refId="1" name="Column 1" index="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output refId="2" name="Column 2" index="2"/>
</bns:Outputs>
</bns:CrossReferenceLookup>
</bns:Configuration>
</bns:Function>
-
Available for integration pack mapping extensions only.
-
lookupTableIdis the component ID for a cross reference table (extended or not) included within an integration pack. -
1 to N Inputs and Outputs.
-
The number of top level Input and Outputs and their associated name values must match the input and output columns defined within
Configuration. -
Within
Configuration’s Inputs and Outputs:-
refIdis the column identifier within the cross the reference table. -
indexis the corresponding top level input or outputkey.
-
Simple Lookup
- Function API
type-SimpleLookup
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-2050669000" type="SimpleLookup">
<bns:Inputs>
<bns:Input default="mydefault" name="Key" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Value" key="1"/>
</bns:Outputs>
<bns:Configuration>
<bns:SimpleLookup>
<bns:Table>
<bns:Rows>
<bns:Row>
<bns:ref1>one in</bns:ref1>
<bns:ref2>one out</bns:ref2>
</bns:Row>
...
</bns:Rows>
</bns:Table>
</bns:SimpleLookup>
</bns:Configuration>
</bns:Function>
1 to N Rows.
Scripting
- Function API
type-CustomScripting
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-411614112" type="CustomScripting">
<bns:Inputs>
<bns:Input default="mydefault" name="someIn" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="someOut" key="2"/>
</bns:Outputs>
<bns:Configuration>
<bns:Scripting language="GROOVY">
<bns:Script>someOut = someIn.substring(0, someIn.lastIndexOf("."));</bns:Script>
<bns:Inputs>
<bns:Input dataType="CHARACTER" name="someIn" index="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="someOut" index="2"/>
</bns:Outputs>
</bns:Scripting>
</bns:Configuration>
</bns:Function>
-
You can reference inline scripts only, and not Custom Scripting components.
-
0 to N inputs and outputs.
-
names,key, andindexmust match script configuration inputs and outputs.namesare arbitrarily defined by the user. -
The allowed
dataTypevalues are:CHARACTERINTEGERFLOATDATETIME
-
The allowed
languagevalues are:GROOVY(for Groovy v1.5)GROOVY2(for Groovy v2.4)Javascript
Get Dynamic Process Property
- Function API
type-PropertyGet
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--2009440331" type="PropertyGet">
<bns:Inputs>
<bns:Input default="MY_DPP_NAME" name="Property Name" key="1"/>
<bns:Input default="mydefault" name="Default Value" key="2"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="1"/>
</bns:Outputs>
</bns:Function>
Set Dynamic Process Property
- Function API
type-PropertySet
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT--1507140408" type="PropertySet">
<bns:Inputs>
<bns:Input default="MY_DPP_NAME" name="Property Name" key="1"/>
<bns:Input default="mydefault" name="Property Value" key="2"/>
</bns:Inputs>
<bns:Outputs/>
</bns:Function>
Get Document Property
- Function API
type-DocumentPropertyGet
Example API structure:
<bns:Function cacheType="None" id="FUNCEXT-1558265829" type="DocumentPropertyGet">
<bns:Inputs/>
<bns:Outputs>
<bns:Output name="Disk - File Name" key="1"/>
</bns:Outputs>
<bns:Configuration>
<bns:DocumentProperty defaultValue="" propertyId="connector.disk.filename" persist="false"/>
</bns:Configuration>
</bns:Function>
- You can use this function to retrieve dynamic connector or meta document properties.
- The
propertyIdvaries by connector:connector.<connectorType>.<propertyId>dynamicdocument.<DDP name>meta.base.<metaPropertyId>
Set Document Property
- Function API
type-DocumentPropertySet
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-1738302678" type="DocumentPropertySet">
<bns:Inputs>
<bns:Input default="mydefault" name="Amazon SQS - Message Group Id" key="1"/>
</bns:Inputs>
<bns:Outputs/>
<bns:Configuration>
<bns:DocumentProperty defaultValue="" propertyId="connector.amazonsqs.messageGroupId" persist="false"/>
</bns:Configuration>
</bns:Function>
Japanese Language Character Conversion
- Function API
type- JapaneseCharacterConversion
Example API structure:
<bns:Function cacheType="ByDocument" id="FUNCEXT-466706836" type="JapaneseCharacterConversion">
<bns:Inputs>
<bns:Input default="おつかれさまでした" name="String to Convert" key="1"/>
</bns:Inputs>
<bns:Outputs>
<bns:Output name="Result" key="2"/>
</bns:Outputs>
<bns:Configuration>
<bns:JapaneseCharacterConversion convertFrom="fullwidth_hiragana" convertTo="halfwidth_katakana"/>
</bns:Configuration>
</bns:Function>
For information on configuration and formatting, see topic: Understanding japanese character conversion
Extending map functions with the UPDATE operation
When configuring extended mappings involving a function, the specific function field is identified by the combination of the function's ID and the function input's or output's key. Each function input and output has a numeric key attribute. For a given function, the first input or output has a key attribute value of 1, the second a key attribute value of 2, and so on. (For functions with variable outputs — String Split and Custom Scripting — key assignments can vary.)
To illustrate how this works, consider an example of appending two fields from the source data. For this we can use the StringAppend function. The function’s input and output values are strings, and the function has the following input parameters:
-
Fix to Length (optional) — integer specifying the length of the output
-
Char to Append — character string to append
The portion of the UPDATE request structure by which the function is extended is as follows:
<ExtendedFunctions>
...
<bns:Function type="StringAppend" id="FUNCEXT--123456789" cacheType="ByDocument">
<bns:Inputs>
<bns:Input key="1" name="Original String" default=""/>
<bns:Input key="2" name="Fix to Length" default=""/>
<bns:Input key="3" name="Char to Append" default=""/>
</bns:Inputs>
<bns:Outputs>
<bns:Output key="1" name="Result"/>
</bns:Outputs>
<bns:Configuration/>
</bns:Function>
...
</ExtendedFunctions>
The <Function> element’s id attribute value is an arbitrary unique string.
To complete the configuration of an extended function, the UPDATE operation must do the following:
-
Map an element in the source profile to each function input value.
-
Map the function output value,
Result, to an element in the destination profile.
Specify Profile elements by XPath.
Returning to the append example, specify the mappings in the ExtendedMappings portion of the UPDATE request as follows:
<ExtendedMappings>
...
<bns:Mapping toFunction="FUNCEXT--123456789" fromXPath="employee/demographic/countryCode" toXPath="1"/>
<bns:Mapping toFunction="FUNCEXT--123456789" fromXPath="employee/demographic/region" toXPath="3"/>
<bns:Mapping fromFunction="FUNCEXT--123456789" fromXPath="1" toXPath="resource/financial/costCode"/>
...
</ExtendedMappings>
In these mappings, toFunction and fromFunction reference the id of the corresponding <Function> element (e.g. "FUNCEXT--123456789"). The first two mapping's toXPath values refer to the function's corresponding Input keys. Similarly, the third mapping's fromXPath="1" refers to the function's corresponding Output key.