Following are the Best practices which I came across, which might be helpful to you also....
26) To increase the ADB Adapter performance, change the Table Columns dataype to string from i4 or i8 in AESchemas.
25) After importing IDOC structure in Designer, explicitly add the SAP R/3 Adapter version folder from AESChemas to the SharedArchive folder. Otherwise, it will not work post deployment.
24) TIBCO BW documentation provides various functions to deal with date and time. Refer them before using large functions.
23) If the GlobalVariable datatype is Integer and the value is String, then it will not show any error during validation but warning message will appear while building the ear. After deployment it shows the value as 0. So take care of dataTypes.
22) Whenever you use JMS Topic Subscriber as starter activity, there is a scope of data loss if you have FlowLimit setup. To avoid data loss, use of the below options.
a) Do not set the FlowLimit. Keep it to default 0.
b) Triple the FlowLimit value complared to exppected input data volume.
c) Create a Dummy Topic listener process and bridge it to Queue then use that Queue as the listener
d) Create a bridge to Queue on the EMS server and use that queue as starter activity.
22) If "JDBC Call Procedure" is not showing the resultset metadata in the output tab, there might be a chance that stored procedure is having some issues. To cross check the issue, open the corresponding ProcessDefinition file in text editor, search with the activity name. There it will show the error, if any.
21) If the Adapter connection login is taking more than the default value 15 seconds, set the following propery in odbc.ini file to narrow down the issue.
LoginTimeout=[value in Seconds]
20) When both primary and secondary EMS server down and restart, Adapter will terminate without re-connection. To avoid this, add the following two parameters in the adapter tra file, manually.
a) tibco.jmsReconnectCount=[count]
b) tibco.jmsReconnectDelay=[delay in Milliseconds]
b) Use ADB_OPCODE as 10 for child table.
18) If you want to check the SSL connectivity from designer,
a) Add the below entries in properties.cfg file and place it in TIBCO_HOME directory
Trace.Task.*=true
Trace.Startup=true
Trace.JC.*=true
Trace.Engine=true
Trace.Debug.*=true
bw.plugin.http.server.debug:true
b) In the Designer, click on Tester tab, click on Advanced button and specify following statement at "Test Engine User Args" and click on OK.
-p TIBCO_HOME/properties.cfg
c) Check the console for logs.
17) If the asciiContent contains "<?tibco-char 0?>" in the HTTP Response, then check the Accept-Encoding value in the response data. If it contains gzip, then specify ""(empty quotes) in the Headers/Accept-Encoding field in the input tab of SendHTTPRequest activity. Generally this problem comes if the webserver is HTTP 1.1 specification.
16) If we want to see the Input & Output of "SendHTTPRequest" activity from the deployed running service, enable the tracing of the same bwengine from TIBCO Admin.
15) When starting EMS Server
a) if the duplicate queue/topic names are present in respecitve conf files, while starting up, EMS Server displays the duplicate names and the server will get start.
b) If the duplicate entries are present in bridges.conf, while starting up, it displays the line number where it got the duplicate entry and server will not get start.
14) EMS Server names should be same both in Primary & Secondary while configuring EMS Servers in FT
13) If the datatype of a column is changed from integer to numeric in Adapter source table, then there is no change required in the TIBCO Adapter configuration.
12) Adding machine to DOMAIN from Command Line
Step 1: Go to TIBCO_HOME/tra/5.7/template/domainutility/cmdline
Step 2: Create a new file by copying the AddMachine.xml to another file name.
Ex: cp AddMachine.xml AddMachine_XXX.xml
Step 3: Edit AddMachine_XXX.xml, enter domain related specific entries.
Step 4: Go to /TIBCO_HOME/tra/5.7/bin/, execute the following command.
./domainutilitycmd -cmdFile TIBCO_HOME/tra/5.7/template/domainutility/cmdline/AddMachine_XXX.xml –verbose
Step 5: FINISH.
11) To change the Global Variables value at runtime, add a property like below in the application tra file and restart the application.
tibco.clientVar.Shared/JMSConnection/MaxSessions=16
10) To see the input/output of any acitivity in a perticular BW process at run time, add the following properties in the application tra file and restart the application.
Trace.Task.A/B/C/ProcessDefinition.process.Group/ActivityName=true
bw.engine.showInput=true
bw.engine.showOutput=true
Here A/B/C is the directory structure,ActivityName is the acutal activity. If no group is there, remove .Group
Note: It affects the performance of bwengine.
9) While using Notify Configuration activity, check Local Only option in the configuration tab to allow an in-memory notification when the Wait and Notify activities are performed on the same machine.
8) While dealing with DB Connections, use the folllowing property to close the Idle DB connections
java.property.bw.engine.dbConnection.idleTimeout=10 (value should be in Minutes)
7) If your Process Starter is a JMS Queue/Topic receiver,
---> Do not configure Message Type as XML Text, instead configure it as Text and parse the request using Parse xml acitivity.
--> So that you can handle the errors properly and efficiently.
6) If you want to pass some values from/to your call process and to/from sub processes,
---> Create a complex element in the Start activity Output Editor and End activity Input Editor, then define elements as you needed under it.
---> Make sure that all the elements are defined as optional although they are mandatory.
----> So that you will not get "Call process input failed validation" or "Output data invalid" errors.
5) If you are mapping to dateTime or Integer/Decimal or boolean elements, make sure that IF condition is appliled on those elements before actual mapping.
4) If you are dealing with SmartMapper
--> Use the tib:trim() function while seeding the data.
--> Use the <<SmartMapperActivityName>>/ActivityErrors/WizardOperationException/path to determine for which element Lookup returned error.
3) If you are dealing with special characters, define the special characters in a Global Variable and use the translate() function as follows
--> translate(source,GV,"") - syntax.
2) If a particular element is required in multiple conditions, first create a Varialbe and map the value to it. Then use that Varialbe in every condition where ever it is required.
1) Use tib:render-xml function instead of Render XML activity if you are not modifying XML structure. Also, by default, Render XML activity do the XML validation, not Schema validation. Also, you can't set encoding with the function, where as with activity you can.
Please share your experiences also..............
26) To increase the ADB Adapter performance, change the Table Columns dataype to string from i4 or i8 in AESchemas.
25) After importing IDOC structure in Designer, explicitly add the SAP R/3 Adapter version folder from AESChemas to the SharedArchive folder. Otherwise, it will not work post deployment.
24) TIBCO BW documentation provides various functions to deal with date and time. Refer them before using large functions.
23) If the GlobalVariable datatype is Integer and the value is String, then it will not show any error during validation but warning message will appear while building the ear. After deployment it shows the value as 0. So take care of dataTypes.
22) Whenever you use JMS Topic Subscriber as starter activity, there is a scope of data loss if you have FlowLimit setup. To avoid data loss, use of the below options.
a) Do not set the FlowLimit. Keep it to default 0.
b) Triple the FlowLimit value complared to exppected input data volume.
c) Create a Dummy Topic listener process and bridge it to Queue then use that Queue as the listener
d) Create a bridge to Queue on the EMS server and use that queue as starter activity.
22) If "JDBC Call Procedure" is not showing the resultset metadata in the output tab, there might be a chance that stored procedure is having some issues. To cross check the issue, open the corresponding ProcessDefinition file in text editor, search with the activity name. There it will show the error, if any.
21) If the Adapter connection login is taking more than the default value 15 seconds, set the following propery in odbc.ini file to narrow down the issue.
LoginTimeout=[value in Seconds]
20) When both primary and secondary EMS server down and restart, Adapter will terminate without re-connection. To avoid this, add the following two parameters in the adapter tra file, manually.
a) tibco.jmsReconnectCount=[count]
b) tibco.jmsReconnectDelay=[delay in Milliseconds]
19) If you want to change only the Parent table data but not Child table data,
a) Use ADB_OPCODE as 4 for parent table b) Use ADB_OPCODE as 10 for child table.
18) If you want to check the SSL connectivity from designer,
a) Add the below entries in properties.cfg file and place it in TIBCO_HOME directory
Trace.Task.*=true
Trace.Startup=true
Trace.JC.*=true
Trace.Engine=true
Trace.Debug.*=true
bw.plugin.http.server.debug:true
b) In the Designer, click on Tester tab, click on Advanced button and specify following statement at "Test Engine User Args" and click on OK.
-p TIBCO_HOME/properties.cfg
c) Check the console for logs.
17) If the asciiContent contains "<?tibco-char 0?>" in the HTTP Response, then check the Accept-Encoding value in the response data. If it contains gzip, then specify ""(empty quotes) in the Headers/Accept-Encoding field in the input tab of SendHTTPRequest activity. Generally this problem comes if the webserver is HTTP 1.1 specification.
16) If we want to see the Input & Output of "SendHTTPRequest" activity from the deployed running service, enable the tracing of the same bwengine from TIBCO Admin.
15) When starting EMS Server
a) if the duplicate queue/topic names are present in respecitve conf files, while starting up, EMS Server displays the duplicate names and the server will get start.
b) If the duplicate entries are present in bridges.conf, while starting up, it displays the line number where it got the duplicate entry and server will not get start.
14) EMS Server names should be same both in Primary & Secondary while configuring EMS Servers in FT
13) If the datatype of a column is changed from integer to numeric in Adapter source table, then there is no change required in the TIBCO Adapter configuration.
12) Adding machine to DOMAIN from Command Line
Step 1: Go to TIBCO_HOME/tra/5.7/template/domainutility/cmdline
Step 2: Create a new file by copying the AddMachine.xml to another file name.
Ex: cp AddMachine.xml AddMachine_XXX.xml
Step 3: Edit AddMachine_XXX.xml, enter domain related specific entries.
Step 4: Go to /TIBCO_HOME/tra/5.7/bin/, execute the following command.
./domainutilitycmd -cmdFile TIBCO_HOME/tra/5.7/template/domainutility/cmdline/AddMachine_XXX.xml –verbose
Step 5: FINISH.
11) To change the Global Variables value at runtime, add a property like below in the application tra file and restart the application.
tibco.clientVar.Shared/JMSConnection/MaxSessions=16
10) To see the input/output of any acitivity in a perticular BW process at run time, add the following properties in the application tra file and restart the application.
Trace.Task.A/B/C/ProcessDefinition.process.Group/ActivityName=true
bw.engine.showInput=true
bw.engine.showOutput=true
Here A/B/C is the directory structure,ActivityName is the acutal activity. If no group is there, remove .Group
Note: It affects the performance of bwengine.
9) While using Notify Configuration activity, check Local Only option in the configuration tab to allow an in-memory notification when the Wait and Notify activities are performed on the same machine.
8) While dealing with DB Connections, use the folllowing property to close the Idle DB connections
java.property.bw.engine.dbConnection.idleTimeout=10 (value should be in Minutes)
7) If your Process Starter is a JMS Queue/Topic receiver,
---> Do not configure Message Type as XML Text, instead configure it as Text and parse the request using Parse xml acitivity.
--> So that you can handle the errors properly and efficiently.
6) If you want to pass some values from/to your call process and to/from sub processes,
---> Create a complex element in the Start activity Output Editor and End activity Input Editor, then define elements as you needed under it.
---> Make sure that all the elements are defined as optional although they are mandatory.
----> So that you will not get "Call process input failed validation" or "Output data invalid" errors.
5) If you are mapping to dateTime or Integer/Decimal or boolean elements, make sure that IF condition is appliled on those elements before actual mapping.
4) If you are dealing with SmartMapper
--> Use the tib:trim() function while seeding the data.
--> Use the <<SmartMapperActivityName>>/ActivityErrors/WizardOperationException/path to determine for which element Lookup returned error.
3) If you are dealing with special characters, define the special characters in a Global Variable and use the translate() function as follows
--> translate(source,GV,"") - syntax.
2) If a particular element is required in multiple conditions, first create a Varialbe and map the value to it. Then use that Varialbe in every condition where ever it is required.
1) Use tib:render-xml function instead of Render XML activity if you are not modifying XML structure. Also, by default, Render XML activity do the XML validation, not Schema validation. Also, you can't set encoding with the function, where as with activity you can.
Please share your experiences also..............