Wednesday, April 6, 2011

OVER VIEW OF EAI




Types of Integration

  • Data Level

    • Technique of moving data between data stores
    • E.g.: Querying data from one or more table and writing to one or more tables

  • Method Level

    • Sharing methods existing in applications
    • E.g.: Accessing methods exposed in EJB/Application Server

  • Application Interface Level

    • Use the APIs provided by custom or packaged applications
    • E.g.: SAP, PeopleSoft and BAAN

The Middleware

  • A software that facilitates communication between two or more software systems
  • Point-to-Point integration creates a spaghetti of connections between applications Accomplish integration using a Middleware
  • Each application is an island of information

Middleware – Advantages

  • Organizes Integration
  • Hides complexities of the source and target systems
  • Eases the maintenance and accommodates change seamlessly
  • Creates a common communication protocol

Middleware – Components

  • Message
    • A unit of data, which may or may not contain header or additional information
    • Messages usually have a structure (a schema) and content (data)
  • Message Queue
    • Where the message is stored/persisted for a certain amount of time (Ideally till the subscriber receives it)
  • Publisher
    • Publishes the message from an application
    • Usually done with the help of the application’s API

  • Subscriber
    • Subscribes the message and sends it to the application using API or to the database


Middleware – Features

  • Facilitate Asynchronous and Synchronous Communication
  • Asynchronous Communication
    • An application or process, makes a call or passes data to another application and continues its process without waiting for a reply from the called application
    • Disconnects after the call is made
  • Synchronous Communication
    • An application or process, makes a call or passes data to another application and waits for reply
    • Connection is not terminated until a reply received or timed out
  • Publish
    • The Applications that makes the call or sending the data is said to be publishing data
    • Hence it is called a Publisher
  • Subscribe
    • An Applications that receives the data is subscribing to that data
    • And is called a Subscriber

Publisher - Subscriber

  • Publish – Subscribe is usually an Asynchronous communication

Request – Reply

  • Is achieved through synchronous communication
  • Publisher makes a Request to Subscriber and waits for Reply
  • Times-out when there is no-reply in a pre-defined time


Addressing Mode

    • Unicast
    • Multicast
    • Broadcast

  • Unicast

    • One Publisher, publishes a message/data to one known Subscriber
    • If the message/data needs to be sent to another subscriber, the data has to be sent again
    • When the subscriber does not receive the data then it is sent again , until it receives the data

  • Multicast

    • One publisher publishes a message/data to two or more known subscribers
    • When a subscriber does not receive the message, it is sent again, until it receives the data

  • Broadcast

    • Publish messages to more than one known/unknown subscribers
    • When the subscriber misses the message, it is lost – not guaranteed

Middleware – Types of Models

  • Logical Middleware Model
    • Point-to-Point
      • Ideal for two applications
      • Example: RPCs
      • Not fit for more than 2 applications
    • Many-to-Many
      • Links many applications to many other applications
      • Is the best fit for EAI

Middleware – Different Models

  • Physical Middleware Model

    • Bus Model
    • Hub-Spoke Model
    • Multi-Hub Model






Hub-Spoke Model

  • Is a Centralized configuration
  • The Hub acts like a server
  • All messages flow through the hub
  • All messages are queued in the server
  • Communication Protocol is Publisher-to-Server & Server-to-Subscriber
            E.g.: WebMethods
 

Bus Model

  • Decentralized Architecture
  • Network bus acts as the message carrier
  • Truly Distributed Middleware
  • Communication pattern is peer-to-peer
  • Messages are queued by Publishers
  • E.g.: TIBCO

 

Multi-Hub Model

  • Multiple Hubs are linked together
  • Load Sharing
  • Provide Fail-safe service
  • Complex to configure and maintain

 

Messaging Standards

  • The messaging standards are used by EAI and B2B integration. In fact, it is quite predominant in B2B integrations
  • Following are some of the widely used standards

    • XML – Extensible Markup Language
    • EDI -  Electronic Data Interchange
    • RosettaNet – Standards for Electronic Industry
    • IDOCs – Intermediate Document – used by SAP
    • OMG – Open Management Group Standards
    • OAG – Open Applications Group Standards


Summary

  • Integration is essential for exchanging data between Applications and external enterprises
  • Middleware delivers the following
    • Messaging Services
    • Message Routing
    • Rules Engine
    • Middleware Models
    • Hub and Spoke
    • Bus
    • Multi-hub
    • Process Automation

















Business Works

What is Business Works

TIBCO Business Works is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration projects.

Components of BW

          TIBCO Designer GUI
          BW Engine
          TIBCO Administrator
          TRA
          TIBCO Admin GUI

What is TIBCO Domain

A set of hardware and software components which can be monitored by the TIBCO Admin Server

Various Components of TIBCO DOMAIN

          TIBCO Administration Server
          Machines
          User and Access Information
          Software Components
          Projects

Monitoring and Managing Domains

  • View, add, delete and assign privileges
  • Monitor and mange the machines in the domain.
  • Monitor and manage deployments. This includes viewing, starting, or stopping the individual components, viewing process instances, and configuring traces which can then be exported to a file

Integrated Development Environment

          At design time, you use TIBCO Designer to configure services, such as adapters, and lay out your business processes.
          You can use the TIBCO Designer test mode to debug adapter configurations and process definitions.
          You can use the TIBCO Designer deployment palettes to assign process engines to individual machines.
          You deploy the project, which means scripts and other information about the processes to be run are sent to the individual machines.
          Finally, you can start the processes, which are waiting to be started, using the TIBCO Administrator GUI. You can then monitor and manage all processes using TIBCO Administrator








BW Usage scenario
Supported Elements

          Messaging
          Adapters
          Business Process Modeling
          Schema and Data Mapping
          Deployment Configuration and Management
          Run-Time Management and Monitoring

Messaging

          Guaranteed and Fault tolerant
          Distributed.
          High Throughput
          Scalable

Adapter Features

          Easy Configuration With Design-Time Adapter
          Easy Inclusion in Business Processes
          Easy Deployment and Monitoring

Business Process Modeling

          Configuration of adapter services.
          A complete set of commonly used activities such as File Read, Write, and Create, a set of email activities, timers, FTP activities, etc.
          A transformation tool that lets you map the output of one activity to the input of subsequent activities.
          Conditional transitions supporting XPath syntax.
          Grouping of activities.
          An easy-to-use design-time process debugger.



Simple Process


Other Components

End-to-end business process monitoring.

  • Track components such as adapter services or process engines.
  • Create customized logs that could include number of jobs, throughput, and so on.

Systems management.

  • Monitor system performance.
  • Monitor processes, system health, and network status.
  • Receive alerts if parts of the project are overloaded or if a failure occurred.
  • Automatically restart failed processes and send alerts.

Tracing.

  • Specify filters for tracing.
  • View log files for all machines remotely in one place.
  • User authorization and authentication.

BW example
Admin Server

  • Enforce security for the domain. TIBCO Business Works supports both authentication and authorization of users that want view access or full access to the run-time components.
  • Manage storage for server-based projects.
  • Manage registration, that is, add deployed projects and machines to a domain.
  • Send appropriate information to each machine's run-time agent when a project is deployed, and pick up alerts sent by those run-time agents.

TRA

  • Supplies the runtime environment, that is, all shared libraries including third-party libraries.
  • Supplies an agent that is running in the background on each machine.
  • The agent is responsible for starting and stopping processes that run on a machine according to the deployment information.
  • The agent monitors the machine. That information is then visible via TIBCO Administrator.

BW interactions


Install time interactions

        

Advantages of BW

  • Short Deployment cycle
  • Scalability and extensibility
  • Ease of Use
TIBCO Designer 5.X

Introduction:

  • Provides an easy to use graphical user interface
  • Used for configuration of TIBCO products
    • configure adapters using a drag and drop interface
    • Save the adapter configuration
    • Configure Business Works processes
    • Import Export resources
    • Manage multi-user projects
  • Conversion
    • To convert 4.x repos to 5.x and vice versa
    • To convert MultiFile Projects to dat files and vice versa
  • Palettes
    • TIBCO products which have a GUI for configuration, included as paletted in designer.

Starting TIBCO Designer:

Windows

  • Click  Start>Programs>Tibco>TIBCO Designer>TIBCO Designer 5.1
  • Double click on the designer.exe in the <TIBCO_HOME>\designer\5.1\bin directory
  • Run <TIBCO_HOME>\designer\5.1\bin\designer.exe from the command prompt

UNIX

  • Navigate to the <TIBCO_HOME>/designer/5.1/bin directory.
  • Type ./designer

Note: <TIBCO_HOME> refers to the path where TIBCO products have been installed
    Start up options

Project Tab

  • New empty project – to create a project from scratch

  • From template – To create a project with an existing template

  • Open Existing Project

  • Reopen Project – To open projects that have been recently worked with

  • Delete Project

 




Administration Tab








Features provided by the admin tab:

  • Convert DAT to VC files
  • Convert Files to DAT
  • Configure preferences
    • General options
    • Views
    • References
    • Others
    • XML Editing
  • Configure Runtime
    • Palette path, Class Path, User Directory & Heap Size can be specified

 

 




















Main Window

The Designer main window has these components :

  • Menu bar and menus
  • Tool bar icons
  • Four panels (starting in the top left corner and continuing clockwise):
-      Project panel
-      Design panel
-      Configuration panel
-      Palette panel

Designer Panels


Projects

  • A project is a collection of resources.
  • Represented by the top-level folder in the project panel.
  • This top-level Folder ‘s name corresponds to the project name.
  • Each new TIBCO Designer window contains one and only one project.

Resources

  • The components of a project.
  • Can be complex and contain other resources
  • Examples: Adapter configurations, BW processes.

Project Structure

  • When you save a project, TIBCO Designer creates a hierarchy of folders and files in the location you choose for the project.
  • Each top level resource corresponds to a file in a local-file system.

Using a Version Control System

  • Multi-file projects support the use of different version control systems.
  • The Projects are stored as Version Control(VC) files.
  • VC files have a folder structure.
  • Individual Folders can be accessed /modified .
  • No Impact on other components of the project.
  •  The following version control systems are supported:
    • Perforce
    • File sharing
    • Microsoft Visual Source Safe

Palettes

  • Each TIBCO application you install adds one or more  palettes to TIBCO Designer during installation
  • Palettes provide access to resources
  • Drag-and-drop resources from the palette panel into the design panel to add them to your project
  • TIBCO Designer contains a number of native palettes

Global Variables

Provide an easy way to set default values for use throughout the project

  • Click on the Global Variables tab to configure the Global Variables.

  • To create a new global variable

    • Click on Add new variable/variable group Icon
    • Specify a name
    • Assign a value
    • Press Enter

The global variable is now displayed in the global variables list.

  • Variables can also be configured to be specified on a per-deployment or a per-service basis.

Global Variables


  • To use the global variable in the fields of a resource, enter the variable name surrounded by %% on both sides
  • Most projects define some standard variables, but you may define any variables you need.

AESchema

  • TIBCO applications use schema data to describe the data structure used by the application.
  • Applications use schema to describe the data a particular subscriber or publisher receives from or publishes to TIBCO Messaging.
  • TIBCO Designer is used to define schema data for a project.
  • The schema can then be used by all resources in the project.

Import / Export of projects

·          The project saved as a local file system cannot be used by the adapters. It is mainly used during the development phase.
·          The project has to be exported as a local File or a server based Repository. You can only run an adapter if it has been saved as a .dat file.
·          The entire project or individual resources can be exported / imported.

Validating projects

  • Before you save a project, it is critical that you validate it.
  • TIBCO Designer includes reference-checking and other validation facilities that allow you to make sure a project is internally consistent. This is essential if you intend to run the project, hand it to another user, etc.
  • To validate a resource
    •  select the resource
    • then choose Resources > Validate Resource from the menu bar.
  • To validate all resources in the project
    • Choose Project > Validate Project for deployment.


Configuring an adapter instance

  • To add an adapter instance resource to the project:
    •  Left-click a resource in the palette panel and drag and release it in the design panel.
    • Right-click a resource > Add this to project in the Pop-up Window

  • Double-click the adapter instance in the project tree panel. The two high level folders visible are:
    • Adapter Services
    • Advanced

  • The next slide shows the adapter instance which has been dragged and dropped

Adapter Instance


Tabs for Adapter Instance

  • Some Common tabs in the configuration panel for an instance are:

    • Configuration
      • Provide the name of adapter instance
      • Associate Message Filters if any
    • Logging
      • To specify the types of messages (info, debug, warning, error) to be logged
      • To customize the Log file name
      • To Log to standard I/O
    • Startup
      • To provide startup banner
      • State at startup
    • Monitoring
      • To customize the Micro agents
    • Other tabs include Connection, Adapter Services etc

Configuring Services

  • Double-click the Adapter Services folder to open it. (The available resources now display in the palette panel)
  • Drag an adapter service resource from the palette panel into the design panel The configuration panel is updated to allow you to configure the service.
  • Click through the tabs and apply configuration details to configure the resource
  • Save the project, the resource is saved and can then be used at run-time







Adapter Services


Adapter Services Folder

  • Displays services supplied by the adapter (publication, subscription, request - response, request-response invocation services)

Advanced Folder

  •  Contains resources that are created by TIBCO Designer while the adapter is configured
  •  For example, each time a service is added to an adapter, a session and endpoint are created
  • Other Common resources include Advisories, Log Sinks, Timers, Transaction Controls and Metadata URLs.

Adapter Service Tabs





































TIB/Rendezvous (RV) Concepts

  • Enables exchange of data among applications across a network.
  • RV software supports many hardware and software platforms.
  • Inter-operable across different hardware/software platforms.

The components of RV

Two main components
  • TIB/Rendezvous daemon
         runs on each participating computer on your network
         All information that travels between program processes passes through the Rendezvous daemon as the information enters and exits host computers
         The daemon also passes information between program processes running on the same host
  • TIB/Rendezvous programming language interface (API)
         Rendezvous software includes several programming language interfaces
         efficient, easy to use, and compatible with most other libraries (including window systems)
Features

  • Decoupling and Data Independence
         Rendezvous self-describing data messages promote data independence
         producers and consumers of data can communicate even if they do not share the same internal representations for data
         Communicating programs can run on different hardware architectures, even though they use different bit order, byte alignment or numeric representations
  • Location Transparency
         the messaging is subject based
         the Sender need not know the listener's location (IP/network address) and vice versa
         You can dynamically add, remove and modify components of a distributed system without affecting other components
  • Reliable Delivery
         Rendezvous software takes care of segmenting and recombining large messages, acknowledging packet receipt, retransmitting lost packets, and arranging packets in the correct order

Benefits of Programming with TIB/Rendezvous Software

Benefits during Application Development:

  • Eliminates the need for applications to locate clients or determine network addresses.
  • Simplifies the development of distributed application systems by hiding the networking details.
  • Makes it easy to develop resilient systems - redundant data producers are transparent to consumers.
(A producer is any application that sends data. A consumer is any application that receives data.)


Benefits during Application Use

  • Can publish broadcast messages to distribute information quickly and reliably to many consumers.
  • Can use request/reply interactions, such as queries or transactions.
  • TIB/Rendezvous applications are location independent, and port easily between platforms.

Benefits as Applications Evolve

  • Maintainable
  • Scalable
  • Longer useful lifetimes
  • Portable

How TIB/Rendezvous Software Works with Your Application



TIB/Rendezvous Daemon

  • Runs as  background process (rvd)
  • Takes care of Network details/communication
  • Data transport, Packet ordering, receipt acknowledgment, retransmission requests, and dispatching information to the correct application processes
  • Invisible to the applications that depend upon it. 

Interactions Between Applications

  • Publish/subscribe interactions, such as distribution of information to multiple recipients.
  • Request/reply interactions, such as queries or transactions to individual services.


Publish/Subscribe Interactions

  • These interactions are driven by events
  • A publisher makes information available for general distribution.
  • Communication is in one direction (publisher to subscribers), and often one-to-many.
  • The complete interaction consists of one broadcast message, published once, and received by all subscribers.


Publish/Subscribe Interactions (examples)

  • Securities data feed handlers publish the latest stock prices to hundreds of traders on a trading floor simultaneously.
  • Materials movement systems distribute data to various materials handlers, controllers and tracking systems on a factory floor.
  • Inventory levels flow continuously to accounting, purchasing, marketing and other departments in a retail store.
  • A bug tracking database immediately sends bug reports and updates to all personnel interested in a particular project.
  • A master database publishes updates to a set of internet mirrors.

Request/Reply Interactions

  • Demand for data drives request/reply interactions.
  • A client requests data from a server,
  • the server computes an individual response and returns it to the client.
  • The complete interaction consist of two point-to-point messages-a request and a reply.



Request/Reply Interactions(examples)

  • Transaction processing (as in ATM banking).
  • Database query (with a remote DBMS).
  • Factory equipment control.


Points to remember
  • A producer does not send data until a consumer makes a request.
  • Each program sends its message to a specific inbox within the other program.
  • The requesting consumer listens until it receives the reply, and then stops listening

Subject Names

  • Each message has a Subject Name.
  • A subject name is a character string that specifies the destination(s) of a message.
  • Subject Name can also describe the message content.
  • Sending and receiving applications must agree upon a subject name
  • Subject-based addressing technology enables anonymous messaging
  • have the freedom (and the responsibility) to establish conventions for using subject names
  • Subject names consist of one or more elements separated by periods.
  • The elements can be used to implement a subject name hierarchy that reflects the structure of information in an application system.

Subject Names (examples)

  • Valid Names
NEWS.LOCAL.POLITICS.CITY_COUNCIL
NEWS.NATIONAL.ARTS.MOVIES.REVIEWS
CHAT.MRKTG.NEW_PRODUCTS
CHAT.DEVELOPMENT.BIG_PROJECT.DESIGN
News.Sports.Baseball
finance
This.long.subject_name.is.valid.even.though.quite.uninformative
  • Invalid Names
News..Natural_Disasters.Flood (null element)
WRONG. (null element)
.TRIPLE.WRONG.. (three null elements)

Subject Names (examples)

  • Max 500 chars
  • Can contains multiple elements
  • Case Sensitive
  • Can contain up to 100 elements
  • Each element max chars - 255

Some issues with elements

  • For better performance use
         less no of elements (4 or 5)
         less no of chars in an element (not > 50)
  • Make them meaningful
  • Develop conventions for clarity


Wildcards

  • * - One element
  • > - Any number of elements
  • Listening on wildcards is okay (take care)
  • Never publish on wildcards

Reserved elements

  • The following elements are reserved.  Do not use them.
         _INBOX
         _RV
         _LOCAL
         _RVCM
         _RVFT

Quality of Service(Transport)

  • Reliable Messaging
  • Certified Messaging
  • Distributed Queue

Reliable Messaging

  • Minimal network overhead beyond the message itself.
  • No file storage overhead.
  • Rendezvous daemons inform programs when data is lost.
  • No information about the lost data is available.
  • Rvd retains outbound messages for 60 seconds.
  • 60 seconds, or Rvd process termination—whichever is first.

Certified Messaging

  • Offers greater certainty of delivery—even in situations where processes and their network connections are unstable.

  • FEATURES
         Certainty – Maintains Order
         Ledger Recording
         Graceful Degradation – From certified to reliable

Certified Messaging - Benefits

  • Individual confirmation of delivery for each message
  • Order of messages is maintained
  • Delivery even in case of intermittent physical network connections

Limitation
  • Not Recommended for High Data rates.
Distributed Queue

  • Certified Delivery Behavior
  • Group of cooperating transport objects, each in a separate process
  • All groups members listen on the same subject
  • Members share same CMQ name
  • Senders are not group members
  • Member Roles—Worker and Scheduler
  • Inside the group, the member acting as scheduler assigns each task message to exactly one of the other members
  • Load Balancing

Distributed Queue - Architecture

Fault Tolerance

  • Helps achieve fault tolerance by coordinating a group of redundant processes
  • Some processes actively fulfill the tasks of the program, while other processes wait in readiness
  • When one of the active processes fails, another process assumes active duty.

Fault Tolerance Vs Distributed Queue

  • Fault tolerance requires that every member of a fault tolerance group receive each message.
  • each message to a distributed queue group is received by exactly one worker in the group

A program cannot simultaneously be a member of a fault tolerance group and a member of a distributed queue

Transports

  • Applications create Transports with RV daemon process
  • Transport Parameters
         Service
         Network
         Daemon
Service

  • A UDP port number
  • Default = 7500 (Can be modified by Sys admin)
  • Communication across networks
  • As a direct result, services divide the network into logical partitions called service groups.
  •  Each session belongs to a single service group.
  • A session can communicate only with other sessions in the same service group.
  • To communicate with more than one service group, applications must initialize more than one session.

Network

  • Only one network card for your machine
         You don’t need to worry about this parameter
         Otherwise, specify the IP address or host name
Daemon

  • Specifies the rvd client socket TCP port #
  • Default 7500
  • If you want to connect to an rvd on another machine ….
  • Use it along with Host name or IP address
  • Ex:
         -daemon “tcp:8000”   (local)
         -daemon “tcp:itl-pc-3424:8000”  (remote)

Fields in Rv Message

  • TIB/Rendezvous programs exchange self-describing data. Each item of self-describing data consists of four parts:
  • Data-the data itself.
  • Type-an indicator to manipulate and interpret the data as an integer, a string, a composite message, or other datatype.
  • Size-the number of bytes that the data occupies.
  • Name-  the name of a field within a composite message





































Basics of JMS

JMS is a specification that defines a set of interfaces and associated semantics, which allow applications written in Java to access the services of any JMS compliant Message MOM product."

  • Originally developed(by Sun) to provide a standard java interface to legacy MOMs like IBM and Tibco.         

  • Specification for message passing among distributed s/w components.

  • JMS is only useful if there are any compliant MOMs
Eg:MQSeries from IBM, SonicMQ from Progress Software, FioranoMQ from Fiorano, TIBCO etc     
          "JMS is an API used to access the facilities of a MOM from a Java application.“

  • Frees from security burdens as JMS Server provides security through administered objects

  • Enterprise Java Beans can use JMS for message passing among beans.


Why JMS ?



Types of Messaging

      • Point To Point
        • Uses queues
        • the messages are in a queue, waiting to be retrieved.
        • almost parallel to e-mailing

      • Publish / Subscribe
        • Uses topics
        • Message subscribers receive messages only when they are active, and they have subscribed to the topic on which the  message was sent. Therefore, there is a time dependency.
        • Can be avoided if durable subscribers are used.
(TopicSubscriber subscriber =  session.createDurableSubscriber(topic,durableName);)

Message Delivery Modes

  • Persistent: at-most-once. -Performance
Can lose the message but must not deliver it more than once.

  • Non-Persistent: once-and-only-once. -Reliability
must not allow the message to be lost and it must not deliver it more than once.
                             Persistence != Reliability
         
  • Delivery mode only covers the transport of the message to its destination.

  • Retention of a message at the destination until its receipt is acknowledged is not guaranteed by a persistent delivery mode.

TIBCO JMS - Features

  • Support for both queue and publish/subscribe APIs
  • Fully-compliant with the JMS specification
  • C-based server process for optimum performance
  • Lightweight pure-Java client library for maximum compatibility
  • Full authorization and access control
  • Queue and subscriber administration
  • All extensions made without changes to API, so your programs retain their standardization
  • Seamless bi-directional connectivity with TIBCO Rendezvous™
  • Interoperability with all of TIBCO's EAI, B2B Integration, Portal and BPM solutions

TIB JMS Server

  • Functions as an intermediary to handle message passing among clients.

  • C-based server process for optimum performance

  • Client isn’t burdened to monitor the receiving client,network failure etc.

  • Transparently handles network-related issues like reliable delivery which involves transaction processing and/or persistent message storage.


Administration Tool

  • Helps to create topics and queues

  • To add security features etc.

Some executable commands:

          add             addprop     autocommit       commit
          connect       create        delete                disconnect
          exit              grant          revoke               show
          info              purge          remove             shutdown

Messaging Implementation









Q: Describe a scenario when duplicate messages can come
Ans: In case of RVCM messages, acknowledgement might get lost or was not sent as process engine crashed. However process data was check pointed. Publisher resends the message.

Q: How is duplicate detection performed?
Ans: Duplicate messages should be detected and discarded to avoid processing the same event more than once. Duplicate detection is performed when a process instance executes its first Checkpoint activity. You must specify a value for the duplicateKey element in the Checkpoint activity input schema. This value should be some unique key contained in the event data that starts the process. For example, the orderID value is unique for all new orders.
The following describes the procedure for duplicate detection by the process engine:
  1. An incoming message is received and a process instance is created.
  1. Activities in the process instance are executed until the first Checkpoint activity is reached. The Checkpoint activity has a value specified for the duplicateKey input element.
  1. The process engine checks the current list of duplicateKey values for a matching value.
    1. If no process instance has stored the given duplicateKey value, the process engine stores the value and completes the Checkpoint activity.
    1. If another process instance has already stored the given duplicateKey value, the process engine terminates the process and throws a DuplicateException.
  1. Once a process engine stores a duplicateKey value and performs the Checkpoint for a process instance, no other Checkpoint activities in the same process instance can be used to store a different duplicateKey value

Q:What are the deployment tools available for command line scripting?
Ans: buildear and AppManage.  Buildear can build an ear file . You need to specify path to enterprise archive in designer, path to designer repository and path to the new archive to be created. AppManage can produce a deployment config file and can be used to upload the ear file and config file into the administrator server. It can be used to do various things like deploying on multiple servers, create config files for already deployed components which can be used to deploy them on other environments, delete a component from server etc.

Q:What are the two ways of ensuring that process instances run sequentially in the order of their creation?
Ans: All process starters allow you to specify a sequencing key. All the process instances with the same value for this key will be executed in sequence, however any processes with different values for this key can still execute concurrently.
Second way of ensuring this is that administrator allows you to configure how many process instances can live in memory and maximum number of concurrently running processes. By setting these configurations also you can ensure the same. However first message is preferable, second should be used only when you cannot change the code or you have to do it at deployment time.
Q: What are the locally defined and globally defined schema elements when defining a schema?
Sol: XML Schema elements can be declared locally or globally. Local elements exist within the context of their parent element only. Accordingly, you could have a local element named title that appears within a book element and another local element named title that appears within a mortgage element. Global elements are declared such that they can be referenced within any content model. All global elements must have unique names.

Q: Name some of the headers in a JMS messages and what are the headers fields filled by a client (sender/publisher).
Sol: JMSMessageId, JMSReplyTo, JMSCorrelationId, JMSRedelivered, JMSExpiration, JMSType. There are 10 of them.

Q: When a process is suspended (e.g by checking ‘Suspend if still error’ option in case of ‘repeat on error until true group), how can you configure a automatic action to be taken. (note this can be done as part of some deployment configuration).
Sol:  This is not complete answer. In case of ‘repeat on error until true group’ group, resuming the process instance, it will resume before the ‘repeat on error until true group’ group i.e. whole group will be executed again and all process instances will be reset as if it was never executed before.

Q: What are different types of variables in BW?
Ans: Global Variables, Process Variables, Shared Variables.

Q: What are the types of process variables?
Ans: Pre-defined process variables, user-defined process variables, error process variables, output process variables.

Q: what are the two types of predefined process variables:
Ans: $_globalVariables, $_processContext., $_error

Q: what type of information is stored in $_processContext  predefined process variables and names a few of them:
Ans: These type of variables store information like process id, project name, whether the process was started from a checkpoint etc. Few of the names are: ProcessID, ProjectName, RestartedFromCheckpoint, EngineName, CustomInfo, TrackingInfo.

Q: Rules for global variables?
Ans: Only global variables which has ‘Deployment’ option checked and only those who follow the XML naming rules (e.g. % cannot be in the name) are shown in the $_globalVariables.

Q: How error process variables values are are shown?
Ans: $_error contain the general error information and $_error_<Activity Name> is also produced sometimes.

Q: Some important points about shared variables:
Ans: Job shared variables do not have the persistent and multi-engine options.
If many process instances share the ‘Shared Variables’ in the same process engine, then if persistent field is checked, value of shared variable can be persisted in file system or database depending upon how process engine is configured. However If multi-engine option is selected then persistent is by default and it has to be persisted in a database i.e. all process engine should use the same database for storage.  Note that sharing ‘Shared variables’ among multiple process engine is only possible in case all process engines are part of same deployment and part of same load-balancing group.

Q: what are the new features in b/w 5.4 as compared to 5.2
Ans: There are two more types of groups namely ‘while true’ and ‘if’.
There are no ‘Policy’ and ‘Service’ palettes in 5.2.
In General Activity pallette, there are 4 more quite useful activities: Rethrow, Catch, CustomActivity and Notification Timeout.
Administrator can be configured to use rv, http/https or ems as transport for inter-domain communication, this was not possible prior to tra5.3

Q: What are the modules in the administrator?
Ans: User Management, Resource Management, Application Management.

Q: In application management module, when you click on an application, its configuration panel is presented in the right pane. What is displayed in this panel and what can you configure in each of them?
Ans:  Configuration panel shows three things in the form of a tree in the following order:

Application
          Service
                   ServiceInstance

By clicking on ‘application’, one can change the global variable values.
By clicking on ‘Service’, one can configure the monitoring options. You can add the service to more machines in the administrator domain.
By clicking on ‘ServiceInstance’, one can configure logging, whether to run as an instance or as a windows service and shutdown options. You can set various jvm options like classpath, memory etc.

Q: What are things that can be done using DomainUtility?
Ans: Create or delete domains, add/remove a machine into a domain, upgrade administrator domains, manage administrator servers, add/remove administrator plugins like EMS/servlet engine.

Q: What is the difference between hawk monitoring from administrator and hawk console?
Ans: If you deploy a hawk rulebase (*.hrb file) from administrator then it is saved in the ‘TIBCO_TRA_DOMAIN_HOME\domain-name\rulebase’ directory of the target machine. If the original rulebase is changed, it must be reloaded into the configuration and application must be redeployed. This seems to be disadvantage and may be with every new release, rulebases will have to be configured again.

Q: What is the benefit of using database as BW storage?
Ans: a) If using database as storage for bw, process engines (assuming (and they should be as otherwise it does not make sense for them to be in fault tolerance) in a fault-tolerance group can restart the process instances from their last check-pointed state. Second, using database, wait and notify activities can pass data between processes/services running on different machines. If BW is not using database but a filesystem for its storage then they cannot communicate across machine.

Q: How are tables for BW storage created in a database?
Ans: Either you can create them manually or they can be created automatically when you deploy an application after choosing database as the storage (in the advance tab of a service).

Q: How do you control the execution of process instances during deployment?
Ans: Using ‘Max job (in memory)’ and ‘Flow Limit (max jobs in memory + paging)’ are the two fields which can be used to control the execution of process instances. Paging involves some overheads so if system has enough resources then set the Max Job to 0; this allows the process engine to create unlimited number of process instances without paging. When the flow limit is reached, process started is suspended and no more requests are accepted. You should consider the kind of activity the process starter is as while configuring these values. In case of ‘http receiver’, client may not be able to connect but in case of others such as rendezvous, jms, receive email etc activities, it will work normally as messages will remain on the sender side and will not be lost. These will be accepted by the process engine when Flow limits goes below its maximum value.

Table 3 Effects of various configuration settings
Max Jobs
Activation Limit
Max Jobs (Flow Limit)
Description
0
Cleared or selected
0
An unlimited number of process instances can be created and concurrently loaded into memory.
Activation Limit is ignored when Max Jobs is set to 0.
0
Cleared or selected
N
No paging of process instances. Allows up to N process instances before placing process starter in flow controlled stated.
Activation Limit is ignored when Max Jobs is set to 0.
1
Selected
N
One process instance is loaded into memory at a time and kept there until it completes its execution. This guarantees incoming events are processed in the order in which they occur. Up to N process instances are paged to disk, and then the process starter is placed into flow controlled state.
Note: If your goal is to sequentially process incoming events, use the Sequencing Key field on the Misc tab of the process starter. Using Max Jobs and Activation Limit incurs overhead as process instances are paged to disk and retrieved from disk.
1
Selected
0
Once process instance is loaded into memory at a time and kept there until it completes its execution. This guarantees incoming events are processed in the order in which they occur. There is no limit on the number of process instances that can be created and paged to disk.
Note: If your goal is to sequentially process incoming events, use the Sequencing Key field on the Misc tab of the process starter. Using Max Jobs and Activation Limit incurs overhead as process instances are paged to disk and retrieved from disk.
1
Cleared
N
One process instance is loaded into memory at a time, but up to N process instances are created. Incoming events can be processed in any order because process instances are not kept in memory until they complete execution.
M
Selected
0
An unlimited number of process instances can be created, but only M are loaded into memory and processed concurrently.
This setting ensures a limited amount of concurrent processing. This situation is useful if you have limited resources, such as database connections. You can set Max Jobs to a relatively small number and the Activation Limit option keeps each service in memory until the service completes. Each loaded process uses a machine resource until the service completes. Once a service releases the resource, a new process can be loaded into memory and the corresponding service can use the resource.
N
Same as above, except only N process instances are created before the process engine is placed in the flow controlled state.
M
Cleared
0
An unlimited number of process instances can be created, but only M are loaded into memory and processed concurrently. After M process instances are created, new process instances are paged to disk. There is no guarantee of the order in which process instances are executed.
N
Same as above, except only N process instances are created before the process engine is placed in the flow controlled state.


Q: Why there is no ‘Max Session’ field on configuration tab of ‘Get JMS Queue Message’,  ‘JMS Queue Requestor’, ‘JMS Queue Sender’, ‘JMS Topic Publisher’, ‘Reply to JMS Message’, ‘Wait for JMS Queue Message’ and ‘Wait for JMS Topic Message’ activities
Ans: ‘Session’ field allows you to specify how many sessions you want to create to handle the incoming messages on this process. Generally, until a message is acknowledged by the ‘Confirm’ activity (if not in ‘auto’ or ‘Dups OK’ confirm mode) another message won’t be processed by a session. So if there are 5 sessions that means there can be at  max 5 messages processed (or same number of process instances) at any time. As one message is acknowledged, a new process instances will be created to handle the new incoming message.

Having mentioned that it is clear that ‘Max Session’ field is meaning full only for those activities which receive or subscribe messages. So this field will have no meaning for ‘JMS Queue Requestor’, ‘JMS Queue Sender’, ‘JMS Topic Publisher’, ‘Reply to JMS Message’ activities.

In case of ‘Get JMS Queue Message’, ‘Wait for JMS Queue Message’ and ‘Wait for JMS Topic Message’, they are supposed to get only one message at a time so there is no ‘Max Session’ field in them as this would be 1 by default.

Q: Why is it so that ‘Max Session’ field is editable in case of ‘JMS Queue Receiver’ and non-editable in case of ‘JMS Topic Subscriber’ when ‘Acknowledge Mode’ is selected is ‘Client’ or ‘Transactional’.
Ans: This is due to the basic behaviour of ‘queues’ and ‘topics’. In case of queues, there can be more than one receivers but a message will be delivered one and only one receiver. But in case of topic a published message can be subscribed by more than one subscriber. A value of more than 1 in ‘Max Session’ fields means that there will be actually more than 1 instance of that process waiting for the message. So having more than 1 value in case of ‘‘JMS Queue Receiver’ makes sense as all the messages will be create a new process instance with a guarantee that each message will be processed only once. However if we have a ‘Max Session’ value of more than 1 in ‘JMS Topic Subscriber’ that will mean there can be as many process instance which may process the same message more than once and that is why this field is set to 1 and is non-editable in case of the ‘JMS Topic Subscriber’


Q: What are the acknowledgement modes in ‘JMS Queue Receiver’, ‘JMS Topic Subscriber’, ‘Get JMS Queue Message’, ‘Wait for JMS Queue Message’ and ‘Wait for JMS Topic Message’ activities?
Ans: All of these activities except ‘Wait for JMS Topic Message’ have all the acknowledgement modes available to them. i.e.
1)    Auto
2)    Client
3)    Dups Ok
4)    Transactional
5)    Tibco EMS Explicit
6)    Tibco EMS No Acknowledge

However in case ‘Wait for JMS Topic Message’ there are only three of them:

1)    Auto
2)    Dups Ok
3)    Tibco EMS Explicit

  • Auto — the message is automatically acknowledged when it is received.
  • Client — the message will be acknowledged at a later point by using the Confirm activity. If the message is not confirmed before the process instance ends, the message is redelivered and a new process instance is created to handle the new incoming message. Ensure that your process definition confirms the message when using this acknowledge mode.
  • TIBCO EMS Explicit — this mode behaves exactly the same as the Client mode, except the session is not blocked and one session can handle all incoming messages. This mode is only available when using TIBCO EMS.
  • TIBCO EMS No Acknowledge — messages delivered using this mode do not require acknowledgement. Therefore messages in this mode will not be redelivered regardless of whether the delivery was successful. This mode is only available when using TIBCO EMS.
  • Dups OK — the message is acknowledged automatically when it is received. JMS provides this mode for lazy acknowledgement, but TIBCO BusinessWorks acknowledges messages upon receipt.
  • Transactional — this mode is used when a transaction that can process JMS messages is included in the process definition. The message is acknowledged when the transaction commits. See TIBCO BusinessWorks Process Design Guide for more information about creating transactions that JMS activities can participate in.
Q: When is the 'Output Editor' tab enabled in JMS activities
Ans: When JMS message type is Map, Stream or XML Text.
Q: What are the different ways of handling errors in a BW process?
Ans:
Approach 1 à Use ‘Generate Error’ activity. When this activity generates an error, error control is given to the next higher exception scope. So you can use it inside the groups or subprocesses.  Draw an error transition from an activity, and use Generate Error activity. Using the End activity of a process you can define one or more error schemas. You can select one of these schemas in the ‘Generate Error’ schama.
Upon execution of Generate Error activity, If there is an ‘error transition’ from the subprocess call (or group in which it was called), that transition will be followed. If there is no error transition but there is a Catch activity, then catch activity will get the control (if catch activity is in the subprocess it will get the control, if it is not in subprocess but there is one in calling process that will get the control provided there was no error transition from the subprocess call as previously mentioned.). Transitions cannot be drawn from a ‘Generate Error’ activity.
Approach 2 à You can place a Catch activity in your process definition to deal with unhandled exceptions. The Catch activity allows you to create a track that handles the exception and proceeds to the end of the current scope; either the end of the process definition or the end of a group. You can use the Catch activity as an alternative to individually handling exceptions for each activity, or you can use error transitions to handle some exceptions and the Catch activity to handle others. In a process you can have more than one catch activity, but each one of them should catch a different exception. You can define catch activity which will catch all exceptions. So if there is an exception which is not specifically handled by any of the catch activity then this catch activity will catch rest of the exceptions.
Rethrow activtity allows you to throw the exception currently being handled by the catch path. Transitions cannot be drawn to a catch activity.
Q: What all different types of activities can take part in a transaction in BW?
Answer: JDBC activities, JMS activities, EJB activities, TIBCO IProcess BusinessWorks Connector activities, TIBCO ActiveEnterprise adapter activities when configured to use JMS transport.
Any activity can be configured inside a transaction group but only activities belonging to above group can actually take part in a transaction.
If a transaction commits, all eligible activities commits, if transaction rollsback, all eligible activities rollbacks.
Q: Important points while configuring JTA User Transaction transaction type.
Sol:  JDBC activities in a JTA UserTransaction must be configured to use JNDI and specify the datasource in the application server. All JMS activities should use the XA connection factory in the application server.

Question: What are different types of administration domains available? And what are main points of each of them?
Sol: They can be of two types:
a) Tibco Rendezvous Administration Domain:
b) Tibco EMS Administration Domain:
In case of RV Domain, domain data can either be stored as files or database. In case of EMS domain, domain data can only be stored as database.
In case of RV domain, all three (http, Local and RV) type of transports are available for application data. For EMS, only Local transports are available.
Only RV domain allows administration servers to run in a load balanced mode, which also provides failure recovery, where secondary server continues to run when primary server goes down.

Q:  Can job shared variables be persisted across BE Engines? Why?
Sol: No. As they work in between called and calling process and both of them always exists in the same BW engine. This cannot work across JVMs.

Q:  Difference between different types of deployments in administrator (local, RV & http/s). Any pros/cons for them?
Sol: Local: repository (& global variables and other settings) are created on the same machine on which deployment is done. Process instance can run without administrator being running. You can start/stop irrespective of admin running.
RV/http: Repository and other data is deployed on server (in file or database as configured in domain) and process instances seek the data RV or http depending upon which transports used.

With http you can work through the firewall etc (not 100% sure of this particular thing).

Q: What are advantage and disadvantages of using Local application data?
Ans: Advantages: applications can run independent of administrator server so if server crashes there is no impact on the application. Bcoz local service instance uses no memory, this increases the performance of administrator server.
Disadvantages are: main disadvantage is synchronization. e.g. if while domain update time, a subset of a machine in the domain are down and are later started, they may start the components with old configurations. This can result in severe problems. Another is security as these local repos may contain information like username/password. Even though they are weakly encrypted, very good network security measures should be taken.

Q: What are the advantages and disadvantages of using server based application data?
Ans: Advantages is that there are no sync related issues. Disadvantage is that each repository instance on server consumes memory and thread. Memory requirements are usually 3-5 times the size of repository. Now with many repositories this can lead to lots of memory requirement.

Q: How administrator is is configured to run in a load-balanced/fault tolerance mode?
Ans: Note that LB/FT in tibco administrator is not a complete LB/FT. You can run multiple admin servers with one acting as primary server and other acting as secondary servers. They you tibco RVDP (distributed protocol). This can be done via domainutility or changing the repo.master property in the tibcoadmin_<domain_name>.tra file. This property contains the name of server acting as the primary server so if primary server crashes then rest of the group will not choose primary server automatically but you will have to change this property in the secondary server (and also preferably change in primary server which just crashed) to correct primary server and restart all of them. All read operations are distributed among all the servers, however only primary server can update the data.

Q: What are the limitations of a secondary server?
Ans: If primary server has crashed, you can use the secondary server to start/stop processes but you cannot undeploy, deploy or delete the applications.


Q: describe situation when it is required to have a database for TIBCO BW process data storage:
Ans : --When using shared variables to pass data among process instances running on multiple engines.
--When using critical section groups across multiple engines require database as storage (e.g for lock shared resource (check it)).
--When using wait/notify activity across multiple engines.
--Duplicate detection of messages across multiple engines after restarting the processes from a checkpoint.

1.What are the modes of TIBCO BW Installations ?
*       GUI mode
*       Console mode
*       Silent mode
2.If you have installed a particular version of TIBCO software e.g. TIBCO BW X.Y.Z, What are X, Y and Z number stands for?
Integration can be at different application layers:
*       X:Patch
*       Y:Major
*       Z:Minor
3.What is the role of TRA?
TRA stands for TIBCO Runtime Agent.
The TRA has two main functions:
*       Supplies an agent that is running in the background on each machine.
1.    The agent is responsible for starting and stopping processes that run on a machine according to the deployment information.
2.    The agent monitors the machine. That information is then visible via TIBCO Administrator.
*       Supplies the run-time environment, that is, all shared libraries including third-party libraries.
4.What are the resources that gets included in the EAR file, created by the TIBCO Designer?
An EAR file can contain local project resources, LibraryBuilder resources, and files as specified in AliasLibrary resources. In addition, the TIBCO Designer classpath may include references to other files that are included in the EAR file.
TIBCO EAR file

5.What are the revision control system options available in TIBCO designer?
*       File sharing
*       VSS
*       Perforce
*       XML Canon
*       ClearCase
*       iPlanet
*       CVS
*       PVCS
6.What are the different modes of service invocation?
Services can be invoked in several ways.
*       A one-way operation is executed once and does not wait for a response.
*       A request-response operation is executed once and waits for one response. In a request-response service, communication flows in both directions. The complete interaction consists of two point-to-point messages—a request and a response. The interaction is only considered complete after the response has arrived.
*       Publication (notification) means an operation sends information on an as-needed basis, potentially multiple times.
*       Subscription means incoming information is processed on an as-needed basis, potentially multiple times.
7.What is vcrepo.dat?
TIBCO Designer creates a file named vcrepo.dat in the project root directory when you first save the project. This file is used to store properties such as display name, TIBCO Rendezvous encoding, and description. This file can be used for identification in place of the project root directory and can be used as the repository locator string (repoUrl).

8.What are the TIBCO BW activities that can participate in transactions?
Not all TIBCO BusinessWorks activities can participate in a transaction. Only the following types of activities have transactional capabilities:
*       JDBC activities
*       JMS activities
*       ActiveEnterprise Adapter activities that use JMS transports
*       EJB activities
*       TIBCO iProcess BusinessWorks Connector activities
9.What are the different types of Transactions TIBCO provides?
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. TIBCO BusinessWorks supports the following types of transactions:
*       JDBC
*       Java Transaction API (JTA) UserTransaction
*       XA Transaction
10.What activities are supported in JTA Transaction?
The Java Transaction API (JTA) UserTransaction type allows:
*       JDBC
*       JMS
*       ActiveEnterprise Adapter (using JMS transports)
*       EJB activities
to participate in transactions.

11.What activities are supported in XA Transaction ?
The XA Transaction type allows:
*       JDBC activities
*       ActiveEnterprise Adapter activities that use the JMS transport
*       JMS activities
to participate in transactions.
Note:For JMS activities and ActiveEnterprise Adapter activities, request/reply operations cannot participate in an XA transaction. Also, EJB activities cannot participate in an XA Transaction group.

12.What are the possible Error output's of Read File activity?
Integration can be at different application layers:
*       FileNotFoundException :Thrown when yhe file does not exist.
*       UnsupportedEncodingException:Thrown when the text file’s encoding is not valid and the content of the file is read into process data.
*       FileIOException :Thrown when an I/O exception occurred when trying to read the file.
13.What is the purpose of the inspector activity ?
The Inspector activity is used to write the output of any or all activities and process variables to a file and/or stdout. This is particularly useful when debugging process definitions and you wish to see the entire schema instead of mapping specific elements to the Write File activity.

14.What are the maximum/minimum of threads available for incoming HTTP ?
The maximum/minimum of threads available for incoming HTTP : 75/10

15.How can unauthorized users be prevented from triggering a process ?
Unauthorized users be prevented from triggering a process by giving 'write' access for the process engine to only selected users. Only users with 'write' access can do activities like deploying applications, starting/stopping process engines etc.

16.What are the mandatory configuration parameters for FTP Connection & FTP with firewall ?
The mandatory configuration parameters for FTP Connection
*       FTP host
*       Port
*       Username & Password>
If Firewall is enabled in addition the proxy host and port are required.


17.how to design a process such that depending on number of records updated in a database, 3 different sub-processes may be called ?
Define 3 transitions from JDBC update with condition on the no of updates and call appropriate child processes.

18.How to use legacy .dat file format with latest designer ?
Convert .dat file to multi file project using Administration tab while starting up Designer(Other one being Project tab) and then open the multifile project in the normal way.

19.What are the encodings supported by designer ?
Encodings supported by designer are
*       ISO8859-1(Latin-1)
*       UTF-8
20.What are the 4 main panels of the Designer window ?
The 4 main panels of the Designer window are
*       Project panel
*       Palette panel
*       Design panel
*       Configuration panel
21.How do you determine if there are broken references in the project?
Project -> Validate for deployment

22.Where are the Designer preferences stored ?
Designer preferences stored are stores in a file called 'Designer <ver>.prefs' in the user home directory.

23.Explain the process configuration parameters - Max Jobs, Flow Limit & Activation Limit ?
*       Max Jobs :
Max Jobs specifies the number of process instances that are kept in memmory. Once this limit is reached newly created process instances (subject to flow limit) are paged out to disk.0 specifies no limit and is the default.
*       Flow Limit :
Flow Limit specifies the maximum number of running process instances that are spawned before the process starter is suspended ie it enters a FLOW_CONTROLLED state and does not accept new events. This can be used to control the number of process instances running simultaneously and when the protocol generating the event can store the event till it is received, like email servers, JMS, RV etc. 0 specifies no limit and is the default.
*       Activation Limit :
Activation limit flag specifies that once a process instance is loaded it must be placed in memmory till it completes execution. By default it is enabled.

24.What are the options for configuring storage for process engine's checkpoint repository ?
The options for configuring storage for process engine's checkpoint repository are:
*       Local File
*       Database. Fault tolerant engines can recover from a checkpoint only when database is used.
25.Process engines in a fault tolerant group can be configured as peers or master secondary.How do these differ ?
The options for configuring storage for process engine's checkpoint repository are:
*       - Peer means all of them have the same weight. In this case when one engine fails another one takes over and continues processing till it fails.
*       - In master secondary configuration weights are unequal, the secondary starts processing when master fails. But when master recovers, secondary stops and master continues processing.
26.What are the uses of grouping activities ?
Uses of grouping activities are:
*       Create a set of activities having a common error transition.
*       Repeat group of activities based on a condition.
1.    - Iterate over a list.
2.    - Repeat until condition true.
3.    - Repeat on Error until condition true.
*       Group activities into a transaction.
*       To create a critical section area that synchronizes process instances.
*       A 'Pick First Group' allows you to wait for the occurence of multiple events and proceed along a path following the first event to occur.
27.What is the purpose of a Lock shared configuration resource?
A Lock is specified for a 'Critical Section' group when the scope is 'Multiple'. It can be used to ensure synchronization across process instances belonging to multiple processs definitions or for process instances across engines(Check multi engine flag for lock in this case and the BW engine needs to be configured with database persistence while deployment). If synchronization is for process instances belonging to the same processs definition inside one engine, just specify the scope as 'Single'.

28.How to control the sequence of execution of process instances created by a process starter ?
Use the sequencing key field in the Misc tab of any process starter. Process instances with the same value for this field are executed in the sequence in which they are started.

29.Can there be two error transitions out of an activity ?
No. There can be only one Error and one Success if no matching condition transition out of each activity.

30.When is a 'No Action' group used ?
'No Action' group used to have a set of activities having a common error transition

31.What activity can be used to set the value of a 'User defined process variable' ?
The 'Assign' activity can be used to set the value of a 'User defined process variable'.

32.Which are the two process variables available to all activities with inputs ?
*       $_globalVariables
*       $_processContext
33.Which mechanism can be used to pass data between a process instance and a called sub process other than mapping from/to the callee's input/output ?
This can be accomplished using job shared variables, unless in the call process activity the 'Spawn' flag is enabled in which case the called sub process is a new job and hence gets a fresh copy of the job shared variable initialized as per its configuration. A shared variable can overcome this limitation as it's scope is not limited to one job.

34.What are the three scenarios where BW engine has to be configured with database persistence instead of Local File ?
The three scenarios are:
*       Shared Variables across BW engines.
*       Locking across groups in multiple BW engines.
*       Wait Notify across BW engines.
35.If you want a group to be executed if there is some unhandled error but subject to some max number of iterations which group do you use ?
We can use Repeat on Error until true

36.When is a 'Generate Error' activity useful?
When you handle an error inside a called subprocess or group and want to rethrow the error to the caller(happens by default if you dont handle the error in the called process)

37.Which activity is used for detecting duplicate message processing?
CheckPoint activity - Specify the uniqueID for the duplicate key field and engine maintains list of these key fields. When a process come to checkpoint activity with the same value for duplicate key which already exists, it throws a DuplicateException. An error transition can then handle this case.

38.Give an example where graceful migration of service from one machine to another is not possible.
HTTP Receiver. In this case the receiver on new machine starts listening on the same port, but you need to redirect requests from the old machine to the new one.
39.What are the types of adapter services ?
Types of adapter services are :
*       Subscriber Service
*       Publisher Service
*       Request-Response Service
*       Request-Response Invocation Service
40.If the business process needs to invoke another web service which resource do you use ?
SOAP request reply activity. If the business process needs to be exposed as SOAP service use SOAP Event Source in conjunction with SOAP Send Reply or SOAP Send Fault.

41.What is the functionality of the Retrieve Resources resource?
It can be used to serve the wsdl file of a SOAP Event Source to a (http) client.
Construct a process like: HTTP Receiver -> Retrieve Resources -> Send HTTP Response

Now the WSDL file for a SOAP service can be retreived using the http request

http://<host>:<port>/<path>/<resourceName>?wsdl

where 'path' is the folder path to the SOAP Event Source process and 'resourceName' is the name of the process

Example : http://purch:8877/Purchasing/GetPurchaseOrder?wsdl


42.What is the scope of user defined process variables ?
The scope of user defined process variables is only the process in which it is defined.(Not even inside a sub process that is invoked from this process)

43.What is difference between shared variable and job shared variable ?
*       Both of them can be manipulated via the palette resources 'Get shared variable' and 'Set shared variable'.
*       A job shared variable is private to one instance of job or in other words each job has a fresh copy. In the case of shared variable the same copy is shared across all job instances. It can even be persisted and can survive BW engine restarts and even shared across multiple BW engines(when deployed using DB persistence).

44.How do wait-notify resources work ?
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. Specific instances of waiter & notifier are corrrelated via a key.
For example: when one process is in wait state for key 'Order-1', it waits till another process issues a notification with the same key value.

45.What is the default Axis in XPath ?
Child axis- What this means is that when you select "BOOK" from the current context, it selects a child node with that name, not a sibling with that name. Other axes are parent , self , sibling etc.

46.What are the output formats for XSLT?
*       XML
*       HTML
*       Text
47.What does ' Success if no matching condition' transition mean ?
Lets say between two nodes N1 and N2, there are 3 success transitions with condition and there is no success transition without condition. If none of the conditions match then a 'Success if no matching condition' transition can be used. Also if there is a success transition and also success transitions with condition and if the condition matches then both the sucess transition (no condition) as well as the transition(s) with matching conditions are followed. So you can use 'Success if no matching condition' to prevent duplicate paths of execution.

48.What is the Purpose of $_error variable ?
$_error variable is available in the node following the error transition. It captures the error message, error code etc.

49.What are the cases where business process cant proceed correctly subsequent to restart from a checkpoint ?
*       Sending HTTP response, confirming an email/jms message etc. This is because the confirmation or sending HTTP response has to done in the same session. When engine crashes these sessions are closed at their socket level. In such cases send response/confirm before checkpoint.

50.Which group do you use to wait for multiple events and proceed with the first to occur ?
A 'Pick First Group'.
Important Points:----------------------

Ø  Members of superuser can only set other users in the superuser list and it is done in the ‘security’ panel.

Ø  Permissions for the repositories in the DATA ACCESS are only visible and hence can be set by the superuser users.

Ø  The Security console allows the domain administrator user, a member of the Super User role, or a user with Administer permission to assign access permissions to consoles and repositories

Ø  A Super User role member has read, write, and administer access to TIBCO Administrator consoles, applications and data.

Ø  When you upgrade, you must redeploy the application.

Ø  When you revert, you need to deploy the application again.

Ø  When you redeploy, you can choose options like ‘stop running services before deployment’, ‘Kill services that have not stopped’ (this is a timeout setting), ‘Start successfully deployed services’ and ‘Forced deployment of all services’.

Ø  Must read (very important) ‘Changing Global Variables at deployment’ in Chapter 8 ( Admin User Guide)

Ø  Fault tolerance options can be set only for TIBCO BusinessWorks processes. TIBCO Adapter services cannot be assigned fault tolerant options.

Ø  Fault tolerance relies on the administration server when applications are deployed using the rv or http transport options. When either of these transport options is used, the administration server must be running for fault tolerance to work correctly.

Ø  Activation limit field (in advance tab of a service (process) specifies that once a process is loaded into the memory, it should not be paged out until it is completed. This option is useful if you wish to specify sequential execution of process instances.

Ø  The Heartbeat Interval should be smaller than the Preparation Interval, which should be smaller than the Activation interval. i.e.
Heartbeat Interval < Preperation Interval < Activation Interval.

Ø  It is recommended that Activation Interval should be slightly over two Heartbeat intervals. Activation interval is the amount of time to wait since the last heartbeat message before a secondary server starts.

Ø  Preparation interval: Consider a situation where primary server is ready to up again so secondary server will go back to stand by mode.  This interval is the delay before the master engine restarts. When the time since the last heartbeat from an active member (secondary server) exceeds this value, the ranking inactive member (primary member) will receive a "hint" so that it can prepare for activation.

Ø  Must remember that there are two kinds of data. Application data which is in the form a repository which can be stored either on the server or locally on the same machine as application/process engine etc. It is recommended that application data is stored in the form of files regard less of local or server based. Other kind of data is domain data. It is recommended that domain data should be stored in  database. This improves the performance.

Ø  While creating tibco administrator domain, one can specify the transport that will be used for inter-domain communication. It can be either RV or EMS. If it is choose as RV, you can run multiple administrators in a load balanced mode. One will act as primary and others will act as secondary servers. One host cannot host both primary as well as secondary servers. If it is EMS, it does not matter if you run more than one servers as only deployment option is local so components run independent of admin servers.

Ø  An administration domain stores domain information in a file repository or database repository in case transport is RV, however if transport used for inter-domain communication is EMS, data storage can only be in a database. When using a file-based repository with a primary and secondary administration server, performance will be slower than when using a database to store administration domain data.

Ø  In most cases, it is recommended to use a database for the domain repository and files for client application repositories. In the case of a file-based domain, domain data is stored in the SYS_domain.dat and AUTH_domain.dat files. Data stored in the SYS_domain.dat file is referred to as the administration domain while data stored in the AUTH_domain.dat file is referred to as the authorization domain. The authorization domain contains the users, roles and data access ACLs. Everything else is stored in the administration domain: installed software, machines, applications, plug-ins, TIBCO Administrator ACLs, and so on. As such, the administration domain file is usually much larger than the authorization domain file.

Ø  Performance can improve if domain data is saved into a database. If using file for domain data storage, each time you make a change and save, contents of that file must be regenerated and committed (written) into the file. And during deployment there are a lot of steps when this is done. This is quite expensive thing to do both bcoz of I/O involved and large strings to be read/written. When using database, only changed data is written into the database. Note that moving application data to a database has no such savings and will slightly increase the server startup and deployment times. This is because, application data is not loaded into the administrator server memory (it is only used by the application/component).

Ø  Using Local Application Data
Using Server-based Application Data
For both choices, a directory is created for each deployed application on the target machine under TIBCO_TRA_DOMAIN_HOME\domain-name\application. The executables, property files and deployment files required for the application are stored under this directory.

Ø  The TIBCO_TRA_DOMAIN_HOME\domain-name\datafiles directory is also created as needed and only for local deployment. This directory contains the project files used by an application’s non adapter components such as TIBCO BusinessWorks. Adapter repository files (.dat) are stored in the TIBCO_TRA_DOMAIN_HOME\domain-name\data directory.

Ø  Pick First Group : Only wait for , request reply, timer (activites with a pause button)  can have valid transition from start of the group to activitiy.

Ø  Global variable valid types are string, integer, boolean and password.

Ø  Password policy does not apply to users created inside LDAP. Administrator can only read information from LDAP but cannot write into it. i.e. admin cannot be used to create new users directly inside LDAP but you can have both LDAP users and local users (created directly using admin GUI).

Ø  Using TIBCO Rendezvous, load balancing is automatic. To get the load balancing and fault tolerance benefit with HTTP, you must either use an IP redirector or explicitly point to a backup server to be used when a server fails. LB is not possible with EMS.

Ø  When a rulebases is added in a service/process, if conditions of those rulebases are met then results are displayed in 'Resource Management > Machines View Machine' panel. When an alert in a service/process, alerts are shown in the general tab of view service instance panel.

Ø  It is recommended that you use the minProcessors and maxProcessors properties to control the flow of incoming HTTP requests instead of using the Flow Limit property.

Ø  All jdbc activities that use the same connection take part in a transaction if configured inside a JDBC transaction. If a error happened in a jdbc or non-jdbc (e.g. writefile activity) activity inside the transaction group, transaction will be rolled back.

Ø  To create a distributed transaction across multiple databases, use the XA transaction type. For JMS activities and ActiveEnterprise Adapter activities, request/reply operations cannot participate in an XA transaction. Also, EJB activities cannot participate in an XA Transaction group. The XA Transaction type allows JDBC activities, ActiveEnterprise Adapter activities that use the JMS transport, and JMS activities to participate in transactions.
Ø  The Java Transaction API (JTA) UserTransaction type allows JDBC, JMS, ActiveEnterprise Adapter (using JMS transports), and EJB activities (& not Iprocess Connector activities) to participate in transactions.

Ø  ‘Include checkpoint’ checkbox is only available in case of XA or JTA UserTransaction types of transactions. If chosen, it will checkpoint just before commiting the transaction

Ø  Fault tolerance relies on the administrator server.Therefore, the administrator server must be up and running for fault tolerance to work properly.

Ø  InstanceID and AppName are two global variables which are not defined intentionally and you cannot see them in Global Variables list in designer or administrator.

Ø  When exporting a project as a Local Repository, do not use the name vcrepo in the Project Name field. This name is reserved and must not be used to name a project.

Ø  A Checkpoint activity cannot be placed in or in parallel to a transaction. You can, however, specify that an implicit checkpoint should be taken as part of a transaction by checking the Include Checkpoint field on a transaction group.

Ø  For explicit Checkpoints, place the checkpoint activity outside of any transaction group. Also, make sure that if you have multiple paths in your process definition, the Checkpoint activity does not occur in parallel with a path that has a transaction group. Instead, any Checkpoint activities should be placed at points that are guaranteed to be reached before or after the transaction group is reached.

Ø  When a checkpoint occurs in a called process, the checkpoint saves the state of the current process instance. If no called processes spawn new process instances, then a checkpoint in any called process saves the state of the process instance, including state from the parent process(es) of the current process. In the case of a called process that spawns a new process instance, only the spawned process instance is saved.

Ø  Fault tolerance relies on the administration server when applications are deployed using the rv or http transport options. When either of these transport options is used, the administration server must be running for fault tolerance to work correctly.


Q: What does different configuration parameters means while creating a new domain?

Q: How many types of variables can be defined in BW and difference between them?
A situation where these can be used,

Q: Different types of confirmation in JMS

Q: Difference between shared and job-shared variables.

Q: Difference between <xsl:copy-of> and <xsl:value-of>

Q: Diff b/w point-to-point and publish-subscribe

Q: Two rv subjects used by the administrator?

Q: If tibco infra in a company is spread over more than one subnet, how would administrator monitors(or handles) machines in these subnets? (not sure of the exact subnet).

Q: What are the different parts of a JMS message

Q: What is a durable subscriber and what is fail-safe. How are these specified and what is the use of them.


























1 comment:

  1. So nicely Documented. Thank you so much for sharing it.

    ReplyDelete