Skip to main content

skip to main content

developerWorks  >  WebSphere | Architecture  >

IBM WebSphere Developer Technical Journal: A guided tour of WebSphere Integration Developer -- Part 1

Get a driver's view of the WebSphere Integration Developer landscape

developerWorks
Document options

Document options requiring JavaScript are not displayed


Rate this page

Help us improve this content


Level: Introductory

Greg Adams (Greg_Adams@ca.ibm.com), Distinguished Engineer, IBM
Richard Gregory (gregoryr@ca.ibm.com), Staff Software Developer, IBM
Jane Fung (jcyfung@ca.ibm.com), Advisory Software Developer, IBM
Randy Giffen (Randy_Giffen@ca.ibm.com), Advisory Software Developer, IBM

22 Feb 2006

This article is the first in a series exploring a service-oriented approach to application integration using IBM® WebSphere® Integration Developer. This first article provides an overview of WebSphere Integration Developer and its key components and concepts.

From the IBM WebSphere Developer Technical Journal.

Introduction

This article series gives you a guided tour of developing applications with WebSphere Integration Developer. This first article gives you a broad overview of WebSphere Integration Developer and its main concepts.

Subsequent articles will dive into each concept and the related construction tools. We'll look at each area of the product, why it matters, what you can do with it, and lastly give you the driver's seat to build the next piece of an overall application. Some topics that we'll cover in future articles include:

  • SOA development
  • Building and assembling a simple application
  • Business processes, state machines, and rules
  • Human tasks
  • EIS connectivity support
  • Mediation and selectors

Although these articles build on each other as a series, each stands on its own if you want to delve into a particular area of interest.



Back to top


What is WebSphere Integration Developer?

You are probably wondering what WebSphere Integration Developer is, and why you should care. Companies today face increasing pressure to integrate parts of their enterprise, automate their systems and provide new channels for their customers. Companies need products and solutions that are flexible and based on standards.

Some of the problems typically encountered in the integration arena include:

  • Synchronizing data among two or more heterogeneous enterprise information systems (EIS).
  • Intelligently brokering product requests from consumers to multiple producers.
  • Publishing product data to a global repository, thus enabling consumers to access and use the information. Publishing can range from making catalogs of products available, to participating in a global online marketplace.
  • Orchestrating multiple existing business processes using an overarching process.
  • Managing order processing from order receipt to both inventory management and supply chain management.
  • Assigning, approving, and escalating tasks to effectively deal with customer requests.
  • Dynamically responding to changing business conditions by altering the rules and decisions governing the business.

WebSphere Integration Developer tackles these and other types of application integration problems. From the ground up, WebSphere Integration Developer is based on industry standards (notably WSDL, XSD, BPEL, Java™, and UML) and is on the leading edge of evolving standards (the Tuscany Service Component Architecture is a good example). To build applications on these standards you use a set of visual construction tools and higher level concepts, which lets you focus on the business problem, and not have to write masses of J2EE code or be a WSDL rocket scientist. You get the standards without having to eat, sleep, and breathe them.

From a WebSphere Integration Developer perspective, a service-oriented architecture means you can focus on the key components of your system, build them visually, connect them together visually and then be off and running using WebSphere Process Server. Afterwards, you can also visually unit test and debug your entire application or individual parts of it.

WebSphere Integration Developer supports top-down, bottom-up, and meet-in-the-middle construction. You can start at the top--the design level, lay out your overall vision and then gradually drill down and implement the components (services). Alternatively, you can work bottom up, implement the services, and then compose them together into a larger application. More likely, you will find yourself using a meet-in-the-middle approach, perhaps laying out the initial high-level vision, then use the Enterprise Metadata Discovery utility to explore an enterprise information system, and define services that connect to it. You might also want to pull in and reuse an external Web service that one of your business partners has provided.



Back to top


Who uses WebSphere Integration Developer?

Perhaps the real question we should be asking is, what roles do users of WebSphere Integration Developer fulfill, and when, during the overall development process, do they use the tools?

WebSphere Integration Developer targets integration specialists. These users are not Java, WSDL, or XSD experts. They focus on integrating applications and addressing the types of problems discussed above -- and of course they want to do it as easily as possible. Figure 1 illustrates the relationship between the skill set of the integration specialist and other user roles.


Figure 1. WebSphere Integration Developer users
WebSphere Integration Developer users

The process of application development involves many user roles at different stages of development. Note that by role, we refer to a capacity in which an individual works; any given person could actually fulfill multiple roles in a company. Figure 2 illustrates the portions of the software development process in which the integration specialist is typically involved. The integration specialist takes over where the business analyst leaves off, developing the integration application, testing and debugging it, and then ultimately, when all the t's are crossed and the i's dotted, deploying it to a production server.


Figure 2. Integration specialist development involvement
WebSphere Integration Developer users


Back to top


A tour

It's time to warm up the car and take a tour of WebSphere Integration Developer's key concepts and tools. In subsequent articles, we will focus on the importance and value of each element and show you how to use the concept or tool as part of building a sample application. For now we'll just do a quick cruise by each item.



Back to top


Pick your route -- service implementation types

Services are the main building blocks of a service-oriented architecture. WebSphere Integration Developer includes a diverse set of service-building tools that cover the spectrum of problems you might encounter. For the most part, you can build the service implementation types mentioned above using visual construction tools, which is why you don't need to be an expert programmer to develop applications with WebSphere Integration Developer. Most services are built using visual construction tools, with the one exception being a Java or EJB service. You can use these Java and EJB services to leverage existing Java applications, or, if your organization has some Java heads, to build Java services using IBM Rational® Application Developer (see Want to learn more about related products?).

You can implement your services using a variety of programming paradigms, from process-flow style BPEL processes, to state machine-style event management, to declarative business rules style. The style of implementation you select will be determined both by your comfort level with a given paradigm as well as the nature of the problem. For example, some problems lend themselves to more succinct expression as a state machine than as a set of declarative rules. Let's have a look at these different service types and discuss when you might want to use one versus the other.

Business processes

A business process provides the primary means for coordinating enterprise services and describing your business logic. A business process consists of a series of activities or steps that are executed in a specific order, sequentially or in parallel. The business process editor is a visual construction tool that allows you to quickly author a business process based on the BPEL standard.

A business process itself is a service. You can use it to coordinate reusable subprocesses or other services, which may have any other implementation type. An important aspect of business processes is their longevity and interaction with people. A process can be very short lived; this is common in highly automated systems. Alternatively, the process could be extremely long running, perhaps days or even months, and may wait on a human user to complete a specific work item associated with an activity before the process can continue. For example, the business process could be patiently waiting for a manager to approve a travel request.

Figure 3 shows how to construct a simple travel booking business process with the business process editor.


Figure 3: The business process editor
The business process editor

Business state machines

A business state machine is an event-driven business transaction that defines a set of states for a given part of the application. The state machine moves from one valid state to the next based on external events it receives. For a given event, you use conditions to determine the new valid state. A simple illustration is a vending machine; when it receives enough money, it transitions into a state where the selection buttons become active. When you make a selection, it changes to a state where it can dispense the merchandise (let's say a quadruple chocolate candy bar). You construct business state machines using the state machine editor, which, like the business process editor, is a visual editing tool that requires little or no Java programming experience.

You can use both business state machines and business processes to coordinate parts of your application. There are some subtle differences between them, which makes one more appropriate for certain types of problems than others. State machines are well suited to cyclical patterns or cases where you "naturally" think in a set of valid states. This is important because in a state machine you actually are not doing anything in a state, you are simply waiting to be told to pick up your gear and go to the next state. While the state machine is racing to get into the next state, it can do some work, such as handing the customer their chocolate bar in the vending machine example. Business processes, in contrast, do their work in the activities. They are well suited to sequential and parallel tasks. Just as with business processes, business state machines can invoke other service implementation types and can themselves be invoked as a service. Figure 4 shows a business state machine that we constructed using the business state machine editor.


Figure 4: The business state machine editor
The business state machine editor

For those who are familiar with UML, a business state machine is a subset of a UML state machine and is more appropriate for business users.

Business rules

A business rule captures and implements business policies and practices. A rule can enforce business policy, make a decision, or infer new data from existing data. It can be specified using two different formats: a rule set, or a decision table.

That explanation sounded too much like a collection of buzzwords, so an example is in order. A business rule is something like, if a customer is a gold customer and has been with us for ten years then give them a 10% discount. This business rule is a simple if-then rule. If the rule evaluates to true, it performs an action, which in this case, is giving the customer a discount. Business rule sets consist of groups of rules that allow great flexibility in the implementation of complex business logic.

A decision table is designed to handle basic business rule logic. It does not have the same flexibility as a rule set; however, it offers great simplicity for capturing simple rule logic in a table format. A classic example of a decision table is one that frequent travelers are familiar with. Suppose you want to escape the cold and use up your frequent flyer points to go Hawaii. You look at a table and locate the row and column that correspond to your home city and Hawaii respectively; where they meet shows how many points are required for that trip. This is just one kind of business rule logic that can be easily captured in a decision table.

This brings us to a key aspect of a business rule: how dynamic it is, or, its ability to respond to a changing business environment. You can use business rules to modify key business parameters on a production server dynamically and have them take effect immediately. For example, suppose it is an unusually warm winter and there is little demand for tropical destinations. You decide to reduce the frequent flyer points needed for Hawaii. It is trivial to do this at runtime by viewing the table and changing the value.

Later in this article, we will briefly visit WebSphere Business Monitor; you can use this product to monitor your business in real time so that you can react to key observations and conditions by adjusting your business rule policies.

In general, you should use business rules to make a decision when any of the following conditions apply:

  • You want to change the results at runtime, on a running server
  • The decision itself naturally takes on the form of a table
  • The decision itself naturally takes on the form of a series of simple choices--easily thought of as if-then statements

Figure 5 shows how we would create a decision table using the decision table editor.


Figure 5: The decision table editor
The decision table editor

Selectors

Selectors are an easy way to respond to a service request and route it to another service that is designed to handle it. The routing can vary over time. You use a selector to invoke different service implementations based on a date. For example, let's say you want your online Christmas card business to use the regular sales service until December 25th, and then use the mega-discount service afterwards. You can use the visual selector editor to build a selector that will intercept sales service requests and select the regular service up until Christmas, and afterwards, select the discount service. Figure 6 shows how we would create such a selector.

As with business rules, you can change selectors dynamically on a production server. You can modify the service destinations and the date selections to suit your evolving business needs.


Figure 6: The selector editor
The selector editor

Interface maps

Sometimes you might have two services that just will not to speak to each other because they do not understand the same set of operations. While you might be inclined to get grumpy at this dilemma, a simple solution is to use an interface map. An interface map describes how an operation of one service translates into another. We will discuss interfaces in Putting it together.

When mapping two interfaces, first map their operations and then map the input and output messages. If the input and output messages do not have the same type, you would use a data map (explained in the next section) to map between the two types. Figure 7 shows how we would construct an interface map using the interface mapping editor.


Figure 7: The interface mapping editor
The interface mapping editor

Business object maps

Business object maps, also known as data maps, are used for translating business data from one type to another. It is often necessary to map one business object (see Key landmarks -- business objects) into another when coordinating heterogeneous systems, or even as part of normal business logic.

Using the business object map editor, you can graphically create a map that transforms a business object and its fields to another business object as Figure 8 shows. As a simple example, consider a name from an employee information service that needs to be passed to your travel booking service. Suppose the service is hosted by an old clunky system that returns a comma delimited string, yet the travel booking service requires three separate fields (first/last/middle name). The mapping process in this case means taking the full name and separating it into the required pieces. The editor provides quick convenience mechanisms for all the common maps you will need (concatenation, for instance), and provides a way for you to define your own custom conversions using either Java or a visual snippet (more on those later).

Business object maps support 1-to-n, m-to-1 and m-to-n mappings among business objects.


Figure 8: Business object map editor
Business object map editor

Human tasks

A human task is, quite simply, a unit of work done by a human. Quite often, this type of task involves interactions with other services, and thus becomes a task within a larger business goal. You can use WebSphere Integration Developer and WebSphere Process Server to escalate or delegate human tasks in the event they are not handled in a timely fashion. Tasks can be assigned to individuals or groups of individuals (any manager, for example) based upon your organization structure as defined in a system such as LDAP.

You can create human tasks using the visual human task editor as shown in Figure 9.


Figure 9: The human task editor
The human task editor

Web services

The services we have mentioned are first-class services, but so far are only accessible to other WebSphere applications. However, you can easily expose any of the service types listed above as Web services. We will explain this in the Assembly diagrams section. You can even go one step further and create standard Web services using the capabilities inherited in WebSphere Integration Developer from Rational Application Developer. You will find more information in Want to learn more about related products and in the references at the end of this article.

Enterprise information system (EIS) services

Since your company likely depends on at least one EIS, you can easily turn its applications into services. You do this using the Enterprise Service Discovery wizard, which uses standard J2C resource adapters to connect to and query back-end systems such as CICS® or PeopleSoft. There are two resource adapters that ship with WebSphere Integration Developer, one for CICS ECI and one for IMS™.

Figure 10 shows how you would create an operation for a purchase-order service, based on the data it found on the PeopleSoft server. When you complete the steps for the wizard, you have a service that lets you access your EIS the same way you access any other service.


Figure 10: The Enterprise Service Discovery wizard
Enterprise Service Discovery wizard

Java and EJB services

As we mentioned, if your company has some seasoned Java developers, you can still create or reuse plain old Java objects or EJBs as your service implementations. Calling other services from your Java code is as easy as calling them using the visual editors. If you were to use Jave code to make the same service call to the Travel Agency partner as in the Business process section (recall Figure 3 shows the book trip activity making this call), the code would look something like this:

result = locateService_TravelAgencyPartner().placeTripOrder(travelRequest);

The service call is made simple by helper code that is generated for each reference (you create the references in an assembly diagram, as we will explain shortly).



Back to top


Key landmarks -- business objects

Back in the section called Business object maps, we showed how to map variations of a business object so that one service can understand another. In this section we'll give you an idea of what business objects are. A business object is the primary currency of your business application. Examples of business objects include a customer order, a customer, and items in your inventory. A business object consists of a set of fields and their values. A field may in turn be another business object. For example, an Order business object may have a customer field which in turn is a Customer business object.

Business objects are created using the business object editor, which provides a graphical view of your business objects. You can also use the editor to work with the object in a tabular format, if you prefer to use the keyboard for quickly filling in forms.


Figure 11: The business object editor
The business object editor

Relationships

A relationship correlates at least two semantically equivalent business objects that are represented in different physical formats. Suppose EIS1 had employees whose name was represented as a full name, and EIS2 also had employees, but with the name stored as a first name and a last name. If these are really the same employees, then you would use a relationship to indicate this. Now, if the information is updated for an employee in one EIS, it can easily be updated for that employee in the other. By establishing a relationship between them, you are saying it is in fact the exact same employee.

Relationships are created using the visual relationship editor, as shown in Figure 12.


Figure 12: The relationship editor
The relationship editor

Visual snippets

There are times in your business processes, state machines, or other services where you might find yourself needing to write some nitty-gritty logic. You can use WebSphere Integration Developer to do custom code in a number of places, and although you are free to throw in some Java, a popular alternative is to use the visual snippet editor. This editor lets you describe a more detailed level of logic without having to drop down to textual Java.

Figure 13 shows a simple way to determine which branch should execute in the choice following the human task shown previously in Figure 9.


Figure 13: Visual snippet editor
Visual snippet editor

Mediation services

A mediation service intercepts and modifies messages that are passed between existing services and their clients. Mediation services are implemented using mediation modules that contain mediation flows. For example, suppose you had two types of customers using your stock quotation service: regular (non-paying) and gold. Your service delegates to two external services to fetch the stock prices: one provides delayed quotes, and one provides real-time quotes. You could use a mediation flow to route gold member requests from your service to the real-time quotation service, and the rest to the delayed service. Figure 14 shows how you would use the meditation flow editor to create such a mediation.


Figure 14: The mediation flow editor
The mediation flow editor


Back to top


Putting it together

Now that you are familiar with the various ways to implement a service, we will show you how those fit together in a deployable integration application.

Modules and components

Any service that you create becomes a component that you can drop into an assembly diagram (see the next section). The components are grouped together into a module, which can be deployed to WebSphere Process Server (more on that in a moment).

An important aspect of components is their interfaces. An interface lets others know how to talk to your service, and are defined using WSDL or Java. So, a component requires an interface and the implementation must adhere to that interface. You can wire any reference of one component to any other component, provided the component's interface matches the interface required by th reference.

As we mentioned, you might not define the implementations for your services if they already exist, such as a Web service (which has WSDL interfaces) or an EIS application (the Service Discovery wizard creates an appropriate interface). In this case, you use an import, which you can reference in the same manner as any other component. The fact that it is implemented externally is transparent; you just use the reference. Similarly, when you expose your services outside WebSphere or to other applications within WebSphere you just add an export with the appropriate interface and wire it to the component you want to expose. You assign bindings to imports and exports whose properties determine how the service is accessed. For example, if your import has a Web service binding, you will specify an endpoint and a port.

Assembly diagrams

You use an assembly diagram to wire your service components together within a module. Figure 15 shows the assembly diagram using EmployeeToPersonnelSystemMap. Here you have a CheckEmployee process that expects to use the Employee EIS. Using the map, you can keep that reference (and, more importantly, the business logic that uses it) and wire it to the PersonnelSystem using the mediation. The EmployeeSystemPartner reference displayed on the CheckEmployee component corresponds to the same reference within the process.


Figure 15: The assembly diagram editor
The assembly diagram editor


Back to top


Want to learn more about related products?

WebSphere Integration Developer complements several other IBM WebSphere business integration products to assist in the development of service-oriented applications. The most important of these are WebSphere Business Modeler, WebSphere Process Server, and WebSphere Business Monitor. Let's have a brief look at each of these products and how WebSphere Integration Developer fits in with them.

WebSphere Business Modeler

Although you can begin building your service-oriented applications using WebSphere Integration Developer directly, it may be more useful to first model your business processes using WebSphere Business Modeler. Modeling your business processes with WebSphere Business Modeler helps you gain a better understanding of your business, validate enhancements and transformations, and discover potential areas for process improvement, or latent value in existing processes, before implementing technical solutions.

Aside from helping to provide a starting point for implementing solutions, WebSphere Business Modeler also provides other benefits, such as giving you the necessary information for process compliance, documentation and training, and allowing you to run simulations to reveal the implications of process modifications (the simulation tools are included with the advanced version of the product). You can define company resources such as existing information systems, equipment, or employees and business items such as invoices and documents with WebSphere Business Modeler and incorporate them in the process models. At a higher level, you can use WebSphere Business Modeler to model the relationships and interactions between the various entities within an enterprise.

Just as WebSphere Integration Developer can be used by people with varying skill sets, so can WebSphere Business Modeler. WebSphere Business Modeler allows the people who know the business to do the modeling before beginning implementation. For example, a business analyst who needs to model processes at a higher-level can do so using the basic mode, while the more technically experienced person can use the intermediate or advanced user modes to specify deeper process details or more complex business logic.

When you have your business processes modeled, you can pass the models to a development platform for implementation. You can use WebSphere Integration Developer to import the models, and use them to build and test a complete set of SOA applications.

Rational Application Developer

WebSphere Integration Developer is built on Rational Application Developer. Rational Application Developer is a comprehensive development environment designed to meet a variety of development needs, including simple Java applications, sophisticated Web interfaces and portals, and EJB and data access components. It, in turn, is built on Eclipse, which is an open-source platform for development and creating application development tools.

So, when you need to develop portal or Web client applications for your services, you can enable additional features of WebSphere Integration Developer that are found in the underlying Rational Application Developer tool suite. You can also use the Rational Application Developer tools to expose your services as Web services. In fact, you can do additional development for your applications at the J2EE level.

WebSphere Process Server

After you complete the implementation phase, you use WebSphere Integration Developer to deploy the applications to WebSphere Process Server. WebSphere Process Server is a service-oriented architecture integration platform based on WebSphere Application Server. It has evolved from proven business integration concepts, application server technologies, and the latest open standards. It plays a key role in helping your business cope with a changing environment by providing execution-time support for the various types of service components contained within an application developed with WebSphere Integration Developer.

While you can deploy standard Business Process Execution Language (BPEL)-based applications to any BPEL-compliant application server, WebSphere Integration Developer provides the development tools that let you take advantage of WebSphere Process Server's additional capabilities. These capabilities include human tasks to support the manual parts of a business process, business state machines for event-driven processes, business rules to facilitate on-demand changes in a process, and selectors that enable dynamic business processes.

WebSphere Process Server is powered by WebSphere Enterprise Service Bus which, in addition to enabling execution of a true service-oriented architecture, provides J2EE Connector architecture (JCA) and Web services connectivity as well as Java Message Service (JMS) messaging support.

WebSphere Business Monitor

When your applications are up and running on WebSphere Process Server, you will need to capture information about them to help you identify problems, discover faults that have occurred, and determine whether any process modifications are necessary. This area is where WebSphere Business Monitor comes in handy. WebSphere Business Monitor collects events emitted by WebSphere Process Server using the Common Event Infrastructure. From them, it calculates Key Performance Indicators (KPIs) and metrics based on a business measures model.

Using the process models you created, you create a business measures model using the business measures editor that comes with WebSphere Business Modeler. These models define measurements and measuring points, event filters and correlations, and the sources of business data that you want to monitor. The monitor server uses these models as it receives and processes events from the server.

The dashboard client component of WebSphere Business Monitor enables users to monitor business performance using a customized set of views. The views show different representations of active process instances and their status, reports, KPIs, and KPI scorecards, and alerts based on the business measures model. The adaptive action manager can notify you by way of the dashboard, as well as by e-mail, pager, or cell phone based on criteria that you specify.

Finally, WebSphere Business Monitor lets you export monitored values, which you can then import into WebSphere Business Modeler for continuous improvement of the business processes.



Back to top


Summary

We've taken a quick tour of WebSphere Integration Developer and some of its key concepts. As you can see, the environment is highly visual, with an emphasis on the higher-level concepts of your application. This experience is often described as point, click, and integrate.

In future articles we will get into the details of each concept and build an example around it. Through the series you will see a complete integration application take shape. Look for Part 2 in next month's WebSphere Technical Journal, which will cover SOA development in WebSphere Integration Developer, including how to build a simple SOA application.



Back to top


More articles in this series



Resources

Learn

Get products and technologies

Discuss


About the authors

Photo of Greg Adams

Greg Adams was the lead architect for the user interface in the award-winning Eclipse platform, and more recently, has been the lead architect and development lead in the core WebSphere Business Integration Tools, including WebSphere Studio Application Developer Integration Edition and WebSphere Integration Developer. Greg led the delivery of IBM's first complete services oriented architecture (SOA) tools stack and the first BPEL4WS standards supporting Business Process Editor; both critical deliverables in support of IBM's On Demand strategy.


Photo of Richard Gregory

Richard Gregory is a software developer at the IBM Toronto Lab on the WebSphere Integration Developer team. His responsibilities include working on the evolution and delivery of test tools for WebSphere Integration Developer.


Photo of Jane Fung

Jane Fung is an Advisory Software Developer at IBM Canada Ltd, where she is responsible for developing the Business Process Execution Language (BPEL) and Business Rules debuggers in WebSphere Integration Developer. Prior to that, she was the team lead of the WebSphere Studio Technical Support team.


Photo of Randy Giffen

Randy Giffen is an advisory software developer at the IBM Ottawa Lab on the WebSphere Integration Developer team. He was responsible for WebSphere Integration Developer's business state machine tools and the visual snippet editor. Prior to to this he was a member of user interface teams for WebSphere Studio Application Developer Integration Edition, Eclipse, and VisualAge for Java.




Rate this page


Please take a moment to complete this form to help us better serve you.



 


 


Not
useful
Extremely
useful
 


Share this....

digg Digg this story del.icio.us del.icio.us Slashdot Slashdot it!



Back to top


IBM, Rational, and WebSphere are registered trademarks of International Business Machines Corporation in the United States, other countries, or both. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. Other company, product, or service names may be trademarks or service marks of others.