Wednesday, October 17, 2012

DB Adapter - MaxRaiseSize, MaxTransactionSize, RowsPerPollingInterval

Database rows per XML document - MaxRaiseSize
On read (inbound) you can set maxRaiseSize = 0 (unbounded), meaning that if you read 1000 rows, you will create one XML with 1000 elements, which is passed through a single Oracle BPEL Process Manager instance. A merge on the outbound side can then take all 1000 in one group and write them all at once with batch writing
Database rows per Transactions - MaxTransactionSize
Assume that there are 10,000 rows at the start of a polling interval and that maxTransactionSize is 100. In standalone mode, a cursor is used to iteratively read and process 100 rows at a time until all 10,000 have been processed, dividing the work into 10,000 / 100 = 100 sequential transactional units. In a distributed environment, a cursor is also used to read and process the first 100 rows. However, the adapter instance will release the cursor, leaving 9,900 unprocessed rows (or 99 transactional units) for the next polling interval or another adapter instance. For load balancing purposes, it is dangerous to set the maxTransactionSize too low in a distributed environment (where it becomes a speed limit). It is best to set the maxTransactionSize close to the per CPU throughput of the entire business process. This way, load balancing occurs only when you need it
Throttling - RowsPerPollingInterval 
DB throttling is the mechanism to control the number of database records processed by the SOA engine in a particular interval through DB Adapter. Throttling also can be used to control the number of records send to the end systems. If the throttling is not defined, the end systems may flood with number of messages that will affect the functioning of the end systems. Throttling parameters should be configured based on the end systems capacity to process the incoming messages. As of Oracle Adapters release 11.1.1.6.0 we can set the inbound DBAdapter property RowsPerPollingInterval to control the throttling. It acts as a limit on the number of records which can be processed in one polling interval. The default value is unlimited. The Patch 12881289 should be applied to enable this for SOA 11.1.1.5.0 and earlier versions. The maximum rows processed per second are: Number of active nodes in SOA cluster x NumberOfThreads x RowsPerPollingInterval / PollingInterval.
MaxTransactionSize can be thought of as RowsPerDatabaseTransaction or DatabaseFetchSize that is how many records will be fetched to DB Adapter engine from the database for each transaction. It does not affect how many rows can be processed in one polling interval period.

Friday, October 12, 2012

xp20:format-dateTime() formats

xp20:format-dateTime() formats:

http://www.sugihartono.com/programming/bpel-format-date-time-reference-and-example/

xp20:format-dateTime(xp20:current-dateTime(),'[D01]/[M01]/[Y0001]')
Will produce: 07/05/2012

Format Date Time: Year
Example               Expression
2012       [Y0001]
2012       [Y]
12           [Y01]
Two Thousand and Twelve          [YWw]

Format Date Time: Month
Example               Expression
08           [M01]
8              [M]
VIII         [MI]
August  [MNn]
AUGUST              [MN]
Aug        [MNn,*-3]
AUG      [MN,*-3]

Format Date Time: Day
Example               Expression
05           [D01]
5              [D]
5              [D1]
31st        [D1o]

Format Date Time: Day Name
Example               Expression
Tuesday               [FNn]

Format Date Time: Hour
Example               Expression
3              [h]
9              [H]
08           [H01]

Format Date Time: Minute
Example               Expression
03           [m01]
3              [m]

Format Date Time: Second
Example               Expression
09           [s01]
9              [s]

Format Date Time: Millisecond
Example               Expression
257         [f001]

Format Date Time: AM/PM
Example               Expression
PM         [PN]
Am         [Pn]

Format Date Time: GMT 
Example               Expression
GMT+02:00         [z]