Event Framework
R24 AMR | Min(s) read

Enriching Integration Events with Temenos Transact Subroutine or API Results

You can create an API definition based enrichment for any exit point except for Inflow.

In this section, API means any subroutine in Transact.

This additional feature allows you to call an API by associating its parameters with the fields of the Flow Enrichments tab and add the response to the Integration Framework event.

  1. Create an exit point and its associated flow of any type other than Banking Framework Event or Delivery Message. Read Defining the Flow for more information.
  2. Click the API Definition tab that is at the bottom of the Flow editor page.

  3. Expand the API Component Input section and API Component Enrichments.

  4. Decide whether you wish to call an external or internal API.
    • To call an internal API:
      1. Select the Internal Component check box when an internal API is required to be called from the Event Designer project.

        The Operation Name drop-down list is enabled and populated with the API names added to the IF.FLOW.API table.

        To add an API and use this Transact table, you must have the appropriate PGM.FILE, SS, and FILE.CONTROL entries.
      2. Select an entry from the Operation Name drop-down list.
    • To call an external API:
      1. Leave the Internal Component check box cleared.

        The Operation Name drop-down list is enabled with the available operation names populated in it added from the IF.FLOW.API table and EXTERNAL record.

        To add an external API and use this Transact table, you must have the appropriate IF.FLOW.API table entry EXTERNAL record with the OPERATION.NAME field populated in it.
      2. Select the expected operation name.

        The Component Parameters box is populated with the parameters of the chosen API along with their directions listed as IN or OUT.

        The Add to Input and Add to Output buttons are disabled initially. These buttons are enabled when you select a parameter based on its specified direction (IN or OUT).

        Do not select all the parameter and click Add to Input or Add to Output as this would lead to inconsistent flow definition and eventually the event XML.
  5. Select a parameter from the Component Parameters list box.

    The two tables below get populated with the actual parameter name and type. Each table has three columns.

    The second column Parameter Type has a drop-down list that is populated with the complex type.variable format for complex data types and just with the data type for simple data types.

    The third column of each table also has a drop-down list that is populated with the fields to be associated in the Flow Enrichments tab.

  6. After you have added all the parameters and you have associated the corresponding fields, click Add to Flow to add the requested API parameters to the API enrichments section.
  7. Expand the API Component Enrichments section.
  8. This section has a table with four columns: Service Name, Operation Name, Input Params and Output Params. These columns gets populated with the values chosen from the API Component Input section.

    TIP: Click Remove to remove the selected rows from the table. When you click the Remove button after selecting a row, the associated fields present in that row are simultaneously removed from the Flow Enrichments tab.

    The flow is updated with the ApiFields attribute.

    TIP: To view the values, click the Source tab.

  9. Save the event and flow.
  10. Publish the event to Transact.

    If any API with the output parameter of complex data type is added to the flow, a new schema is added to the schemas folder in the Integration project.

    The same complex data type of the API output parameter is added among the namespaces of the master schema as well.

    The schema for the field associated with any of the API output parameters has the application tag value replaced with the API name and the output parameter name replaced in the field tag.

    The structure of the polled XML file obtained by adding the API definition has the namespace added in the appropriate field tags.

    Internal Component supports only one input and output parameter. The input parameter can be mapped to one single flow field. Value markers separate the output parameter values. The input parameter is optional.

Complex Type Parameters for Internal API

The IF.COMPLEX.TYPE table is available to define the complex type, that is, the record ID. The table below describes the following fields:

Field Name Description
FIELD.NAME It is the name of a field in the complex type. It starts with an alphabet and allows only _ (underscore) as a special character
FIELD.TYPE Defines the associativity of the complex type. It can be empty or XX., XX<, XX>
DATA.TYPE Defines the data type. It can be an integer, string or Temenos Transact date
HAS.SUBVALUE It is a non-editable field with the field values as YES (Y) or NO (N). Select Y, if any of the field type is defined with the field type XX<
TYPE.STRUCTURE It is a no input field and used to store the structure of the complex type as dynamic array
TYPE.SCHEMA It is a no input field and used to store the structure of the complex type as dynamic schema

You can create a record in IF.FLOW.API table with the subroutine name as the record ID and provide values for the following fields:

Field Name Description
PARAM.NAME It is the name of a parameter.
PARAM.TYPE Defines the type of a parameter. It can be a simple type, such as, string, numeric, date or a complex type. In case of complex type, the value provided should be a valid record ID in IF.COMPLEX.TYPE
IF.INT.DIRECTION Indicates the direction of the parameter. The field value can be IN or OUT
EB.API.HOOK Holds the EB API Hook name to allow Java based routine
Define the parameters in the same order given in Subroutine.

Defining Flows with Complex Type Parameter

To define the flows, follow the steps below:

  1. Navigate to API Definition tab to add the API to the flow.
  2. Select Internal Component to add an internal component to the flow.
  3. Select the required API from the Operation Name field drop-down.
  4. After the API selection, you can see the parameters listed below in the Component Parameters drop-down.

  5. In the Component Parameters section:
    • Click Add to Input to add the required input parameters, which needs to be mapped to a flow field.
    • Click Add to Output to add the required output parameters, whose value needs to be added to the Integration Event.
    • Map the flow field with the input parameter.
  6. The highlighted output parameter is a complex parameter.
  7. Click Add to Flow.
  8. Save and publish the flow.

Sample Schemas

The sample schemas below are for your understanding.

Common-EventCommon.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.temenos.com/T24/event/Common/EventCommon"
	elementFormDefault="qualified"
	targetNamespace="http://www.temenos.com/T24/event/Common/EventCommon">
	<xsd:complexType name="EventCommon">
		<xsd:sequence>
			<xsd:element name="application" type="xsd:string"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="companyId" type="xsd:string"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="operator" type="xsd:string"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="today" type="xsd:date" minOccurs="0"
				maxOccurs="1" />
			<xsd:element name="transactionStage" type="xsd:string"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="eventId" type="xsd:string"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="creationTime" type="xsd:dateTime"
				minOccurs="0" maxOccurs="1" />
			<xsd:element name="customCommon" minOccurs="0"
				maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute name="name" type="xsd:string" />
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>

INTERNAL.API.TEST-TestingInternalParam.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.temenos.com/T24/TestingInternalParam/TestingInternalParamType"
	elementFormDefault="qualified"
	targetNamespace="http://www.temenos.com/T24/TestingInternalParam/TestingInternalParamType">
	<xsd:complexType name="TestingInternalParamType">
		<xsd:sequence>
			<xsd:element name="TestingField1" type="xsd:string"
				minOccurs="0" />
			<xsd:element name="TestingField2List" minOccurs="0"
				maxOccurs="1">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="TestingField2" minOccurs="0"
							maxOccurs="unbounded" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="TestingField3Group" minOccurs="0"
				maxOccurs="1">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="TestingField3" type="xsd:string"
							minOccurs="0" />
						<xsd:element name="TestingField4" type="xsd:string"
							minOccurs="0" />
						<xsd:element name="TestingField5" type="xsd:string"
							minOccurs="0" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>

TestingComplexType-BatchInternalAPIFlow.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified"
	targetNamespace="http://www.temenos.com/T24/event/TestingComplexType/BatchInternalAPIFlow"
	xmlns:ins="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow"
	xmlns:batch="http://www.temenos.com/T24/event/TestingComplexType/BatchInternalAPIFlow">
	<xsd:import
		namespace="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow"
		schemaLocation="TestingComplexType-InternalAPIFlow.xsd" />
	<xsd:complexType name="BatchInternalAPIFlowType">
		<xsd:sequence>
			<xsd:element ref="ins:InternalAPIFlow" minOccurs="0"
				maxOccurs="unbounded" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="BatchInternalAPIFlow"
		type="batch:BatchInternalAPIFlowType" />
</xsd:schema>

TestingComplexType-InternalAPIFlow.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow"
	elementFormDefault="qualified"
	targetNamespace="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow"
	xmlns:ns0="http://www.temenos.com/T24/event/Common/EventCommon"
	xmlns:ns1="http://www.temenos.com/T24/INTERNAL.API.TEST/TestingInternalParam">
	<xsd:import
		namespace="http://www.temenos.com/T24/event/Common/EventCommon"
		schemaLocation="Common-EventCommon.xsd" />
	<xsd:import
		namespace="http://www.temenos.com/T24/INTERNAL.API.TEST/TestingInternalParam"
		schemaLocation="INTERNAL.API.TEST-TestingInternalParam.xsd" />
	<xsd:element name="InternalAPIFlow">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="eventCommon" minOccurs="1"
					maxOccurs="1" />
				<xsd:element ref="id" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="name1List" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="sector" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="shortNameList" minOccurs="0"
					maxOccurs="1" />
				<xsd:element ref="language" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="TestingOutParam" minOccurs="0"
					maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="eventCommon" type="ns0:EventCommon" />
	<xsd:element name="id" type="xsd:string">
		<xsd:annotation>
			<xsd:appinfo>
				<t24source application="CUSTOMER" field="@ID" />
			</xsd:appinfo>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="name1List">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="name1" minOccurs="0"
					maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:appinfo>
							<t24source application="CUSTOMER" field="NAME.1" />
							<fieldPiiAttribute value="DIRECT" />
							<fieldPiiPurpose value="LEGITIMATE" />
							<fieldPiiEraseOption value="ALPHA" />
							<fieldPiiAccessibility
								value="ACCESS PORTABLE" />
						</xsd:appinfo>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:string">
								<xsd:attribute name="language" type="xsd:string" />
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="sector" type="xsd:decimal">
		<xsd:annotation>
			<xsd:appinfo>
				<t24source application="CUSTOMER" field="SECTOR" />
			</xsd:appinfo>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="shortNameList">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="shortName" minOccurs="0"
					maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:appinfo>
							<t24source application="CUSTOMER" field="SHORT.NAME" />
							<fieldPiiAttribute value="DIRECT" />
							<fieldPiiPurpose value="LEGITIMATE" />
							<fieldPiiEraseOption value="ALPHA" />
							<fieldPiiAccessibility
								value="ACCESS PORTABLE" />
						</xsd:appinfo>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:simpleContent>
							<xsd:extension base="xsd:string">
								<xsd:attribute name="language" type="xsd:string" />
							</xsd:extension>
						</xsd:simpleContent>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="language" type="xsd:decimal">
		<xsd:annotation>
			<xsd:appinfo>
				<t24source application="CUSTOMER" field="LANGUAGE" />
			</xsd:appinfo>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="TestingOutParam"
		type="ns1:TestingInternalParam">
		<xsd:annotation>
			<xsd:appinfo>
				<t24source application="INTERNAL.API.TEST"
					field="TestingOutParam" />
			</xsd:appinfo>
		</xsd:annotation>
	</xsd:element>
</xsd:schema>

Supported Complex Structure and the Sample XML Structures

The complex type structure samples are given below:

In the below samples, the markers represents:
  • ^ — Field Marker (FM)
  • ] — Value Marker (VM)
  • \ — Subvalue marker (SM)

Complex Type 1

It is similar to XX<XX. and XX>XX field structure.

The value for this output parameter is expected as:

ACCMGMTFEE\ACCCRINTEREST\ACCCRINTEREST\DEBIT]1\2\3\4^
ACCMGMTFEE\ACCCRINTEREST\ACCCRINTEREST\DEBIT]1\2\3\4

This represents a multi-value list in a associated multi-value (XX-XX.) (XX<XX-FIELD1, XX>XX-FIELD2).

Follow the similar way for externalised components.

Complex Type 2

It is similar to XX<, XX- and XX> combination. In the below sample, only two fields are shown but there can be any number of fields in a set.

The value for this output parameter is expected as:

ACCMGMTFEE]1^DEBIT]2

This represents the structure XX<field1, XX-field2 and XX>field3.

Follow the similar way for externalised components.

Complex Type 3

It is similar to XX<, XX-, XX-XX.and XX> combination. In the below sample, only two fields are shown but there can be any number of fields in a set.

The value for this output parameter is expected as:

ACCMGMTFEE]1]1\2^DEBIT]2]1\2

This represents the structure XX<field1, XX-field2 and XX>XX.field3. In this type, the field names needs to be appended as a FM separated list

Follow the similar way for externalised components.

Complex Type 4

It is similar to XX<XX< and XX>XX> combination. These, XX-XX., XX-, XX-XX- are the other types supported within this structure. The occurrence of the complex structure within this parameter is one.

The value for this output parameter is expected as:

ACCMGMTFEE^1^1\2]1\2 

This represents the structure XX<field1, XX-field2 and XX-XX<field3 and XX-XX>field4.

Follow the similar way for externalised components.

Ignore the namespace and namespace prefix. The one used in this sample is an indicator but changes subsequently.

Copyright © 2020- Temenos Headquarters SA

Published on :
Monday, May 27, 2024 4:41:16 PM IST