Friday, March 20, 2015

BW

What is TIBCO ActiveMatrix BusinessWorks?
TIBCO ActiveMatrix BusinessWorks is a scalable, extensible, and easy to use integration platform that can be used to develop integration projects.

Scalable    : Respond to increasing demand,so that services can handle more load.

Extensible : Able to add new Business processes, allow integration of new application & it is adoptable.
Easy to use: Using GUI based designer you build Business processes easily and quickly.

How do you achieve Inter Process Communication? List its Benefits.

Inter Process Communication can be achieved using the Wait, Notify/Receive Notification & Notify configuration activities. Its useful if you want to execute the processes in an particular order, such as priority based.


How does the process containing Wait,Notify/Receive Notification activities communicate each other?
Based on the "Key" value defined for these activities.

Can Wait/Notify pass data between services running on different machines?

Yes, its possible but the storage system must be Database.

What is the use of Checkpoint activity?

Checkpoint is used to save the state of the running process instance to until its point and in case of  failure it will used to recover the process instance to that state. It can also be used for Duplicate detection.

Can you achieve Checkpoint/duplicate detection if the BW process  storage is File system?

Yes, if the process instance is running on single engine or Fault-tolerant group. It must be a Database if the process is running on multiple machines.

Where the Duplicate keys are stored?

When file based repository is used, they are stored at the following location as .job files.
When running in Designer:
C:\Documents and Settings\<username>\.TIBCO\working\<ApplicationName>\jdb_dupkeys

When Deployed:
C:\tibco\tra\domain\<domainName>\application\<ApplicationName>\working\<ApplicationName>- Process_Archive\jdb_dupkeys

How long the Duplicate Keys are stored?
By default 30 minutes. But this can be changed by specifying different values to bw.engine.dupkey.timeout.minutes in bwengine.xml

  • 0 indicates the duplicateKey is removed when the job is removed. However, if bw.engine.enableJobRecovery=true, the job is not automatically removed after a failure so the duplicateKey will remain as long as the job remains. Such a job can be restarted or purged later.
  • -1 indicates to store duplicateKey values indefinitely.
  • Any positive integer greater than 0 indicates the number of minutes to keep stored duplicateKeys.


Explain behavior of checkpoint used in called process(Sub Process).
Depending on whether the called process using spawn feature, checkpoint will saves the state differently.
For spawn Sub Process it will only save the called process instance state. For non-spawn Sub Process it will save the called process instance state along with the parent process.

Can a Process Definition have multiple checkpoints in it?

Yes, but only the state from the last checkpoint is available for recovering the process.

What is Spawn?

Spawn option available for the Call Process activity. Choosing this option will make Call Process to run on a separate process instance & output of the spawn call process will not be available.

What is Process Name Dynamic Override?
'Process Name Dynamic Override' option available for the Call Process activity, using this field dynamically determines based on the Xpath Condition evaluation which process to call when a process instance running. See the example below.


Name different Groups available in BW & Describe each.
1. No Action
2. Repeat Until True Group
3. Repeat On Error Until True Group
4. If Group
5. Pick First Group
6. Critical Section Group
7. Iterate Group
8. While true Group
9. Transaction Group

No Action:
No Action group is useful to specify a single error transition out of a group.

Repeat Until True Group:
Repeats until given condition is met. It first executes the activities in the group once & then checks the condition.

Repeat on Error Until True Group:
Repeats until there is no error/given condition met.It first executes the activities in the group once & if there are no unhandled errors then it comes out of loop, else repeats until there is no error or condition is true. Optionally you can suspend it "if Still Error".

If Group:
Conditions are evaluated in an order & this decides which path should be taken. In the example below the condition for '1' is evaluated first, if it's true then tht path taken and loop terminates. Else it will for 2nd condition evaluation & so on. If none of the condition is true then 'otherwise' transition taken.

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. In the example below, depending which sleep activity execute first that transition path will be taken.

Critical Section Group:
Critical section groups are used to synchronize process instances so that only one process instance executes the grouped activities at any given time. Any concurrently running process instances that contain a corresponding critical section group wait until the process instance that is currently executing the critical section group completes. Critical Section groups are particularly useful for controlling concurrent access to shared variables. However, other situations may occur where you wish to ensure that only one process instance is executing a set of activities at a time.

Iterate Group:
An Iterate loop repeats the series of grouped activities once for every item in an existing sequence or list. Variable List can be a set of records from a database table, or set of repeating elements response received from a Web Service or it can be a repeating element from the start activity(for below example start activity has repeating elements which is mapped in variable list).

While True Group:
Repeats as long as the given condition is true, when condition evaluates to false then then loop terminates. It first checks the condition before executing the activities in the group.

Transaction Group:
Transactions ensure that all participants in the transaction either complete or are rolled back together. Transaction Type can be of JDBC, JMS, XA, & JTA.

Which groups have Accumulate Output option available.
1. Iterate
2. Repeat until true
3. While true

What does "Iteration Element" represent in the "Iterate" group?

"Iteration Element" holds the current record of the variable list element. It facilitates the easy mapping of current record.

What are the Type of Transactions?
JDBC
JMS
XA
JTA

Which activities can be part of a Transaction Group?
JDBC Activities
JMS Activities
AE Adapter activities (only if JMS transpor tis used)
EJB Activities
Tibco iProcess BW Connector Activities

Can a Single Transaction group have multiple Transaction Types?
No, only one Transaction Type is allowed for each Transaction Group.

Can a Transaction group have multiple connection of same Transaction Type?
Yes, Its allowed. For example; a JDBC transaction group can have JDBC activities using different JDBC connection. Each set of activities that uses same connection considered a separate transaction.

Can other activities which are not a transaction capable, be a part of a transaction group?
Yes. In a Transaction Group you can include any activity. Note that if an error occurs even for Non Transaction capable activities the rollback will still occur.

List the message types available for JMS Activities.
There are 8 message types as listed below.
• Simple       —  A message with no body portion.
• Bytes         —  A stream of bytes.
• Map           —  A set of name or value pairs.
• Object       —  A serializable Java object.
• Object Ref —  An object reference to a Java object.
• Text          —  The message is a java.lang.String.
• XML Text   —  The message is XML text.
• Stream      — A stream of Java primitives, strings, or arrays of bytes. Each value must be                       read sequentially.


List the acknowledge modes available for JMS Activities
Auto: Acknowledges automatically.
Client: Must be acknowledged using confirm activity. Sessions are blocked in this mode.
DupsOK: Its like Auto Acknowledge but it acknowledges lazily.
TIBCOEMSExplicit: Its like "Client" acknowledgement but it acknowledges all the messages in one session, so Sessions are NOT blocked in this mode.
TIBCOEMSExplicit DupsOK:  Its like "TIBCO EMS Explicit" acknowledgement but it acknowledges lazily.
Local Transactional: The message is acknowledged when the transaction commits. It is used when transaction involves only JMS messages.
Transactional: Same as "Local Transaction" excpet this mode is used when a transaction that can process JMS messages is included in the process definition
No acknowledge: Does not acknowledge.

Does the destination name defined in Config tab of Sender/Publisher activity overrides the destination name specified in input tab?
No. Always the Destination value specified in input tab overrides the value mentioned in config tab. Same behavior with ,replyToQueue,jmspriority, & jmstype.

For JMS connection "Auto-Gene rate Client ID" checked, & Client ID have been defined in "Client ID" field, explain which one taken into consideration?

An attempt is made to use the specified value. However, if the specified value is already in use, a new client ID is generated. For for generating auto client ID is 
"BW-<projectName>-<topic or queue>-<engineName>-<timestamp>"

For JMS connection "Auto-Gene rate Client ID" Unchecked, & Client ID have been defined in "Client ID" field, explain what happens if that client Id already exist?

It will throw "Client ID already exists" exception.

Is "Max Sessions" field available to all type of Acknowledges Modes?

No. "Max Sessions" field is available for only Client, Transactional & Local Transactional acknowledge modes.

How the Get JMS Queue Message activity is different from the Wait for JMS Queue Message activity?

The Get JMS Queue Message activity retrieves a message from the specified queue. This activity allows you to perform a receive operation on the queue as opposed to waiting for a queue message to be delivered to the Wait for JMS Queue Message activity or the JMS
Queue Receiver process starter
• Unlike the Wait for activity, which starts listening for messages from the time the BusinessWorks engine starts, this activity starts listening for incoming messages on the specified queue from the time the activity is triggered.
• This activity can receive only one message from the specified queue at a time, when the Message Selector is not used.
• Once triggered, this activity can either gets a message from the specified destination queue name before timeout and proceeds or it throws a timeout error and exits.

What is the use of "Candidate Event Key " and "Key" elements in the "Wait For JMS queue/topic" activity.
Expression built from the data of the incoming file change event this expression should evaluate to a string and it is compared to the "key" field of the activity’s input. If the Candidate Event Key and the activity’s key match, then the process accepts the incoming message else message will be discarded.

In multi engine mode to avoid the messages pick by wrong wait for JMS activity and discard the message as the key not matched, It is recommended that you use the Wait for JMS Queue Message activity with the Message Selector. The Message Selector is applied while browsing the queue before picking up the messages.

How many ways we can specify Security Policy using security policy shared resource?
There are 4 different security policy, we can use any combination of these.
1.Authentication : Verify username/password or X.509 compliant certificates.
2.Integrity : Validate the signature for the message
3.Confidentiality : Message should be Encrypted/Decrypted
4.Timeout : Expiry time for message

What are the supported signature methods for "integrity" Security Policy?
SHA1
SHA256
SHA384
SHA512

What are the supported Encryption algorithm for "Confidentiality" Security Policy?
3DES
AES-128
AES-256


How to define BW custom engine properties?
Custome engine properties can be specified using bwengine.xml file located at <TIBCO_HOME>/bw/<ver>/lib/com/tibco/deployment . You can define these properties at 'Application level' (property to be used by any particular application) or "Engine Level' (property to be used by entire engine).

Application Level:
Add properties to this file on your local machine and build the EAR and deploy to administrator. 

Engine Level:
Add properties to this file on your bwengine and restart applications.

Properties defined in the bwengine.xml file will be displayed in TIBCO administrator  in 'Advanced' tab of the deployed application application.par.

1 comment: