BaanERP Tutorial
BaanERP Tutorial
BaanERP Tutorial
System Technology of BaanERP
Gerd Wagner
http://www.inf.fu-berlin.de/ wagnerg
Institut f
ur Informatik, Freie Universit
at Berlin
E-mail: gw@inf.fu-berlin.de
Tutorial at the Fourth IEEE International Baltic Workshop on Databases and Information
Systems, May 2000, Vilnius (Lithuania).
Contents
1. Introduction 6
2. Overview 7
3. System Architecture 11
3.1. User Interface Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2. Application Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Database Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4. Data Flow through the BaanERP Architecture . . . . . . . . . . . . . . . 13
3.5. BaanERP Hardware Congurations . . . . . . . . . . . . . . . . . . . . . 13
4. Software Architecture 16
4.1. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5. Version Management 18
5.1. Package Versions (PVRCs) . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2. Derivation of Package Versions . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3. Package Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6. Companies and Users 22
7. Database Handling 24
7.1. BaanERP Database Concepts . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.1.1. Database tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.1.2. Primary keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.1.3. References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.1.4. Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.1.5. Transaction handling . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.1.6. Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.1.7. Delayed locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.1.8. Table locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1.9. Application locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2. Microsoft SQL Server Database Driver . . . . . . . . . . . . . . . . . . . . 28
7.2.1. Table naming convention . . . . . . . . . . . . . . . . . . . . . . . 29
2
7.2.2. Column naming convention . . . . . . . . . . . . . . . . . . . . . . 29
7.2.3. Data type mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.2.4. The ODBC interface . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8. Programming 32
8.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.2. 3GL programming language features . . . . . . . . . . . . . . . . . . . . . 33
8.2.1. Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.2.2. Programming Statements . . . . . . . . . . . . . . . . . . . . . . . 33
8.2.3. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.3. 4GL programming language features . . . . . . . . . . . . . . . . . . . . . 34
8.3.1. 4GL script types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.3.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
8.4. Report scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.5. Data Access Layer (DAL) Functions . . . . . . . . . . . . . . . . . . . . . 36
8.5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.5.2. Database integrity checks . . . . . . . . . . . . . . . . . . . . . . . 37
8.5.3. Business methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.5.4. Interaction between UI, DAL, and standard program . . . . . . . . 37
8.5.5. UI function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.5.6. DAL hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9. Enterprise Modeler 39
9.1. Roles and Authorization Types . . . . . . . . . . . . . . . . . . . . . . . . 40
9.2. Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.2.1. Consistency rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.2.2. Parameter-setting rule . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.2.3. Transformation rule . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.2.4. Static-condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.3. Enterprise-structure modeling . . . . . . . . . . . . . . . . . . . . . . . . . 41
A. Glossary 43
B. About the instructor 54
3
List of Figures
2.1. The default client of a user must have the same package combination as
this user. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1. BaanERP three-tier architecture. . . . . . . . . . . . . . . . . . . . . . . 11
3.2. Standalone mode conguration. . . . . . . . . . . . . . . . . . . . . . . . 14
3.3. Application and Database Server on the same computer. . . . . . . . . . 15
3.4. Application and Database Server on dierent computers. . . . . . . . . . 15
4.1. Packages, modules, sessions. . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1. Version management in BaanERP. . . . . . . . . . . . . . . . . . . . . . . 18
5.2. How dierent versions are derived. . . . . . . . . . . . . . . . . . . . . . . 21
6.1. Users and Developers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4
List of Tables
2.1. Baan-Jargon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. BaanERP packages. The most important ones are emphasized. . . . . . . 17
5.1. Examples of country-specic customization. . . . . . . . . . . . . . . . . . 20
7.1. Mapping between BaanERP and MSQL data types. . . . . . . . . . . . . 30
5
1. Introduction
Enterprise resource planning (ERP) systems are generic and comprehensive business soft-
ware systems based on a distributed computing platform including one or more database
management systems. They combine a global enterprise information system covering
large parts of the information needs of an enterprise with a large number of application
programs implementing all kinds of business processes that are vital for the operation
of an enterprise. These systems help organizations to deal with basic business functions
such as purchase/sales/inventory ('distribution') management, nancial accounting and
controlling, and human resources management, as well as with advanced business func-
tions such as project management, production planning, supply chain management, and
sales force automation.
First generation ERP systems now run the complete back oÆce functions of the
worlds largest corporations. The ERP market rose at 50% per year to $8.6 billion in
1998 with 22,000 installations of the market leader, SAP R/3. The benets of a properly
implemented ERP system can be signicant.
Typically, ERP systems run in a three-tier client/server architecture. They provide
multi-instance database management as well as conguration and version (or 'customiza-
tion') management for the underlying database schema, the user interface, and the nu-
merous application programs associated with them. Since ERP systems are designed for
multinational companies, they have to support multiple languages and currencies as well
as country-specic business practices. The sheer size and the tremendous complexity of
these systems make them diÆcult to deploy and maintain. Despite the worldwide suc-
cess of systems like SAP R/3 and BaanERP, the underlying architectures, data models,
transaction mechanisms and programming techniques are to a large degree unknown to
computer scientists.
The goal of this tutorial is to present the information technology of BaanERP, as a
representative of the ERP system paradigm, from a computer science (rather than from
a business management) perspective, relating it to established database and distributed
systems concepts and techniques. A critical assessment of BaanERP will point out some
of its merits and weaknesses. The tutorial will help attendees to understand the potential
of ERP system technology in general, and of Baan ERP system technology in particular,
and how it relates to their own research and development work
6
2. Overview
Baan|The Company
Founded: 1978
Head quarter: Barneveld (The Netherlands) and Herndon (Virginia, USA)
Customers: 13,000 customer sites worldwide (biggest customer: Boing )
Employees: approx. 4,700
Revenues 1998: 736 Mio USD
Terminology
In Table 2.1, we list the most important terms where the Baan jargon departs from usual
terminology.
Baan Jargon Meaning
`Company' Client (having its own set of tables)
`Session' Application program with associated screen form
`Package' application program package
`Package VRC' package version
`Package Combination' congures a specic version of the BaanERP database
schema together with a specic collection of (application
program) package versions (`Baan environment')
Table 2.1.: Baan-Jargon.
7
Some application administration functions, such as Software Installation, Device Manage-
ment or Audit Management, are only of interest to Baan system administrators.
Application Administration
8
inspecting and possibly modifying the data of certain tables (under General
Table Maintenance ).
SQL Queries A database query can be created interactively by using forms or by directly
entering SQL SELECT statements in the Baan text editor. The resulting answer
set is displayed on screen or printed on paper by means of a Baan report.
has PC
User
has PC
Menu
Figure 2.1.: The default client of a user must have the same package combination as this
user.
Various components of the user interface can be created and modied interactively with-
out programming. This includes:
Menus consist of a list of choice options leading to application programs or to submenus.
Labels are named short texts used to label form elds and report columns.
Reports are dened by a number of layout elements and their data elds and labels.
They are used to create complex documents like bills of lading or invoices, and
also for displaying or printing the results of SQL queries.
Forms consist of form elds for displaying and allowing to modify data, and of pull-down
menus and push buttons to execute actions and call application programs.
Messages and Questions are named short texts used to display messages or ask ques-
tions during the execution of an application program.
9
Programming
BaanERP programming consists of version management and of the creation and main-
tenance of program scripts. Version management includes:
1. the creation and maintenance of package versions (PVRCs) and
2. the conguration of a set of package versions in a package combination.
The real programming refers to Program Scripts, include modules (called `Functions')
and DLL modules (Libraries):
Limits
Application Server (`Bshell')
Tables
Indexes
10
3. System Architecture
Application Tier
Database Server
Database Driver
(RDBMS)
Database Tier
11
3.1. User Interface Tier
The user interface tier consists of the BaanERP user interface for Microsoft Windows
(called `BW') and for Internet browsers (called `BI'). Data input from the user through
BW or BI is relayed to the BaanERP application server; data returned from the Baan-
ERP application server is displayed to the user in graphical form by the user interface.
12
3.4. Data Flow through the BaanERP Architecture
Note that the database driver provides an interface between the BaanERP application
server and the specic RDBMS server being used. The
ow of data through the system
is described below.
When a user performs an operation at a GUI workstation, the user interface server
interprets the input and sends the information to the BaanERP application virtual ma-
chine. Based on the information it receives, the application server causes the appropriate
application object to be executed.
When a running application object requires information that is stored in the database,
the application server sends the request to the database driver. Data requests from the
client applications are RDBMS independent and are made using BaanERP SQL, an
RDBMS independent SQL language.
When the application server executes a database query from an application program,
it rst determines whether or not there is a running database driver available to process
the query. If there is no database driver running, or if the running database driver in-
stances are communicating with a database server other than the one storing the needed
data, the application server starts a new instance of the database driver. The applica-
tion server parses the BaanERP SQL database query it receives from the application
object and sends an internal representation of the query to the database driver. The
internal representation of the query that the database driver receives is still RDBMS
independent.
The database driver translates the database query into an appropriate query using
SQL statements compatible with the specic RDBMS being used. Each database driver
takes advantage of the design of the particular RDBMS that it supports so that the
resulting SQL statements are valid for the RDBMS and provide the best possible per-
formance. The RDBMS specic SQL statements are then submitted to the RDBMS
server, which processes the data request. When the RDBMS has processed the query, it
returns the data to the database driver. Any error conditions are caught and handled by
the database driver. The database driver then returns the data and status information
to the application server, where it provides the information to the application that re-
quested it. The application server may also send a message to the user interface server,
which displays an appropriate message on the users workstation.
13
standalone mode conguration is illustrated in Figure 2.
Database Server
Database Driver
(RDBMS)
14
User Interface Client User Interface Client
("BW") ("BW")
Database Server
Database Driver Database Driver
(RDBMS)
Database Server
Database Driver Database Driver
(RDBMS)
15
4. Software Architecture
Both tables as well as application programs (`sessions') and their software components
are assigned to modules grouping related business functions.
Package
Module
Menu
Session Table
has main
table
Form
Label
Form Field Program Script
4.1. Packages
Business areas such as distribution, manufacturing, and nance are mapped into pro-
gram packages that have a two character identication code, as listed in Table 4.1.
The most important ones are: tc/Common, td/Distribution, ti/Manufacturing, and
tf/Finance.
16
cp Constraint Planning
ct Controlling
ps Process process-based production
tc Common master data
td Distribution purchase/sales/inventory control
ti Manufacturing
tf Finance nancial accounting
tp Project project management
tr Transport transport industry
ts Service service industry
tt Tools Baan administration and programming
tu Utilities data exchange interfaces, etc.
Table 4.1.: BaanERP packages. The most important ones are emphasized.
4.2. Modules
Business functions are grouped in modules with a three-character code. For instance,
the package Distribution (td) consists of the modules
Distribution:Purchase td pur
Distribution:Sales td sls
Distribution:Inventory td inv
4.3. Sessions
All business processes of a business function are realized by means of `Sessions'. A
BaanERP session is an application program that is associated with a screen form and
normally with a base table, and possibly with a report. A session ID is formed using the
package/module IDs as a prex. For instance, the session ID \ti itm 0101m000" displays
that the session belongs to the module Item Control (itm) in the package Manufacturing
(ti).
Sessions are being called interactively via menu options by the user. There are ses-
sions for master data management, like Maintain Items (tiitm0101m000), or for executing
certain business processes, such as Update Cost Prices (ticpr2220m000).
Sessions can also be dened as subprograms (\subsessions") that can be program-
matically invoked from other sessions. Instead of an \m" (for `main') the session ID
contains an \s", like the subsession Update Cost Prices (ticpr2220s000).
17
5. Version Management
Complex application software systems, like ERP systems, are subject to continuous
change. Both the discovery of programming errors and new technical as well as legal
requirements call for modications of the ERP system software. In addition, various
parts of the standard software have to be customized for supporting country-, branch-
and company-specic business processes. In order to be able to perform all these changes
in a systematic way, dierent versions of software components (notably tables and ses-
sions) can be maintained and congured into customized versions of a BaanERP
system. Therefore, all components exist on a logical naming level and on the level
of special instances or versions, like shown in Figure 5.1.
is assigned to
has default
is authorized for
18
5.1. Package Versions (PVRCs)
Version management in BaanERP is hierarchical: a new version of a package can be
derived from an already existing one. The new version has only to contain modied
and newly created components. All other components are automatically executed from
the predecessor version. The actual version of an application program (i.e. a session ) is
determined by the package combination selected by the login. For instance, the version
of the session Maintain Item Data (tiitm0101m000) to be run is determined by the version
of the ti -package contained in the package combination selected by the login. A package
version is also called Package VRC, or `PVRC' in short, where `VRC' stands for
Version-Release-Customization. This naming re
ects the dierent levels of versioning
in BaanERP. Through the continuous improvement and extension of the Baan ERP
software, new upgrade versions are provided by Baan at regular time intervals. They
are named using the two-level Version-Release schema. For instance, from the version
name B40S and the release name c3 the Package VRC tiB40Sc3 is formed for the ti
package within release c3 of the standard version B40S of Baan IV.
The two-level versioning of the BaanERP standard software is supplemented by a
third version naming level for enterprise-specic modications (or customization ) of a
standard BaanERP version. For instance, the particular version of the ti -package derived
from the Baan IV standard version c3 and customized for Wagner World-Wide Enter-
prises could be named tiB40Cc3wag. Baan strongly recommends that all customizations
comply with its `coding standards', a set of naming conventions. One such convention
requires that the version code of an enterprise-specic customization of BaanERP be
B40C instead of B40S, thus indicating the customization by the letter `C'. The version
indicators to be used are:
S standard version
U update version (service pack)
L country-specic `localisation'
B branch-specic version
C enterprise-specic customization
Baan has to provide many country-specic additions/modications of its standard
system in order sell BaanERP to countries all over the world (see Table 5.1).
A specic package version (called \current PVRC") is assigned to each Baan de-
veloper as her current programming environment. It can be changed on the
y if the
developer has the general developer authorization.
19
Country/Region Localisation Items
Argentina central invoicing, Argentinean VAT
Brazilia central invoicing, scal receipts, receipt schedule
Italy Libro Giornale, withholding tax, LIFO by Year,
BAM, VAT book
Japan statement of accounts, customer approvals
ow
Nordic countries
ow for interest invoice
Switzerland central invoicing
India excise invoice, MODVAT, personal ledger account,
tax deduction at source
Australia sales tax, prescribed payments system
Table 5.1.: Examples of country-specic customization.
predecessor PVRC in the derivation chain where they are found. A PVRC derivation
chain represents a kind of specialization hierarchy where the most specic (or most
recent) versions of software components are found at the end of the chain.
20
B40 S c1
Baan IV Standard
Release c1
B40 S c2
Successor
Release c2 Baan Central
Development
B40 S c3
Successor (Barneveld, NL)
Release c3
Release c4
B40 S c4 with support for
Euro introduction
German Controlling
B40 L c4cnt
Localization Baan Germany
implements German
B40 U c4cnt
Update controlling procedures
(Service Pack)
Operational
B40 C c4wag
BaanERP System
Baan Customer Site
Wagner GmbH, Berlin
21
6. Companies and Users
BaanERP companies are dened by company number, name, currency, and a package
combination that associates a specic database schema with the company.
Company Package Combination (PC)
is assigned to
BelongsTo
is authorized for
is assigned to
has default
is
derived
from
BaanERP User
Module Version
is authorized for
Developer
is authorized for
General
Developer
Session
Menu
OS User
22
combination. In the case of a normal user, the authorizations for sessions, companies
and tables have to be explicitly dened by assigning roles and authorization templates.
A user can also be classied as a BaanERP developer who is authorized to customize
user interface components, sessions, and tables. A developer has a current PVRC that
denes her default programming environment, that is the package version whose com-
ponents she can customize.
23
7. Database Handling
All of the application data used by BaanERP is stored in database tables in the un-
derlying RDBMS. To keep the majority of the BaanERP processing independent of
the RDBMS, BaanERP uses its own data dictionary. The data dictionary includes
domain, schema, and referential integrity information that is stored in a database inde-
pendent manner.
The BaanERP system provides a RDBMS interface, called `database driver', to the
major RDBMSs (Oracle, Informix, Sybase, DB2, and Microsoft SQL Server). The Baan-
ERP database driver has a built-in mechanism for preserving referential integrity; it
does not depend on the underlying RDBMS for maintaining referential integrity.
A relational database presents information to the user in the form of tables. In a table,
data is organized in columns and rows. Each column (also referred to as a eld) rep-
resents a category of data. Each row (also referred to as a record) represents a unique
instance of data for the categories dened by the columns. A eld always refers to a
domain, which denes a set of values from which one or more elds can draw their actual
values. For example, the tcweek domain is the set of all integers greater than zero and
less than or equal to 53.
Every database table has a eld, or a combination of elds, which uniquely identify each
record in the table. This unique identier is referred to as the primary key. Primary keys
are fundamental to database operations, as they provide the only record-level addressing
mechanism in the relational model. Primary keys act as references to the records in a
table.
7.1.3. References
With a relational database, you can store data across multiple tables and you can dene
relationships between the tables. This means that individual tables can be kept small
and data redundancy can be minimized. A relationship exists between two tables when
they have one or more elds in common. So, for example, a Customer Detail table can
24
be linked to an Order table by including a Customer ID eld in both tables. In the
Customer Detail table, the Customer ID eld is the primary key. In the Order table, it
is referred to as a foreign key. By linking the two tables in this way, there is no need
for the Order table to include customer details such as name and address. Note that
references from one table to another must always use the primary key.
7.1.4. Indexes
Indexes facilitate speedy searching and sorting of database tables. An index is a special
kind of le (or part of a le) in which each entry consists of two values, a data value and
a pointer. The data value is a value for some eld in the indexed table. The pointer
identies the record that contains this value in the particular eld. This is analogous to
a conventional book index, where the index consists of entries with pointers (the page
numbers) that facilitate the retrieval of information from the body of the book. Note
that it is also possible to construct an index based on the values of a combination of
two or more elds. Every table must have at least one index, which is an index on the
primary key eld(s). This is referred to as the primary index. An index on any other
eld(s) is referred to as a secondary index.
With respect to database actions, a transaction is a sequence of related actions that are
treated as a unit. The actions that make up a transaction are processed in their entirety,
or not at all.
A transaction ends with the function commit.transaction() (all changes made dur-
ing the transaction are stored in the database) or with the function abort.transaction()
(no changes are stored in the database). A transaction starts either at the begin-
ning of a process, with the function set.transaction.readonly(), with the function
db.lock.table(), or after the preceding transaction has ended. A transaction is auto-
matically rolled back (that is, it is undone) when a process is canceled and if a program
ends without a commit.transaction() or abort.transaction() after the last database
call. Undoing a transaction is only possible if the underlying database system supports
this.
Certain database actions cannot be placed within a transaction, because they can-
not be rolled back. These actions are: db.create.table(), db.drop.table(), and
set.transaction.readonly(). These functions can be called only at the start of a
program or after the end of the preceding transaction.
You can set a retry point immediately before a transaction. In case of an error,
the system returns to this point and re-executes the transaction from there.
A read-only transaction is a transaction in which you are permitted only to read
records (without lock) from the database. You retain read consistency during the entire
transaction. This means that during the transaction your view of the database does not
change, even if other users update the records. A read-only transaction starts with the
function set.transaction.readonly() (this must be called after ending the preceding
25
transaction or at the beginning of the program) and ends with a commit.transaction()
or abort.transaction(). A consistent view consumes a large amount of memory, so a
read-only transaction must be as short as possible; user interaction during the transaction
is not recommended.
7.1.6. Locking
Database inconsistencies can arise when two or more processes attempt to update or
delete the same record or table. Read inconsistencies can arise when changes made during
a transaction are visible to other processes before the transaction has been completed
for example, the transaction might subsequently be abandoned.
To avoid such inconsistencies, BaanERP supports the following locking mechanisms:
record/page locking, table locking, and application locking.
To ensure that only one process at a time can modify a record, the database driver
locks the record when the rst process attempts to modify it. Other processes cannot
then update or delete the record until the lock has been released. However, they can
still read the record. While one process is updating a table, it is important that other
processes retain read consistency on the table. Read consistency means that a process
does not see uncommitted changes. Updates become visible to other processes only
when the transaction has been successfully committed. Some database systems do not
support read consistency, and so a dirty read is possible. A dirty read occurs when one
process updates a record and another process views the record before the modications
have been committed. If the modications are rolled back, the information read by the
second process becomes invalid. Some databases, such as SYBASE and Microsoft SQL
Server 6.5, use page locking instead of record locking. That is, they lock an entire page
in a table instead of an individual record. A page is a predened block size (that is,
number of bytes). The number of records locked partly depends on the record size.
Locking a record for longer than required can result in unnecessarily long waiting times.
The use of delayed locks solves this problem to a great extent. A delayed lock is applied
to a record immediately before changes are committed to the database and not earlier.
When the record is initially read, it is temporarily stored. Immediately before updating
the database, the system reads the value of the record again, this time placing a lock on
it. If the record is already locked, the system goes back to the retry point and retries the
transaction. If the record is not locked, the system compares the content of the record
from the rst read with the content from the second read. If changes have been made
to the record by another process since the rst read, the error ROWCHANGED is returned
and the transaction is undone. If no changes have occurred, the update is committed to
the database.
You place a delayed lock by adding the keyword FOR UPDATE to the SELECT
statement. For example:
table tpctst999
26
db.retry.point()
SELECT pctst999.* FROM pctst999 FOR UPDATE
SELECTDO
pctst999.dsca = "...."
....
db.update(tpctst999, DB.RETRY)
ENDSELECT
27
The function db.retry.hit() returns 0 when the retry point is generated that is,
the rst time the code is executed. It returns a value unequal to 0 when the system
returns to the retry point through the database layer.
When the system goes back to a retry point, it clears the internal stack of functions,
local variables, and so on that were called during the transaction. The program continues
from where the retry point was generated. The value of global variables is NOT reset.
When a commit fails, the database automatically returns to its state at the start of
the transaction; the program is set back to the last retry point. It is vital, therefore,
that the retry point is situated at the start of the transaction. The db.retry.hit() call
must follow the db.retry.point() call. Do not place it in the SQL loop itself as this
makes the code very untransparent. When a retry point is placed within a transaction,
the system produces a message and terminates the session.
BaanERP provides a table locking mechanism, which enables you to lock all the records
in a specied table. A table lock prevents other processes from modifying or lock-
ing records in the table but not from reading them. This is useful when a particu-
lar transaction would otherwise require a large number of record locks. You use the
db.lock.table() function to apply a table lock.
An application lock prevents other applications and users from reading and/or modifying
an applications data during critical operations. It is not part of a transaction and so
is not automatically removed when a transaction is committed. Instead, an application
lock is removed when the application ends or when appl.detete() is called.
28
The BaanERP data types cannot be used directly by the database driver to create
SQL Server tables. This is because not all BaanERP data types exactly match SQL
Server data types. To create valid SQL Server tables, the driver must perform some
mapping or translation. When mapping the BaanERP data dictionary to tables in SQL
Server, conventions are used for the table names, column names, and index names.
The external name of a BaanERP table stored in SQL Server has the following format:
th PackageCodeihTableNameihCompanyNumberi
PackageCode A two-letter code referring to the BaanERP package the table belongs
to. For example, a table dened by the Tools package has the package code tt.
TableName The data dictionary table name consists of a three-letter module identier
followed by a three-digit number. The module identier refers to the module the
table belongs to; the number is just a sequence number.
CompanyNumber Within BaanERP, three-digit numbers are used to identify dierent
instances of the BaanERP application database, called `companies'. Company
number 000 denotes the meta-database containing various system data common
to all companies (including currencies and languages used). In addition to company
000, there may be several other companies in a BaanERP system, each with its
own set of tables for application data.
For example, the data dictionary table adv999 with company number 000 is created
in SQL Server as tttadv999000.
Each column in the BaanERP data dictionary corresponds to one or more columns in a
SQL Server table. The rules for column names are as follows:
General When a BaanERP column name is created in SQL Server, it is preceded by the
string t . For example, the BaanERP column with the name cpac is created in
SQL Server with the name t cpac. If a BaanERP column name contains a period,
it is replaced by the underscore character.
Long string columns BaanERP columns of type string can exceed the maximum length
of character columns in SQL Server. The SQL Server data type CHAR has a limit
of 254 characters. When a BaanERP string column exceeds this limit, the column
is split into segments with up to 254 characters each. The rst 254 characters
are mapped to a column where the name of the column is extended with 1. The
29
BaanERP data types MSQL data types
INT Smallint
LONG Integer
FLOAT Real
DOUBLE Float
CHAR Binary(1)
STRING(N) Char(n)
TIME DateTime
DATE DateTime
TEXT Integer
BITSET Integer
ENUM Binary(1)
Table 7.1.: Mapping between BaanERP and MSQL data types.
next 254 characters are mapped to a column with a name extended by 2, and so
on, until all the characters of the string are mapped to a column. For example, if
a BaanERP string column called desc contains 300 characters, the following two
SQL Server columns are created: t desc 1 with size 254, and t desc 2 with size
46.
Array columns In the BaanERP data dictionary, array columns can be dened. An
array column is a column with multiple elements. The number of elements is
called the depth. For example, a column containing a date can be dened as an
array of three elements: a day, a month, and a year. In SQL Server, the three
elements of the array column are placed in separate columns. The names of these
columns include a suÆx with the element number. For example, an array column
called date will be transformed to: t date 1 for element 1, t date 2 for element
2, and t date 3 for element 3.
Table 7.1 shows the mapping between BaanERP data types and their SQL Server coun-
terparts.
Note that the MSQL driver uses the SQL Server CHAR data type since ANSI-
compliant behavior is expected for character data, such as with the BaanERP string
type. Since BaanERP SQL expects ANSI-compliant string comparison semantics, the
SQL Server CHAR data type is used instead of VARCHAR. This SQL Server data type is
used because a BaanERP string data type has characteristics that conform to the ANSI
specication for character data. When the CHAR data type is used, operations such
as comparison and concatenation can be done in a predened manner with predictable
results.
In addition to the above naming conventions and data types, the following rules
apply when mapping BaanERP data to SQL Server data:
30
Since the binary sort order is selected during the installation, SQL Server treats
object names with case sensitivity.
All columns created by the BaanERP database driver have the NOT NULL constraint.
BaanERP does not support the NULL value concept of SQL.
The date range supported by the BaanERP application server is not the same as
the range for SQL Server (SQL Server is more restrictive), so some BaanERP dates
are not valid when stored with the MSQL driver. The BaanERP date number 0
is mapped to the earliest possible date in SQL Server (01-Jan-1753). The earliest
possible BaanERP date is then 02-Jan-1753 and the latest is 31-Dec-9999.
Dene result variables
31
8. Programming
8.1. Introduction
The development tools supplied by the BaanERP Tools package enable developers to
program additional functionality for existing BaanERP applications or to build entirely
new applications. The features provided by the development tools include:
4GL language features that enable you to add to or modify the default behaviour
of sessions, reports, and the Data Access Layer.
Baan SQL, which enables you to retrieve database data.
A debugger that enables you to control and test the execution of your programs.
3GL scripts are program scripts that are either linked to sessions without forms or
not linked to sessions at all. They do not have any relationship with the 4GL Engine
(previously known as the Standard Program). When creating such scripts, you must
specify the entire program
ow, including the main function. You cannot use 4GL event
sections or functions.
In BaanERP applications, the 4GL engine provides much of the default functionality
for a session. You can add to or modify the default functionality of a session by creating
a 4GL script that is linked to the session. 4GL scripts are event-oriented. They consist
of one or more event sections in which you program actions to be performed at particular
states of execution of the 4GL engine. In previous versions of the software, changes or
additions to the default functionality of a session were programmed in a single script
that was associated with the session. In BaanERP, user interface actions and database
actions have been separated. The Data Access Layer (DAL) now handles database inter-
action. Programmers create a user interface (UI) script to change the default behavior
of a session. They create a DAL script to program all the logical integrity rules for a
particular table. The statements programmed in event sections can be a combination of
3GL/4GL functions and 3GL language statements.
Report scripts are 4GL scripts that are linked to a report in order to add to or modify
its output. In a report script, you can program actions that you want to be performed
at particular stages of the report execution.
32
You can use Baan SQL (Structured Query Language) in 4GL scripts to retrieve data
from database tables. There are two ways to use Baan SQL in a 4GL program. You
can embed it in the language (embedded SQL), or you can use BaanERP 4GL functions
(dynamic SQL).
The bshell (the BaanERP application server) provides a multitasking execution en-
vironment for BaanERP applications. Each bshell can execute and schedule multiple
parallel processes.
There are ve types of variables: long, double, string, table, and domain variables.
Long variables can contain any whole number from -2147483648 to 2147483647. For
numbers beyond this range, use double variables instead. Physically, four bytes
are reserved for each long variable.
Double variables are used for any number containing a decimal point, with a maximum
of 15 signicant digits (8 bytes).
String variables are used for symbolic names, descriptions, and short text. The max-
imum length of a string is 1024 characters. A string variable can be declared as
a multibyte string, in order to handle multibyte or bidirectional characters. In a
single-byte string, each byte contains a single character. But in a multibyte string,
characters can occupy from one to four bytes.
Table declarations are used for accessing database tables in a program. The table must
be dened in the data dictionary.
Domain variables assume the characteristics of a database domain dened in the data
dictionary. A domain may be based on any of the following data types: long, byte,
integer, date, enumerate, set,
oat, double, string, text. Each domain dened in
the data dictionary can be used in a declaration of your program.
When declaring temporary variables for storing values of database elds, you can
use normal variables of type long, double, or string. But this can cause problems if the
length or type of the table eld has been changed in the data dictionary. It is preferable
to use domain declarations for storing the value of a database table eld. When you
use a domain declaration, the type and length for the declared variable are read from
the data dictionary. Variables of type enumerate or set must always be declared with a
domain declaration. It is also possible to declare an array by using a domain.
33
Variable assignment
ON CASE statement
In addition to the standard loop constructs there is an embedded SQL loop state-
ment consisting of a SQL query expression (by means of the standard SELECT ...FROM
...WHERE ... statement) followed by SELECTDO ...SELECTEMPTY ...ENDSELECT. The
statements in the SELECTDO block are executed iteratively for each row of the query
result set, whereas the statements in the SELECTEMPTY block are executed only if the
result set is empty.
8.2.3. Example
34
the default behavior of a session. They create a DAL script to program all the logical
integrity rules for a particular table.
8.3.2. Example
field.pctst099.item:
check.input:
SELECT pctst001.* FROM pctst001
WHERE pctst001.item = :pctst099.item
AS SET WITH 1 ROWS
SELECTDO
....
SELECTEMPTY
pctst001.dsca = "*****"
set.input.error(".....")
ENDSELECT
before.input:
if ..... then
attr.input = false
endif
after.display:
SELECT pctst001.* FROM pctst001
WHERE pctst001.item = :pctst099.item
AS SET WITH 1 ROWS
35
SELECTEMPTY
pctst001.dsca = "*****"
ENDSELECT
field.pctst099.date:
before.input:
attr.oformat$ = "%D002,2"
In BAAN applications, the standard program provides much of the default functionality
for a session. In previous versions of the software, changes or additions to the default
functionality for a session were programmed in a single script that was associated with
the session. Both user interface actions and database actions were programmed in this
script. In BaanERP, user interface actions and database actions have been separated.
The Data Access Layer (DAL) now handles database interaction. Programmers create
a user interface (UI) script to change the default behavior of a session. They create a
DAL script to program all the logical integrity rules for a particular table. So the DAL
ensures the logical integrity of the database. As in previous versions of the software, the
database server ensures the referential integrity of the database.
The DAL script for a particular table has the same name as that table. It is im-
plemented as a DLL that can be accessed by user interface scripts (via the standard
program), by other DALs, and by external programs (via the Common Data Access
Server (CDAS). The following diagram illustrates the overall relationship of these com-
ponents.
36
8.5.2. Database integrity checks
The following are examples of some logical integrity rules that could be programmed in
a DAL script:
When customers have reached their credit limit, they cannot order further items.
If the invoice for an order has been printed, the order cannot be changed.
If the current PVRC of a user is not equal to the PVRC of the program script, the
script cannot be compiled.
Programming database integrity checks in a separate DAL script has two main ad-
vantages:
Code reuse: The integrity rules do not have to be replicated in each session that
uses a particular table.
External access: External applications can access the database via the CDAS and
the DAL.
For an overview of the interaction between the user interface, the standard program,
and the DAL, see DAL, UI, and standard program interaction.
In addition to performing data integrity checks, the DAL provides business methods for
handling non-interactive database modications such as printing sales orders or posting
all orders to history. A business method is a function that performs a task that involves
manipulating and/or checking one or more tables in the database. The function is
programmed in a DAL script and can be called directly from a UI script. It must be
programmed in the DAL script of the most relevant table.
Users can activate a business method with a single command. There is then no
further user interaction. The UI script calls the relevant function in the DAL script.
The function performs all operations to complete the required task. The user must
wait until the business method nishes before continuing with other tasks. However,
if a progress window is provided, the user can cancel the business method by click-
ing on the Cancel button. The UI script starts a business method by calling the
dal.start.business.method() function.
A DAL script contains all the logic integrity rules for a particular object set. These rules
are referred to as hooks and they can be programmed for every possible manipulation
of an object in the object set. For each session with a main table, the standard program
ensures that the integrity rules for the table are checked each time an update, delete,
insert, or read operation is performed on an object of the table. If there is no DAL
37
script for the particular object set being accessed, no logic integrity checks are performed
(unless they are programmed in the UI script itself).
A DAL script can contain hooks that prevent access to the database and hooks that
prevent data being passed back to the user interface. The former are executed before
the database action. The latter are performed after the database action.
If a user changes the address of a customer on a form, the standard program changes
the address for that customer in the database via the DAL. If you want certain restric-
tions to apply to the update action, you can program a property hook in the DAL of
the sessions main table to impose these restrictions.
The UI script can use either the database write functions or the DAL Data Access
Methods (DAM) to manipulate the database. The database write functions are direct
database calls. They do not use the DAL. In this case, any logic integrity checks required
must be programmed in the UI script itself. This means that they cannot be reused by
other sessions. In preference, use the DAL Data Access Methods. These access the
database via the DAL, so all necessary checks are automatically performed.
When the DAL is used to manipulate the database, the main steps involved are as
follows:
1. The user issues a command through the user interface to access a record in the
database.
2. The standard program loads the appropriate DAL and calls the hooks in the DAL
to check the integrity rules for the object.
3. If the particular database action is permitted, the standard program issues the
appropriate database call.
4. After the database has been updated, the DAL can perform further checks to
determine whether or not data is passed back to the user interface.
5. The standard program passes data back to the user interface (provided that the
integrity rules permit this).
A hook is a function, with a predened name, that the DAL programmer programs in
a DAL script. The function is used to program logic integrity rules for database access.
The DAL script is compiled into a DLL.
When a user issues a command to access the database, the standard program loads
the DAL DLL for the object being accessed and calls the hooks to perform the integrity
checks. Provided that a DAL script exists for an object set being accessed, the standard
program always ensures that the hooks in the DAL are called at the appropriate times.
A DAL script can contain two types of hooks: property hooks and object hooks.
38
9. Enterprise Modeler
Creating BaanERP users, based on the role and employee data of the Enterprise
Modeler.
Creating the menus and session authorizations for users.
Organization models
39
hand. Nevertheless, it may be useful to dene an organization diagram to visualize the
organization structure and the roles and responsibilities of departments and employees.
In the project model, employees can be linked to the roles that have been dened for the
reference-model specic organization diagram. The link between a role and an employee
transforms a line-of-business oriented diagram into a company-specic (organization-
specic) diagram.
Reference models
Project models
Business processes
Organization units
You must rst dene roles as part of a reference model or of a project model before
you can link those roles to any of the other components above. Assume that you link
roles and responsibilities to business processes and activities. If for a certain process one
role carries all the responsibilities for all activities, it is suÆcient to link the role and the
responsibilities to the process.
Examples of roles are: Manager and Secretary. Examples of responsibilities are:
maintain data, inform manager, check data.
9.2. Rules
There are four dierent types of rules.
40
9.2.2. Parameter-setting rule
An expression that determines the value of one or more parameters in a reference model
or project model. The value is determined on the basis of a combination of business
functions, business processes, and/or static conditions.
Example:
IF <BF,1> OR <BF,3> THEN
Parameter: tttld000.user User jjohnson
Explanation: If business functions 1 and 3 are part of the reference model or the
project model, business process DPL081 must also be part of the reference model or the
project model and can therefore be incorporated automatically.
9.2.4. Static-condition
41
Customers
Sales oÆces
Distribution centers
Assembly sites
Manufacturing sites
Suppliers
Between enterprise units all kinds of relationships can exist in term of material
ows,
nancial
ows, and information
ows. The enterprise units from this specic enterprise-
structure model are the direct link between the BaanERP application data, such as a
warehouse or an entity on the one hand and the model on the other hand. As opposed
to business processes, and business-function diagrams and so on, an enterprise-structure
diagram is not part of a business model (reference model or project model). A business
model, on the contrary, is linked to an enterprise unit, which is part of an enterprise-
structure diagram.
The enterprise-structure model is the top level of an enterprise model. One level be-
low the enterprise-structure model you nd business models (reference or project mod-
els). Business models can be linked to enterprise units. This implies that the enterprise
unit is the indirect link between an enterprise-structure model and multiple business
models.
Because a business model is used to set parameters at BaanERP company level,
only one business model must be used to represent one BaanERP company. Therefore,
dierent enterprise units must be associated with dierent (logistic) companies.
You cannot directly create an operational enterprise-structure model. First you must
create one or more enterprise-structure models, after which you can specify one of those
models as the operational model. At runtime the operational enterprise-structure model
is used by the BaanERP applications to determine prices and currencies when goods are
transferred from one enterprise unit to another.
There are two dierent types of enterprise-structure models:
42
A. Glossary
ACID Transactions satisfy the properties of Atomicity, Consistency, Isolation, and Dura-
bility. As complex update operations on possibly distributed data, transactions are
subject to various failure conditions. For instance, some step of a transaction may
violate an integrity constraint, or the connection to a remote database may get
lost, or the server running the transaction application may crash during the execu-
tion of a transaction. Atomicity denotes the requirement that a transaction needs
to be all-or-nothing: either it executes completely or not at all. If all steps of a
transaction have been performed successfully, the transaction commits, making all
involved updates permanent. If some step fails, the transaction aborts, rolling back
all involved updates. A transaction program should maintain the consistency of
the databases it updates. Since the internal consistency of a database is dened by
its integrity constraints, this means that all integrity constraints have to be satis-
ed when the transaction is completed. For performance reasons, transactions are
executed concurrently by interleaving the execution of their single steps. Special
techniques (such as locking mechanisms) are needed to avoid interference between
transactions accessing the same database objects. Referring to concurrent trans-
actions, one says that the isolation property is satised if their eects are the same
as if they were run one at a time in some order, or, in other words, if they are
serializable. Finally, a transaction is durable if all of its updates are stored on a
permanent storage medium when it commits. This is usually achieved by writing
a copy of all the updates of a transaction to a log le. If the system fails after
the transaction commits and before the updates go to the database, then after the
system recovers it rereads the log and checks that each update actually made it to
the database; if not, it re-applies the update to the database.
Notice that unlike atomicity, isolation and durability which are guaranteed by the
transaction processing system, maintaining consistency is the responsibility of the
application programmer.
Agent A computer program that can accept tasks from its human user, can gure out
which actions to perform in order to solve these tasks and can actually perform
these actions without user supervision, is an example of a software agent. More
generally, any system that is capable of perceiving events in its environment, of
representing information about the current state of aairs, and of acting in its
environment guided by perceptions and stored information, is called an agent. If
the environment is virtual, such as the Internet, we deal with software agents. If
43
the environment is physical, we deal either with natural agents such as human
beings and animals, or with articial physical agents such as robots and embedded
systems. The term agent denotes an abstraction that subsumes all these dierent
cases.
Typical examples of software agents are web shopping assistants and life-like char-
acters (articial creatures) in computer games. Typical examples of articial phys-
ical agents are the entertainment robot Aibo by Sony and the unmanned NASA
space vehicle Deep Space One. It is expected that software agents capable to assist
their users to cope with the increasing complexities caused by the accelerating and
virtually uncontrolled growth of the World Wide Web will play a major role in the
future.
The term agent is sometimes used as a synonym for intelligent system. But,
in general, agents do not have to be `intelligent'. In software engineering, for
instance, the ability of an agent to communicate and cooperate with other systems
in a
exible manner, and the ability of a mobile agent to migrate to another
computer providing more resources via suitable network links, are considered more
fundamental than any form of `intelligence'.
The philosophical basis for the agent paradigm in computer science is the concept
of intentional systems introduced by Daniel Dennett in [Den71] to characterize
systems whose behavior can be best explained and forecasted by ascribing them
beliefs, goals and intentions. Following Dennett, Yoav Shoham proposed in [Sho93]
a mentalistic approach to model and program agents, called Agent-Oriented Pro-
gramming. In this approach, the data structures of an agent program re
ect basic
mental components such as beliefs, commitments, and goals, while the agent's
behavior is determined by reaction rules that refer to its mental state and are trig-
gered by events, and possibly by its planning capabilities for pro-actively achieving
its goals.
An important feature of agents is their ability to communicate and interact with
each other. For articial agents, communication is normally implemented by an
asynchronous message passing mechanism. Agents created by dierent designers
must speak the same agent communication language for expressing the type of
communication act, and must refer to shared ontologies for being able to under-
stand the contents of the messages of each other. Conversations between agents
often follow a certain protocol that denes the admissible patterns of message
sequences.
Similarly to the notion of objects in software engineering, the term agent denotes
an abstraction that leads to more natural and more modular software concepts.
While the state of an object is just a collection of attribute values without any
generic structure, the state of an agent has a mentalistic structure comprising per-
ceptions and beliefs. Messages in object-oriented programming are coded in an
application-specic ad-hoc manner, whereas messages in agent-oriented program-
ming are based on an application-independent agent communication language. An
44
agent may exhibit pro-active behavior with some degree of autonomy, while the
behavior of an object is purely reactive and under full control of those other objects
that invoke its methods.
Agent-Oriented Information Systems (AOIS) represent a new information system paradigm
where communication between dierent (software-controlled) systems and between
systems and humans is understood as communication between agents whose state
consists of mental components (such as beliefs, perceptions, memory, commit-
ments, etc.). In enterprise information systems, for instance, the AOIS paradigm
implies that business agents are treated as rst class citizens along with business
objects.
There is also an AOIS workshop series.
Business Rules are statements that express a business policy, dening or constraining
some aspect of a business, in a declarative manner (not describing/prescribing
every detail of their implementation). Business rules may be strict or defeasible
(allowing exceptions). They can be formalized as integrity constraints, derivation
rules, or reaction rules.
Business Transaction A sequence of actions performed by two or more agents, involving
a
ow of information and a
ow of money, and normally also a
ow of material
or certain other physical eects. Usually, it requires some bookkeeping to record
what happened. Today, this bookkeeping is done by the computer-based informa-
tion systems of the involved business partners. Since an enterprise may participate
in a great number of business transactions at the same time, this requires sophis-
ticated information system technologies for guaranteeing high performance and
consistency.
CORBA The Common Object Request Broker Architecture is an established standard
allowing object-oriented distributed systems to communicate through the remote
invocation of object methods.
Database Management System (DBMS) The main purpose of a DBMS is to store and
retrieve information given in an explicit linguistic format (using various symbols).
As opposed to certain other types of information that are also processed in agents,
this type of information is essentially propositional, that is, it can be expressed
as a set of propositions in a formal language. In the sixties and seventies, pushed
by the need to store and process large data sets, powerful database management
systems extending the le system technology have been developed. These systems
have been named hierarchical and network databases, referring to the respective
type of le organization. Although they were able to process large amounts of data
eÆciently, their limitations in terms of
exibility and ease of use were severe. Those
diÆculties were caused by the unnatural character of the conceptual user-interface
of hierarchical and network databases consisting of the rather low-level data access
operations dictated by their way of implementing storage and retrieval. Thus, both
45
database models have later on turned out to be cognitively inadequate. The formal
conceptualization of relational databases by Codd in the early seventies rendered
it possible to overcome the inadequacy of the rst generation database technology.
The logic-based formal concepts of the relational database model have led to more
cognitive adequacy, and have thus constituted the conceptual basis for further
progress (towards object-relational, temporal, deductive, etc. databases). Driven
by the success of the object-oriented paradigm, and by the desire to improve the re-
lational database model, object-relational databases are now increasingly regarded
the successor to relational databases. This development is being re
ected in the
progression of SQL, the established standard language for database manipulation,
from SQL-89 via SQL-92 to SQL-99.
Data Warehouse A very large database that stores historical and up-to-date informa-
tion from a variety of sources and is optimized for fast query answering. It is in-
volved in three continuous processes: 1) at regular intervals, it extracts data from
its information sources, loads it into auxiliary tables, and subsequently cleans and
transforms the loaded data in order to make it suitable for the data warehouse
schema; 2) it processes queries from users and from data analysis applications;
and 3) it archives the data that is no longer needed by means of tertiary storage
technology.
Most enterprises today employ computer-based information systems for nancial
accounting, purchase, sales and inventory management, production planning and
control. In order to eÆciently use the vast amount of information that these
operational systems have been collecting over the years for planning and decision
making purposes, the various kinds of information from all relevant sources have
to be merged and consolidated in a data warehouse.
While an operational database is mainly accessed by OLTP applications that up-
date its content, a data warehouse is mainly accessed by ad hoc user queries and by
special data analysis programs, also called Online Analytical Processing (OLAP)
applications. For instance, in a banking environment, there may be an OLTP
application for controlling the banks's automated teller machines (ATMs). This
application performs frequent updates to tables storing current account informa-
tion in a detailed format. On the other hand, there may be an OLAP application
for analyzing the behavior of bank customers. A typical query that could be an-
swered by such a system would be to calculate the average amount that customers
of a certain age withdraw from their account by using ATMs in a certain region.
In order to attain quick response times for such complex queries, the bank would
maintain a data warehouse into which all the relevant information (including his-
torical account data) from other databases is loaded and suitably aggregated.
Typically, queries in data warehouses refer to business events, such as sales trans-
actions or online shop visits, that are recorded in event history tables (also called
`fact tables') with designated columns for storing the time point and the loca-
tion at which the event occurred. Usually, an event record has certain numerical
46
parameters such as an amount, a quantity, or a duration, and certain additional
parameters such as references to the agents and objects involved in the event.
While the numerical parameters are the basis for forming statistical queries, the
time, the location and certain reference parameters are used as the dimensions
of the requested statistics. There are special data management techniques, also
called multidimensional databases, for representing and processing this type of
multidimensional data. For further research, see [Cod94, AM97, IWK97].
Derivation Rules (or deduction rules ) are used for dening intensional predicates and
for representing heuristic knowledge, e.g. in deductive databases and in logic pro-
grams. Intensional predicates express properties of, and relationships between,
entities on the basis of other (intensional and extensional) predicates. Heuristic
knowledge is often represented in the form of default rules which may be naturally
expressed using the weak and strong negation from partial logic (like in the for-
malism of `extended logic programs'). While relational databases allow to dene
non-recursive intensional predicates with the help of views, they do not support
default rules or any other form of heuristic knowledge.
EDI Electronic Data Interchange, denotes the traditional computer-to-computer ex-
change of standard messages representing normal business transactions including
payments, information exchange and purchase order requests. Besides the two
main international standards for EDI messages, UN/EDIFACT and ANSI X.12,
there are several vertical EDI standards. EDIFACT is administered by a working
party (WP.4) of the United Nations Economic Commission for Europe (UN/ECE).
The EDIFACT syntax rules have been published by the ISO as ISO9735. In
[Moo99], it is shown that current EDI standards have the message structure pro-
posed by speech act theory. The current EDI standards are beeing criticized be-
cause of a number of problems such as underspecied meaning, idiosyncratic use
and in
exibility. In 1999, a major initiative has been launched to replace the
outdated EDI message syntax by a more
exible XML-based framework called
ebXML.
Enterprise Application Integration (EAI) refers to the problem of how to integrate the
increasing number of dierent application systems and islands of information an
enterprise has built up over many years. The EAI problem also arises through the
formation of a virtual enterprise or from merging two companies. While the inte-
gration of various islands of information including databases, sequential les, and
spreadsheets, may be achieved through data federation systems, the interoperation
between dierent application systems requires an asynchronous message exchange
technology, also called message-oriented middleware (MOM). In addition, a mes-
sage translation service is needed to transform the messages sent by one application
to the message language of another application. An application-independent EAI
message language, called Business Object Documents, is proposed by the Open
Application Group. The integration of applications across enterprise boundaries
is also called `Enterprise Relationship Management'.
47
Enterprise Resource Planning (ERP) systems are generic and comprehensive business
software systems based on a distributed computing platform including one or more
database management systems. They combine a global enterprise information sys-
tem covering large parts of the information needs of an enterprise with a large
number of application programs implementing all kinds of business processes that
are vital for the operation of an enterprise. These systems help organizations
to deal with basic business functions such as purchase/sales/inventory manage-
ment, nancial accounting and controlling, and human resources management, as
well as with advanced business functions such as project management, production
planning, supply chain management, and sales force automation. First generation
ERP systems now run the complete back oÆce functions of the worlds largest
corporations. The ERP market rose at 50% per year to $8.6 billion in 1998 with
22,000 installations of the market leader, SAP R/3. Typically, ERP systems run
in a three-tier client/server architecture. They provide multi-instance database
management as well as conguration and version (or `customization') manage-
ment for the underlying database schema, the user interface, and the numerous
application programs associated with them. Since ERP systems are designed for
multinational companies, they have to support multiple languages and currencies
as well as country-specic business practices. The sheer size and the tremendous
complexity of these systems make them diÆcult to deploy and maintain.
Entity-Relationship (ER) Modeling A conceptual modeling method and diagram lan-
guage based on a small number of ontological principles: an information system
has to represent information about entities that occur in the universe of discourse
associated with its application domain, and that can be uniquely identied and
distinguished from other entities; entities have properties and participate in re-
lationships with other entities; in order to represent entities in an information
system, they are classied by means of entity types; each entity type denes a list
of (stored and virtual) attributes that are used to represent the relevant properties
of the entities associated with it; together, the values of all attributes of an entity
form the state of it; in order to represent ordinary domain relationships (or asso-
ciations) between entities, they are classied by means of relationship types ; there
are two designated relationships between entity types that are independent of the
application domain: specialization (subclass) and composition (component class).
ER modeling was introduced in [Che76]. In its original form, it included the
primary key concept as its standard naming technique, but did not include spe-
cialization and composition. The primary key standard naming technique proved
to be inadequate since a standard name should be a unique identier which is
associated with an entity throughout its entire life cycle implying that it must
be immutable. However, the basic idea of ER modeling does not depend on the
primary key concept. It is also compatible with the object identier concept of
OO systems and ORDBs. This implies that ER modeling does not preclude the
possibility of two distinct entities having the same state. It is therefore justied
to view OO information modeling, such as UML class diagrams, as inessential ex-
48
tensions of ER modeling, and to regard ER modeling as the proper foundation of
information modeling.
Information System (IS) An IS is an artifact (or technical arrangement) for eÆciently
managing, manipulating, and evaluating information-bearing items such as paper
documents, ASCII text les, or physical objects. Today, especially in enterprises
and other large organizations, there are more and more computerized ISs imple-
mented by means of DBMS technology. One may distinguish between private,
organizational and public ISs. Typical examples of a private IS are personal ad-
dress databases and diaries. The major paradigms of an organizational IS are
transaction-oriented database (OLTP) applications (such as ERP systems) and
query-answering-oriented data warehouse (OLAP) applications. Typical examples
of a public IS are libraries, museums, zoos, and web-based community ISs.
Integrity Constraints are sentences which have to be satised in all evolving states of a
database (or knowledge base). They stipulate meaningful domain-specic restric-
tions on the class of admissible databases (or knowledge bases). Updates are only
accepted if they respect all integrity constraints. The most fundamental integrity
constraints are value restrictions, keys and foreign keys (or referential integrity
constraints).
Interoperability denotes the ability of two or more systems to collaborate. At a lower
level, this concerns the ability to exchange data and to allow for remote procedure
calls from one system to another. At a higher level, it requires the ability to
participate in the asynchronous exchange of messages based on an application-
independent language (such as KQML, or FIPA-ACL).
Message-Oriented Middleware (MOM) denotes a type of software systems for man-
aging transactional message queues as the basis of asynchronous message passing.
Well-known products include IBM MQSeries and Sun JMQ. A standard MOM
application programming interface for Java, called Java Messaging Service (JMS)
has been proposed by Sun.
Message Transport An abstract service provided by a MOM system in the case of EAI,
or by the agent management platform to which the agent is (currently) attached
in the case of a FIPA-compliant interoperability solution. The message transport
service provides for the reliable and timely delivery of messages to their destination
agents, and also provides a mapping from logical names to physical transport
addresses
OLAP Application Online Analytical Processing applications allow to evaluate large
data sets by means of sophisticated techniques, such as statistical methods and
data mining techniques. They typically run on top of a data warehouse system.
OLTP System Online Transaction Processing systems are able to process a large num-
ber of concurrent database query and update requests in realtime. The information
49
technology part of a business transaction is called an online transaction, or sim-
ply `transaction'. It is performed through the execution of an application program
that accesses one or more shared databases within the business information system.
A transaction is a complex update operation consisting of a structured sequence
of read and write operations. Ideally, a transaction satises the ACID proper-
ties. Business information systems are primarily OLTP systems. In almost every
sector { manufacturing, education, health care, government, and large and small
businesses - OLTP application systems are relied upon for everyday administra-
tive work, communication, information gathering, and decision making. The rst
OLTP application in widespread use was the airline reservation system SABRE de-
veloped in the early 1960s as a joint venture between IBM and American Airlines.
This system connects several hundred thousand nodes (user interface devices) and
has to handle several thousand update request messages per second
Object-Relational Databases (ORDBs) have evolved from relational databases by adding
several extensions derived from conceptual modeling requirements and from object-
oriented programming concepts. One can view the evolution of relational to object-
relational databases in two steps. First, the addition of abstract data types (ADTs)
allows complex-valued tables. ADTs include user-dened base types and complex
types together with user-dened functions and type predicates, and the possibility
to form a type hierarchy where a subtype of a tuple type inherits all attributes
dened for it. Second, the addition of object identity, object references and the
possibility to dene subtables within an extensional subclass hierarchy allows ob-
ject tables. There are two notable dierences between object-relational databases
and object-oriented programming. First, object IDs in ORDBs are logical point-
ers. They are not bound to a physical location (like C++ pointers). Second, in
addition to the intensional subtype hierarchy of the type system, ORDBs have an
extensional subclass (or subtable) hierarchy that respects the subtype relationships
dened in their type system. ORDBs allow the seamless integration of multimedia
data types and large application objects such as text documents, spreadsheets and
maps, with the fundamental concept of database tables. Many object-relational
extensions have been included in SQL-99.
Object-Oriented Database (OODB) Historically, the successful application of object-
oriented programming languages such as Smalltalk, C++ and Java, has led to the
development of a number of so-called `object-oriented database systems' which sup-
port the storage and manipulation of persistent objects. These systems have been
designed as programming tools to facilitate the development of object-oriented
application programs. However, although they are called database systems, their
emphasis is not on representing information by means of tables but rather on
persistent object management. Any database concept which is intended as an
implementation platform for information systems and knowledge representation
must support tables as its basic representation concept on which query answering
is based. Tables correspond to extensional predicates, and each table row corre-
50
sponds to a proposition. This correspondence is a fundamental requirement for
true database systems. If it is violated, like in the case of OODBs, one deals with
a new notion of database system, and it would be less confusing to use another
term instead (e.g. persistent object management system) as proposed by [Kim95].
Ontology An ontology explicitly species the terms for expressing queries and asser-
tions about a domain in a way that is formal, objective, and unambiguous. This
includes the stipulation of terminological relationships and constraints in order to
capture key aspects of the intended meaning of the specied terms. An ontology
is implicitly dened by a conceptual model (such as an ER or UML model). Com-
munication between agents can only be successful if it is based on a common (or
shared) ontology.
Protocol A protocol denes the admissible patterns of a particular type of conversation
or interaction between agents. Notice that an interaction protocol refers to the
communication acts and high-level actions available to agents, whereas a network-
ing protocol refers to message transport mechanisms such as TCP/IP.
Reaction Rule SQL databases support a restricted form of reaction rules, called trig-
gers. Triggers are bound to update events. Depending on some condition on the
database state, they may lead to an update action and to system-specic proce-
dure calls. In [Wag98] a general form of reaction rules, subsuming production rules
and database triggers (or `event-condition-action rules') as special cases, was pro-
posed. Reaction rules can be used to specify the communication in multidatabases
and, more generally, the interoperation between communication-enabled applica-
tion systems.
Relational Database (RDB) Already in 1970, Edgar F. Codd published his pioneer-
ing article \A Relational Model of Data for Large Shared Data Banks" in the
Communications of the ACM, where he dened the principles of the relational
database model. This was the rst convincing conceptualization of a general
purpose database model, and it is not an accident that it relies on formal logic
providing a clear separation of the conceptual user interface and the underlying
implementation techniques. In the mid-eighties, IBM presented DB2, the rst
industrial-strength implementation of the relational model, which continues to be
one of the most successful systems today. There are now numerous other relational
DBMSs that are commercially available. The most popular ones include Informix,
Oracle, Sybase and Microsoft SQL Server. To a great extent, the overwhelming
success of these systems is due to the standardization of the database manipulation
language SQL originally developed at IBM in the seventies.
While most well-established information processing systems and tools such as pro-
gramming languages, operating systems or word processors have evolved from prac-
tical prototypes, the unprecedented success story of the relational database model
is one of the rare examples where a well-established and widely used major soft-
ware system is based on a formal model derived from a mathematical theory (in
51
this case set theory and mathematical logic). Conceptually, a relational database
is a nite set of nite set-theoretic relations (called `tables') over elementary data
types, corresponding to a nite set of atomic propositions. Such a collection of
atomic sentences can also be viewed as a nite interpretation of the formal lan-
guage associated with the database in the sense of rst order predicate logic model
theory.
The information represented in a relational database is updated by inserting or
deleting atomic sentences corresponding to table rows (or tuples of some set-
theoretic relation). Since a relational database is assumed to have complete infor-
mation about the domain represented in its tables, if-queries are answered either
by yes or by no. There is no third type of answer such as unknown. Open queries
(with free variables) are answered by returning the set of all answer substitutions
satisfying the query formula.
Rule There are various types of rules: business rules, legal rules, calculation rules,
derivation rules, production rules, rules of thumb, reaction rules, and many more.
SQL is a declarative language for dening, modifying and querying database tables.
A table schema is dened with the command CREATE TABLE. . . and modied with
ALTER TABLE. . . The content of a table can be modied by either adding, delet-
ing, or changing rows using the commands INSERT INTO. . . , DELETE FROM. . . and
UPDATE. . . Simple queries are formed with the expression SELECT columns FROM ta-
bles WHERE condition. Such a query combines the cross product of tables with the
selection dened by condition and the nal projection to the attributes occurring in
columns. More complex queries can be formed by nesting such SELECT statements
(using subqueries in the WHERE clause), and by combining them with algebraic op-
erators such as JOIN, UNION, EXCEPT. SQL queries correspond to relational algebra
expressions and to predicate logic formulas: projection corresponds to existential
quantication, join to conjunction, union to disjunction, and dierence (EXCEPT)
to negation. The most recent version of SQL, SQL-99, includes many object-
relational extensions, such as user-dened types for attributes, object references,
and subtable denitions by means of CREATE TABLE subtable UNDER supertable.
TCP/IP is a networking protocol used to establish connections and transmit data be-
tween hosts.
Unied Modeling Language (UML) is an established object-oriented modeling stan-
dard dened by an industry initiative organized and funded by Rational and led
by three prominent gures of the OO modeling community: Booch, Jacobson, and
Rumbaugh. UML recognizes ve distinct modeling views: the use-case view for
requirements analysis, the logical view for describing the static structure and the
behavior of a system, and three implementation views regarding components, con-
currency, and deployment. Each of these views is composed of several diagrams. A
use-case diagram depicts a complete sequence of related transactions between an
external actor and the system. The idea is that, by going through all of the actors
52
associated with a system, and dening everything they are able to do with it, the
complete functionality of the system can be dened. UML class diagrams are a
straight-forward extension of ER diagrams. In addition to conventional (stored)
attributes, class diagrams also list the operations of a class which may be functions
(derived attributes) or service procedures associated with the class. The behavior
of a system is modeled by means of four types of diagram: sequence diagrams de-
pict the message exchange between objects arranged in time sequence, where the
direction of time is down the page; an alternative way of visualizing the message
exchange between objects is oered by collaboration diagrams emphasizing the as-
sociations among objects instead of the time sequence; activity diagrams are used
for describing concurrent, asynchronous processing; nally, state charts allow to
represent the state transitions of a system.
53
B. About the instructor
Dr. Gerd Wagner is currently a research scientist in the informatics department at the
Free University of Berlin. He received an MSc in mathematics and a PhD in philoso-
phy from the Free University of Berlin, and a German Habilitation degree in computer
science from the University of Leipzig. He was visiting researcher at the Institute de
Recherche en Informatique de Toulouse in 1994 and at Universidade Nova de Lisboa in
1995. His research interests are focused on the foundations of information and knowl-
edge systems and of multiagent systems. Dr. Wagner is the guest editor of a 1997
special issue of the Journal of Applied Nonclassical Logic on Handling Inconsistency in
Knowledge Systems, and the author of the book Foundations of Knowledge Systems with
Applications to Databases and Agents (Kluwer Academic Publishers, 1998). In 1999, he
initiated and co-organized the rst International Workshop on Agent-Oriented Informa-
tion Systems (http://www.AOIS.org). In recent years, Dr. Wagner has also worked
with the enterprise resource planning system BaanERP. He has been involved in several
BaanERP customization projects, and has taught BaanERP Tools to programmers and
consultants.
54
Bibliography
[AM97] S. Anahory and D. Murray. Data Warehousing in the Real World. Addison
Wesley, 1997.
[Che76] P. Chen. The entity-relationship model { toward a unied view of data. ACM
Transactions on Database Systems, 1(1):9{36, 1976.
[Cod94] E.F. Codd. Adding value to relational and legacy dbms: The olap mandate.
Business Intelligence, 1994.
[Den71] D.C. Dennett. Intentional systems. The Journal of Philosophy, 68, 1971.
[IWK97] W.H. Inmon, J.D. Welch, and G.L. Katherine. Managing the Data Warehouse.
Wiley & Sons, New York, 1997.
[Kim95] W. Kim. Introduction to part 1. In W. Kim, editor, Modern Database Systems,
pages 5{17. ACM Press, New York, 1995.
[Moo99] S.A. Moore. Categorizing automated messages. Decision Support Systems,
1999.
[Sho93] Y. Shoham. Agent-oriented programming. Articial Intelligence, 60:51{92,
1993.
[Wag98] G. Wagner. Foundations of Knowledge Systems { with Applications
to Databases and Agents, volume 13 of Advances in Database Sys-
tems. Kluwer Academic Publishers, 1998. See http://www.inf.fu-
berlin.de/wagnerg/ks.html.
55