Dynamic Database Caching in EnterpriseOne

Purpose of Document

This document is to explain enhancements made for Resetting Database Table Cache Using a Pre-Configured Application which is available as of EnterpriseOne Application Release 9.1 Update 2 and above. If your application meets this update, you can reset database cache per table depending on your business requirement.

This document covers:


Dynamic Cache feature is to work only when,

Note:

Purpose:

To minimize possible dirty reads (a fetch before modified data when update is performed) or phantom reads (fetch deleted data when delete is performed) by flushing/deleting/resetting database cache per table against data source mapped.


List of Pre-Configured applications:

UDC 00/RF - Table Cache Auto Refresh

App App Description Cached Table Table Description Business Function Others
P0000 System Setup F0010 Company Constants B0098610 ClearTableCache <Bug 17275615>
P0001 Co/BU Tree Structure F0006 Cost Center Master B0998610 ClearTableCache_09 <Bug 17276303>
P0006 Business Units F0006 Cost Center Master B0998610 ClearTableCache_09 <Bug 17276303>
P00071 Workday Calendar F0007 Work Day Calendar B3098610 ClearTableCache_30 <Bug 17276438>
P0008 Fiscal Date Patterns F0008 Date Fiscal Patterns B0998610 ClearTableCache_09 <Bug 17276303>
P0010 Companies F0010 Company Constants B0998610 ClearTableCache_09 <Bug 17276303>
P001001 Alternate Tax Rate/Area Assign F0006 Cost Center Master B0098610 ClearTableCache <Bug 17275615>
P001001 Alternate Tax Rate/Area Assign F0010 Company Constants B0098610 ClearTableCache <Bug 17275615>
P001012 Fixed Asset Constants F0010 Company Constants B1298610 ClearTableCache_12 <Bug 17276357>
P001012 Fixed Asset Constants F1200 Fixed Asset Constants B1298610 ClearTableCache_12 Not belonging to P98613
<Bug 17276357>
P0013 Currency Codes F0013 Currency Codes B0098610 ClearTableCache <Bug 17275615>
P0014 Payment Terms F0014 Payment Terms B03B9861 ClearTableCache_03B <Bug 17275630>
P0014 Payment Terms F00141 Advanced Payment Terms B03B9861 ClearTableCache_03B <Bug 17275630>
Not a member of Database Caching
P00145 Advanced Payment Terms F0014 Payment Terms B03B9861 ClearTableCache_03B <Bug 17275630>
P00145 Advanced Payment Terms F00141 Advanced Payment Terms B03B9861 ClearTableCache_03B <Bug 17275630>
P00218 Invoice Voucher Co Tax Const F0010T Company Constants Tag Table B0998610 ClearTableCache_09 <Bug 17276303>
Not a member of Database Caching
P0022 Tax Rules F0022 Tax Rules B0498610 ClearTableCache_04 <Bug 17276005>
P0025 Ledger Type Master Setup F0025 Ledger Type Master File B0998610 ClearTableCache_09 <Bug 17276303>
P0026 Job Cost Constants F0026 Company Constants - Job Cost B5198610 ClearTableCache_51 <Bug 17276525>
P059051A Business Unit Constants F0006 Cost Center Master B0598610 ClearTableCache_05 <Bug 17276019>
P059116 Pay Type,Ded, Benef, Accrual F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 <Bug 17276019>
P059117 Advanced DBA Information F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 <Bug 17276019>
P059118 Basis of Calculation F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 <Bug 17276019>
P07RSW Rollover Setup Window F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 <Bug 17276019>
P1609 Advanced Cost Acct Const F1609 Cost Management Constants B0098610 ClearTableCache <Bug 17275615>
P17001 S&WM System Constants F17001 Service/Warranty Constants B1798610 ClearTableCache_17 <Bug 17276394>
P1724 Contract Coverage F1724 Service Contract Coverage B1798610 ClearTableCache_17 <Bug 17276394>
P17506 Work With Provider Groups F1752 Case Types B1798610 ClearTableCache_17 <Bug 17276394>
P17506 Work With Provider Groups F1753 Case Priority B1798610 ClearTableCache_17 <Bug 17276394>
P1790 Product Family/Model F1790 Product Family/Model Master B1798610 ClearTableCache_17 <Bug 17276394>
P3009 Manufacturing Constants F3009 F3009 Job Shop Manufact Constants B3098610 ClearTableCache_30 <Bug 17276438>
P3009 Manufacturing Constants F3009T F3009T Manufacturing Constants Tag File B3098610 ClearTableCache_30 <Bug 17276438>
Not a member of Database Cache
P400951 Default Location & Printers F40095 Default Locations/Printers B4198610 ClearTableCache_41 <Bug 17276470>
P40204 Order Activity Rules F40203 Order Activity Rules B4098610 ClearTableCache_40 <Bug 17276455>
P40205 Line Type Constants F40205 Line Type Control Constants B4098610 ClearTableCache_40 <Bug 17276455>
P4071 Price Adjustment Type F4071 Price Adjustment Type B4298610 ClearTableCache_42 <Bug 17276499>
P41001 Branch/Plant Constants F4009 Distrib/Manufact Constants B4198610 ClearTableCache_41 <Bug 17276470>
P41001 Branch/Plant Constants F41001 Inventory Constants B4198610 ClearTableCache_41 <Bug 17276470>
P41002 Unit Meas Convers - Item F41002 Item Unit Meas Convers Factor B4198610 ClearTableCache_41 <Bug 17276470>
P42460 Sales Order Constants F90CA000 CRM Constants Table B4298610 ClearTableCache_42 <Bug 17276499>
P48091 Service Billing Constants F48091 Billing System Constants B5198610 ClearTableCache_51 <Bug 17276525>
P49002 Transportation Constants F49002 Transportation Constants B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P49003 Load Types F49003 Load Type Constants B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P49004 Mode of Transport Constants F49004 Mode of Transport Constants B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4950 Routing Entries F4950 Routing Entries B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4950 Routing Entries F4953 Routing Hierarchy B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4970 Work With Rating Info F4973 Rate Structure Definition B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4970 Work With Rating Info F4978 Charge Code Definitions B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4972 Work With Rate Detail Info F4973 Rate Structure Definition B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P4978 Work With Charge Codes F4978 Charge Code Definitions B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching
P51006 Job Cost Master F0006 Cost Center Master B5198610 ClearTableCache_51 <Bug 17276525>
P7306 Quantum Sales Use Tax Const F7306 Quantum Sales Use Tax Const B0498610 ClearTableCache_04 <Bug 17276005>
P90CA000 CRM Constants F90CA000 CRM Constants Table B90CA610 ClearTableCache_90CA <Bug 17276548>
Not a member of Database Caching
R09705 Compare Account Balances To Transactions Report F0901 Account Master B0998610 ClearTableCache_09 <Bug 17533200> R09705 PERFORMANCE ISSUE
R4950 Batch Routing Rate Update F4950 Routing Entries B4998610 ClearTableCache_49 <Bug 17276511>
Not a member of Database Caching

Note:

The following applications do not belong to UDC 00/RF but they have implementation for Clearing Table Cache:

App App Description Cached Table Table Description Business Function Others
P059036 Basis of Calculation Hierarchy B0598610 ClearTableCache_05 Validation done against Application Name P059118
<Bug 17276290>
P059116C Canadian Legislative/Regulatory F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 Validation is performed based on application ID P059116
<Bug 17276316>
P059116U U.S. Legislative/Regulatory F069116 Payroll Transaction Constants B0598610 ClearTableCache_05 Validation is performed against the object ID 059116
<Bug 17276316>
P05TAX Tax Exemption Revisions B0598610 ClearTableCache_05 Validation is performed against the object ID P069116
<Bug 17276290>

Notes:


Example of implementation (Case of P400951 (Default Location & Printers))

The Applications listed above have more of less same routine as below,

Hook Up Event How To Explanation
Dialog is Initialized
or, Post Dialog is Initialized
Before user update/delete data
(to minimize dirty read/phantom read)
Is Clear Table Cache Feature Enabled - 41
"P400951" -> BF szApplicationName
VA frm_cClearTblCacheEnabled_EV01 <- BF cClearTableEnabled
Application Name should be defined in UDC 00/RF
cClearTableEnabled --> Refer to section: "How to determine cClearTableEnabled"
Update Record to DB - After
and, Delete Grid Rec from DB-After
After data get updated/deleted Set Flag: VA frm_cUpdateOccurred_EV01 = "1"
Set Control Error(HC &Close, "00RF")
VA frm_cWarningSet_EV01 = "1"
When there is any update/delete set flag to determine call Clear Table Cache
00RF is informative message to instruct to close application
cWarningSet is used not to set 00RF more than once
End Dialog In closing out application If VA frm_cUpdateOccurred_EV01 is equal to "1"
If VA frm_cClearTblCacheEnabled_EV01 is equal to "1"
Or VA frm_cClearTblCacheEnabled_EV01 is equal to "2"
Clear Table Cache - 41
"F40095" -> BF szTableName
"P400951" -> BF szApplicationName
End If
End If
Currently VA frm_cClearTblCacheEnabled_EV01 '1' is valid value because special handling code of 00/RF is defined as below,
11 - Enabled (1)
10 - Disabled (0)


Business Function - Example of B4098610

Business Function B4098610 is made up of the functions below:


IsClearTableCacheEnabled_40 (Is Clear Table Cache Feature Enabled - 40)

  1. Check the Tools Release to determine FLUSH_CACHE_ENABLED (which is defined in JDEKDFN.H on your system directory). Tools release must be 9.1 and above.
  2. If 1 is TRUE then call business function GetEnvironmentValue with input parameter TBLREFR (=F99410.DTAI) to determine whether this module is enabled (F99410.MEOW = 1) or not (F99410.MEOW = 0)
  3. To read special handling code of UDC 00/RF based on Application Name then call business function GetUDC and return cClearTableEnabled:


Data Structure for D4098610B (Clear Table Cache Enabled - 40)

Parameter Name Data Item Data Type Req/Opt I/O/Both Others
szApplicationName OBNM char OPT IN Application Name defined in UDC 00/RF
cClearTableEnabled EV01 char OPT OUT 1 (Enabled), 0 (Not Enabled)



ClearTableCache_40

  1. Repeat the validation above again
  2. Call JDB API JDB_ClearTableCache(lpDS->szTableName) based on input table name

Data Structure for D4098610A (Clear Table Cache -40)

Parameter Name Data Item Data Type Req/Opt I/O/Both Others
szTableName OBNM char REQ INPUT Table Name (Check each application because this value is hard coded in the event rule)
cClearCacheSuccessful EV01 char OPT NONE Not in use because this function is called at End Dialog. To know whether it is successful or not, refer to the JDE.LOG for the process you are running
szApplicationName OBNM char REQ INPUT Application Name must be defined in UDC 00/RF


Currently JDE.LOG can contain the 3 messages below (which replaces cClearCacheSuccessful):


List of Database Cache for comparison



The table below shows the relationship between P98613 (Database Caching) and Database Table Cache Using a Pre-Configured Application:

How to read:

Table Database Cache Dynamic Cache
Yes No
Yes Yes
No Yes


Full List:

Object Name Member Description Others
F0004 User Defined Code Types No Dynamic Cache
F0005 User Defined Codes
F0006 Cost Center Master Both Dynamic Cache and P98613
F0007 Work Day Calendar
F0008 Date Fiscal Patterns
F0010 Company Constants
F0010T Company Constants Tag Table Only Dynamic Cache
F0012 Automatic Accounting Instructions Master
F0013 Currency Codes
F0014 Payment Terms
F00141 Advanced Payment Terms Only Dynamic Cache
F00144 Installment Payment Terms
F0015 Currency Exchange Rates
F0022 Tax Rules
F0025 Ledger Type Master File
F0026 Job Cost Constants
F01138 AB Data Permission List Definitions
F069016 Payroll Tax Area Profile
F069036 Payroll Transaction Cross Reference
F069056 Establishment Constant File
F069086 Payroll Corporate Tax Identification
F069096 Payroll General Constants
F069106 Union Benefits Master
F069116 Payroll Transaction Constants
F069226 Unemployment Insurance Rates
F07901 Pre-Payroll DBA Calculation Control Table
F08040 HR History Constants
F0901 Account Master
F1200 Fixed Asset Constants Only Dynamic Cache
F1609 Cost Management Constants
F1690 Enables Tables by Application
F17001 Service Warranty Constants Table
F1724 Service Contract Coverage
F1725 Service Contract Services
F1752 Case Types
F1753 Case Priority
F1790 Product Family/Model Master
F1793 S/WM Line Type Constants
F3009 Job Shop Manufacturing Constants
F3009T Manufacturing Constants Tag File Only Dynamic Cache
F40039 Document Type Master
F40070 Preference Master File
F40073 Preference Hierarchy File
F4008 Tax Areas
F4009 Distribution/Manufacturing Constants
F40095 Default Locations/Printers
F4009T1 Distribution/Manufacturing Constant Tag Table
F40203 Order Activity Rules
F40205 Line Type Control Constants File
F4070 Price Adjustment Schedule
F4071 Price Adjustment Type
F4095 Distribution/Manufacturing - AAI Values
F41001 Inventory Constants
F41001T1 Inventory Constants Tag File
F41002 Item Units of Measure Conversion Factors
F41003 Unit of Measure standard conversion
F46L001 License Plate Numbering Constants
F48091 Billing System Constants
F49002 Transportation Constants Only dynamic Cache
F49003 Load Type Constants
F49004 Mode of Transport Constants
F4950 Routing Entries
F4953 Routing Hierarchy
F4973 Rate Structure Definition
F4978 Charge Code Definitions
F7306 Quantum Sales and Use Tax Constants
F90CA000 CRM Constants Table Only Dynamic Cache
F95922 Permission List Relationships Table
F99410 OneWorld System Control File
FF30L011 Line Design Control Parameters
FF30L012 Kanban Control Parameters
FF34S003 DFM Planning Parameters


Question and Answers:


Question 1: In clearing table cache through P986116D, how does it determine the data source?
Answer 1: Environment name has to be stored during start up and/or initializing any kernels on the Enterprise Server. In order to run any application per kernel 'User (hUser as handle/pointer)', Env (hEnv) and 'Role' must be initialized. Subsequent processes can make use of it.

In running application (or session) it calls BSFN jdeInitEnvBSFN which the calls api GetEnvironmentName() and returns (HENV hEnv) so for this example the environment name selected during login to E1 has to be the environment for P986116D. We define HENV the environment handle contains information related to the current database connection and valid connection handles. Every application connecting to the database must have an environment handle. This handle is required to connect to a data source. Assuming that database cache is "holding" a data source the session knows which memory to flush.

Possibly through the Server Map definition in the JDE.INI and bootstrap (since both F98611 (Data Source Master) and F986101 (Object Configuration Master)) are server map and bootstrap tables, JDE knows the environment and data source relationship.

In general, we can flush cache through JDB API JDB_ClearTableCache(). Since any access to DB follows (JDB APIs) JDB_InitEnv() -> JDB_InitUser() -> JDB_InitBhvr()... hEnv retrieved in application P986116D has to be used.

This is why we need to specify environment when we try to reset database cache through Server Manager because Server Manager does not have instances per environment.



Question 2: Can we add additional application through UDC 00/RF?
Answer 2: No. As explained above, clear cache is implemented by listed application. Note that some of UDC code may not be available. In case the special instruction for your ESU does not contain instruction on adding UDC, add it manually. Note that though you add some UDC code, so long as a certain table is not a member of F98613, it shall not function because there is no database cache to flush. In case you have modified P98613, you need to restart JDE service to make change effective.

Question 3: What is values to populate for DD Alias TBLREFR (TableCacheAutoRefresh)?
Answer 3: In case you do not follow special instruction this action can be done after package deployment.

Go to P92001 (Work with Data Item) and populate controls below,