Friday, January 18, 2013

Wait-notify resources working

What is use of ait notify resources in TIBCO ?

 

Basically wait and notify should share a common notification configuration which is just a schema definition for data that will be passed from notifier to waiter.

 

Notification configuration with KEY:

 

Specific instances of waiter & notifyer are correlated via a key.

 

For example:

If one process is in wait state for key 'Key123', it waits till another process issues a notification with the same key value.

 

Waiting Process:

 

Notifying Process:

 

Thursday, January 17, 2013

Purpose of Lock shared configuration resource in TIBCO

What is the purpose of Lock shared configuration resource in TIBCO BW?

 

A Lock is specified for a 'Critical Section' group when the scope is 'Multiple'.

If synchronization is for process instances belonging to the same process definition inside one engine, just specify the scope as 'Single'.

It can be used to ensure synchronization across process instances belonging to multiple process definitions or for process instances across engines.

One can check multi engine flag for lock in this case and the BW engine needs to be configured with database persistence while deployment.

Use of grouping activities in TIBCO

What is use of grouping activity in TIBCO ?

Grouping activities are used for:

  1. To Generate a set of activities having a common error transition.
  2. Replicate group of activities based on a condition.
    1. - Iterate over a list.
    2. - Iterate until condition true.
    3. - Iterate on Error until condition true.
  3. Group activities into a transaction.
  4. To create a critical section area that synchronizes process instances.
  5. A 'Pick First Group' permits you to wait for the occurrence of multiple events and proceed along a path following the first event to occur.

Below details from TIBCO helps to understand the usage of Pick First Group -

                     

Pick first groups allow process execution to wait for one or more events.

The first event that completes determines which transition to take to continue processing.

For example, as part of an order-entry system, when an order is placed, a check is made to see if the order can be filled from stocked inventory or from returned merchandise. Whichever system returns the information first is used to fill the order. If neither system returns the information about available inventory, the order times out and cancels.

 

 

Wednesday, January 16, 2013

Difference between Max jobs and Flow Limit and Thread Count

The below diagram from Tibco documentation gives good overview of concepts like Max jobs, Flow Limit, Thread Count, Activation Limit etc.


The process instances created are typically held in memory. However, this may not be the case if the following parameters are set:
Max Jobs:
If the number of process instances in memory have reached the value of Max Jobs, then the process instances created are temporarily held on a disk. These process instances will be moved back into memory when sufficient memory is available.

Flow Limit:
When set, this property limits the number of process instances that can be created. If the number of process instances being created exceeds the value of FlowLimit, the engine suspends the creation of new process instances. However, it continues executing the process instances in memory. The engine resumes creating new process instances when process instances, approximately half the value specified for FlowLimit, have completed.

The number of process instances that can be created in memory is also limited by the memory available on the machine and the memory allocated to the JVM on which the process engine executes.

ThreadCount:
The process instances in memory are executed by the BusinessWorks engine. The number of process instances that can be executed concurrently by the engine is limited by the maximum number of threads, specified by property ThreadCount. Threads execute a finite number of tasks or activities uninterrupted and then yield to the next process instance that is ready.

StepCount:
The engine property StepCount determines the number of tasks that are executed by a thread uninterruptedly. However, the exceptions to StepCount occur when the job is blocked or in a transaction. When a job is in a transaction, the thread will not be released even if the StepCount is exceeded. However, if a process instance is waiting or is in a blocked state, it can be paged out and the freed memory used to process another process instance.

Activation Limit:
Activation Limit can be set if a process instance that is blocked should remain in memory till completion. Setting the ActivationLimit affects the engine performance substantially.

Factors affecting performance of TIBCO BW

Below factors decides the performance of Tibco Activmatrix BW process during runtime, So one has to decide these resources very carefully –

Hardware - CPU, Memory and Disk resources
Java - JVM and JVM configuration
Engine -  Number of engines, number of threads, job creators, flow control, job pool, etc.
Job  - Job, Message size
Process Design - User scripts, sub-processes, inline processes, checkpoints, logging activities
External software - like relational DB, other TIBCO Software product 


In addition to the components above, the performance of the BusinessWorks engine is also affected by external factors such as
  • rate of incoming messages,
  • network latency,
  • performance of external applications with whom BW processes communicate, and
  • other OS processes that may be running on the system.

Various Types of Transactions TIBCO supports

TIBCO BusinessWorks offers a variety of types of transactions that can be used in different situations. You can use the type of transaction that suits the needs of your integration project. When you create a transaction group, you must specify the type of transaction.
Latest TIBCO ActiveMatrix BusinessWorks supports the following types of transactions:
JDBC Transaction
A transaction group can have only one transaction type. The activities that can participate in the transaction are determined by the transaction type, the configuration of the activity, and the type of the activity. For example, only JDBC activities whose JDBC Connection type is "JDBC" can participate in a JDBC transaction.
Below activities are supported in JTA Transaction
The Java Transaction API (JTA) UserTransaction type allows below activities to participate in transactions.
  1. JDBC
  2. JMS
  3. ActiveEnterprise Adapter (using JMS transports)
  4. EJB activities
Below activities are supported in XA Transaction
The XA Transaction type allows below activities to participate in transactions.
  1. JDBC activities
  2. ActiveEnterprise Adapter activities that use the JMS transport
  3. JMS activities
Note:
**For JMS activities and ActiveEnterprise Adapter activities, request/reply operations cannot participate in an XA transaction.
**EJB activities cannot participate in an XA Transaction group.

Resources in the EAR file

An EAR file can contain below resources -

1.    Local project resources

2.    LibraryBuilder resources

3.    AliasLibrary resources files

4.    Files referred in CLASSPATH of the designer

5.    All the files under designer installation directory

 

 

Possible Modes of TIBCO BW Installations

There are three different modes of Tibco BW installations -
  1. GUI mode
  2. Console mode
  3. Silent mode

What is the role of TRA

TRA stands for TIBCO Runtime Agent.
The TRA has two main functions:
Provides an agent that runs in the background on each machine.
            1. The agent is responsible for starting and stopping of processes running on a machine according to the deployment information.
            2. The agent checks the machine. That information is then visible via TIBCO Administrator.
Provides the run-time environment, that is, all shared libraries including external libraries.

Tuesday, January 15, 2013

Major and minor versions of TIBCO product installation

When you install a particular version of TIBCO software e.g. TIBCO BW X.Y.Z, Question may come in your mind, what are X, Y and Z number stands for?
Here is answer:
x,y,z Combination can be at different application layers:
  1. X:Patch
  2. Y:Major
  3. Z:Minor

Difference between fault-tolerant and load-balancing

Load balancing:
It is done between 2 or more servers where the load is distributed between servers.
Fault tolerance:
It is done between 2 servers where one server acts as a primary and the second server acts as a backup server for the primary server. Whenever failure occurs for primary server, the backup secondary server becomes the primary server.