This document answers some frequently asked questions on Business Functions which are running in JAS. This document does not cover JNI (Java Native Interface) programming. And this document does not cover Business Service Implementation which calls multiple business method in Business Service Server.
There are two main configurations for making business functions work in JAS as below:
Answer 1: Certain business functions are called many times by interactive application and converting them to java function to run on JAS instead of Enterprise Logic server will avoid network overhead and improve performance.
Answer 2: JNI is calling C (or C++ Function) directly whereas listed business functions here are Java programming which *.class (compiled file of java) is to be executed upon request from JAS
Answer 3: BusinessMethodCatalog.xml
This definition can be found in OAS at \\JASMachineName\E1Release\system\OC4J\j2ee\home\applications\webclient.ear\webclient\WEB-INF\lib\ApplicationLogic_JAR\BusinessMethodCatalog.xml
Answer 4: ApplicationLogic.JAR
Answer 5: By referencing LocalLogicCatalog.xml. For example,
<business-logic module="B0000045" function="ConvertNumericToString" run-local="true" />
This definition can be found in OAS at \\JASMachineName\E1Release\system\OC4J\j2ee\home\applications\webclient.ear\webclient\WEB-INF\classes\LocalLogicCatalog.xml
Answer 6: List of Business Functions (java code) are the following:
BSFN | in JAS? | Description | Remark |
---|---|---|---|
B0000034 | ConcatenateObjSub | Available for Tools Release 9.1.4.0 | |
b03b0108 | ConvertDescriptiontoAN8 (Convert Description to AN8) | ||
b0000045 | ConvertNumericToString (Math Numeric to String, Convert) | ||
B0000063 | IsColumnKeyCompany | Available for Tools Release 9.1.4.0 | |
b0000069 | RetrieveLedgerTypeCurrency (F0025 Get Ledger Type Currency) | ||
b0000095 | FormatCompany (Company Number, Format) | ||
B0000118 | GetAlternativeDescription | Available for Tools Release 9.1.4.0 | |
ISCOLBU | IsColumnInBusinessUnitTable | Available for Tools Release 9.1.4.0 | |
ISCOLCO | IsColumnInCompanyTable | Available for Tools Release 9.1.4.0 | |
b0000128 | RetrieveCompanyCurrencyCode (F0010 Get Company Currency Code) | ||
b0000130 | RetrieveCompanyFromBusUnit (F0006 Get Company from Business Unit) | ||
B0000138 | AccumulateTotalAmount | Available for Tools Release 9.1.4.0 | |
B0000193 | IncrementDecrementNumericCharact | Available for Tools Release 9.1.4.0 | |
b0000198 | GetCurrencyCodeandDecimals (Get Currency Code and Decimals) | ||
b0000399 | CurrencyDecimalShift (Currency Decimal Shift) | ||
b0000580 | ConvertStringToMathNumeric (Convert String to Math Numeric) | ||
B0100039 | IsColumnInAddressBook | Available for Tools Release 9.1.4.0 | |
B03b0108 | ConvertDescriptiontoAN8 | Available for Tools Release 9.1.4.0 | |
B0900153 | RetrieveAAIBegEndRevenues | Available for Tools Release 9.1.4.0 | |
B0900242 | RetrieveCompanyCurrentDate | Available for Tools Release 9.1.4.0 | |
B1100001 | IsColInCurrencyCodeTable | Available for Tools Release 9.1.4.0 | |
b0200098 | PpatGetUserIdAddressNumber (F0092 Get User ID and Address Book Number) | ||
b1100005 | DecimalTriggerGetByCompany (Decimal Trigger Get By Company) | ||
b1100006 | DecimalTriggerGetByCurrency (Decimal Trigger Get By Currency) | ||
b1100007 | DecimalsTriggerGetbyCOCRCD (Decimals Trigger Get by CO CRCD) | ||
b1100008 | DecimalsTriggerGetbyCRDCCRCD (Decimals Trigger Get by CRDC CRCD) | ||
b1100009 | DecimalTriggerGetByLT_CRCX (Decimal Trigger Get By LT CRCX) | ||
b1100010 | DecimalTriggerGetByLT_CO_CRCD (Decimal Trigger Get By LT CO CRCD) | ||
b1100011 | DecimalTriggerGetByMCU (Decimal Trigger Get By MCU) | ||
b1100013 | DecimalTriggerGetByAID (Decimal Trigger Get By AID) | ||
b1100015 | DecimalTriggerGetByLTCRCDC (DecimalTriggerGetByLT_CRCD_CO) | ||
b1100016 | DecimalTriggerGetByCOCRCDMode (Decimal Trigger Get By CO CRCD Mode) | ||
b1100017 | DecimalTriggerGetByLTCO (DecimalTriggerGetByLT_CO) | ||
b1100022 | DecimalTriggerGetByAIDCO (Decimal Trigger Get By AID CO) | ||
b1701560 | CSMSGetDecimalsforF1794 (S/WM get Decimals for F1794) | ||
b4000770 | ConvertStringToNumeric (String, Convert String To Numeric) | ||
B4000880 | VerifyAndGetF0101ForOP | Available for Tools Release 9.1.4.0 | |
b4002410 | RetrieveStringElement (String, Retrieve String Element) | ||
B4100270 | CalculateItemSearchQuantities | Available for Tools Release 9.1.4.0 | |
B4101540 | CalculateLifeRemaining | Available for Tools Release 9.1.4.0 | |
b4301010 | DecimalTriggerGetByAN8 (Decimal Trigger Get By AN8) | ||
B4803400 | GetF4801Company | Available for Tools Release 9.1.4.0 | |
b7600580 | CheckStringIsNumeric (Check String is Numeric) | ||
b95400 | LaunchApplicationRecovery (Launch Application Recovery) | ||
b9800100 | GetAuditInfo (Get Audit Information) If GetAuditInfo and GetLocalComputerId gets called Business Functions which are not listed above, it will be performed in Logic Server. For further detail refer <Note 1083571.1> E1: 42: Audit Information in Sales Order Processing |
||
b9800150 | FALSE | LeftJustifyUDCValue (Left Justify UDC Value) LeftJustifyUDCValue is to be called in selecting Environment in logging in EnterpriseOne. So this is the 1st BSFN which is being called. So JDE let LeftJustifyUDCValue run on the enterprise server, because it effectively initializes the call object kernel for subsequent calls. Through this mapping, Logic Server will return a Process ID per user or per E1 session |
|
b9800181 | GetLocalComputerId (Get Local Computer ID) If GetAuditInfo and GetLocalComputerId gets called Business Functions which are not listed above, it will be performed in Logic Server. |
||
b9861a | IsClientRunningOnWTS (Is Client Running On WTS) | ||
GETABDA7 | GetAddressBookDescriptionA7 | Available for Tools Release 9.1.4.0 | |
x0005 | FALSE | GetUDC (Get UDC) GetUDC is running in Logic Server (not in JAS) This is necessary so that Logic Server and Web server service cache does not go out of synch. Calls to UpdateUDC business function will update the table but since it runs on Logic Server then either you need to refresh the service cache or bounce the web server Note that BSFN X0005 is member of JDEKRNL.dll |
Answer 7: Yes TERs (Table Trigger / Table Event Rule) run in JAS with the exception of Table Triggers which are called in other tables trigger or Business Functions (Second level Table Triggers)
BSFN | Reason for Exception |
---|---|
F0150_DELETEAFTER F0150_INSERTAFTER |
they call b0100079, which calls APIs that work in conjunction with the IEO kernel |
F03B20_INSERTBEFORE | F03B20_INSERTBEFORE calls IsCOlumnInAddressBook, which is not ported to Java. Thus, do not run this locally |
F03B22_INSERTBEFORE | F03B22_INSERTBEFORE invokes B0100039, a business function that is not ported to Java. Do not run it locally |
F03B31_INSERTBEFORE | F03B31_INSERTBEFORE calls a NER which ultimately calls the customer master MBF. Thus, do not run this trigger locally |
F05100_DELETEBEFORE | F05100_DELETEBEFORE invokes B0500872 (ResourceCompRTENotifiaction), a business function that is not ported to Java |
F060116_UPDATEBEFORE | F060116_UPDATEBEFORE calls F060116HistoryDriver, a type 3 (client or server) NER. Functionality not supprted |
F060116_INSERTAFTER | F060116_INSERTAFTER calls F060116HistoryDriver, a type 3 (client or server) NER. Functionality not supprted |
F060116_UPDATEAFTER | F060116_UPDATEAFTER invokes B0800255 and B0500873, business functions that are not ported to Java.F060116_UPDATEBEFORE calls F060116HistoryDriver, a type 3 (client or server) NER |
F060120_UPDATEAFTER | F060120_UPDATEAFTER invokes B0800255 and B0500873, business functions that are not ported to Java |
F060120_UPDATEAFTER | Table trigger has definition of calling B0800255 - QuanlifyingEventRuleEngine which is not to be running in JAS |
F08001_DELETEBEFORE F08001_INSERTAFTER F08001_UPDATEAFTER F08101_DELETEBEFORE F08101_INSERTAFTER F08101_UPDATEAFTER |
Each table trigger is calling N0500033 - F08001ExporttoCriterion which can't be running in JAS |
F4211_DELETEAFTER F4211_INSERTAFTER F4211_UPDATEAFTER |
F4211_DELETEAFTER, F4211_INSERTAFTER, and F4211_UPDATEAFTER invoke business functions that are not ported to Java |
F4801T_CURRENCY | F4801T_CURRENCY invokes B4803400 (GetF4801Company), a business function that is not ported to Java If your tools release is 9.1.4.0 and above this trigger is running in JAS. |
F4818_INSERTAFTER F4818_UPDATEAFTER |
F4818_INSERTAFTER and F4818_UPDATEAFTER invoke B3100310 and B4000460, business functions that are not ported to Java |
F4945_INSERTBEFORE F49631_INSERTBEFORE F4972_INSERTBEFORE F4981_INSERTBEFORE |
F4945_INSERTBEFORE invokes X0022, a business function that is not ported to Java |
Simple rule is that if any TER is calling another Business Function and this Business Function is running on the Logic Server, these TERs are not supposed to be running in JAS (or Java Application Server).
Clarification on error in JAS
Answer 8: It is important to know that the listed Business Functions are all related with Validation in the presentation layer
Answer 9: Interpretive NER with the following characteristics run on JAS through Serialization (i.e. not native Java code).
Answer 10: Modify LocalLogicCatalog.xml and restart the JAS because LocalLogicCatalog.xml supercedes OCM mapping.
Answer 11: Performance might be impacted but please test as performance is different for every customer or site.
Answer 12: Oracle does not provide any conversion tool/batch application to enable you to create *.class file. Oracle do not encourage you to create your own Java code which can be implemented in ApplicationLogic_JAR.jar
Answer 13: The B1100007 - DecimalsTriggerGetbyCOCRCD business function is called from the Table Trigger (Table Event Rules - TER) of the F4211 table. F4211 can be accessed in the following ways:
The LocalLogicCatalog.xml setting is only referred when running interactive application on JAS. Application running on JAS which access the F4211 table, and the F4211 TER invoke B1100007. System will then reference LocalLogicCatalog.xml. If run-local="true" for this business function, then it will run the business function on JAS.
If any batch application or business function which access F4211, the calling batch application or business function is already running on the Enterprise Server. In this case B1100007 is running on the Enterprise Server.
Answer 14: The following shows an example of the log entries after enabling User Specific JAS Debug log and the user runs P4210 application on the web client and clicking the Find button. You will see [RUNTIME] and [JDBJ] statements as follows: