- Oracle BAM 11gR1 Handbook
- Pete Wang
- 1106字
- 2021-08-27 11:57:43
Oracle BAM key concepts
In this section, we will give you a brief review of the key concepts, which will help you to gain a better understanding of BAM Architecture, and more advanced topics.
Data Object
A Data Object is an internal data structure that represents the business data in the BAM server. Like the concept of the database tables, a Data Object has a flat structure, which includes fields with primitive data types, such as string, integer, float, date time
, and so on. It can also include calculated fields and lookup fields, which reference to other Data Objects using foreign keys. The Data Object field cannot be defined using complex data types, such as arrays, objects, and so on.
The following screenshot depicts the Employees
Data Object layout, which is defined using simple primitive data types, such as string, integer
, and timestamp:

Data Objects are managed in the in-memory data cache to meet the needs of high volume data processing, and get persistent in the BAM database schema automatically. In the current release, Oracle BAM supports the following RDBMS as its persistence store: Oracle Database, IBM DB2, and Microsoft SQL server.
More Data Object details will be covered in Chapter 2,Designing your First Data Objects and Reports.
ViewSet
A ViewSet is an object that represents a query to a given Data Object. A ViewSet
provides an abstraction layer that decouples the View design and underlying data model, which allows multiple reports to share the same Data Object.
In BAM, a ViewSet
is defined using an XML schema, which can contain the following elements:
To understand this concept, let's take a look at an example that represents the query to the Employee
Data Object that you saw before.

In this ViewSet
definition, the dataset attribute specifies the database table (_Employees
) that is used to persist the Data Object (Employee
). The DatasetField
and AggregateField
elements specify the _Sales_Area
data field and the aggregate SUM(_Sales_Number)
that can be used to construct the query to the _Employees
dataset.
ViewSets
can also be sorted, filtered, and applied row-level securities. More topics related to ViewSet
will be covered in the next chapter.
View
A View is a rendered result set, which is generated by opening one or a collection of ViewSets
. The following is a sample of the 3D bar chart View that shows the number of orders, grouped by its status:

Note
In the current BAM release, a View can only be rendered in the IE browser. The View type specific XSL transformation, which is used to convert report data to DHTML with JavaScript, utilizes proprietary IE features that are not available in other web browsers, such as Firefox, Chrome, and so on.
The list of View types supported in BAM 11g R1 include the following:
- Charts: Area chart, bar chart, combo chart, funnel chart, line chart, pie chart, SPC chart, and stacked bar chart
- Lists: Streaming list, updating list, updating ordered list, and collapsed list
- Action Form
- Columnar
- Dashboard
- Row group, column group
- KPIs: Arrow, market arrow, dial gauge, range gauge
- Tab group
- Excel spreadsheet
You will learn more about these View types in Chapter 4, .
Snapshot
A Snapshot is a query result set created by a ViewSet
. When a report is first rendered, a ViewSet
is opened to generate the initial result, which is called a Snapshot. The XML representation of the Snapshot is then transformed to DHTML using View-specific XSL, and sent to the client along with JavaScript.
Snapshots are cached in the BAM Server. So, every time the same report is opened in another browser session, the Snapshot will be retrieved, and sent back to the client without generating from scratch, which helps improve the report rendering performance.
Snapshots can be used to generate static Views. To produce dynamic Views, or in other words, to render a report that can reflect the data changes in real time, you will need a push-based mechanism called Active Data, which we will look at next.
Active Data
Active Data is the continuous stream of changes that the ViewSet
can produce. Once a report is first rendered with a Snapshot, any subsequent changes to the Snapshot of the ViewSet will be captured at the server side, and pushed back to the client. This is what we call a push-based mechanism.
A push-based mechanism is an efficient way of delivering real-time notifications to the client. Unlike the polling approach, in which clients need to consistently send requests to the server, Active Data allows the server to send the changed data in an incremental way, instead of transferring all the report data to the client, and thus can provide significant advantages, such as the following:
- Leveraging client and server resources more efficiently
- Significantly reducing the network traffic
- Fast rendering report with Active Data
You will learn more about Active Data and push-based mechanisms in the Understanding message flow section, later in this chapter.
ChangeList
A ChangeList is an Active Data Payload that includes the changes produced by a specific ViewSet
.
The ChangeList is in XML format, which normally includes the following:
index:
A sequence number of a ChangeList. When a report is first rendered, aViewSet
will be opened with a Snapshot. Any further Data Object changes may trigger a ChangeList generated with incremental index numbers starting from one. The index will increment by one as any new changes come.viewsetID:
A unique identifier for a particularViewSet
, the index, andviewsetID
together identify the ChangeList.Group:
A container to hold ChangeList records.Record:
An XML element representing a row in the updated query result of aViewSet
. ARecord
contains a transaction type(insert, update, upsert
, anddelete)
, Data Object field references, and contents.
Let us look at a ChangeList
example, which is produced by a ViewSet
of the Employees
Data Object.

The key points that you can see from the example are:
- The
ChangeList
sequence number is identified by theindex
attribute value.1
means this is the firstChangeList
for theViewSet
. - The
Field
definition andFormattedValue
provide the detailed information for theChangeList
contents. - The
xnType
attribute defined in theRecord
element specifies the transaction type (update) for theRecord
of theChangeList
. The other possible transaction type values areinsert, upsert
, anddelete
.
- Oracle從入門到精通(第3版)
- Learning Cython Programming(Second Edition)
- 深入理解Bootstrap
- 自己動手寫搜索引擎
- 程序員面試白皮書
- Kibana Essentials
- R語言經典實例(原書第2版)
- WebAssembly實戰
- Data Analysis with IBM SPSS Statistics
- 網店設計看這本就夠了
- Reactive Android Programming
- Node.js Design Patterns
- 運用后端技術處理業務邏輯(藍橋杯軟件大賽培訓教材-Java方向)
- HTML5 APP開發從入門到精通(微課精編版)
- Babylon.js Essentials