How to use Adhoc Event

          Adhoc event can be used in order to execute an adhoc action like excuting an activity in an existing instance on the fly. For Example, Cancelling an instance when a client decided not to proceed with the current order or creating an adhoc task in an in-flight instance when needed.

Now how do we do this? This can be done in two ways:
1. Using process Portal
2. using web API


Duplicate Links issue in Process Portal

Duplicate links issue is a well know issue in 7.x versions while promoting the code to the higher environments. Most of the times when  the snapshot is deployed in to the higher environments, the project page links from the previous snapshots are still active and visible in My project sections.
Reason behind this:
Normally when the snapshots is promoted to a higher environment, previous snapshot of the same Process Application will be deactivated. But many a time we might have noticed this is not happening. This is a know issue which can even be found in release notes of the initial versions of 7.x, which is not fixed yet. This generally happens when some of the below action were performed:

Custom Java Connector in IBM BPM

IBM BPM (Lombardi), by default provides many java Integration connectors which can used to perform different operations like connecting to database, XSL transformation connector, LDAP connector, mail connector etc. But despite of all the available connectors we might need to perform certain operations which is not possible with IBM BPM like pulling data from some external system (Say, Filenet). In this kind of scenarios we can leverage the IBM BPM capability of custom java connectors or Webservice connectors.

In this post, lets see how to create simple Custom Java connector and pass an input to it and get a complex object as an output.


Different Process Designers to connect to Same Process center

            One of the advantages in development using IBM BPM (for that matter, in previous version of 7.x and 6.x) is that it is a client server architecture. You install the process center in a single machine (Server) and can connect to that process center just having a client (Process Designer or Authoring Environment) in the machine in the same network that you are working on.

           Lets see how to configure the Process Designer to connect to a Process Center that is installed in a different machine.

How to Use Java package in side Lombardi (IBM BPM) ??

We all know that we can deploy custom jar files to Lombardi and use those classes with connectors.
But do we know that it is also possible to access those classes directly from the server script in the service where write the code using js. Here is an example of how to use that.
First add your jar files inside the teamworks libary which is available in location <installation                     directory>\applications\teamworks.ear\teamworks.war if your are using Lombardi Teamworks 6.2.
Alternatively if you are using Lombardi 7.x , add the jar as server file in the files available in on the Left side palette in the Authoring environment.

Assign values to string list from coach

When we have this kind of scenario  where we need to capture values and assign that to a list variable say "tw.local.ListForExport[i] " , first thing that comes to mind is for loop with something like this.

    <#= tw.local.ListForExport[i] #>= i;

But by now you might have found that this approach is not working. The reason is that, above syntax will be evaluted while loading the coach itself. By the time you wanted to assign some value to the variable the vairable itself is gone and will be replaced with the value in that variable.

One way to successfully assign the string list is to use a multi select element (Hidden) from coach and assign the string list to that multi select element.

Portal Customization - New Task Alert

When a task is assigned to a user, the task gets routed to the particular user's Inbox.
The user might not look into his/her inbox everytime to check whether a task has been assigned to him/her or not.
To alert the user when a task is assigned to him/her (or) a task is routed to his/her inbox,  New Task Alert mechanism is used.

New Task Alert Mechanism:
  •  An alert will be prompted to the user to showcase that a new task has been routed to his/her inbox.
  •  This mechanism is mainly used to help the user avoid keep on checking his/her inbox.
  •  Alert gets displayed in the current page where the user is looking at.

Create JNDI for a new DB in IBPM

In this post, I would put steps on how to create a JNDI for a new DB to be connected from IBPM (aka lombardi). Below are the steps to create a new JNDI:
  1. In a web browser, bring up the WebSphere Administrative Console. For example, https://localhost:9043/admin. The port number may be different in your environment. You can look in the <WLE_HOME>/AppServer/profiles/Lombardi/logs/ProcessCenter01 Service.log file to determine the port number.
  2. Log in as tw_user. The password is tw_user. Alternatively, if you don’t see admin privilege once you logged in try login as admin (password: admin) as shown in  Figure-1.

IBPM Knowledge base Urls

There are a variety of sources of knowledge and information related to IBPM. This section captures some of the more important ones. When a question or puzzle on using the product comes to light, the chances are extremely high that the answer can be found in the existing documentation, forums, TechNotes, RedBooks and articles. The real challenge is searching for the answer is the mass of information available. Here I would like to put few links which might come to rescue when we need some answers.

Product Documentation
The documentation for much of IBPM can be found in the InfoCenter.


How to add Brand Logo to the Process Portal in IBM BPM ???

Below steps might help you add your Brand logo to the IBM BPM Process Portal :

1.) Add Logo image at below location :


Let Name of your file be "logo_XXXXXXX.png".


XML Parsing Script in IBM BPM

This script which is used to parse XML structure to value of a result during database calls. Similar script can be used to parse any XML structure and retrieve values  and store them in lombardi variables.

XML Structure :

Below XML is present in the variable "tw.local.result"

<resultSet recordCount="3" columnCount="6">

How to Enable OnClick Event on Checkbox in Lombardi ?

problem statement : Need to execute an action on click of check box, but onClick event is not responding when added in Events tab of the checkbox. 

document.getElementById('Checkbox3_checkbox').onclick = function() {           varCheckbox3.value = !(varCheckbox3.value == "true");           clearErrorMsg();           try {             
            fcnDVCheckbox3(this, true);           } catch(err) { }           checkAndDisable();  // custom function to be executed onclick of check box.         } similar code snippet will be called internal to lombardi code when a check box is clicked up on. If you want to do some action on click of checkbox, include this script in custom html to override the default script and add the function ( like checkAndDisable()) that we need to execute onclick of check box, as in above snippet.

Note: This sample applies only for Heritage coaches not to the new Coaches in 8.x versions. 

How to perform task Search based on process instance id using script ?

This Snippet of code will help in performing the task search using process instance id in lombardi.

var procName = new TWSearchCondition();
        procName.column = new TWSearchColumn();
        procName.column.type = TWSearchColumn.Types.ProcessInstance; = TWSearchColumn.ProcessInstanceColumns.ID;
        procName.operator = TWSearchCondition.Operations.Equals;
        procName.value = tw.local.processInstanceId;       


Triggering BPD | Various Methods

There are various methods to create initiate a BPD and create instance.The most popular methods are described below:
  • Using the UCA to Start BPD
  • Using WebAPI to Start BPD
  • Using JMS to Stard BPD
  • Using Portal to start BPD
Let us discuss one by one:


BPM and Lombardi


 Layered Architechture

               TeamWorks provides business process governance by leveraging existing legacy systems and data sources within organizations. TeamWorks is not intended to be the master of record nor replace existing systems and data sources, instead it integrates with these legacy assets, as illustrated in figure 1 (left-hand side). TeamWorks is a server-side application and provides its human interface by leveraging thin-client web browser technology supported by modern desktop computers and some hand-held cell phones. Figure 1 (right-hand-side) illustrates how a TeamWorks solution may be divided into a number of architectural layers. Figure 2 (left-hand-side) illustrates where various model artifacts reside within each layer of the architecture. Each layer is responsible for a specific aspect of the solution. These model artifacts are described within other design patterns.


Lombardi Architecture

Terminology  that Comes handy :

Process Center:
Provides a central development environment and repository for multiple process authorsworking in the Process Center Console and other interfaces in Lombardi Authoring Process Center Environment. The Process Center includes a Process Center Server and a Performance Data Warehouse, allowing you to build and run process applications and also store performance data for testing and playback purposes during development efforts.

Process Server:
Executes the processes and services built in Lombardi Authoring Environment, stored in theProcess Center repository, and then installed in a runtime environment.