Understand the eagle_wrf_i2i Workflow

In this article, you will find a general description of eagle_wrf_i2i workflow and such configuration details as default profiles, configuration files and valid parameters, and a short description of the distribution stream.

The eagle_wrf_i2i workflow is a modified I2I workflow with the logic to switch between Extract or Load to be launched remotely. This depends on whether the W_I2I_IS_HUB flag or W_I2I_IS_SPOKE flag is set to YES. For more information, see the Advanced Configuration Options page in the EagleML wiki.

If W_I2I_IS_HUB = YES, then GenericExtract will be launched locally and Generic Load remotely.
If W_I2I_IS_SPOKE = YES, then GenericExtract will be launched remotely and Generic Load locally.

We recommend specifying these parameters in i2i config files in case one environment is supposed to be used either as SPOKE or as HUB depending on the workflow conditions.
In the initial RTR you need to specify SpokeSID only if you want to run i2i on the HUB. SpokeSID determines the name of the SPOKE environment where extracted data will be sent.

Configuring eagle_wrf_i2i

If you want to use WS to exchange RTRs/TSRs, there is no need to create any new streams.
If you want to use FTP, an FTP stream reading TSRs should be created on the hub. As for spoke, it will need a stream for reading RTRs (a kind of control messages tuned for FTP). Two streams in total.
If you want to use JMS or MQ methods for file exchange, you have to create four streams:

On the hub:

  • stream 1 for sending RTRs into the queue;

  • stream 2 that will read the TSRs from the queue;

On the spoke:

  • stream 3 for sending TSRs into the queue;

  • stream 4 that will read RTRs coming from the queue.

All these streams cannot use one folder or one queue.
In most cases i2i runs with flag consolidatedTSR = 1. If this flag set to 1 and one of the Feed Types return NO_DATA final status in TSR for Generic Extract workflow will be NO_DATA.

Generic Load workflow follows extract check status of the Generic Extract workflow and if the workflow returns NO_DATA then Generic Load is not triggered. But, and this is important, final TSR status does not mean that archive with the data was not created. So I2I workflow now checks only extractFileName field in final TSR.

When extractFileName = NO_DATA, it means that neither of extracts returned any data from DB and Generic Load should not be triggered. But if extractFileName contains a file name of zip archive, this means that some data was extracted and should be loaded via Generic Load workflow.

Default Profiles

There is a number of default profiles based on eagle_wrf_i2i workflow (which is based on Generic Extract and Load workflow in its turn):

  • eagle_wrf_i2i_full.profile

  • eagle_wrf_i2i_delta.profile

  • eagle_wrf_i2i_sec_alias_sync_fwd.profile

  • eagle_wrf_i2i_sec_alias_sync_non_fwd.profile

The table below describes configuration parameters for each of these profiles.

Parameter\Default Profile

eagle_wrf_i2i_sec_alias_sync_non_fwd

eagle_wrf_i2i_sec_alias_sync_fwd

eagle_wrf_i2i_delta

eagle_wrf_i2i_full

Parameter\Default Profile

eagle_wrf_i2i_sec_alias_sync_non_fwd

eagle_wrf_i2i_sec_alias_sync_fwd

eagle_wrf_i2i_delta

eagle_wrf_i2i_full

I2IProcessUID

1001

1002

1003

1004

IsDeltaRunTimeModeEnabled

Y

Y

Y

N

spokeCheckFlag

Y

Y

 

 

feedtype

SMF

SMF

 

 

investmenttype

E(FWD)

FWD

 

 

UseInstance

Y

Y

 

 

onlycancelsmfxref

Y

Y

Y

Y

onlyheld

N

N

Y

Y

maxrows

1000

1000

1000

1000

Configuration Files

For the SPOKE:

eagle_ml-2-0_custom_cm/i2i_spokes_map.inc
customer/i2i_config_spoke.inc
customer/i2i_spokes_map.inc

For the HUB:

customer/i2i_config_hub.inc

Config files can be created both for HUB and for SPOKE mode. If the environment works as spoke, the config for SPOKE will be read only, if the environment works as spoke, the config for HUB will be read only.

Parameters for Configuration Files

Delivery method:
FTP:

w_i2i_ftp_url – FTP URL. Required if you want data to be loaded on FTP
w_i2i_ftp_pass – FTP Password (It can be encrypted or not). Required if you want data to be loaded on FTP
w_i2i_ftp_encrypted – Optional. YES – If password encrypted. NO or NULL if doesn't encrypted.
w_i2i_ftp_user – FTP User Name. Required if you want data to be loaded on FTP
w_i2i_ftp_data_location – Optional. Folder for archive on FTP. Default value 'CMW/inbound/'
w_i2i_ftp_reply_location – Required when Workflow launched remotely (Extract or Load). If you want TSR to be loaded on FTP.
w_i2i_ftp_control_location – Required when Workflow launched locally (Extract or Load). If you want RTR to be loaded on FTP.

These new parameters correlate with old parameters, but we recommend using only new options.

w_i2i_ftp_url = varSpokeFTPURL
w_i2i_ftp_user = varSpokeFTPUser
w_i2i_ftp_pass = varSpokeFTPPass
w_i2i_ftp_reply_location = varSpokeFTPFolderForRemoteTSR

WS:

w_i2i_web_service_url – WS URL. Required
w_i2i_web_service_pass – WS Password. Required
w_i2i_web_service_user – WS User Name. Required
w_i2i_web_service_retry_count– WS number of retry count. Optional

I2I Filters:
New parameters:

w_i2i_spoke_enitity_list
w_i2i_spoke_xref_id_type_list
w_i2i_spoke_data_sources
w_i2i_spoke_xref_id_type_output

All of them are identical to 

varSpokeEnitityList = w_i2i_spoke_enitity_list
varSpokeXrefIdTypeList = w_i2i_spoke_xref_id_type_list
varSpokeDataSources = w_i2i_spoke_data_sources
varSpokexrefidtypeoutput = w_i2i_spoke_xref_id_type_output

Workflow parameters:
New parameters:

w_i2i_from_folder
w_i2i_to_folder
w_i2i_delivery_stream – this is the MAIN parameter in configuration, which perform sending TSR\RTR to another side of the I2I process.
w_i2i_mixed_delivery – YES\NO. Default – NO. If this parameter set to YES. Extracted data will be encoded in base64 and places in RTR\TSR
i2iRTRDeliveryStream – This parameter can be specified in RTR and determine stream which will send Remote RTR to another environment.

varFromFolder = w_i2i_from_folder
varToFolder = w_i2i_to_folder
i2icmdeliverystream = i2iRTRDeliveryStream
varSpokeDeliveryMethod
varSpokeDeliveryStreamName = w_i2i_delivery_stream(in case of JMS or MQ delivery method)
varSpokeJMSStreamForExtractedData = w_i2i_delivery_stream(in case of JMS or MQ delivery method)
w_i2i_mixed_delivery                 WS, MQ,JMS,FTP

Using LinkId

Sometimes you want to change the destination environment of your workflow. This can be done with the help of LinkId parameter, which links a unique number alias for you Spokes and allows to switch between them by a single task parameter in the RTR.

First of all, edit the config file.

<CODE> IF :param_SpokeSID: = 'SPOKE_SID_1' THEN  [ IF :LinkId: = '1' THEN  [ Delivery Method and Destination Credentials 1 ]; IF :LinkId: = '2' THEN  [ Delivery Method and Destination Credentials 2 ]; ]; IF :param_SpokeSID: = 'SPOKE_SID_2'  THEN  [ IF : LinkId: = '1' THEN  [ Delivery Method and Destination Credentials 1 ]; IF : LinkId: = '2' THEN  [ Delivery Method and Destination Credentials 2 ]; ]; </CODE>

or

<LOOP CONDITION=":param_SpokeSID: = 'QA15R2LN_2'" TYPE="WHILE"> <LOOP CONDITION=":LinkId: = '8891'" TYPE="WHILE"> <COL TAG="w_i2i_delivery_stream" EXPRESSION="'i2i_message_distribution'"/> <COL TAG="w_i2i_web_service_url" EXPRESSION="'https://xxxxxx.eagleinvsys.com:81'"/> <COL TAG="w_i2i_web_service_pass" EXPRESSION="'dimatest'"/> <COL TAG="w_i2i_web_service_user" EXPRESSION="'eagle1'"/> <COL TAG="w_i2i_web_service_retry_count" EXPRESSION="'1'"/> <BREAK CONDITION="1"/> </LOOP> <BREAK CONDITION="1"/> </LOOP>

Now that you have determined the set of parameters for a LinkId, you can use it in the workflow or set in the profile or in the RTR for I2I process.

<taskParameter> <name>LinkId</name> <dataType>S</dataType> <value>2</value> </taskParameter>

Message Distribution Stream

eagle_wrf_i2i_message_distribution is the new default stream for I2I message exchange. This default stream can send message to FTP and WS, so there is no need to create new streams. Just edit the settings in the config file. But when the messages are suppoes to be sent via JMS or MQ, the user has to create a new stream with necessary delivery method and fill the credentials. For example for JMS: