Tag Archives: Tibco

Solving a TIBCO buildear bug for the use in Continuous Integration

Within Rubix we have a buildserver for the Oracle/Java developers. The server is configured in Amazon EC2 and runs on Ubuntu configured with Tomcat, Jenkins and Nexus. For standardisation and us moving to the Amazon EC2 cloud we wanted to move the Tibco builds to  the same server.

So after installing the necessary Tibco BusinessWorks 5 software on the server, moving all the source over to Linux we tried running our first Tibco build using Jenkins and the exec-maven-plugin to execute Sadly it resulted in this error message:

Starting up...
java.lang.InternalError: Can't connect to X11 window server using '' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(Unknown Source)

There seems to be a (known) bug in the Tibco BusinessWorks buildear which “sometimes” requires a graphical interface when ran from the shell. In our situation this only seemed to occur when projects had XSDs imports in a used libraries.

The solution is to configure Jenkins to use XVFB plugin and emulates a “dumb” framebuffer using virtual memory.

Screen shot 2012-01-29 at 23.18.00

Thanks to collegues Roel, Maarten, Rubén and Anthony for resolving this issue.




Leave a comment

Posted by on 05-07-2014 in Tibco


Tags: , ,

Increasing the Tibco BusinessConnect logging

To increase Tibco BusinessConnect logging on runtime in DEV & TST perform the following tasks:

Open the file in /bc/5.x/lib/
Set the property ‘’ where the default is INFO

Go to TIBCO Administrator, BusinessConnect, Interior Server.par -> Advanced Tab
set Trace.Task.* = true under ‘Edit Service Configuration’

restart the BC engines

You do not want to use these settings in a production environment due to certain performance issues.

Leave a comment

Posted by on 08-11-2010 in BusinessConnect


Tags: ,

using Arrays and Dynamic subprocesses in iProcess

Last week I had a case where the requirement was to start a iProcess case from BusinessWorks. This is not new, but there were a few additional requirements:

  • The iProcess case would be started with 1-n codes mapped by BW
  • For each code in the main procedure, we needed to parallel start a subprocedure which would handle the BPM flow including complex business rules (iDecisions), conditions and forms.
First step is to define a array named CODES in the procedure. Then the challenge is to send the Array from BusinessWorks to iProcess. Normally objects are send as Fields to a case using a certain FieldType like swDate or swText. Due to enumeration you can see that a valid FieldType is “swArrayOfText” but documantion is not clear how to use a valid format (bracket, pipe, etc) to fill this fields value (as more developers have discovered)
The answer is as always very simple, when you know it. ;)
iProcess handles an swArrayOfText as a set of Text fields with an index. So the proper usage is not to try to send 1 Field with the whole Array but to construct a Field for each array item like CODES[1], CODES[2], etc. So we need to map them individually from BusinessWorks.
The BW mapping in the example below shows a For-Each mapping on the set Fields which does the trick.
In the iProcess procedure we now have our Array so we can now try to start a subprocedure for each item. Since we want to start the subprocedures parallel and not serial we can not use a “normal” LOOP and subprocedure definition.
The solution is a dynamic subprocedure defintion, however this mechanism works a bit different then the normal subprocedure definition. Big difference is that it needs an array of procedure names it will call and a template of input/output parameters. Since we will always call the same subprocedure this is somewhat odd in our case, but the only way to trigger parallel callouts. So first create a new array called SUBPROC. Then we need a script to fill the SUBPROC array with the amount of CODES in the CODES array.
  SUBPROC[IDX_CODES] := "MySubProcedureName"
The dynamic subprocedure definition is configured with the SUBPROC array.
In the input mapping to the subprocedure we need to pass the correct CODE to each subprocedure call. So we use a private-script in the mapping.

Voila, this should do the trick.

Leave a comment

Posted by on 07-10-2010 in BusinessWorks, iProcess, Tibco


Tags: , ,

Clear a locked iProcess item

When you don’t properly close your iProcess procedure you have a chance of locking the object for further use. This will result in the following error message:
For some strange cosmic reason, this happens to me a lot. To fix this quickly in a DEV environment connect to the iProcess database and search for the following tables, find the record and delete it.
And you are good to go …
Leave a comment

Posted by on 07-10-2010 in iProcess, Tibco


Tags: ,

Connecting Tibco BusinessWorks to Weblogic JMS

In the last years I’ve been working with both the Tibco and Oracle (BEA) middleware software stack. In this period two of the products I’ve learned to appreciate are the Tibco BusinessWorks “zero-coding” service modeling concept and the formidable power of Oracle Weblogic’s clustering technique.

However a client wanted to use both products together, so here is the story in short.

First we configure the Oracle Weblogic server, domain, cluster, managed servers, JMSServer, JMSModule, etc. The Oracle Weblogic domain we will use has a admin and 2 managed servers (on the same host):

After that we need to configure the JMSServer components (for each managed server), create a JMSModule and add the ConnectionFactory, a Distributed Queue (if we are using Weblogic JMS let’s use one of it’s nicest features) and at last for each managed server a subDeployment, a member queue and a redirect error queue.

So we have our basic Weblogic JMS setup, let’s continue to the client side.
At first we copy the weblogic.jar file to the %TIBCO%\bw\5.x\lib folder as mentioned in the Tibco BW documentation.

We open our Tibco BusinessWorks Designer and create a new project. Then we add a JMS Connection and a JNDI Configuration to the project to configure the Weblogic JMS connection. (the last component is not really necessary, but I’ll explain why I use it in a few seconds).

So at first I tried to Test Connection without the JNDI configuration but this resulted in a endless waiting pop-up. So no success here. Then I included the JNDI configuration and with Test Configuration the following error showed up.

JNDI Configuration -> Test connection:
BW-JNDI-100002 Configuration Test Failed. Exception [java.lang.NoClassDefFoundError] occurred.
java.lang.NoClassDefFoundError: weblogic/security/service/PrivilegedActions

This error was familiar and has something to due with the fact that for WebLogic Server 10.0 and higher releases, client applications should use the wlfullclient.jar file to provide the WebLogic Server specific functionary previously provided in the weblogic.jar file.

So let’s generate the wlfullclient.jar with the JARbuilder tool as mentioned here on the Oracle website.
cd WL_HOME/server/lib
Use the following command to create wlfullclient.jar in the server/lib directory:
java -jar ../../../modules/com.bea.core.jarbuilder_X.X.X.X.jar

Copy the wlFullclient.jar to the %TIBCO%\bw\5.x\lib folder and make sure that the weblogic.jar is not there.
Restart your Tibco BusinessWorks designer. Test your JNDI Configuration and the JMS Configuration and the connection should be succesfull now.

Finally the Tibco Designer’s JMS palette is now at your disposal to build services using the Weblogic JMS server functionality as high-volume load-balancing and scaling.

1 Comment

Posted by on 08-09-2010 in BusinessWorks, Oracle, Tibco, Weblogic


Tags: , , ,

Using Greenhat Tester watch mode with Tibco EMS

In GH Tester version 3.3.0 and above, some transports like the Tibco EMS transport have a “watch” mode. In this watch mode, GH Tester receives any new messages sent to the queue but won’t remove them from the queue. In this way it is possible to passively access queue messages without affecting the queue itself. It does this by subscribing to system monitor topics and because of this the transport login configuration must have administration rights on the EMS server in question.

However when trying to perform a test we receive the following error:
Fatal error: Cannot subscribe to “Transports/TIBCO EMS.a3t” -Error creating listener Linked to error: The Transport Connection or Watch settings user is not an admin user

The error is a bit unclear, because we are in fact connecting with the admin user and should have full-access to the queues. But in some way the Greenhat Tibco Messenging plugin guide (pdf) shows the anser. You must uncheck the “Use JNDI to lookup destination” checkbox.

In our test scripts we can now actually monitor (“watch”) queues for messaging travelling through them and being picked up by other components in the workflow.
Leave a comment

Posted by on 30-08-2010 in EMS, GreenHat, Testing


Tags: , ,

Changing the Tibco Designer work folder

You can change the default location where Tibco Designer stores it’s user configuration like settings and cache. This may be helpfull since the default location on a Windows machine is your profile folder.

When you are working with products like Tibco XMLCanon all opened projects will be cached in your windows profile (for example: C:\Documents and Settings\someUser\.tibco-dav) which is not always a wanted effect.

Open the designer.tra file (in %TIBCO_HOME%\designer\5.x\bin) and add the line (for examle): D:/TIBCO_WORK

You have to restart Tibco Designer to activate the setting.

Leave a comment

Posted by on 27-08-2010 in Designer, Tibco


Tags: ,