Tib Be Getting Started
Tib Be Getting Started
Tib Be Getting Started
Getting Started
Software Release 3.0.1
November 2008
Contents
Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Enterprise Suite and Inference Edition Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Related Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
TIBCO BusinessEvents Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Other TIBCO Product Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
How to Contact TIBCO Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Chapter 1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Example Projects Provide Additional Learning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Skills Required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Tutorial Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Figures
Preface
Topics
Related Documentation
Typographical Conventions
Convention Use
TIBCO_HOME Many TIBCO products must be installed within the same home directory. This
BE_HOME directory is referenced in documentation as TIBCO_HOME. The value of
TIBCO_HOME depends on the operating system. For example, on Windows
systems, the default value is C:\tibco.
Other TIBCO products are installed into an installation environment.
Incompatible products and multiple instances of the same product are installed
into different installation environments. The directory into which such products
are installed is referenced in documentation as ENV_HOME. The value of
ENV_HOME depends on the operating system. For example, on Windows
systems the default value is C:\tibco.
TIBCO BusinessEvents installs into a version-specific directory within
TIBCO_HOME. This directory is referenced in documentation as BE_HOME. The
value of BE_HOME depends on the operating system. For example on Windows
systems, the default value is C:\tibco\be\3.0.
code font Code font identifies commands, code examples, filenames, pathnames, and
output displayed in a command window. For example:
Use MyCommand to start the foo process.
Convention Use
italic font Italic font is used in the following ways:
• To indicate a document title. For example: See TIBCO BusinessWorks Concepts.
• To introduce new terms For example: A portal page may contain several
portlets. Portlets are mini-applications that run in a portal.
• To indicate a variable in a command or code syntax that you must replace.
For example: MyCommand pathname
Key Key name separated by a plus sign indicate keys pressed simultaneously. For
combinations example: Ctrl+C.
Key names separated by a comma and space indicate keys pressed one after the
other. For example: Esc, Ctrl+Q.
The note icon indicates information that is of special interest or importance, for
example, an additional action required only in certain circumstances.
The tip icon indicates an idea that could be useful, for example, a way to apply
the information provided in the current section to achieve a specific result.
The warning icon indicates the potential for a damaging situation, for example,
data loss or corruption if certain steps are taken or not taken.
Convention Use
[ ] An optional item in a command or code syntax.
For example:
MyCommand [optional_parameter] required_parameter
| A logical ’OR’ that separates multiple items of which only one may be chosen.
For example, you can select only one of the following parameters:
MyCommand param1 | param2 | param3
Convention Use
{ } A logical group of items in a command. Other syntax notations may appear
within each logical group.
For example, the following command requires two parameters, which can be
either the pair param1 and param2, or the pair param3 and param4.
MyCommand {param1 param2} | {param3 param4}
In the next example, the command requires two parameters. The first parameter
can be either param1 or param2 and the second can be either param3 or param4:
MyCommand {param1 | param2} {param3 | param4}
In the next example, the command can accept either two or three parameters.
The first parameter must be param1. You can optionally include param2 as the
second parameter. And the last parameter is either param3 or param4.
MyCommand param1 [param2] {param3 | param4}
For comments or problems with this manual or the software it addresses, please
contact TIBCO Support as follows.
• For an overview of TIBCO Support, and information about getting started
with TIBCO Support, visit this site:
http://www.tibco.com/services/support
• If you already have a valid maintenance or support contract, visit this site:
https://support.tibco.com
Entry to this site requires a user name and password. If you do not have a user
name, you can request one.
Chapter 1 Introduction
This brief chapter provides an overview of the tutorial provided in this guide.
Topics
• Overview, page 2
• Tutorial Scenario, page 3
Overview
This guide contains three tutorials based on one simplified business scenario. The
tutorials provides step-by-step instructions and also explain the main ideas so
you gain understanding as well as practical knowledge. References to related
information are provided so you can jump to the main documentation on any
topic to learn more.
The tutorial does not use any state modeler features, so it can be used with both
the TIBCO BusinessEvents Inference Edition or the TIBCO BusinessEvents
Enterprise Suite software.
Chapter 2, Project Design Tutorial, on page 5 This tutorial shows you how to
configure a BusinessEvents project, run it at the command line, and test its
behavior. Using a simple scenario, this tutorial focuses on inferencing features,
which are central to BusinessEvents. See the section, Understanding Conflict
Resolution and Run to Completion Cycles in TIBCO BusinessEvents User’s Guide.
Chapter 3, Cache Object Management Tutorial, on page 41 This tutorial is based on
the Project Design Tutorial and shows you how to implement cache-based object
management. The tutorial shows you how to configure and deploy two cache
server nodes and three engines running inference agents, to see how
multi-engine, load balancing and fault tolerance features work. Requires use of
TIBCO Enterprise Message Service software for point-to-point messaging.
Chapter 4, Backing Store Tutorial, on page 63 This tutorial shows you how to add
backing store support to the project you configured in the Cache Object
Management Tutorial. Adding a backing store enables the deployed application
to recover from total system failure. This tutorial requires use of Oracle 10G
software (see the product readme for version information) or the Express Edition,
which you can download from the Oracle web site.
Skills Required
The tutorial is written for users with little or no familiarity with TIBCO products.
Readers should have some familiarity with Java programming.
Tutorial Scenario
The tutorial is built on a simplified fraud detection scenario and decision making
flow, illustrated by the following flow chart.
To establish whether fraud
Customer makes a
is suspected, the runtime
debit transaction
engine correlates the
frequency of and amount
of debits in a rolling time
window, and flags BusinessEvents
channel picks up a
accounts that satisfy both debit transaction
of the following criteria: message
• The account incurs
more than three debit
transactions in a two
minute period.
Account yes Do not debit
• The sum of the debits suspended? account
that occurred in the
two minute period
totals more than 80% no
of the average monthly
balance of the account. Debit the account
no
Account status
remains active
This tutorial takes you from start to finish through all the steps of configuring,
building, deploying, and testing a BusinessEvents project. The emphasis is on
basic project design, with deploytime activities limited to the basic actions
required to test a design.
Topics
The sequence diagram below summarizes what happens when you exercise the
completed tutorial project. You will learn more the details as you complete the
tutorial steps.
In summary: A debit message for a certain account arrives through a
BusinessEvents channel. As a result, a Debit event is created and asserted into
working memory, which triggers a rule to apply the debit to the account. The
debit, combined with recent debits for that account, triggers the fraud detection
rule to set the account status to "Suspended" and send out an alert. See Tutorial
Scenario on page 3 for details about what causes the status to become Suspended.
Debit Message
Debit Event
Create
Check if suspended
Debit
Channel
Balance Changed
Event Consume
Get History
Scorecard
X History
Get Criteria
Rete Network
Criteria
Suspend
Rule
Concept Notify
Reading the above diagram from left to right, you can see that the following
occurs:
1. A debit message arriving through a BusinessEvents channel is transformed
into a debit event. (At design time you create an event type for this purpose,
with the appropriate properties.) The debit event instance is then asserted into
working memory. This means that it is added to the Rete network, an in-memory
network of objects based on the Rete algorithm which enables fast matching of
facts with rule dependencies.
2. The presence of this new event in the working memory causes the inference
engine to check for rules that are designed to be triggered when this event is
asserted.
3. A Debit rule checks if the account status is "Suspended" and if not, debit the
account balance by the debit amount. The rule then consumes the event. It is
important to consume events when they are no longer needed so that they
don’t trigger rules to fire when the conditions are met again.
4. A FraudDetection rule checks the recent account activity, stored as history of
the Account concept, and the fraud detection criteria stored in a scorecard.
The rule calculates if the frequency and amount of the debits signals fraud.
5. A CheckNegativeBalance rule checks the account balance after a debit and if
it is negative (less than zero) the rule sets the account status to "Suspended."
This rule is not triggered in the example shown, because the balance has not
fallen below zero.
6. In the example shown above, fraud is detected. The rule sets the Account
status to Suspended and it sends out an alert. In a real world scenario, this
alert would go to the desktop of an employee for follow up. To keep the
tutorial simple, the rule just prints a message to the console.
In this task, you start TIBCO Designer and create an empty project.
Learning Points What is TIBCO Designer? TIBCO Designer is a project-building user interface
used by many TIBCO products, including BusinessEvents. A basic guide to the
use of TIBCO Designer is provided in Appendix A, Getting Started With TIBCO
Designer, on page 75.
How should I organize project folders? Use folders to organize your project
components in any way you like. Example projects are kept simple and use folder
names such as Concepts, Events, Rules. More complex projects might use a
deeper folder hierarchy with names that relate to the purpose or contents of the
folders.
What are palettes? TIBCO Designer organizes resources used to build a project
into palettes. Palettes are provided for each product you install. Because
ActiveMatrix BusinessWorks is provided with BusinessEvents for use in
development (but not production), you see all the ActiveMatrix BusinessWorks
palettes, as well as the BusinessEvents ones.
BusinessEvents adds two palettes to those available for TIBCO Designer and
TIBCO ActiveMatrix BusinessWorks:
• The BusinessEvents Activities palette is used for ActiveMatrix BusinessWorks
integration projects.
• The BusinessEvents Workbench palette provides the resources you need to
build a BusinessEvents project. Click the Palettes tab (on the left), then select
the BusinessEvents Workbench palette to see the resources.
If the palette names are not visible, click the Switch Palette Modes button ( ) to
display them.
How do I choose a palette resource? You can choose a resource by dragging its
icon from the palette panel to the design panel, or you can right-click and choose
the resource from menus. The palettes and resources you see depend on the
context. Only those that present valid choices for your current context are shown.
2. From the Project menu, select New Project > New Empty Project. You see the
Save Project dialog:
3. In the Multi-File Project tab of the Save Project dialog box, click the browse
button ( ) and create a directory in the location where you want to save
your project files. Name the directory FraudDetection.
4. In the TIBCO Message Encoding field, select ISO8859-1 if it is not already
selected.
5. Click OK.
You see the TIBCO Designer user interface. In the Project tab, the root folder
has the same name as the directory you created, and one subfolder called
AESchemas is created automatically.
Your display looks similar to this (you may be using a different number of
panels). Names of the panels shown below are used throughout documentation.
BusinessEvents Workbench palette has been selected:
Menu bar
Toolbar
Project
panel
Design
panel
Palette
panel
Configuration
panel
Summary and You have created a new empty project in TIBCO Designer. The process is the same
Next Steps for all TIBCO products that use the TIBCO Designer interface. Use of a common
project-building tool shortens your learning curve and enables you to integrate
different TIBCO products to create useful applications.
Next you will begin to define your BusinessEvents project by building a channel
for information to enter the system, and a destination for the system to listen to.
The order in which you build up the project is not important. For example, you
might decide that first you want to define all the objects (ontology) for the project.
In this task you configure a Rendezvous channel with one destination, the
DebitTransaction destination, to listen for account debit messages.
Learning Points What are channels and destinations? Messages enter and leave the system
through channels. You create destinations within a channel to define the message
sources and sinks. Events are created using data in incoming messages, and
outgoing messages are created using data from events. Later in the tutorial, you
will set up the relationship between the DebitTransaction destination and an
event type.
Note that in this tutorial outbound messages are simply sent to the console, so
there are no outbound destinations.
How are channels and destinations created? You create channels and destinations
at design-time, as explained below. When you are planning BusinessEvents
projects, you would consider the incoming and outgoing messages for your
project, and then define the channels, destinations, and the corresponding event
types.
More Information Chapter 2, Working With Channels and Destinations in TIBCO BusinessEvents
User’s Guide.
Apply and Save Clicking Apply saves changes in memory but not on disk. If you
want to close the project and open it at a later time, remember to select Project >
Save (or click the Save button). You are also prompted to save unsaved work
when you select Project > Exit.
3. Open the Channels folder, right-click in the design panel, and select Add
Resource > BusinessEvents Workbench > Channel.
4. In the Configuration tab, name the channel RV, and from the Method of
Configuration drop-down list, select Properties. Leave the Service, Network,
and Daemon fields blank so that default values are used. Click Apply.
Resource names and directory names in the path to a resource can’t be any of the
keywords or other words listed in the section Keywords and other Reserved
Words in TIBCO BusinessEvents Language Reference, and they can’t use spaces.
5. Double-click the RV channel in the design panel. It opens like a folder so you
can add multiple destinations within it.
6. Right-click in the design panel, and select Add Resource > BusinessEvents
Workbench > Destination.
Notice that all irrelevant resources are dimmed. Within a channel, the only
type of resource you can add is a Destination resource.
7. Name the destination DebitTransaction.
8. In the Subject field, type BE.DEBIT.TXN. Click Apply. The destination listens
for Rendezvous messages with this subject.
9. Click Apply and save the project.
Summary and Now you have built a channel and a destination within that channel to listen for
Next Steps messages. Later in the tutorial, you will create a ActiveMatrix BusinessWorks
process and publish messages that will be picked up by this destination so you
can see the project in action.
The next step is to create an event.
In this task, you begin to build the project ontology by defining an event.
Learning Points What is an event? The term event is overloaded: it means an activity that happens,
and the definition of an object that represents the activity in BusinessEvents (also
known as an event type), and also an instance of that event definition.
How are events (event instances) created? Event types are created at design time.
Event instances are created using data in incoming messages. When a destination
receives a message, it creates an event to hold the information from the message.
Events can also be created by rules. Events are automatically asserted into
working memory, where their presence will trigger rules (if all rule conditions are
met). Outgoing messages are created using events that are sent to destinations.
What is an event payload? Just as messages have properties and a message body,
events can have properties and payloads. The payload is optional. It is used to
hold more complex data. The Debit event does not use a payload. To learn about
payloads, see Chapter 3, Working With Simple Events of TIBCO BusinessEvents
User’s Guide.
What is a default destination? Events of a certain event type are often sent to the
same destination. To simplify the process of sending those events, you can specify
a default destination in the event type. You can send an event to the default
destination of its event type using the Event.sendEvent() function. (As needed,
you can send an event to a specific destination using the Event.routeTo()
function which lets you specify the target destination.)
When you test the project (later), you will configure a Send Event activity, which
will make use of the default destination.
More Information Chapter 3, Working With Simple Events, Chapter 4, Working With Time Events,
Chapter 5, Working With Advisory Events, in TIBCO BusinessEvents User’s Guide.
To open a folder, either click the folder in the project tree or double click the
folder icon in the design panel.
3. In the Default Destination field, click the browse button ( ) and in the Select
a Resource dialog, select /Channels/RV.channel/DebitTransaction. Click OK
to dismiss that dialog, then click Apply.
4. Select the Properties tab for Debit, add the following properties and click
Apply and Save.
Name Type
TransactionType String
AccountId String
Amount double
Summary and Now you have defined an event type. When you configure events in your
Next Steps working projects, you will examine the messages that you want to listen for, and
configure the event characteristics accordingly.
Next you will set Debit as the default event for the DebitTransaction destination—
so that a Debit event instance will be created and asserted into working memory
whenever a message arrives at the DebitTransaction destination.
In this task you learn how to define a default event type for a destination, and
what that means. You also learn to validate your project.
Learning Points What is a default event? The default event configured for a destination is used to
hold information transferred from an incoming message, when no event type is
specified in the message. The event is then asserted into working memory, where
it may trigger rules.
What is validation? The Validate All ( ) feature checks the whole project, looking
for inconsistencies and incompletely configured resources. If there are errors, the
validation feature makes it easy to correct them. If you rename a resource, for
example, BusinessEvents can correct all references to the resource, except those in
text areas such as the rule editor.
The Validate Resource feature ( ) checks the validity of the currently displayed
resource, and resources referenced in the currently displayed resource. However,
it does not check whether the current resource is correctly referenced elsewhere in
the project.
Task D Validate the Project and Set a Default Event for a Destination
1. Click the Validate All ( ) button:
You see the Validate Project dialog, showing the following warning. (If you
don’t see any the warnings, click the Show Warnings ( )button):
Summary and Now instances of the Debit event type will be created and asserted into working
Next Steps memory whenever a message arrives at the DebitTransaction destination.
Next you will continue to configure the project ontology by defining a concept.
In this task, you define the Account concept, which holds basic information about
an account: an ID, a balance, an average monthly balance, and an account status.
You also learn some useful information about concepts and how they are used.
Learning Points What is a concept? A concept type is a definition of a set of properties that
represent the data fields of an entity. Concept types are like Java classes, and
concept instances are like Java objects.
How are concept instances created? Concept instances are created by rules and
rule functions. For example, when you start the runtime engine, an instance of the
Account concept is created by the InitializeAccounts rule function.
How can I manage concept instances? Instances of concepts and events (also
known as "facts" and "entities") can be persisted in various ways, as determined
by the business need. See TIBCO BusinessEvents User’s Guide and provided
examples for more details.
How is history tracked? When the History setting for a concept property is 0
(zero) the current value is stored without a date-time stamp. When the history
setting is 1, the current value is stored, along with the date and time the value was
added or changed. When the history value is greater than 1, BusinessEvents
tracks changes to property values up to the specified number (using a ring
buffer). The Policy setting additionally determines what values are recorded, all
values or only changes to the prior value.
For the Debits property, BusinessEvents records "All Values," that is, it records the
value of the property every time an action sets the value, even if the new value is
the same as the old value—a person can debit the account twice by the same
amount. For a property such as "address" you might want to track only changes to
the value.
More Information Chapter 6, Working With Concepts, in TIBCO BusinessEvents User’s Guide.
4. Select the Properties tab for the Account concept, and create the following
properties. Click the plus button ( ) to add lines:
Summary and You have defined a concept type to hold information about bank accounts. The
Next Steps last step in building the ontology of your project is to set up a scorecard to hold
fraud detection criteria that are used in rules.
In this task, you finish building the project ontology by creating a scorecard.
Learning Points What is a scorecard? A scorecard is a special type of concept. A scorecard serves
as a static variable. You can use a scorecard resource to track key performance
indicators or any other information.
The FraudCriteria scorecard will store the criteria used to determine fraud, not
any specific data about customer accounts. In this example, you will use this
scorecard in rules.
How are scorecards created? Unlike concepts, there is only one instance of a
scorecard. You create the scorecard at design time. Its values can be viewed and
updated using rules.
It is more accurate to say there is one instance of a scorecard per inference agent
(rule session). This tutorial uses one inference agent. However, in the next tutorial
you will deploy multiple agents in a group, and each has its own instance of the
scorecard.
Summary and You have now set up the channel for the project, and its ontology, that is, the
Next Steps definitions of all the entity types (events, concepts, and scorecards) that are
needed to store information (facts) about possible fraud detection.
Next, you will configure a rule function that sets values for the scorecard and
creates an instance of the Account concept.
In this task, you configure a rule function that you will later set to execute at
startup. The InitializeAccount rule function sets values for the FraudCriteria
scorecard properties. It also creates an instance of the Account concept.
Learning Points In the InitializeAccount rule function you use an ontology function to create a
concept instance.
What is a rule function? A rule function is a function you write in the
BusinessEvents rule language.
How are rule functions created and used? You write rule functions using the rule
editor. You can use rule functions in rules and other rule functions, in event
preprocessors, and as startup or shutdown functions for an agent.
What is an ontology function? An ontology function is automatically created for
each concept and event in your project. These are constructor functions. Another
type of ontology function enables you to create and schedule a time event.
What other types of functions are there? BusinessEvents provides a large library
of functions. You can also add custom Java functions. See Chapter 4, Creating
Custom Functions in TIBCO BusinessEvents Language Reference for details.
Notice that when you type the period after FraudCriteria, a list of its
properties pops up so you can select a property.
6. On the right side of the user interface, click the vertical Ontology tab and
expand the list under Ontology Functions. You can make the function area
larger to see the list more easily. You see the same folder structure as you used
to build the ontology.
7. Hover the cursor over the Account ontology function to see a tooltip showing
its properties:
8. Drag the ontology function corresponding to the Account concept onto the
design panel. The following signature is provided for you:
9. Configure the signature so that you provide the following initial values for
each property.
extID: ActA
Balance: 20000.0
Debits: 0
Status: Normal
AvgMonthlyBalance: 10000.0
Document your code with a comment. Your display should look similar to the
following:
10. Now enter the following. Notice again, that when you type the period after
System you can select debugOut from a list. The hash marks, by the way, are
just to make the message more visible when printed to the console.
You can also use global variables to set initial values at runtime. To use a
global variable, you expand the Scope Variables panel and drag the cursor
from the variable name to the property or attribute name.
7. Click Apply then click OK to dismiss the window. Close the parentheses and
end the line with a semicolon. The finished line looks like this in the rule
editor (with additional colors and formatting):
Instance.createInstance("/Concepts/Account");
You can click inside the parentheses to view or change the details, as desired.
8. Comment your code for readability. Create a line above the line you added
and type:
//Create Account concept instance ActB using XSLT Mapper
9. So that you know when your second account is created at runtime, type the
following:
Summary and You have configured a rule function that will initialize an account (optionally two
Next Steps accounts) at runtime. Next you will configure rules that take action on arrival of
debits, depending on whether the fraud criteria are met or not.
In this task you create a rule set called ProcessDebits, and in it, create a rule called
ApplyDebit. This rule fires when certain conditions are met.
When a Debit event is asserted into working memory, the engine checks the
ApplyDebit rule because it has a Debit event in its scope. The engine checks the
rule conditions. If working memory contains an Account concept instance whose
ID matches the ID in the debit, the rule is eligible to execute. When the rule
executes, if the account status is not “Suspended,” the rule action debits the
account instance by the amount specified in the Debit event.
Learning Points What is a rule set? A rule set is a collection of rules. Rules must belong to a rule
set so that when you build the project EAR for deployment, you can select which
rule sets to include, and you can select different rule sets to be used in different
rule sessions (inference agents). Rule functions, on the other hand, do not belong
to rule sets. A rule function is available in all rule sessions (inference agents).
What are rules and how are they created? Rules define actions to take when
certain conditions are met. Rules are written in the BusinessEvents rule language,
which is similar to the Java language. Rules are declarative and are generally
narrow in scope. The rule editor UI has three panels: the Declaration panel, the
Conditions panel, and the Actions panel, which you will use in the next task.
How are rules used at runtime? The rule engine checks all changes and additions
to working memory and evaluates or reevaluates rules, using their Declaration
and Conditions as appropriate. Eligible rules are added to the rule agenda.
What is the rule agenda A rule fires when it is at the top of the agenda. The engine
determines the order of firing using rule declarations and conditions, and each
rule’s priority. As the contents of working memory change, the engine reevaluates
rules and removes any that are no longer eligible to fire. See Understanding
Conflict Resolution and Run to Completion Cycles in TIBCO BusinessEvents User’s
Guide for details.
The Priority setting is used by the runtime engine when determining the order
in which rules are fired. Those with a number closer to one fire first. When
there is no reason to force rules to execute in a particular order, leave the
Priority set to the default and let the runtime engine determine rule order.
4. Double-click the ApplyDebit rule icon to open the rule editor.
5. Drag the Debit event from the project tree into the Declaration panel. Similarly
drag the Account concept into the Declaration panel.
The Declaration panel now looks like this:
Declaration The Declaration provides the scope of the rule. It lists all the entity
types to be used in the rule, and their aliases. By default the alias is set to the
entity name, but you can change it as desired.
6. In the Conditions panel, type the following:
Notice that when you type the At sign (@), a pick list of concept attributes
appears. Attributes are built-in. You can’t add or remove attributes.
7. In the Actions panel, just below the Conditions panel, type these statements
(one line break below is added for clarity):
When the rule engine executes the above actions, it first checks whether the
matching account is suspended. If it is not suspended, the engine performs
the debit. In either case, it prints information to the console.
8. It is important to consume (delete) the event after it has served its purpose. At
the end of the Action statements, type the following:
Event.consumeEvent(debit);
9. Click Apply, then save the project. The completed rule looks like this:
If you do not consume events when their work is done, their presence (along
with other conditions) might trigger rules erroneously.
Summary and In this task you have seen how to configure rules using the rule editor. The next
Next Steps task continues the activity of rule building. You will define the rule that
implements the fraud detection tests.
Finally, you have arrived at the fraud detection rule itself. In the FraudDetection
rule you will use a few standard functions, along with the values in an Account
concept instance, and the FraudCriteria scorecard to calculate whether recent
activity indicates possible fraud.
6. Complete typing the first condition as shown below. You can drag the
DateTime functions onto the rule editor, or type the names. Add an
annotation to make the rule easier to read.
The above condition checks whether the number of debits in the specified
interval prior to the current time is greater than the specified number of
debits. The interval and the number of debits are set in the FraudCriteria
scorecard.
// 2. Checks the percentage of the average balance that was debited in the
verification interval
Temporal.Numeric.addAllHistoryDouble(account.Debits,
DateTime.getTimeInMillis(DateTime.now())-FraudCriteria.interval)
> FraudCriteria.debits_percent*account.AvgMonthlyBalance;
This condition checks whether the sum of all debits in the verification interval
is greater than the specified percentage of the account average monthly
balance. The specified percentage is set in the FraudCriteria scorecard. The
average monthly balance, for the purposes of this tutorial, is set in the
Account instance created by the InitializeAccounts rule function.
Note that a rule can specify multiple conditions and all conditions in a rule
must be met, before the action is done. That is, each condition is joined by an
implied "AND" operator.
8. In the Actions area, enter the following:
account.Status="Suspended";
System.debugOut("############### Account Id <"+account@extId+"> STATUS set to
<Suspended>. Fraud suspected.");
When an account debit event arrives, and the account fails the verification tests
set in the conditions, the status is set to Suspended, and a message prints to the
console.
9. Click Apply and save the project.
Summary and You will define one more rule, to set the account status to Suspended if the
Next Steps account balance goes negative.
This rule simply suspends accounts whose balance goes negative, for obvious
business reasons. When an account balance changes, this rule checks whether the
the new balance is less than zero. If it is, the account is suspended.
account.Status="Suspended";
System.debugOut("############### Account ID <"+account@extId+"> STATUS set to
<Suspended>. Balance <"+account.Balance+"> is less than zero");
Summary and You have now configured the project’s ontology and rules. Now you are ready to
Next Steps configure and build the archive, ready for deployment.
Learning Points In this task you turn your attention to deployment configuration. You configure
an Enterprise Archive Resource (EAR) and a BusinessEvents Archive Resource
(BAR).
What is a BusinessEvents Archive (BAR)? A BAR contains all the deploytime data
for one agent in a BusinessEvents project.
Multiple Agents (Rule Sessions) in an EAR Each BAR in an EAR deploys as one
inference agent. You would configure each BAR as appropriate for each inference
agent’s needs.
What do you configure in a BAR? When you configure an inference agent’s BAR
for deployment, you can make various choices based on the resources in the
project. If there are multiple BARs you can configure each one differently,
according to need. Configuration choices determine the following:
• Which rule sets to deploy.
• Which destinations to listen to.
• Which rule functions to use (if any) as event preprocessors, and what
threading to use.
• Which rule functions (if any) to execute at startup or shutdown (or both). See
the topic Working With Startup and Shutdown Rule Functions in TIBCO
BusinessEvents User’s Guide.
• What kind of object management to implement. Object management is a large
topic and the most commonly used option is covered in Chapter 3, Cache
Object Management Tutorial, on page 41. For this tutorial, use the default
option, In Memory, which means that objects are kept in memory only and are
not persisted when the engine stops.
What is an event preprocessor? A preprocessor is a rule function that processes
incoming messages before BusinessEvents transforms them into Events. For
example, a preprocessor might filter the messages so that only certain ones are
used as events. Preprocessors are multi-threaded and you can choose from
various threading and queue options, as appropriate to handle the work load. By
default the threading uses the system-wide shared queue and threads. See the
topic Working With Event Preprocessors in TIBCO BusinessEvents User’s Guide.
project to ensure that you haven’t introduced any errors since your last check.
Remember that warnings do not necessarily indicate a problem. Correct any
issues before continuing.
2. Click the root folder to display the top level folders in the design panel, then
right-click in the design panel, and select Add Resource > General >
Enterprise Archive. BusinessEvents names it automatically based on the
project name, FraudDetection.
3. In the File Location field, specify the path to the EAR file and its name, for
example, C:\temp\FraudDetection.ear. Click Apply. Your display should
look similar to this:
5. Right-click in the design panel, and select Add Resource > BusinessEvents
Workbench > BusinessEvents Archive.
6. Name the BusinessEvents Archive resource (BAR) FraudDetection. In the
Type field, select Inference, and click Apply.
7. Select the Input Destinations tab. In the row for the URI
/Channels/RV.channel/DebitTransaction, check the Enable checkbox.
After deployment, BusinessEvents listens for messages from this destination
and transforms them into events.
Another way to enable the DebitTransaction destination is to select Defaults in
the Listener Set area. This option is useful if the project has several
destinations and you just want to enable all the default destinations.
BusinessEvents checks the Default column if the default event for that
destination is used in a rule set selected for deployment on the RuleSets tab.
8. Now configure the InitializeAccount rule function to execute on startup.
Select the Startup/Shutdown tab and in the Startup Actions area, click the
Add ( ) button. In the Select a Resource dialog, select InitializeAccount.
Click OK to dismiss the dialog, then click Apply and save the project.
(In the Object Management tab, use the default setting, In Memory.)
9. Click the FraudDetection EAR resource and in the Configuration tab, click
Build Archive. You may be prompted to save the project. You should see the
message "Enterprise Archive File has built correctly":
Summary and Before you deploy the EAR file, you will set up a simple Rendezvous publisher,
Next Steps using a ActiveMatrix BusinessWorks process, to provide test data to the
application.
Learning Points You will use the ActiveMatrix BusinessWorks process you configure here to send
Rendezvous messages that trigger the fraud detection rule behavior, when
conditions are met.
7. In the design panel, click the Send Debit Instruction activity. In the Event
Reference field, click the browse button ( ) and select the Debit event type.
Click Apply.
Earlier, you set DebitTransaction as the default destination for the Debit event.
Because of this connection, the Send Event activity can send messages to that
destination without additional configuration. When the messages arrive,
BusinessEvents will transform them into Debit events.
8. Next, map the process data from the Start activity to the parameters of the
Send Debit Instruction (Send Event) activity:
a. Select the Input tab for Send Debit Instruction.
b. In the Process Data panel, fully expand the $Start variable and in the
Activity Input panel, fully expand the BESendEventInput elements.
c. Drag the cursor from AccountId in the Process Data panel to AccountId in
the Activity Input panel. You see a connecting line.
d. In the same way, connect the Amount parameter in the Process Data panel
to the Amount parameter in the Activity Input panel.
e. In the Activity Input panel, to the right of the TransactionType
parameter name, type "debit" (including the quotes). You see a short
connecting line within the panel beginning with a dot, indicating that the
value is set within the activity and is not mapped.
f. Click Apply and save the project.
Summary and You’ve created a simple mechanism for sending test data into the running engine.
Next Steps Next you will deploy the project.
Learning Points You are now ready to deploy this project. For testing purposes, you can simply
start the engine at the command line. In production scenarios it is usual to deploy
to a TIBCO Administrator domain (see Chapter 28, Deploying a TIBCO
BusinessEvents Project of TIBCO BusinessEvents User’s Guide for more details).
The -n option is optional. It lets you assign a user-friendly name to the engine. A
separate log file using the name is created as well.
You see engine startup messages in the console, beginning like the following:
You see various initialization messages, then you see the message you configured
in the startup rule function (see Configure the InitializeAccount Rule Function on
page 20):
Summary and Next you will send data into the engine and see the results.
Next Steps
Learning Points Now that the engine is running, you will use the ActiveMatrix BusinessWorks to
simulate data coming into the application from account activity. You can use this
testing technique on other projects too.
For more details on defining ActiveMatrix BusinessWorks processes see TIBCO
BusinessWorks Process Design Guide.
If you used a different value for the concept instance (in the section Configure the
InitializeAccount Rule Function on page 20) use that value here. The account ID is
shown in bold below:
4. Double-click in the Amount field, and enter 3000. This amount will be
debited each time you run a job. Click OK to save and dismiss the window.
5. Position the command window so you will be able to see the messages.
6. Click the Start Testing Viewed Process ( ) button. You see the Select
Processes to Load dialog:
7. Select DebitAccount(Current) (if it is not selected) and click Load and Start
Current.
In the command window look for the following message:
[FraudDetection] ############## Debiting account <ActA> by
<3000.0> dollars. New balance is <17000.0>
The project is set up to "suspend" accounts that incur more than three debit
transactions over a two-minute rolling window, where the sum of the debits
totals more than 80% of the average monthly balance of the account. The
average monthly balance is set to $10,000. So the third debit of $3,000 within
two minutes triggers the rule.
8. Run more jobs to trigger the FraudDetection rule action. Run each job as
follows:
a. In the test panel click the TestProcess/DebitAccount.process process
instance.
b. Click the Create a Job ( ) button (on the left). This action creates and
runs the job.
When the rule conditions are met, you see a message like the following:
[FraudDetection] #### Account id <ActA> STATUS set to <Suspended>
This tutorial shows you how to add caching functionality, and how to deploy
multiple nodes and agents to perform different tasks in the runtime environment
such as storing cache data, and running inference agents for load balancing and
fault tolerance
This tutorial uses the fraud detection project configured in Chapter 2, Project
Design Tutorial, on page 5.
Topics
This tutorial builds on the Project Design Tutorial, to explore common object
management and deploy-time options.
Object management (OM) Refers to various ways that BusinessEvents can manage
the state of ontology object instances created by each inference agent.
Cache-based OM When you use cache-based object management, object data is
kept in memory caches, with (optional but recommended) redundant storage of
each object for reliability and high availability. Within a cache cluster, nodes
deployed as cache servers manage the data and handle recovery. Cache data is
shared by all agents in the cluster.
All the provided caching schemes use a distributed cache and are configured for
production as shipped. In a distributed cache, cached object data is partitioned
between the nodes (JVMs) in the cache cluster for efficient use of memory. No two
nodes are responsible for the same item of data. You can configure one or more
backups of each object to be kept on different nodes to provide reliability.
Multi-engine features With cache OM you can use multi-engine features. Multiple
inference agents deployed in the same cache cluster share the cache data and can
run concurrently. They can be differently configured agents, or instances of the
same agents (known as an agent group).
Load balancing and fault tolerance Deploying an agent group enables you to use
load balancing or fault tolerance or both. When you deploy more inference agent
instances than the specified number of active agents, the inactive inference agents
are automatically used for fault tolerance. Inactive agents maintain a passive Rete
network and do not listen to events from channels.
To explore these features you will make some minor modifications to the fraud
detection project, and then deploy five nodes: three inference agents to provide
load balancing and fault tolerance, and two cache servers, providing fault tolerant
data storage. You will then exercise the project to see the effect of the cache, load
balancing, and fault tolerance.
In this exercise you will add a JMS Connection resource and a JMS channel with
one destination. You will configure the project to use this destination instead of
the Rendezvous destination used in the project design tutorial (Chapter 2, Project
Design Tutorial, on page 5).
Learning Points Load Balancing You can configure your project to enable load balancing of
messages in a queue among active members of an agent group. Load balancing
can’t be done using the Rendezvous channel already configured for the Fraud
Detection project because it broadcasts messages, and all the agents would pick
up the same messages. Instead you must use point to point messaging using
queues. When an agent retrieves a message from the queue it sends back an
acknowledgement to the server. That message then leaves the queue. Each
message is processed by only one of the agents.
Shared Resources In Task B, Create a Rendezvous Channel and Destination, on
page 11, you configured a Rendezvous channel using properties. To demonstrate
another configuration method, you will configure the JMS channel using a shared
resource. Generally, you would use a shared resource if you wanted to reuse the
resource in different places in your project.
More Information For more on JMS channels, read Chapter 2, Working With Channels and
Destinations in TIBCO BusinessEvents User’s Guide.
Start the JMS 1. Start the TIBCO Enterprise Message Service™ server:
Server
Start > All Programs > TIBCO > TIBCO EMS VersionNo > Start EMS Server
Create JMS 2. Start TIBCO Designer (Click Start > Programs > TIBCO > TIBCO Designer
Connection version > Designer version.)
3. From the Project menu, select Open Existing Project and open the
FraudDetection project you configured using Chapter 2, Project Design
Tutorial, on page 5.
If you don’t want to configure the project yourself, you can use the configured
example, located here:
BE_HOME/examples/FraudDetectionwithCache/FDCache
4. Select Project > Save As and save the project as FDCache. The project name
becomes a directory name in the location you specify. All files are copied to
this directory.
5. In the project root, create a folder called Shared. This folder is not required but
is just one way to organize your project.
6. Open the Shared folder and in the design panel, right-click and select Add
Resource > JMS > JMS Connection.
7. Name the connection JMS and click Apply. No other configuration is required
as default values are used in this tutorial.
8. Click Test Connection. You see a message that the connection is successful:
9. If the connection test fails, check that the Enterprise Message Service server is
running. When the connection test is successful, click OK.
2. In the Configuration tab, name the channel JMS, choose the JMS driver, and
from the Method of Configuration drop-down list, select Resource.
3. Click the browse button ( ) and select the JMS Connection resource you
configured in Task B. Then click Apply.
4. Open the JMS channel, right-click in the design panel, and select Add
Resource > BusinessEvents Workbench > Destination.
5. Name the destination DebitTransactionJMS.
6. In the Default Event field, click the browse button ( ) and select Debit.
7. In the (Queue) Name field, type DEBITTXN. Click Apply. The destination
listens to a queue with this name.
8. Click Apply and Save the project.
The Rendezvous destination is not used in the caching tutorial. Its existence won’t
affect any functionality. However, it’s a good idea to remove unused resources.
Alternatively, you can disable the Rendezvous destination in the BAR resource
Input Destinations tab, if you want to use it again for some other reason.
Learning Points In the BAR resource, you can select what rulesets to deploy, what destinations
(listeners) to enable, and you can specify startup and shutdown actions (among
other configuration options). Thus from one project you can deploy multiple
EARs each with differently configured BAR files.
For learning purposes, click Yes. You see the References dialog showing the
project path to the FraudDetection BAR resource.
3. Click the project path in the References dialog to jump to the BAR resource.
Select the Input Destinations tab. You can see that the RV destination is
enabled.
In a real-world situation, checking references can reveal additional work you
must do, or a reason to cancel the deletion. However, you can go ahead and
delete the channel in this case.
4. In the References dialog (which remains open) click OK. The RV channel is
now deleted.
5. Open the Input Destination tab of the BAR resource, you see that only the JMS
destination is listed.
The JMS destination is enabled by default because it has a default event.
In the basic Fraud Detection project (see Chapter 2, Project Design Tutorial, on
page 5), one or optionally two Account instances are created on startup using
startup rule functions.
Startup rule functions execute on all active agents as they start up, unless you use
application logic to perform a check before taking action.
Three instances of the agent will now be deployed in three engines, so you must
ensure that the Account instance or instances are created only once (otherwise
runtime exceptions will occur).
To do so, you will modify the InitializeAccounts rule to use a try catch block.
The block will prevent concepts from being created if they already exist.
Learning Points Caching and Engine Concurrency (multi-engine) The design of your project must
take multi-engine features and cache object management into account.
How entities are shared between agents In a multi-engine configuration:
• All concept instances are shared between agents in an asynchronous manner.
• Event instances are clustered between agents—they are not shared. That is,
each event instance is present on only one agent in a group.
• Scorecards are not shared between agents. Each inference agent maintains its
own set of scorecards and the values in each agent can differ.
Avoiding concurrent changes As needed by the project, take care when making
changes that affect the ontology instances to prevent another agent in the group
from making concurrent changes. Read Designing With Multiple Active Inference
Agents in TIBCO BusinessEvents User’s Guide for more details.
try {
4. Similarly wrap the lines that create ActB, if you created this optional account
(see Optional Exercise: Create a Concept Instance Using a Standard Function
on page 23). The complete section for ActB is shown below (formatted to fit):
try {
//Create Account concept instance ActB using XSLT Mapper
Instance.createInstance("/Concepts/Account");
System.debugOut(
"############### Created account ActB ################");
} catch (Exception e2) {
// No action - the account is just not created if it exists.
}
5. Click Apply.
6. Click the FDCache resource and select the Configuration tab.
7. In the File Location field, Specify a location and name for the EAR file. The
tutorial uses C:\temp\FDCache.ear.
8. Click Apply. Click Save. Click Build Archive.
You should see the message "Enterprise Archive File has built correctly." If you
do not, validate your project to identify and correct any errors and try again.
BusinessEvents ships with default values set for basic caching functionality, so all
you have to do to enable caching in a project is give the cluster a name that is used
in all nodes, and enable the multi-engine feature property.
Behind the simple setup is a set of configuration properties with default values.
The Learning Points section below provides information on some configuration
options that you don’t have to set for the tutorial.
Learning Points Node discovery The following default settings are used for multicast node
discovery. Properties do not have to be added to the property files unless you use
different values.
java.property.tangosol.coherence.clusteraddress=224.3.3.1
java.property.tangosol.coherence.clusterport=31337
To avoid possible collisions with other clusters running on your network, the
tutorial uses a non-default cluster address. More cluster discovery settings are
available for different situations, such as hosts with multiple NICs. Another
method of discovering nodes, using well-known addresses for situations where
use of multicast is not an option.
Cache cluster features Many characteristics of the cache cluster and caching
scheme are specified by properties set in the engine properties file, such as the
cluster name. More in depth customization is possible but is not often required
and is not documented. Contact TIBCO support for assistance.
Multi-engine features Multiple engines can run concurrently against the same
project ontology. You can use a mixture of differently configured agents and
identically configured agent groups (see Configure Inference Agents on page 55).
By default the multi-engine features are disabled, so that only the agents in one
EAR file (that is, running in one JVM) are active at one time. To turn on
multi-engine features, which offer load balancing (and implicit fault tolerance),
you set the be.engine.cluster.multiEngineOn property to true.
Number of cache servers to start You must also set a property that defines the
number of cache servers to start before starting any inference agents. The
be.engine.cluster.minCacheServers property ensures that the cache is
populated before inference agents begin processing events.
More Information For details on other cluster-level properties not discussed in this tutorial (because
their default values don’t need to be changed) see Chapter 19, Configuring Cache
Cluster Discovery and Chapter 20, Configuring Cache Cluster Settings of TIBCO
BusinessEvents User’s Guide.
Every node (agent and cache server) in the cluster uses the same set of cluster
properties.
java.property.tangosol.coherence.cluster=AcmeCluster
java.property.tangosol.coherence.clusteraddress=224.3.3.11
java.property.tangosol.coherence.ttl=0
be.engine.cluster.multiEngineOn=true
be.engine.cluster.minCacheServers=2
clusteraddress Specifies the multicast IP address that the socket will listen to or
publish on.
Possible values are addresses between (and including) 224.0.0.0 and
239.255.255.255. Default value is 224.3.3.1
To avoid collisions with any other project deployed on your network,
use a non-default address. The tutorial uses 224.3.3.11
ttl Specifies the time-to-live setting for the multicast, that is, the
maximum number of "hops" a packet can traverse. A hop is defined as
a traversal from one network segment to another via a router.
If you will start all nodes on one machine (which you can do for
non-production situations), set the ttl to 0, to keep multicast packets
from leaving the originating machine (on most operating systems).
The purpose of cache servers is to store and serve cache data for the cluster. A
cache server is a non-reasoning agent used as a storage node only. Storage nodes
are responsible for object management. They participate in distribution,
partitioning and storage of the objects in the cluster.
Learning Points Local storage The local storage engine property is true by default, so you only
have to set it when you want to disable cache data storage for a node. It is a best
practice in production systems to use dedicated cache server nodes for cache data
storage and to disable cache data storage in all other nodes.
Deploying a node as a cache server Cache server nodes are deployed using any
EAR file that contains a BAR resource configured for an inference agent (or a
query agent). All other agent-level properties in the TRA file are ignored when the
following property is set: be.engine.cacheServer=true.
Number of cache servers to start At the cluster level you used the
be.engine.cluster.minCacheServers property to define the number of cache
servers that must be started before inference agents start. This means that you can
start all the nodes in any order. The inference agents won’t become active until the
specified number of cache servers have started, ensuring that the agents can write
to and read from the cache.
be.engine.cacheServer=true
3. Save the file in the BE_HOME/bin directory, using the name cs.tra.
Inference agents are configured partly in TIBCO Designer using a BAR resource,
and partly using engine property (TRA) files. You can use a supplementary
property file for each agent to make command line startup easier.
Learning Points Inference agents do the decisioning work. Each agent has a Rete network, for
processing incoming events. You can think of an inference agent as a rule session,
attached to the cluster.
Agent group An agent group is formed by deploying one agent multiple times,
generally on different machines. Use of agent groups requires the multi-engine
features to be enabled (see Configure Cache Cluster Properties on page 51).
Fault tolerance and load balancing are provided automatically when you use
agent groups and multi-engine features. (Fault tolerance is also available without
multi-engine). You can configure some agents to be inactive, available only for
fault tolerance. However, all active agents load balance and if one agent fails, the
others handle the load, so you may not need to keep an agent inactive.
To make an agent inactive, set the Agent.AgentGroupName.maxActive property to
a lower number than the number of agents in the group. All deployed agents in
addition to that number are inactive—which ones are inactive is specified by a
priority number.
Agent group key (and scorecards) It is a good idea to identify each agent in a
group uniquely. To do so you define an agent group key property and give each
agent a unique value. For example, this property is required if your project uses
scorecards. Scorecard values are not shared between agents in a group. When
recovering from failure, the system needs to identify which scorecard instance
belongs to which agent so that the correct value is restored.
Local storage For performance reasons, it is recommended that you disable local
storage of cache data on inference agents and query agents. Instead use dedicated
cache server nodes for storage of cache data. To disable local storage, set the
following property set to false (it is true by default):
java.property.tangosol.coherence.distributed.localstorage=false
Cache Modes In the Object Management tab, different cache modes can be set
on individual entities, to tune memory use and performance. See Chapter 18,
Understanding and Working With Cache Modes in TIBCO BusinessEvents
User’s Guide to explore cache mode features.
5. In the Configuration tab, click Build Archive. You may be prompted to save
the project. You should see the message "Enterprise Archive File has built
correctly":
java.property.tangosol.coherence.distributed.localstorage=false
Agent.FraudDetection.maxActive=2
Agent.FraudDetection.priority=1
Agent.FraudDetection.key=agent1
Where FraudDetection is the agent group name you assigned in the BAR
resource in TIBCO Designer (see Task I, Configure Inference Agent OM
Settings in TIBCO Designer, on page 55).
3. Save the file in the BE_HOME/bin directory, using the name agent1.tra.
4. Modify the section title, and the priority and key properties as shown in the
Inference Agent 2 Properties section below and save the file as
BE_HOME/bin/agent2.tra:
java.property.tangosol.coherence.distributed.localstorage=false
Agent.FraudDetection.maxActive=2
Agent.FraudDetection.priority=2
Agent.FraudDetection.key=agent2
java.property.tangosol.coherence.distributed.localstorage=false
Agent.FraudDetection.maxActive=2
Agent.FraudDetection.priority=3
Agent.FraudDetection.key=agent3
It is helpful if you can size the command windows so that you can see all five
windows at one time. First you will start the cache servers, as is common practice.
Learning Points Cache servers start first It is important that cache servers start before inference
agents. The order in which you start the engines is not important, as long as you
have set the be.engine.cluster.minCacheServers property, which ensures
cache servers start up first (see Configure Cache Cluster Properties on page 51).
Ensure that the TIBCO Enterprise Message Service server has started. One way to
start the server is as follows:
Start > All Programs > TIBCO > TIBCO EMS VersionNumber > Start EMS Server.
The -n option is optional. It lets you assign a user-friendly name to the engine.
The command windows and log files display the name you enter. A separate
log file using the name is created as well.
You see many informational messages in the windows as the cache servers
come up.
3. Open three more command windows in BE_HOME/bin, and in each window
enter one of the following commands:
be-engine -n engine1 --propFile agent1.tra c:\temp\FDCache.ear
You see engine startup messages in the console, beginning like the following:
If you do not see the above, check that you configured the BusinessEvents archive
resource Object Management tab to use cache OM.
On the engine that starts first, you see the message (or messages) you configured
in the startup rule function (see Configure the InitializeAccount Rule Function on
page 20 and Task F, Add Checks in the InitializeAccounts Rule, on page 49):
No other engine displays those messages because of the lock and the check for
existence of this concept instance that you added in step Task F, Add Checks in
the InitializeAccounts Rule, on page 49.
Troubleshooting
If another user on the same network is using the same multicast properties as you,
you will have to set a different cluster IP address property in all files.
Learning Points As in the section Test the Application on page 39, while the nodes are running,
you will use ActiveMatrix BusinessWorks to simulate data coming into the
application from account activity. See that section for detailed instructions. It is
assumed here that you are now familiar with the steps.
The process you created in Configure an ActiveMatrix BusinessWorks Process for
Testing on page 34 can be used again without modification.
5. Start JConsole, which is in the bin directory of your JDK installation (for
example, C:/Program Files/Java/jdk1.6.0_07/bin/JConsole.exe) and
expand the Coherence folders. For example, expand to:
Coherence > Cache > DistributedCache >
dist-unlimited-nobs$AcmeCluster$$be.gen.Concepts.Account > 1 >
back
Command windows for the active agents look similar to the following:
When the rule conditions are met, you see a message like the following:
[FraudDetection] #### Account id <ActA> STATUS set to <Suspended>
In this tutorial you add a backing store to the project you prepared in Chapter 3,
Cache Object Management Tutorial, on page 41.
Topics
In this task you use provided scripts to set up the database schema. If you want to
reset the tutorial, execute Task C and Task D again to recreate the empty tables.
Learning Points Long Identifiers A known limitation in Oracle means that each identifier name
cannot exceed 30 characters in length. The tutorial project does not have long
identifiers. However, if your projects have long identifiers, you will perform an
additional procedure to provide shorter aliases and then regenerate and run the
scripts, as documented in the section Extra Procedure to Handle Long Identifier
Names TIBCO BusinessEvents User’s Guide.
After changing a project that uses a backing store If you change the project
ontology you must update the database schema. A utility is available. However, it
cannot handle all changes. See the section Updating an Existing Backing Store
Database Schema in TIBCO BusinessEvents User’s Guide.
In the command window, you see various messages as generated scripts are
created. The scripts contain various schema definition commands.
The following generated scripts appear in the BE_HOME/bin directory:
FDStore.sql
FDStore_cleanup.sql
FDStore_remove.sql.
The aliases file is used to address a known limitation in Oracle: an identifier name
cannot exceed 30 characters in length. If there are any long identifier names, they
appear in the file. However, the fraud detection project has no long names. For
details on how to handle long identifier names, see TIBCO BusinessEvents User’s
Guide, Chapter 24, Setting up a Backing Store Database, Task C, Shorten Long
Names Using the Aliases File.
Task C Run the Initialize Database Script to Create the Oracle User
Running the provided initialize_database.sql script drops all existing
backing store tables. It deletes the user (if one exists) before creating it again.
In the initialize_database.sql script, the Oracle user is set to BE_USER, with
password BE_USER. You can edit the script to change these default settings, but
the tutorial uses the default username and password.
1. Login to Oracle Server as the system user.
One way to do the above is to click Start > All Programs > Oracle Database
10g Express Edition > Go To Database Home Page. The database home page
appears in a browser window. Type the user name system and the password
you assigned when the software was installed.
2. Open a command window and navigate BE_HOME/bin.
3. Type SQLPlus then provide user name system and the password for that user.
4. Type @initialize_database.sql to run the provided script,
initialize_database.sql. You see messages like the following:
User created.
Grant succeeded.
SQL>
Task D Login as the BusinessEvents Oracle User and Run SQL Scripts
In this step, you run scripts to create the database schema under the user you
created. The schema combines the definitions in base-types.sql,
create-tables.sql, and the generated FDStore.sql file.
Note that these scripts also perform cleanup before creating the schema. The first
time you run the scripts, you see harmless error or warning messages because
there is nothing to delete.
1. Login to the Oracle server as BE_USER, password BE_USER (The username and
password in the script you ran in Task C).
2. Navigate to the location of the scripts and open an SQLPlus prompt.
3. Identify yourself as be_user with password be_user.
4. At the SQL prompt, type the following to run each script in turn:
a. @base_types.sql
b. @create_tables.sql
c. @FDStore.sql
In this task, you will add a JDBC Connection resource to your project and
configure it to connect to the backing store database. Details below explain how to
connect to a local instance of Oracle 10g Express Edition database. Adapt the
instructions as needed for your database product.
In a later task, you will specify the location of this resource, using the engine
property be.oracle.dburi.0.
1. Start TIBCO Designer and from the Project menu, select Open Existing
Project. Do one of the following:
— Open the FDCache project you configured using Chapter 3, Cache Object
Management Tutorial, on page 41.
— If you have not configured the caching project yourself, you can start with
the configured caching example, located here:
BE_HOME/examples/FraudDetectionwithCache/FDCache
— If you don’t want to configure the backing store project, you can view the
configured backing store example, located here:
BE_HOME/examples/FraudDetectionwithBackingStore/FDStore
The rest of the tutorial assumes that the FDCache project is your starting point.
2. Select Project > Save As. Create a project directory called FDStore somewhere
on your computer.
The project directory becomes the project name. All files are copied to this
directory.
3. Open the Shared folder and add a JDBC Connection resource (from the JDBC
palette).
4. In the drop-down list to the right of the JDBC Driver field, select
oracle.jdbc.driver.OracleDriver (thin). The driver appears in the JDBC Driver
field and in the Database URL field the Database URL format appears as:
jdbc:oracle:thin:@<host>:<port#>:<db_instancename>
In the Database URL field, configure the provided format. For example:
jdbc:oracle:thin:@localhost:1521:XE
Where 1521 is the default port, and XE is the default instance name for Oracle
Database 10g Express Edition. (The default instance name for Oracle Database
10g is ORCL).
5. In the User Name and Password fields, enter the username and password of
the database user you created (see Task C, Run the Initialize Database Script to
Create the Oracle User, on page 65). The username and password used in the
tutorial are both be_user.
6. Make sure Oracle is up and running, then click Test Connection. If the details
are correct, you see a success message.
the location of the JDBC Connection resource you just configured, and select
it.
9. Click Apply then click Save to save the project. When you build the EAR file,
the JDBC Connection resource is packaged into the shared archive (SAR) file.
10. Double-click the FraudDetection enterprise archive resource to open it and in
the Configuration tab File Location field, change the EAR file name to
FDStore.ear and save it somewhere on your computer, for example,
C:\temp\FDStore.ear.
11. Click Apply, click Save, and then click the Build Archive button to build the
EAR file.
In this task, you add the same set of backing store related properties to each TRA
file.
Entries above the limit are kept in the backing store. The default size is 10000. If
you want to use the default, you only need to add the isCacheLimited property.
For more details, See Chapter 25, Project Configuration for Backing Store in
TIBCO BusinessEvents User’s Guide.
be.engine.cluster.hasBackingStore=true
be.oracle.dburi.pool.initial.0=2
be.oracle.dburi.pool.min.0=2
be.oracle.dburi.pool.max.0=5
be.oracle.dburi.pool.enforce=true
Ensure that the TIBCO Enterprise Message Service server has started. One way to
start the server is as follows:
Start > All Programs > TIBCO > TIBCO EMS VersionNumber > Start EMS Server.
For background information see Deploy the Agents and Cache Servers on
page 58.
Troubleshooting
See Troubleshooting on page 72. Also, if the cluster fails to start correctly you may
have to reset the database. See Reset the Backing Store Tutorial on page 73.
You can reset the tutorial for re-use. Different levels of reset are available as
explained next:
Remove the database user and Run initialize_database.sql, and all other scripts as
the database schema. described in Task C in the section Prepare the Database on
page 64
TIBCO Designer is an easy to use graphical user interface for creating integration
projects.
This chapter and the next give an introduction to TIBCO Designer that is product
independent. In this chapter, you learn about TIBCO Designer basics. In the next
chapter, you learn about creating and managing projects and working with global
variables.
These chapters are taken from TIBCO Designer User’s Guide. The complete
documentation, including TIBCO Designer Palette Reference, is available here on
Windows:
Start > Programs > TIBCO > TIBCO Designer version > Designer Documentation
You can also access it here: TIBCO_HOME\designer\version\doc.
Topics
TIBCO Designer allows you to easily create integration projects for your
enterprise computing environment.
TIBCO Designer is available as a graphical user interface to different TIBCO
products and is used by those products for configuration. Depending on the
product you installed, you can, for example, use TIBCO Designer to create TIBCO
BusinessWorks process definitions or create or modify adapter configurations.
• TIBCO BusinessWorks is a scalable, extensible, and easy to use integration
platform that allows you to develop, deploy, and run integration projects.
TIBCO BusinessWorks also includes an engine that executes the process, and a
web-based GUI for monitoring and managing run-time components.
• Adapters allow you to configure the interface between an external system,
such as an SAP R/3 application or a database, and the TIBCO
ActiveEnterprise™ environment. Adapters are available as separate products.
• Custom adapters are created using the TIBCO Adapter SDK. You can prepare
an adapter configuration for custom adapters using the Adapter Resources
and Adapter Schemas palettes, which are discussed in TIBCO Designer Palette
Reference.
• TIBCO BusinessWorks Collaborator™ gives companies the ability to
coordinate business activities, measure their efficiency, and optimize them
over time. The product facilitates complete visibility into business activities,
along with the ability to collaborate on the modeling and modification of the
rules and flows that define business those activities. TIBCO BusinessWorks
Collaborator uses TIBCO Designer for configuration of FormFlows processes
and for preparing Enterprise Archive files.
The following sections describe how to start TIBCO Designer and explain the
options available once TIBCO Designer starts.
Startup Options
When you launch TIBCO Designer, the startup panel is displayed:
Option Description
New empty Opens a new empty project in TIBCO Designer. An empty
project project includes the TIBCO Designer default palettes and
their resources.
By default when you open a new project, TIBCO Designer
prompts you immediately where you want to save it. You
may provide the location or click the Cancel button. If you
do not want to see this dialog each time you create a new
project, choose Edit > Preferences > General and unselect
Show save dialog for new project.
Reopen project Allows you to choose from a list of recently saved projects.
TIBCO Designer may prompt for information, for example,
a password.
Option Description
Help Displays TIBCO Designer documentation. You may be
prompted for your browser location if you are using
TIBCO Designer for the first time. Information about
browser locations on some operating systems is included in
the prompt screen.
You need to specify this path only once. After that, TIBCO
Designer remembers the location even if you uninstall the
current version and install a new version.
Show this panel If checked, the startup panel is only displayed during
only on startup startup and closed after you’ve made your selection.
If cleared, this panel reappears when no other TIBCO
Designer windows are open. Leaving the panel on screen
can be useful for project maintenance.
When you start TIBCO Designer, the startup panel allows you to open projects
(see Startup Options on page 77). You can also use the startup panel to perform
some TIBCO Designer administrative tasks. When you choose the
Administration tab, the panel presents the choices shown in Figure 2:
Option Description
Convert DAT to Displays a dialog that lets you specify the .dat file you
files want to convert and the folder for the multi-file project.
Because a.dat file is a legacy format, you must convert it
to a multi-file project before you can open a project from
TIBCO Designer.
Option Description
Convert files to Displays a dialog that lets you choose a project directory
DAT and a .dat file. When you specify both, TIBCO Designer
converts the multi-file project in the directory to the .dat
file.
The TIBCO Designer interface allows you to perform various functions. This
section describes the TIBCO Designer main window and explains what you see in
each of its panels.
Main Window
Figure 3 illustrates the TIBCO Designer window.
Menu bar
Toolbar
Project
panel
Palette Configuration
panel panel
When something in the design panel or the configuration panel is selected, the
panel is highlighted. This helps you see at one glance where the focus is.
• Four panels, which are (starting in the top left corner and continuing
clockwise):
— Project panel (can display the project tree or the project’s global variables)
— Design panel
— Configuration panel
— Palette panel
You can rearrange the panels and what they display. For example, the project
panel and palettes can be combined to share one set of tabs. See Customizing the
Display on page 93 for more information.
Project Panel
A project contains resources that implement the enterprise integration. This
includes services (producers and consumers of information), any business logic
that may be applied to that information, and deployment information.
By default, the project panel allows you to view the Project Display or Global
Variables Display. When used in conjunction with other projects, the panel may
be used for other purposes, for example, in conjunction with the TIBCO
BusinessWorks tester.
Project Display
With the Project tab selected, the project panel displays the project tree. This
includes the top-level (root) folder and the hierarchy of resources. The hierarchy
of folders and resources corresponds to the hierarchy of folders and files in the
project folder.
Figure 4 illustrates an example project, ProcessNewComputer, in the project panel.
Multiple TIBCO products were used to create the integration project: it contains
two TIBCO BusinessWorks process definitions (ProcessOrder and ProcessSoap)
and a Siebel adapter (SBLAccount).
Project
Resources
Resources are the components of a project. A simple TIBCO Designer resource
corresponds to an object in a TIBCO application, such as an adapter
configuration, an adapter service, a process definition, or an FTP activity.
Resources can be complex and contain other resources, much like a folder can
contain other folders on your computer's file system. For example, an adapter
configuration may contain multiple folders with multiple publisher or subscriber
service resources.
Palette Panel
Palettes organize resources and allow you to add them to your project. You select
resources in the palette panel and drag and drop them into the design panel to
add them to your project.
See Working With Palettes on page 87 for more information.
Design Panel
The design panel displays the current resource selected in the project panel. For
resources that contain other resources, the contents of the selected resource are
shown in the design panel. For example, if you select a folder, its contents is
displayed.
Configuration Panel
The configuration panel allows you to specify various configuration options for
each resource. The type and the purpose of the selected resource determine the
contents of the configuration panel. Usually there are one or more tabs in the
configuration panel that allow you to access the various configuration options.
The tabs organize the configuration options for the resource.
Click the help icon in the top right corner of the configuration panel for online
help on the current selection.
After you have added the configuration information, you must click the Apply
button for each tab. If you decide you do not want to add the configuration
information, click Reset before you apply any changes to return to the previous
values for each field in the tab.
For example:
• Select the top-level project folder to see a palette for each adapter and some
other palettes for general resources.
• Select the Adapter Services folder of an adapter in the project tree to see a
palette of service resources. Drag any service resource into the design panel to
add that resource to that adapter.
The palette browser displays all available palettes grouped by palette groups in a
hierarchy. Selecting a palette or resource in a palette displays its name, resource id
and description in the right pane.
Clearing the check box next to a palette's name in the tree hides that palette in the
palette panel. Selecting the check box shows that palette in the palette panel. You
must close the palette browser to view the changes you have made.
By default, all palettes are visible in the palette browser. You can provide a filter in
the Filter string/pattern field to limit the display. The filter uses regular
expression matching. That is, if you enter JMS in the field, only palettes that have
JMS in their name, description or containing palette are displayed. Matching is
case insensitive. Entering a new expression and clicking Filter again performs a
new search on all resource types and will not refine the current search.
To clear the filter expression and display all palettes either click Show all or
remove the expression from the entry box and click Filter again.
To redisplay a palette quickly, click the Palettes menu and select the palette to
display. For example, the next diagram shows that the FTP palette is not visible in
the palettes panel (an X does not display next to FTP). After you select FTP, its
palette will display in the palette panel. Note that you can hide palettes using this
menu. Each time you select a palette, it toggles between appearing and
disappearing.
Close
box
You can customize how TIBCO Designer displays panels and palettes. This
section gives an overview of the most frequently used display preferences.
Display preferences and other preferences are saved when you exit TIBCO
Designer, even if you do not save your project. Display preferences are
maintained for each user, even if that user completely uninstalls the product and
installs a different version.
To return to the default settings, choose Edit > Preferences and click Restore
Default Settings.
Drop
downs
Design
panel
Project
panel
Configuration
panel
Select
Palettes
Additional layout options are available when you choose Edit > Preferences >
View. If you select the Use tabs or Use drop downs option, you must close and
reopen your project to make the change visible.
Accessing Documentation
When you invoke Designer help for the first time, you are prompted for the
location of your web browser. You only need to supply this location once.
Location information is included in the prompt.
Projects are the key organizational principle for the configuration information you
specify with TIBCO Designer.
This chapter explains how to manage projects and the resources inside them.
Topics
Overview of Projects
Project Structure
When you save a project, TIBCO Designer creates a hierarchy of folders and files
in the location you choose for the project.
When you supply a project location, be sure no other files reside in that folder.
TIBCO Designer removes any existing files before placing the project files into the
folder.
• 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).
This file cannot be used for identification or as the repoURL for TIBCO
Adapters (including custom adapters based on TIBCO Adapter SDK).
Note that for ActiveEnterprise 5.2, the preferred method of deployment is to
generate an EAR file and upload it into TIBCO Designer, not to run the
adapter using a properties file.
Project Templates
A project template is a pre-built project. It can contain folders for organization,
configured resources, and partially configured resources. You can use a project
template as the foundation for other projects similar in nature. Using a template,
you can leverage your work when performing similar configurations.
Creating Projects
You create a new project using the startup panel when starting TIBCO Designer.
You can also choose Project > New Project from the TIBCO Designer menu bar
with TIBCO Designer already open. In that case, TIBCO Designer opens a new
window for the new project.
TIBCO Designer allows you to create a project from scratch or to create a
template-based project.
• New Empty Project — A new project contains a single AESchemas folder that
will be used for adapter schema resources. See Project Structure on page 98 for
more information.
• New Project from Template — When you save a project as a template (Project
> Save As Template), you can later load that template and customize it to
create a new project. See Project Templates on page 99.
When you create a new project, you are, by default, prompted immediately to
save it. See Saving Projects on page 102 for a discussion of the information you
must supply.
Validating Projects
After you have created a project, you add resources to it and supply configuration
information for your resources.
Before you prepare a project for deployment, 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, or hand it to another user.
During validation, each resource always checks for broken references. Many
resources have other resource-specific validation behavior.
To Validate a Resource
• Select the resource to be validated, then choose Resources > Validate
Resource from the menu bar.
• With the resource selected, choose the Validate Resource icon.
Saving Projects
When you save a project, you can save it as a multi-file project, or under XML
Canon. This section explains how to save a multi-file project.
When you save a multi-file project, you have these choices:
• Project Directory — The directory that will contain the project files. Click
Browse to select the directory.
Designer will remove any files in this directory when you save the project.
To Save a Project
1. In the main window, do one of the following:
— Choose Project > Save.
— Choose Project > Save As and specify the storage directory.
— Click the Save icon .
2. In the dialog that is displayed, make sure the Multi-File Project tab is
selected and provide the following information:
3. Click OK.
If you are opening a project under a revision control system, you need to provide
the appropriate information.
You can reopen a project you opened recently in two ways:
• From the startup panel when you launch TIBCO Designer.
• Choose Project > Reopen from the TIBCO Designer main window if Designer
is already open. In that case, TIBCO Designer will create a new window for
your project.
Once you have created or opened a project, you can add resources to your project.
To add a resource, you first select it in the palette panel, then drag and drop it into
the design panel.
If the palettes are not visible in your palette panel, click the Switch Palette
Modes icon.
2. Select a resource within the palette and drag and release it in the design panel.
The resource instance is displayed in the design panel and also added to your
project tree. The configuration panel allows you to specify configuration
information for the resource.
Figure 11 illustrates adding a resource to a project.
Drag into
design
panel
Ideally, all resources that cannot be dragged into the design panel should be
greyed out (palette mode) or not visible (non-palette mode). For some custom
palettes that may not always be true.
Global variables provide an easy way to set defaults for use throughout your
project. There are several ways in which they can be used:
• Define a variable using TIBCO Designer, then override the value for
individual applications at deployment time using TIBCO Administrator. You
can also override values for predefined variables, unless the GUI does not
allow you to make them settable later.
• Predefine a variable using TIBCO Designer, then override the value for
individual services (for example, publication service or TIBCO BusinessWorks
process) at deployment time using TIBCO Administrator. The values you
specify are then used at runtime.
You can also override values for predefined variables, unless the GUI does not
allow you to make them settable later.
• Predefine the variable using TIBCO Designer, then override it on the
command line.
For example, you could assign the value 7474 to the predefined global variable
RvDaemon. You can then use the variable in different sessions in your adapter. If
you want to change the TIBCO Rendezvous daemon for your adapter, you can
globally set it to a different value or override it from the command line.
When you want to use the global variable in the fields of a resource, enter the
variable name surrounded by %% on both sides. Some fields in the configuration
panel, such as user name and password fields, allow you to drag and drop global
variables into the field.
When the project is deployed and the configured components run, all occurrences
of the global variable name are replaced with the global variable value. For
example, a global variable named RvServiceTest with a value of 7800 would be
replaced with 7800.
A number of global variables are predefined in TIBCO Designer. You can add
definitions of any variables you need to the predefined variables.
To display the global variables editor, in the project panel, select the Global
Variables tab or drop down, then click the Open Advanced Editor (pen) icon. If
you select a global variable, then click the pen icon, the editor opens with the
variable selected.
The next diagram shows the global variables editor.
Add
Variable
Group
Add Delete
Variable Variable
When creating a global variable group or variable, it is added to the bottom of the
list. When you reopen the global variables editor, the group or variable displays
alphabetically in the list.
Global variable groups are used for organizing variables. Variable groups are
especially useful if multiple developers share a project using a version control
system. To add a global variable group, select the add variable group icon.
You must add at least one variable to a group, or the group will not be saved. If
you delete all global variables in a global variable group, the group itself is also
automatically deleted.
Using a Filter
By default, all global variables are visible in the editor. You can provide a filter in
the Filter string/pattern field to limit the display. The filter uses regular
expression matching. That is, if you enter Rv in the field, only variables that have
Rv in their name are displayed. Matching is case insensitive. Entering a new
expression and clicking Filter again performs a new search on all variables and
will not refine the current search.
To clear the filter expression and display all variables either click Show all or
remove the expression from the entry box and click Filter again.
three. The constraint field for Integers is for a range, for example, 1-100.
Note that constraints are currently not implemented in TIBCO Administrator.
• Description — Provide a description of the variable.
Deleting Projects
You do not delete projects from the TIBCO Designer main window but from the
startup panel. See Startup Options on page 77.
To Delete a Project
1. In the startup panel, make sure the Project tab is selected.
2. Click Delete Project.
3. In the panel that appears:
a. Specify the project directory
b. Specify a version control system if the project was used in conjunction
with a version control system.
— For File Sharing, any user with access to a project can delete the project.
— For other version control systems you must make sure that both the (local)
project directory and the directory you specify for the version control
system are correct. You must also be sure to specify a user that has
appropriate privileges for deleting the project.
You cannot delete projects based on XML Canon from TIBCO Designer. To delete
such a project, you must use a WebDAV client.
Index
F M
fraud detection runtime flow 6 multi-engine overview 42
fraudcriteria scorecard 19
frauddetection project 8
frauddetection rule 28
O
Opening Projects 104
G Overview of Projects 98
Global Variables
Attributes 109
Display 84 P
Editor 107
Palette Panel 85
prepare the database 64
processdebits rule set 25
H Project
Display 83
Hiding Palettes 89 Panel 83
Structure 98
Templates 99
I
inference agents 55 R
initializeaccount rule function 20
Reopening Projects 104
reset the backing store tutorial 73
Resources 84
J
JMS server required 43
S
Saving
L a Project 103
a Project as a Template 103
Loading a User Palette 92 Projects 102
set a default event for a destination 15
Showing Palettes 89
simple events
configuring (tutorial example) 13
start the JMS server 44
T
technical support xvi
test the application 39
testing applications 39, 60
TIBCO Designer
accessing documentation 95
accessing startup panel 111
TIBCO_HOME xiii
Tips and Tricks
for Working With Projects 112
troubleshooting 59
tutorial scenario 3
U
Using
a Filter 109
a Version Control System 99
the Palette Browser 88
V
validate the project 15, 31
Validating
a Resource 101
All Resources 101
Projects 101