Professional Documents
Culture Documents
OID
PL/SQL or
LDAP Java Client
LDAP Client Support
AQ Client
IDAP
Gateway
Message Agent
Requests
Advanced Queue
Rules &
Transfor Rules &
mation XML Messages Transfor
over HTTP mation
MQ Series
Rendezvous
Overview
To enable messaging operations (such as enqueue and dequeue) to be performed over the
Internet, a new XML based Internet Document Access Presentation (IDAP) has been created
by Oracle that allows message operations to be sent via HTTP across firewalls.
In addition, Internet based AQ users are also supported with the LDAP support provided using
the Oracle Internet Directory (OID), Advanced Queuing agents can now also be defined in
Oracle Internet Directory, providing a centralized, easy to manage, secure infrastructure for
global messaging.
AQ information can be externalized in Oracle Internet Directory, providing a single place for
the configuration and management of Advanced Queuing operations that span one or more
systems, such as subscribing to queues across multiple systems.
Oracle Enterprise Manager can be used to administer the AQ resources as well. Also Oracle
Enterprise Security Manager can be used to manage the AQ entries in OID.
OCI Client
ORACLE
E-Mail
New in Oracle9i
• AQ Notifications are a result of an enqueue
operation, or explicit post operation when no
queue is involved.
• Now notifications can be delivered through
PL/SQL, email and HTTP post.
• Database events can also be notified to
subscribers
AQ Notification – Overview
Publish – Subscribe notification is the backbone of B2B communications. In Oracle8i, all the
AQ notifications could be received by OCI Clients only. In Oracle9i, AQ notification feature
has been enhanced to support
• Registering e-mail addresses to which notifications can be sent
• Call a stored PL/SQL procedure on notification
The registered clients are notified asynchronously, when events are triggered or an explicit AQ
enqueue operation. The clients need not be connected to the database.
AQ Aliases in OID
OID can be used as a repository of AQ aliases. Mainly the aliases are looked up by the JMS for
locating ConnectionFactories, Queue/Topic lists. Also the aliases in OID can be used through
IDAP for locating the Sender-ID, Recepient-ID, Destination Queues/Topics.
AQ Monitoring
In this screen shot, the number of messages in the selected queues are displayed for each status:
Waiting, Ready, or Expired. This example shows that there are about 50 messages ready to be
dequeued from the Orders_Queue table.
OID Oracle9i
AQ Agent
IDAP
Message
Requests
PL/SQL
Oracle9i Transformations
AQ Client
Overview
Oracle9i provides a standard infrastructure that makes it easier for customers to integrate
storefronts, exchanges and portals with other backend and external systems. This allows
Oracle9i to support millions of messages per hour in industry standard business messaging
formats.
Advanced Queuing
XML based messaging over HTTP is supported in Advanced Queuing in Oracle9i, allowing
external ‘across firewall’systems to be more easily integrated. In addition, non-database,
Internet based AQ users are also supported, allowing for greater flexibility in heterogeneous
environments. To enable messaging operations (such as enqueue and dequeue) to be performed
across the Internet, a new XML based Internet Document Access Presentation (IDAP) has been
created by Oracle that allows message operations to be sent via HTTP across firewalls.
Oracle9i also provides an built in message transformation architecture, with support for
PL/SQL transformations, which can be executed at enqueue,dequeue and propagation
operations. (Covered in a different lesson).
Advanced Queuing agents can now also be defined in Oracle Internet Directory, providing a
centralized, easy to manage, secure infrastructure for global messaging. In addition, AQ
information can be externalized in Oracle Internet Directory, providing a single place for the
configuration and management of Advanced Queuing operations that span one or more
systems, such as subscribing to queues across multiple systems.
Enterprise application integration may involve legacy applications and/or customer sites where
non-Oracle products are widely used. While solutions to integration problems can be based
around an Oracle AQ or RDBMS, it is not feasible to convert all customer applications to use
Oracle AQ or RDBMS entirely. For this reason, Oracle provides a Messaging Gateway which
allows customer applications to remain unchanged and which seamlessly integrates
connectivity between AQ and other messaging systems.
B2B / AQ Enhancements 2--3
Internet Integration - Requirements
• B2B applications on the internet require
– Messages to work with firewalls and proxies.
– The protocol used should not be proprietary.
• Oracle has evolved an XML based protocol called
Internet Data Access Presentation (iDAP).
• Security mechanisms for the Internet usage have
also been incorporated.
Oracle9i
AQ Servlet
AQ Queue
AQ client
HTTP(S)
Major Components of AQ operations for Internet are:
• The AQ Client Program
• The AQ Servlet running on a Web Server
• The Oracle9i Database Server
Detailed component overview for different protocols
such as HTTP, SMTP are discussed later.
AQ Message
MESSAGE_Set: A Message_Set consists of one or more messages.
MESSAGE: A Message consists of the following:
• MESSAGE_NUMBER: The sequence number of the message in the Message_Set. This
information is useful for the client for logging in.
• MESSAGE_HEADER: The Message_Header comprises of the following:
MESSAGE_ID: The identifier of the message.
CORRELATION: The correlation identifier of the message
EXPIRATION: The duration in seconds that a message is available for dequeuing.
DELAY: Duration in seconds after which a message is available for processing.
PRIORITY: The priority of the message. A smaller number indicates higher priority.
SENDER_ID: The application-specified identifier, agent_name, address, protocol
agent_alias— if specified, resolves to a name, address, protocol using LDAP
RECIPIENT_LIST: Overrides the default subscriber list; lookup_type defines if the
recipients are specified or looked up in LDAP
MESSAGE_STATE: The state of the message is filled in automatically during dequeue
EXCEPTION_QUEUE: In case of exceptions the name of the queue to which the message
is moved if it cannot be processed successfully.
MESSAGE_PAYLOAD The payload of the message is of type ANY and will be interpreted
at run time.
In the above example, when converted to an object, the attribute n will have value 123 and
attribute x would contain XML data between tags <x> and </x>
AQ Message Methods
AQ methods can be classified into two areas, namely:
AQ Access Methods
• SEND: Enqueue a message from a client to a single consumer queue
• PUBLISH: Enqueue a message from a client to a multi consumer queue
• RECEIVE: Dequeue a message from a client to a single consumer queue
• REGISTER: Register for notifications on a queue or topic
• COMMIT: Commits the transaction
• ROLLBACK: Rolls back the transaction
Status Response
• Status Response following an Publish request
• Status Response following a Receive request
• Status Response following an error
AQ Response Messages
The response to an enqueue request to a single-consumer queue uses the AQXmlSendResponse
method. The components of the response may include:
Status Response
• status_code— indicates success (0) or failure (-1)
• error_code— Oracle code for the error
• error_message— description of the error
Send_result (for an Enqueue to a Single-Consumer Queue)
• destination— where the message was sent
• message_id— identifier for every message sent
Publish_result (for an Enqueue to a Multiconsumer Queue or Topic)
• destination— where the message was sent
• message_id— identifier for every message sent
Receive_result (for a Dequeue from a Queue or Topic)
• destination— where the message was sent
• message_set— the set of messages dequeued
<ORDER_TYP>
<ORDERNO>100</ORDERNO>
<STATUS>NEW</STATUS>
<ORDERTYPE>NORMAL</ORDERTYPE>
<ORDERREGION>EAST</ORDERREGION>
<CUSTOMER>
<CUSTNO>1001233</CUSTNO>
<CUSTID>JOHN</CUSTID>
<NAME>AMERICAN EXPRESS</NAME>
<STREET>EXPRESS STREET</STREET>
<CITY>REDWOOD CITY</CITY>
<STATE>CA</STATE>
<ZIP>94065</ZIP>
<COUNTRY>USA</COUNTRY>
</CUSTOMER>
<PAYMENTMETHOD>CREDIT</PAYMENTMETHOD>
<ITEMS>
<ITEMS_ITEM>
<QUANTITY>10</QUANTITY>
<ITEM>
<TITLE>Perl</TITLE>
<AUTHORS>Randal</AUTHORS>
<ISBN>ISBN20200</ISBN>
<PRICE>19</PRICE>
</ITEM>
<SUBTOTAL>190</SUBTOTAL>
</ITEMS_ITEM>
</ITEMS>
<CCNUMBER>NUMBER01</CCNUMBER>
<ORDER_DATE>2000-08-23 0:0:0</ORDER_DATE>
</ORDER_TYP>
</message_payload>
</message>
</message_set>
</AQXmlSend>
</Body>
</Envelope>
Oracle9i
6
4
AQ Servlet
1 AQ Queue
2
AQ client HTTP(S)
If the client has a transaction ID in the IDAP message header, then the AQ operations are
performed in the context of this transaction. When the response message is generated,
the transaction ID is sent back as a cookie
Oracle9i Oracle9i
Oracle9i
AQ client
XML messages
over SMTP AQ AQ Queue
Servlet
Web
Server
OID
Oracle
Email Server
https://aq.us.oracle.com:8000/aqserv/servlet
https://aq.us.oracle.com:8000/aqserv/servlet
/AQTestServlet
/AQTestServlet
Db_user2
AQ
i_user1 AQ Agent
Servlet
Database
Authorization
Module
DBMS_AQADM.CREATE_AQ_AGENT(
DBMS_AQADM.CREATE_AQ_AGENT(
agent_name
agent_name IN
IN VARCHAR2,
VARCHAR2,
certificate_location
certificate_location IN
IN VARCHAR2
VARCHAR2 DEFAULT
DEFAULT NULL,
NULL,
enable_http
enable_http IN
IN BOOLEAN
BOOLEAN DEFAULT FALSE,
DEFAULT FALSE,
enable_smtp
enable_smtp IN
IN BOOLEAN
BOOLEAN DEFAULT
DEFAULT FALSE,
FALSE,
enable_anyp
enable_anyp IN
IN BOOLEAN
BOOLEAN DEFAULT FALSE)
DEFAULT FALSE)
DBMS_AQADM.CREATE_AQ_AGENT
The paramter description is as follows:
agent_name:
• Specifies the username of the internet user. This function enforces the restriction that two internet
users cannot share the same username, and will throw an error if this username has already been
created with a previous call to CREATE_AQ_USER.
Certificate_location: Will be used later for authentication purposes. Presently ignored.
Enable_http: Specifies whether the agent should be enabled for HTTP access.
This procedure will throw an error if none of the protocol access
methods are enabled.
Enable_smtp:Specifies whether the agent should be enabled for SMTP access.
This procedure will throw an error if none of the protocol access
methods are enabled.
Enable_anyp: Specifies whether the agent should be enabled for all access types.
If this parameter is set to TRUE, all other enable inputs are ignored.
This procedure will throw an error if none of the protocol access
methods are enabled.
Example:
DBMS_AQADM.CREATE_AQ_AGENT(
agent_name => ‘KURT’, enable_http => TRUE, enable_smtp => TRUE,
certificate_location =>
‘ldap://ldaphst:389
cn=kurt,cn=OracleDBAgents,cn=db1,cn=acme,cn=com’);
B2B / AQ Enhancements 2--30
Authorization Functions
DBMS_AQADM.ENABLE_DB_ACCESS(
DBMS_AQADM.ENABLE_DB_ACCESS(
agent_name
agent_name IN
IN VARCHAR2,
VARCHAR2,
db_username
db_username IN
IN VARCHAR2
VARCHAR2 ))
DBMS_AQADM.DISABLE_DB_ACCESS(
DBMS_AQADM.DISABLE_DB_ACCESS(
agent_name
agent_name IN
IN VARCHAR2,
VARCHAR2,
db_username
db_username IN
IN VARCHAR2
VARCHAR2 ))
Examples :
• DBMS_AQADM.ENABLE_DB_ACCESS( agent_name => ‘KURT’,
db_username=> ‘AQ_USER_ENQ’ );
• DBMS_AQADM.ENABLE_DB_ACCESS(agent_name => ‘KURT’,
db_username=> ‘AQ_USER_DEQ’ );
• SYSTEM.AQ$_Internet_Agents
– Maintains the information that is specific to
each internet user
– Includes protocols and a spare column for
future authentication purposes
– Primary key is the internet username
scott 2
Admin 5
• SYSTEM.AQ$_Internet_Agent_Privs
– Stores the agent name to database user
mapping
– Internet username used as a foreign key to
(AQ$_internet_agents).
agent_name db_username
scott system
scott buyer
Admin SYS
Admin seller
AQ$_Internet_agent_privs
This table is created upon AQ startup in SYSTEM and modified by the Authorization Module
functions. Additionally, when a database user is dropped, all entries in this table with that
database username are removed from the table.
Since Oracle’s aim is to provide a complete solution for application integration, Oracle9i
introduces a transformation tool. The transformation engine is integrated with Advanced
Queues. The engine supports those transforms expressible in SQL and PL/SQL and transform
data represented as relational scalar data or as Abstract Datatypes (ADTs). Since XML is the
format of choice of many B2B applications, the transformation engine also supports XSLT
transformations of XML documents. XML documents which conform to the IDAP model must
use values and attributes which match the Oracle object payload type exactly for the
transformation to take place.
ORACLE
MQ Series
Gateway
Links
Agent
Advanced Queues
Rendezvous
Messaging Gateway
Oracle Messaging Gateway propagates messages between Oracle AQ (generic queues) and
non-Oracle messaging systems. Propagation is materialized with the help of a gateway agent
and the agent represents a running instance of the Messaging Gateway. Oracle Messaging
Gateway supports the following:
• propagation between AQ queues and MQSeries queues
• propagation between AQ queues and TIBCO Rendezvous queues.
Oracle Messaging Gateway provides a common interface for the gateway agent to
communicate with the non-Oracle messaging systems for messaging operations and
administrative operations. An implementation of an interface is called a driver. An instance of a
driver, which runs in the gateway agent address space as a client of a non-Oracle messaging
system, is referred as a messaging system link. Messages are enqueued and dequeued by the
gateway agent through messaging system links.
Message Transformations
B2B / AQ enhancements 3 - 1
Objectives
B2B / AQ enhancements 3 - 2
Overview
B2B / AQ enhancements 3 - 3
Message Transformation Concepts
Oracle CRM
Application
Web
Application
Transformation Oracle AQ
Custom built
Application
B2B / AQ enhancements 3 - 4
Message Transformation Concepts
B2B / AQ enhancements 3 - 5
Message Transformation with AQ
B2B / AQ enhancements 3 - 6
Defining Message Transformations
Execute
Execute DBMS_TRANSFORM.CREATE_TRANSFORMATION(
DBMS_TRANSFORM.CREATE_TRANSFORMATION(
schema
schema =>
=> ’SCOTT’,
’SCOTT’, name
name =>
=> ’MYMAP’,
’MYMAP’,
from_schema
from_schema =>
=> ’SCOTT’,
’SCOTT’, from_name
from_name =>
=> ’CART_POINT’
’CART_POINT’
to_schema
to_schema =>
=> ’SCOTT’,
’SCOTT’, to_type
to_type =>
=> ’POLAR_POINT’);
’POLAR_POINT’);
Execute
Execute DBMS_TRANSFORM.MODIFY_TRANSFORMATION(
DBMS_TRANSFORM.MODIFY_TRANSFORMATION(
schema
schema =>
=> ’SCOTT’,
’SCOTT’, name
name =>
=> ‘MYMAP’,
‘MYMAP’,
attribute_number
attribute_number =>=> 1,
1,
transformation
transformation =>
=>
’sqrt(source.user_data.X
’sqrt(source.user_data.X ** source.user_data.X
source.user_data.X ++
source.user_data.Y
source.user_data.Y ** source.user_data.Y)’
source.user_data.Y)’ );
);
Execute
Execute DBMS_TRANSFORM.MODIFY_TRANSFORMATION(
DBMS_TRANSFORM.MODIFY_TRANSFORMATION(
name
name =>
=> ‘MYMAP’,
‘MYMAP’, attribute_number
attribute_number =>
=> 2,
2,
transformation_expression
transformation_expression =>
=> ‘atan(source.
‘atan(source.
user_data.Y
user_data.Y // source.user_data.X)’
source.user_data.X)’ );
);
B2B / AQ enhancements 3 - 7
Defining Message Transformations
CREATE
CREATE FUNCTION
FUNCTION map_cart_pt
map_cart_pt ((
SOURCE
SOURCE scott.polar_point)
scott.polar_point)
RETURNS
RETURNS scott.cartesian_point
scott.cartesian_point
BEGIN
BEGIN
RETURN
RETURN scott.cartesian_point(
scott.cartesian_point(
SQRT(source.X*source.X
SQRT(source.X*source.X ++ source.Y*source.Y),
source.Y*source.Y),
atan(source.Y/source.X)
atan(source.Y/source.X)
);
);
END;
END;
Execute
Execute DBMS_TRANSFORM.CREATE_TRANSFORMATION(
DBMS_TRANSFORM.CREATE_TRANSFORMATION(
schema
schema =>
=> ’SCOTT’,
’SCOTT’, name
name =>
=> ’MYMAP’,
’MYMAP’,
from_schema
from_schema =>
=> ’SCOTT’,
’SCOTT’, from_name
from_name =>
=> ’CART_POINT’
’CART_POINT’
to_schema
to_schema =>
=> ’SCOTT’,
’SCOTT’, to_type
to_type =>
=> ’POLAR_POINT’,
’POLAR_POINT’,
transformation
transformation =>
=> ’MAP_CART_PT(source.user_data)’);
’MAP_CART_PT(source.user_data)’);
B2B / AQ enhancements 3 - 8
XML Transformations
XML Transformations
An Example:
Create type Ord_xml_typ as object ( orderno number, details
XMLType);
create function Ord2XML (in_ord OE.Order_typ)
return OE.Ord_xml_typ as
xm SYS.XMLType;
new_order OE.Ord_xml_typ;
begin
select sys_xmlgen(in_ord) into xm from dual;
new_order:= OE.Ord_xml_typ(in_ord.orderno,xm);
return new_order;
End Ord2XML;/
execute DBMS_TRANSFORM.CREATE_TRANSFORMATION(
schema => ’OE’, name =>’Obj2XML’,
from_schema => ‘OE’, from_name => ’OE.Order_typ’,
to_schema => ’OE’ to_type=>’OE.Order_xml_typ’,
transformation => ’Ord2XML(source.user_data)’);
B2B / AQ enhancements 3 - 9
DBMS_TRANSFORM Package
DBMS_TRANSFORM.CREATE_TRANSFORMATION
DBMS_TRANSFORM.CREATE_TRANSFORMATION
DBMS_TRANSFORM.MODIFY_TRANSFORMATION
DBMS_TRANSFORM.MODIFY_TRANSFORMATION
DBMS_TRANSFORM.DROP_TRANSFORMATION
DBMS_TRANSFORM.DROP_TRANSFORMATION
DBMS_TRANSFORM.COMPUTE
DBMS_TRANSFORM.COMPUTE
B2B / AQ enhancements 3 - 10
DBMS_TRANSFORM Package
DBMS_TRANSFORM.CREATE_TRANSFORMATION
DBMS_TRANSFORM.CREATE_TRANSFORMATION ((
schema
schema IN
IN VARCHAR2,
VARCHAR2,
name
name IN
IN VARCHAR2,
VARCHAR2,
from_schema
from_schema IN
IN VARCHAR2,
VARCHAR2,
from_type
from_type IN
IN VARCHAR2,
VARCHAR2,
to_schema
to_schema IN
IN VARCHAR2,
VARCHAR2,
to_type
to_type IN
IN VARCHAR2,
VARCHAR2,
transformation
transformation IN
IN VARCHAR2
VARCHAR2 default
default NULL)
NULL)
DBMS_TRANSFORM.DROP_TRANSFORMATION
DBMS_TRANSFORM.DROP_TRANSFORMATION ((
schema
schema IN
IN VARCHAR2,
VARCHAR2,
name
name IN
IN VARCHAR2
VARCHAR2 ))
DBMS_TRANSFORM Package
DBMS_TRANSFORM.CREATE_TRANSFORMATION
• Creates a transformation of the specified name that transforms an object of the source type
to an object of the destination type.
• PROCEDURE CREATE_TRANSFORMATION(
• schema IN VARCHAR2,
– name IN VARCHAR2,
– from_schema IN VARCHAR2,
– from_type IN VARCHAR2,
– to_schema IN VARCHAR2,
– to_type IN VARCHAR2,
– transformation IN VARCHAR2 default null)
DBMS_TRANSFORM.DROP_TRANSFORMATION
• Drops a given transformation.
– DBMS_TRANSFORM.DROP_TRANSFORMATION (
– schema IN VARCHAR2,
– name IN VARCHAR2 )
B2B / AQ enhancements 3 - 11
DBMS_TRANSFORM Package
DBMS_TRANSFORM.ADD_ATTRIBUTE_MAP
DBMS_TRANSFORM.ADD_ATTRIBUTE_MAP ((
schema
schema IN
IN VARCHAR2,
VARCHAR2,
name
name IN
IN VARCHAR2,
VARCHAR2,
attribute_number
attribute_number IN
IN NUMBER,
NUMBER,
transformation
transformation IN
IN VARCHAR2)
VARCHAR2)
FUNCTION
FUNCTION DBMS_TRANSFORM.COMPUTE_TRANSFORMATION
DBMS_TRANSFORM.COMPUTE_TRANSFORMATION ((
message
message IN
IN “<ADT_1>”,
“<ADT_1>”,
transformation_schema
transformation_schema IN
IN VARCHAR2,
VARCHAR2,
transformation_name
transformation_name IN
IN VARCHAR2,
VARCHAR2,
transformation_message
transformation_message OUT
OUT “<ADT_1>”)
“<ADT_1>”)
DBMS_TRANSFORM Package
DBMS_TRANSFORM.MODIFY_TRANSFORMATION
Modifies transformation mapping for the specified attribute of the target type. An attribute
number zero must be specified for a scalar target type. If the target type is an object type, then
the expression must be a function returning an object of the target type or a constructor
expression for the target type.
PROCEDURE MODIFY_TRANSFORMATION(
schema IN VARCHAR2,
name IN VARCHAR2,
attribute_number IN NUMBER,
transformation IN VARCHAR2)
DBMS_TRANSFORM.COMPUTE
Transforms the given message according to the given transformation.
PROCEDURE COMPUTE_TRANSFORMATION(
message IN "<ADT_1>",
transformation_schema IN VARCHAR2,
transformation_name IN VARCHAR2,
transformed_message OUT "<ADT_1>")
B2B / AQ enhancements 3 - 12
Specifying Transformations
Specifying Transformations
The example shown above creates a queue subscriber for the QS_WS_backorders_q queue,
specifying that the QS_WS_trans_backorders transformation is to be used by default when
retrieving messages from a queue.
Below are the modifications which have been made to DBMS_AQ and DBMS_AQADM.
TYPE enqueue_options_t IS
RECORD(
visibility BINARY_INTEGER NOT NULL DEFAULT ON_COMMIT
relative_msgid RAW(16) DEFAULT NULL,
sequence_deviation BINARY_INTEGER DEFAULT NULL,
transformation VARCHAR2(60) DEFAULT NULL);
TYPE dequeue_options_t IS
RECORD(
consumer_name VARCHARr2(30) DEFAULT NULL,
dequeue_mode BINARY_INTEGER NOT NULL DEFAULT REMOVE,
navigation BINARY_INTEGER NOT NULL DEFAULT NEXT_MESSAGE,
visibility BINARY_INTEGER NOT NULL DEFAULT ON_COMMIT,
wait BINARY_INTEGER NOT NULL DEFAULT FOREVER,
msgid RAW(16) DEFAULT NULL,
correlation VARCHAR2(128) DEFAULT NULL,
transformation VARCHAR2(60) DEFAULT NULL);
B2B / AQ enhancements 3 - 13
Specifying Transformations
create
create procedure
procedure FwdOrd2Ship(booked_order
FwdOrd2Ship(booked_order
OE.order_typ)
OE.order_typ)
enq_opt
enq_opt dbms_aq.enqueue_options_t;
dbms_aq.enqueue_options_t;
begin
begin
enq_opt.transformation
enq_opt.transformation :=:= ’OE.OE2WS’;
’OE.OE2WS’;
dbms.aq.enqueue(
dbms.aq.enqueue(
queue_name
queue_name =>
=> ’WS.ws_orders_topic’,
’WS.ws_orders_topic’,
enqueue_options
enqueue_options =>
=> enq_opt,
enq_opt,
payload
payload =>
=> booked_order);
booked_order);
end;
end;
//
B2B / AQ enhancements 3 - 14
Specifying Transformations
create
create procedure
procedure FwdOrd2Ship(booked_order
FwdOrd2Ship(booked_order
OE.order_typ)
OE.order_typ)
deq_opt
deq_opt dbms_aq.dequeue_options_t;
dbms_aq.dequeue_options_t;
booked_order
booked_order WS.order_typ_sh;
WS.order_typ_sh;
begin
begin
deq_opt.transformation
deq_opt.transformation :=:= ’OE.OE2WS’;
’OE.OE2WS’;
dbms.aq.dequeue(
dbms.aq.dequeue(
queue_name
queue_name =>
=> ’WS.ws_orders_topic’,
’WS.ws_orders_topic’,
dequeue_options
dequeue_options =>
=> enq_opt,
enq_opt,
payload
payload =>
=> booked_order);
booked_order);
end;
end;
//
B2B / AQ enhancements 3 - 15
Managing Transformations
DBA_TRANSFORMATIONS
USER_TRANSFORMATIONS
Transformation_id NUMBER
owner VARCHAR2(30) NOT NULL
name VARCHAR2(30) NOT NULL
Namespace INTEGER
From_type_schema VARCHAR2(30)
From_type_name VARCHAR2(30)
To_type_schema VARCHAR2(30)
To_type_name VARCHAR2(30)
Type TYPE
Attribute_name VARCHAR2(30)
Transformation_expression VARCHAR2(4000)
comment VARCHAR2(4000)
B2B / AQ enhancements 3 - 16
Managing Transformations
Managing Transformations
Transformations will be exported on a full database export. Transformations owned by a user
will also be exported on a schema level export. Transformations used by AQ will also be
exported when the corresponding queue table is exported.
In both queue table export and schema level export, the source and target ADTs are also
exported and created on import, if they don’t already exist.
B2B / AQ enhancements 3 - 17
Summary
B2B / AQ enhancements 3 - 18