|This TIBCO video tutorial shows you how to create a custom function using the TIBCO Java Custom Function shared resource. The custom function will be added in the function list of the TIBCO Designer XPath Formula Builder. This is the recommended practice if the function is needed in numerous processes in the project.|
Automation of business processes is crucial, and doing it manually prophesies a higher probability of detrimental risks. In the business context, they can be bombs against profitability such as time delays, improper implementations, deployment problems, or buggy application. TIBCO provides a way out with its ActiveMatrix BusinessWorks product which allows modeling of business processes graphically. Such graphical rendition of a business process is called a process definition. BusinessWorks comes with a Designer tool which provides an environment for developing and testing process definitions. The execution of process definitions involves creation of their corresponding process instances which is seamlessly handled by the TIBCO ActiveMatrix BusinessWorks process engine. Each process instance is an automated business process in action.
A TIBCO process definition has five building blocks, namely: Activities, Transitions, Groups, Shared Configuration Resources, and Subprocesses. The logical combinations of these components define how a process definition intends to function.
In its simplest form, a process definition is a sequence of activities and transitions. It starts with either a Start activity or a process starter and ends with an End activity. Activities are the specific individual units of work which defines the actual operations and processing. They are logically grouped with their related counterparts into sets known as palettes. For example, all operations pertaining to file processing, such as reading, writing, or copying a file, are represented with their corresponding activities: Read File, Write File, and Copy File. These activities are grouped in the File palette. Similarly, all tasks that pertain to database access and manipulation are grouped in a single palette – the JDBC palette. On the other hand, transitions define the control flow as to when activities in the process definition take their turn. It is graphically represented by a unidirectional arrow between activities. It directs how interaction between activities should proceed, dictating how and when activities get executed. Although an activity may exists in a process, when there are no transitions that connect it to the entire flow with other activities therein, it can never be executed.
There are situations when an activity or a certain collection of activities in a process definition must be treated as a single task, be bound to a particular repetition, or be constrained by certain conditions. This is where Groups come in to support extended capabilities for the process to handle loops, transactions, collective error trapping, or synchronization. TIBCO provides nine group actions; each is unique for a particular purpose. These are as follows: No Action, If, Critical Section, Pick First, Iterate, Repeat Until True, While True, Repeat On Error Until True, and Transaction.
Each activity contains specifications that must be configured in order to meet the required behavior from it. A configuration can be properties, pieces of input and output information, or error schemas that must be supplied with proper settings or entries. However, there are specifications that are shared among activities like database connections, WSDL files, schema definitions, etc. With this, it is necessary to use Shared Configuration resources. They actually do not form part of the explicit flow but are created outside process definitions and are used in the Configuration tab of activities. Activities make references to these shared resources in order to make use of them.
What about a subprocess? A subprocess is a process definition called within another process definition. This is ideal when modeling a very complex business process. Plotting the entire logic flow in one gigantic process definition complicates how the business process is represented. Turn it into bite-size bits by chopping one complex process into smaller processes definitions and then call the latter from the main process. Subprocesses make process diagrams more readable and easy to comprehend, trace, and countercheck. Another good thing is that subprocesses are reusable across different process definitions. Just a note, they cannot contain process starters.
In short, TIBCO ActiveMatrix BusinessWorks provides the convenience and efficiency of graphically modeling business processes and executing them automatically. It saves you the pain and agony of weaving complex business processes manually like you have to do in other programming languages. Our TIBCO consultants use this graphical style of development to productively create business applications for our clients.
|In this TIBCO video tutorial, you will learn how to perform checkpointing in your process. This capability is very important in the design of your processes to give them the ability to recover seamlessly from an engine failure. TIBCO allows you to very easily checkpoint the state of your process instances.|
|This TIBCO video tutorial shows you how to create a Destination Bridge in the Enterprise Message Service (EMS) server. In the video, you will see a JMS topic being bridged to a JMS queue. This is a very widely used pattern in enterprise systems integration.|
|This TIBCO video tutorial shows you how to send and receive JMS messages. Here you will learn how to use the JMS Queue Sender and JMS Queue Receiver activities. You will be impressed at how easy it is to do JMS messaging in TIBCO. It’s great!|
|This TIBCO video tutorial shows you how to iterate through a result set. You will learn how to use the Iterate Group in TIBCO Designer. The iteration element here is a database result set. You can have other types of iteration elements as well. Kindly leave a comment after watching. Thanks so much.|
|In this TIBCO Designer video tutorial I show you how to align process activities in TIBCO Designer so that your process flow is more readable. This is a very important aspect of TIBCO development. Many TIBCO developers neglect this aspect when creating their process flows. If you find this TIBCO training resource helpful, will you kindly return us the favor by posting a comment on YouTube? If you can post your comment to both YouTube and in to this blog post, it would be greatly appreciated!|
One of our clients had asked us about the difference in performance between a TIBCO ActiveMatrix BusinessWorks process that uses a subprocess call and one that does not. In other words, one TIBCO process called a subprocess to perform a certain functionality, whereas the other process had the functionality embedded in itself. The functionality in question was a simple JMS Queue Sender activity that sends a JMS queue message to the JMS server. The client was concerned that there may be a large enough performance difference between these two processes to discourage the use of subprocess calls on any process where performance is critical.
The TIBCO Certified Professionals in our company set out to find out the difference in performance between these two processes. We endeavored to answer the following question: how much of a performance cost does a subprocess call incur in TIBCO ActiveMatrix BusinessWorks?
We set up one process that had the functionality embedded in it:
We setup another process with the same exact functionality being called as a subprocess:
We then called these processes individually 10,000 times each using the following loop from a caller process:
The time it took to for each process to execute 10,000 times was noted. The test was repeated 10 times for each process.
Here are the results:
|Test||No Subprocess Call||With Subprocess Call|
To execute 10,000 times, the process that had the functionality embedded in it took 1473.5 milliseconds. On the other hand, to execute 10,000 times, the process that called the functionality as a subprocess took 1780.0 milliseconds. The difference is 306.5 milliseconds. This may seem like a large difference at first, but remember that this is for 10,000 executions. For just one execution, the difference is only 0.03065 milliseconds (306.5 / 10000).
So, surely, executing an embedded functionality is always going to be faster because there is no need to call another process to perform the functionality. Notice, however, that the difference is extremely small. The question a TIBCO architect must ask is, “Is the difference of less than 1 millisecond per execution large enough to warrant giving up the advantages of subprocesses?” One must look at the performance requirements and Service-Level Agreements (SLA) in order to properly answer this question.
The processes were deployed into a desktop computer with an Intel dual core 3 GHz CPU and 2 GB of RAM.
To learn more about this performance test, or to inquire how we can help with your TIBCO projects, feel free to contact us anytime. Please kindly leave a comment, and tell us about your own experiences in performance tuning with TIBCO Software products.