Transaction Register Theory
Transaction Register Definition (taken from Sterling Commerce documentation)
Transaction Register - the translator invokes the check against the specified data (held
in memory in Field1 through Field 6) to determine if the data is duplicate.
Transaction register enables you to specify a field for which you want to see if it contains duplicate data (using the Update standard rule Transaction Register function) and then invoke it (using the Select standard rule Transaction Register function) to verify whether the fieldcontains duplicate data. Using the Update standard rule you can load document data into up to six fields in memory (Field 1 through Field 6).
Note: You must define the data for which the translator will check by adding a Transaction Register Update standard rule prior to the point in the map where you invoke the Transaction Register Select standard rule to check for duplicate data. The updates do not go directly to the database; they are kept in memory until the eventual select, and then they are checked against the database and inserted if necessary.
- Then, using the Select standard rule Transaction Register function, you can invoke the check against the Transaction Register database table. If the data is validated as duplicate data, the translator notes the error in the translator report.
- If there is no matching data already in the Transaction Register table, the content of Field1 through Field 6 is inserted as a row in the table.
Note: If the document translation does not succeed, the field information (for which you have specified the translator should verify whether it is duplicate) is not added to the Transaction Register database table.
Purging the Transaction Register Database Table
By default, data in the Transaction Register table is deleted after thirty days (from the date the data was added to the table), so that the table does not continue to grow unchecked. If you wish, you can change the number of days after which data is deleted or remove this control altogether.
To change the number of days that data will be kept in the Transaction Register database table before being purged, or to remove the purge control altogether:
- Open the customer_overrides.properties.in file (in <install dir>/properties)
- Specify the number of days you want the Transaction Register table to retain data in the mapper.maximumTransactionRegisterAge value
- To remove the purge control, delete this entire line from the customer_overrides.properties.in file:
mapper.maximumTransactionRegisterAge=30
- After you complete the edit, execute <install_dir>/bin/setupfiles.sh and then stop and restart the application to verify the changes take effect.
Field Size Limit
Field1
|
150 characters
|
Field2
|
35 characters
|
Field3
|
35 characters
|
Field4
|
35 characters
|
Field5
|
35 characters
|
Field6
|
30 characters
|
Transaction Register Test Results
Select can be used without Update.
Update cannot be used without Select.
If they are together, Update must be used prior to Select.
UPDATE & SELECT
If we do/use Update and Select in the same map, and updated field is one that already
exist in TRANSACTION REGISTER (transact_register table), we get the error in
Translation Report:
Report Entry:
Section: OUTPUT Severity: ERROR
SyntaxSpecific: false Syntax: -1 Code: 144 Standard Rule Duplicate Transaction Register Error
UPDATE (without SELECT)
If we use Update without Select later in the map, there is the following Warning:
Report Entry:
Section: Severity: WARNING
SyntaxSpecific: false Syntax: -1 Code: 160 Unwritten Transaction Register. Use SELECT rule.
SELECT (without UPDATE & compliance check turned ON)
If we do Select without doing Update previously, and option ‘Raise a compliance error if matching data is not found’ is checked (ticked off), then the error we get is:
Report Entry:
Section: OUTPUT Severity: ERROR
SyntaxSpecific: false Syntax: -1 Code: 141 Standard Rule Select Data Missing
SELECT (without UPDATE & compliance check turned OFF)
If we do Select without doing Update previously, and option ‘Raise a compliance error if matching data is not found’ is NOT checked, then there is no error.
We cannot use only Select and expect a field on which select is applied will be checked against TRANSACTION REGISTER. Only value that we used in Update is checked against TRANSACTION REGISTER.
My conclusion is that only SELECT can be used but it will do nothing if UPDATE does not exist in the same map (prior to select).
Data written in a DB table with an UPDATE statement:
Transaction Register table used for EDI Control Number History
Transaction register table is also used for saving history of EDI Control Numbers.
Example 1 (EDIFACT):
UNB+UNOA:3+3830035970021+3838551999996+050615:1514+100135++++++1'
UNH+5+ORDERS:D:96A:UN:EAN008'
BGM+80E+3830035970001-00000178+9'
DTM+137:20050615:203'
DTM+2:20050615:203'
FTX+PUR+++67921'
...
UNT+33+5'
UNH+6+ORDERS:D:96A:UN:EAN008'
BGM+80E+3830035970001-00000179+9'
DTM+137:20050615:203'
DTM+2:20050617:203'
FTX+PUR+++67934'
RFF+ON:3830035970001-00000179'
...
CNT+2:1'
UNT+18+6'
UNZ+2+100135'
- If we have UNB Control Number check set to Yes, where CN is 100135, the following record is written into table:
- If UNH Control number check is set to Yes, then every one is written in a database table:
Example 2 (X12):
ISA{00{ {00{ {14{012371711XXX {14{3210800340100 {101105{0842{^{00406{200517507{1{P{>~
GS{TX{123271711Y{321080034{20101105{0842{500883{X{004060~
ST{864{0905~
...