EAI2
EAI2
EAI2
Integration Platform
Technologies: Siebel
Enterprise Application
Integration
Version 8.1
March 2008
For Oracle internal distribution only
The Programs (which include both the software and documentation) contain proprietary information;
they are provided under a license agreement containing restrictions on use and disclosure and are also
protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering,
disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability
with other independently created software or as specified by law, is prohibited.
The information contained in this document is subject to change without notice. If you find any problems
in the documentation, please report them to us in writing. This document is not warranted to be error-
free. Except as may be expressly permitted in your license agreement for these Programs, no part of
these Programs may be reproduced or transmitted in any form or by any means, electronic or
mechanical, for any purpose.
PRODUCT MODULES AND OPTIONS. This guide contains descriptions of modules that are optional and
for which you may not have purchased a license. Siebels Sample Database also includes data related to
these optional modules. As a result, your software implementation may differ from descriptions in this
guide. To find out more about the modules your organization has purchased, see your corporate
purchasing agent or your Oracle sales representative.
If the Programs are delivered to the United States Government or anyone licensing or using the Programs
on behalf of the United States Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS. Programs, software, databases, and related documentation and technical
data delivered to U.S. Government customers are "commercial computer software" or "commercial
technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific
supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the
Programs, including documentation and technical data, shall be subject to the licensing restrictions set
forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set
forth in FAR 52.227-19, Commercial Computer Software--Restricted Rights (June 1987). Oracle USA,
Inc., 500 Oracle Parkway, Redwood City, CA 94065.
The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently
dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup,
redundancy and other measures to ensure the safe use of such applications if the Programs are used for
such purposes, and we disclaim liability for any damages caused by such use of the Programs.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be
trademarks of their respective owners.
The Programs may provide links to Web sites and access to content, products, and services from third
parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites.
You bear all risks associated with the use of such content. If you choose to purchase any products or
services from a third party, the relationship is directly between you and the third party. Oracle is not
responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of
the agreement with the third party, including delivery of products or services and warranty obligations
related to purchased products or services. Oracle is not responsible for any loss or damage of any sort
that you may incur from dealing with any third party.
For Oracle internal distribution only
Contents
Index
Table 1. New Product Features in Integration Platform Technologies: Siebel Enterprise Application
Integration, Version 8.1
Topic Description
Integration Component Keys on Removed the Foreign Key and Target Key integration
page 29 component key types, which are not used in version 8.1.
User Keys on page 30 Use the Force Case property only if you require case-
insensitive matching for performance reasons. The routine
use of the Force Case property is not recommended.
Testing Integration Objects on The Import Account (File) and Export Account (File) sample
page 45 workflows no longer exist in Siebel Tools. Replaced them with
a new example.
Deploying Integration Objects to New topic. Integration objects can be deployed from Siebel
the Run-Time Database on page 46 Tools into the Siebel run-time database and modified in the
run-time environment.
Generating Integration Object The Generate XML Schema wizard can generate simple types
Schemas on page 59 for all string elements in the integration object schema.
Picklist Validation on page 61 Clarified what can happen when setting the integration
component field user property PICKLIST to N.
Table 1. New Product Features in Integration Platform Technologies: Siebel Enterprise Application
Integration, Version 8.1
Topic Description
Property Sets on page 67 It is recommended that business services treat their input
property sets as constants.
Deploying Business Services as New topic. Business services can be deployed from Siebel
Web Services on page 72 Tools as Web services. The Web services can then be
consumed by other applications.
Importing Business Services into New topic. Business services can be imported into the Siebel
the Siebel Application on page 73 run-time database as XML files and modified in the run-time
environment.
Supported Web Services Added Web Services Security (WS-Security) to the list.
Standards on page 80
Invoking Siebel Web Services Added a note that in version 8.1, you can deploy business
Using an External System on services and workflow processes as Web services and
page 83 generate WSDL files directly from Siebel Tools.
Publishing Inbound Web Services Added Oracle JDeveloper to the list of applications that you
on page 83 can use to import the Web Services Description Language
(WSDL) file into the external application.
Deployment is optional.
Configuring the Siebel Application Removed the procedure for creating the SecureWebService
to Use the WS-Security profile (named subsystem) because this profile already exists
Specification on page 99 in version 8.0.
About Siebel Authentication and Added ServerDetermine to the table of valid session types.
Session Management SOAP
Added a note not to use Siebel Session Management and
Headers on page 102
Authentication SOAP headers in conjunction with WS-
Security SOAP headers.
About Passing Localization New topic. External applications can pass localization
Information in SOAP Headers on parameters to the Siebel Server using Web services.
page 109 Subsequent data for that user session will be returned to the
user in localized form.
About EAI File Streaming Removed topic. Siebel Business Applications, version 8.x, do
not support streaming of EAI requests and responses.
Table 1. New Product Features in Integration Platform Technologies: Siebel Enterprise Application
Integration, Version 8.1
Topic Description
Enabling Web Services Tracing on Enable Business Service Argument Tracing is an advanced
page 113 component parameter. You must click Advanced in the
Component Parameters list in the Administration - Server
Configuration > Servers view to see it.
About the EAI Siebel Adapter Added a note that when called locally, the EAI Siebel Adapter
Business Service on page 117 business service creates an additional database connection.
EAI Siebel Adapter Business Added the ExecutionMode business service method argument
Service Method Arguments on for the Query and QueryPage methods. Setting
page 142 ExecutionMode to ForwardOnly can be useful for integrations
with large record sets.
Search Specification on page 163 Added the following to the list of supported operators for the
searchspec attribute of the QueryPage method of the EAI UI
Data Adapter business service:
Execute Method on page 173 Added a caution that if an operation is not specified for this
method, an implicit Synchronize operation will be performed,
deleting all unmatched child integration component
instances.
EAI UI Data Adapter Business Added the ExecutionMode business service method argument
Service Method Arguments on for the QueryPage method. Setting ExecutionMode to
page 175 ForwardOnly can be useful for integrations with large record
sets.
Exposing Siebel Data to External New topic. The Data Access Service wizard can be used to
Applications on page 176 make Siebel data available to external applications as Web
services.
Using VBCs for Your Business You can drill down from a virtual business component (VBC)
Requirements on page 180 to a standard business component, another VBC, or the same
VBC.
Inbound Workflow Process The data type for the MimeMsg process property and the
Example on page 224 MIME Message input argument is Binary.
Table 1. New Product Features in Integration Platform Technologies: Siebel Enterprise Application
Integration, Version 8.1
Topic Description
About Data Type Mappings for The MS SQL Server data type bit is mapped to the Siebel data
Importing Table Definitions on type Numeric with a value of 0 or 1.
page 235
The Character Large Object (CLOB) data type is supported in
version 8.0 and higher. Added the CLOB data type to the list
of supported data types for mapping in the DB2 and Oracle
databases, and removed it from the list of unsupported data
types.
Configuring the Data Source The database SQL type profile parameter is named
Definition on page 241 DSSQLStyle.
2 Integration Objects
This chapter describes the structure of Siebel integration objects. It describes the Integration Object
Builder wizard, which assists you in building your own integration objects based on Siebel objects.
About the Difference Between Integration Objects and Integration Object Instances on page 16
Term Description
Component A constituent part of any generic object.
Field A generic reference to a data structure that can contain one data element.
Integration object An integration object of any type, including the Siebel integration object,
the SAP BAPI integration object, and the SAP IDOC integration objects.
Integration object Actual data, usually the result of a query or other operation, which is
instance passed from one business service to another, that is structurally modeled
on a Siebel integration object.
Term Description
Metadata Data that describes data. For example, the term data type describes data
elements such as char, int, Boolean, time, date, and float.
Siebel business A Siebel object type that defines a logical representation of columns in one
component or more database tables. A business component collects columns from the
business components base table, its extension tables, and its joined tables
into a single structure. Business components provide a layer of abstraction
over tables. Applets in Siebel applications reference business components;
they do not directly reference the underlying tables.
Siebel business object A Siebel object type that creates a logical business model using links to tie
together a set of interrelated business components. The links provide the
one-to-many relationships that govern how the business components
interrelate in this business object.
Siebel integration An object stored in the Siebel repository that represents a Siebel business
object object.
Siebel integration A data structure that can contain one data element in a Siebel integration
component field component.
NOTE: For more information, see Business Processes and Rules: Siebel Enterprise Application
Integration.
The typical integration project involves transporting data from one application to another. For
example, you may want to synchronize data from a back-office system with the data in your Siebel
application. You may want to generate a quote in the Siebel application and perform a query against
your Enterprise Resource Planning (ERP) system transparently. In the context of Siebel EAI, data is
transported in the form of an integration message. A message, in this context, typically consists of
header data that identifies the message type and structure, and a body that contains one or more
instances of datafor example, orders, accounts, or employee records.
Are there data items in the originating data source that should not be replicated in the receiving
data source, or that should replace existing data in the receiving data source?
This guide can help you understand how Siebel EAI represents the Siebel business object structure.
It also provides descriptions of how Siebel EAI represents external SAP R/3 structures.
NOTE: XML converters can work with any of the base object types.
SAP BAPI Input Used to represent the input structure of an SAP RFC or BAPI function call.
For information, see Siebel Connector for SAP R/3.
SAP BAPI Output Used to represent the output structure of an SAP RFC or BAPI function call.
For information, see Siebel Connector for SAP R/3.
SAP IDOC Used with the IDOC Adapter and Receiver in version 6.x and 7.0. For
information, see Siebel Connector for SAP R/3.
SAP IDOC Adapter Used to represent an SAP IDOC structure. For information, see Siebel
Connector for SAP R/3.
SQL Used for manually creating integration objects. Only the EAI SQL Adapter
accepts integration objects of this type.
SQL Database Wizard Used by the Database Wizard for the integration object it creates. Only the
EAI SQL Adapter accepts integration objects of this type.
SQL Oracle Wizard Used by the Oracle Wizard for the integration object it creates. Only the
EAI SQL Adapter accepts integration objects of this type.
Siebel Business Used by the Integration Object Builder wizard for the integration object it
Object creates. The EAI Siebel Adapter accepts only the integration object of this
type.
Table Obsolete.
XML Used to represent external XML Schema such as DTD or XSD. For
information on DTD and XSD, see XML Reference: Siebel Enterprise
Application Integration.
An integration object, in the context of Siebel EAI, is metadata; that is, it is a generalized
representation or model of a particular set of data. It is a schema of a particular entity.
An integration object instance is actual data organized in the format or structure of the integration
object. Figure 1 illustrates a simple example of an integration object and an integration object
instance, using partial data.
Any discussion of integration objects in this book will include clarifying terms to help make the
distinction, for example, metadata or Siebel instance.
One that creates integration objects for internal use by the Siebel application
Others that create integration objects for external systems based on Siebel objects
Figure 2 shows the logic of the Integration Object Builder and Generate XML Schema wizards. The
Code Generator wizard (not shown) works in the same manner as the Generate XML Schema wizard,
but it generates Java classes.
Integration Object Builder wizard. This wizard lets you create a new object. It supplies the
functionality for creating integration objects from Siebel business objects or integration objects,
based on the representations of external business objects using XML Schema Definition (XSD)
or Document Type Definition (DTD). Access this wizard from the New Object Wizards dialog box
in Siebel Tools. After selecting the EAI tab, double-click Integration Object to start the
Integration Object Builder wizard.
Generate XML Schema wizard. This wizard lets you choose an integration object and output
XML schema in XML Schema Definition (XSD) standard, Document Type Definition (DTD), or
Microsofts XDR (XML Data Reduced) format. In the Integration Objects list in Siebel Tools, select
an integration object. Then click Generate Schema to start the Generate XML Schema wizard.
Code Generator wizard. The third wizard lets you create a set of Java class files based on any
available integration object or Siebel business service. In the Integration Objects list in Siebel
Tools, select an integration object. Then click Generate Code to start the Code Generator wizard.
NOTE: Specific instructions on how to use these wizards appear throughout the Siebel Enterprise
Application Integration documentation set where appropriate.
Chapter 3, Creating and Maintaining Integration Objects describes how to create integration objects.
The initial process of using the Integration Object Builder wizard is essentially the same for every
integration object type currently supported.
CAUTION: Avoid using or modifying integration objects in the EAI Design project. Using or
modifying any objects in the EAI Design project can cause unpredictable results.
Siebel business objects conform to a particular structure in memory, although it is generally not
necessary to consider this structure when working with Siebel applications. However, when you are
planning and designing an integration project, it is helpful to understand how a Siebel EAI integration
object represents that internal structure.
An integration object consists of one Parent Integration Component, sometimes referred to as the
root component, or the primary integration component. The Parent Integration Component
corresponds to the primary business component of the business object you chose as the model for
your integration object.
For example, assume you chose the Account business object (on the first panel of the Integration
Object Builder wizard) to base your integration object myAccount_01 on. The Account business
object in Siebel Tools has an Account business component as its primary business component. In the
myAccount_01 integration object, every child component will be represented as either a direct or
indirect child of the primary business component named Account.
Each child component can have one or more child components. In Siebel Tools, if you look at the
integration components for an integration object you have created, you see that each component
can have one or more fields. Figure 3 on page 19 illustrates a partial view of a Siebel integration
object based on the Account business object, with the Business Address component and the Contact
component activated.
Figure 3 represents part of the structure of the Account integration object. The Account parent
integration component can have both fields and child integration components. Each integration
component can also have child integration components and fields. A structure of this sort represents
the metadata of an Account integration object. You can choose to inactivate components and fields.
By inactivating components and fields, you can define the structure of the integration object
instances entering or leaving the system.
For example, the Contact business object is partly made up of the Contact and Opportunity business
components. The association between these two business components is represented by the
Contact/Opportunity link with a value or a table name in the Inter Table column. The Integration
Object Builder wizard creates a new integration component for the integration object, based on the
Contact business object that represents the association. As shown in Figure 4, the Opportunity
integration component has one user property defined: Association user property, set to a value of Y.
An integration object instance most often has multiple integration component instances. For
example, an Account can have multiple Business Addresses but only one of these addresses is
marked as the primary address. A business requirement may require that only the integration
component instance that corresponds to the primary MVG be part of the integration object instance.
In relation to Account and Business Addresses this means that only the primary address should be
part of the Account integration object instance. The primary address can be obtained by one of the
following steps:
Creating a new MVG on the Account business component that uses a link with a search
specification only returning the primary address record.
Exposing the primary address information on the Account business component level using a join
that has the primary ID as source field. Note that in this case the primary address information
corresponds to fields on the Account integration component instance and not the fields on a
separate Address component instance.
In Siebel Tools, if a Siebel business component contains an MVG, the MVG is represented in several
screens as illustrated in the following sections.
The more table-like representation in Figure 8 shows how the Business Address multivalue link
connects the two business components. The child points to the Business Address business
component, which contains the multiple fields that make up the MVG.
The first integration component represents the parent business component. In the example, this
is the Account business component. This integration component contains only the fields that are
defined in the parent business component, but which are not based on MVGs. The Multivalue Link
property and the Multivalue property are empty for these fields.
The second integration component represents the MVG business component. In the example, this
is the Business Address business component. The second integration component has one
integration field for each field based on the given MVG in the parent business component. An
integration component user property will be set on this integration component to tell the EAI
Siebel Adapter that it is based on an MVG business component. If the MVG is a regular MVG, the
user property is named MVG. If the MVG is an Association MVG, then the user property is named
MVGAssociation. In both cases, the value of the user property is Y.
Figure 9 shows an integration component based on an MVG and its user property value in Siebel
Tools.
The EAI Siebel Adapter business service needs to know the names of the MVG fields as they are
defined in the parent business componentin this example, Accountand also the names of the MVG
fields as they are known in the business component that represents the MVGin this example,
Account Business Address. As shown in Figure 10, the integration component fields represent the
MVG.
To represent both names, each field is assigned an integration component field user property that
contains the entry MVGFieldName or AssocFieldName if the user property is MVGAssoc. Its value is
the name of the field shown in the parent business componentin this example, Business Address.
If the EAI Siebel Adapter validates the integration component field, and if the pickmap for the picklist
contains more than one field, when designing the integration object, you must decide the following:
Which fields to simply update if input values are different from those in the picklist (provided that
the picklist allows updates).
If the PicklistUserKeys user property on the integration component field that is mapped to the field
with the picklist (in the example above: Account) is not defined, then any integration component
fields that are mapped to columns in the U1 index of business component's base table, and are
present in the pickmap will be used by the EAI Siebel Adapter to find the matching record in the
picklist. (In the example above, this would be Account and Account Location.)
In cases where the default user key for the picklist does not satisfy your business requirements (for
example, Account Integration Id should be solely used instead of the default user key to pick an
Account), or you want to make the user key explicit for performance reasons, then use the
PicklistUserKeys user property.
The value of the PicklistUserKeys user property is a comma separated list of integration component
fields that are used to find the matching record in the picklist (for example, 'Account, Account
Location' or 'Account Integration Id').
In order for the EAI Siebel Adapter to use the fields referenced in PicklistUserKeys user property, the
fields must be included in the pickmap of the underlying business component field. Please note that
if the business component field names and integration component field names, listed in the
PicklistUserKeys property, are not the same, then the picklist must contain external names of the
fields listed in the PicklistUserKeys user property.
If there is a field present in the business component and in the pickmap, and it is stored in the base
table, then the EAI Siebel Adapter can use the picklist to populate this field, only if this field is
present and active in the integration component. This field must also be present and empty in the
input property set.
NOTE: Calculated fields are those integration component fields that have the Calculated flag checked
on the corresponding business component field.
NOTE: If the inner join has a join specification that is based on a required field, then the wizard does
not inactivate the fields that are using that particular join.
For example, assume that Account business component has an inner join to the S_PROJ table, with
Project Id field being the source field in the join specification, and the Project Name field being based
on that join.
If an integration component, with an active Project Name field is mapped to the Account business
component, then when this integration component is queried only accounts with Project Id field
populated will be considered.
Because Project Id is not a required field in the Account business component, not every account in
the Siebel Database is associated with a project. So, having Project Name active in the integration
component limits the scope of the integration component to only accounts associated with a project.
This typically is not desirable, so the wizard inactivates the Project Name field in this example.
If the business requirement is to include the Project Name field, but not to limit the integration
components scope to only accounts with the project, then you can change the join to S_PROJ in the
Account business component to an outer join. For information on joins, see Using Siebel Tools.
NOTE: Activating an inner join can cause a query on that integration component not to find existing
rows.
The user properties NoQuery and NoSynchronize are defined on integration components to specify
to the EAI Siebel Adapter if a corresponding operation is to be performed on an instance of that type.
These properties take values Y or N.
The user property AdminMode set to Y indicates that the update of the corresponding business
component is to be performed in admin mode. You can define this property in either the integration
object or integration component definitions.
The EAI Siebel Adapter automatically takes into account the dependencies of the fields set by a
PickList on the fields used as constraints in that PickList. For example, if a PickList on field A also
sets field B, and is constrained by field C, then this implies dependencies of both A and B on C. As a
consequence, the EAI Siebel Adapter sets field C before fields A and B.
Repository Objects
For the EAI Siebel Adapter to deal with repository objects, a user property REPOBJ must be defined
on the root integration component. If this property is set to Y, the EAI Siebel Adapter sets a context
on the repository so that the rest of the operations are performed in that context.
Hierarchy Parent Key. See Using the Hierarchy Parent Key on page 35.
Hierarchy Root Key. See Using the Hierarchy Root Key on page 35.
Modification Key. See Configuring the EAI Siebel Adapter Business Service for Concurrency
Control on page 152.
NOTE: There should be just one integration component key for every type of key except the user
key. For example, if there are two Hierarchy Parent Keys defined for an integration component, the
EAI Siebel Adapter picks the first one and ignores the second one.
User Keys
User key is a group of fields whose values must uniquely identify a Siebel business component
record. During inbound integration, user keys are used to determine whether the incoming data
updates an existing record or inserts a new one. The Integration Object Builder wizard automatically
creates some user keys based on characteristics discussed in User Key Generation Algorithm on
page 31. Make sure that the generated user keys match your business requirements; otherwise,
inactivate them or add new user keys as appropriate.
Integration component keys are built by the Integration Object Builder wizard, based on values in
the underlying table of the business component that the integration component is based on.
Integration objects that represent Siebel business objects, and that are used in insert, update,
synchronize, or execute operations, must have at least one user key defined for each integration
component.
In Siebel Tools, user keys are defined as Integration Component Key objects, with the Key Type
property set to User Key.
A sequence of integration component user keys is defined on each integration component definition,
each of which contains a set of fields. During processing of integration component instance, the EAI
Siebel Adapter chooses to use the first user key in the sequence that satisfies the condition that all
the fields of that user key are present in an integration component instance. The first instance of
each integration component type determines the user key used by all instances of that type.
For example, consider the Account integration object instance with only Account Name and Account
Integration Id field present. When the EAI Siebel Adapter performs validation, it first checks the
Account Name and Account Location field (the first user key for the Account integration component).
In this example, because the Account Location field is missing, the EAI Siebel Adapter moves to the
second user keyAccount Integration Id. The Account Integration Id field is present in the
integration component instance and has a value, so the EAI Siebel Adapter uses that as the user key
to match the record. Now if the same instance also had Account Location field present, but set to
null, then the EAI Siebel Adapter picks the Account Name and Account Location combination as the
user key. This is because Account Location is not a required field.
A new user key is picked for each integration object instance (root component instance). However,
for the child component instances, the user key is picked based on the first child instance, and then
used for matching all instances of that integration component within the parent integration
component instance.
For example, if a Siebel Message contains two orders, then the user key for order items is picked
twice, once for each order. Each time, the user key is selected based on the first order item record
and then used for all the siblings.
NOTE: The EAI Siebel Adapter uses user keys to match integration component instances with
business component records. Because the match is case sensitive there is a chance that records are
not matched if the cases of the user key fields do not match. You can use the Force Case property
on the business component field to make sure that user key fields are always stored in one case, but
only if you require case-insensitive matching for performance reasons. Routine use of the Force Case
property is not recommended.
To understand how the Integration Object Builder wizard determines valid integration component
keys, you can simulate the process of validating the user keys. For example, determine the table on
which your business component is based. In Siebel Tools, you can look up this information yourself.
The Tables list appears, displaying the table associated with the business component (for
example S_CONTACT).
4 Expand the Tables object in the Object Explorer, and then select User Key.
The User Keys list displays the user keys defined for that table.
For example, as shown in Figure 11, the table S_CONTACT has several user keys.
Not every user key will necessarily be valid for a given business component. Multiple business
components can map to the same underlying table; therefore, it is possible that a tables user key
is not valid for a particular business component, but is specific to another business component
Each User Key Column child object defined for a given user key must be exposed to the business
component in which you are interested. For example, Figure 12 shows three user key columns for
the user key S_CONTACT_U1.
Figure 12. User Key Columns for the S_CONTACT_U1 User Key
If the columns of the user key are exposed in the business component, and those columns are not
foreign keys, the Integration Object Builder wizard creates an integration component key based on
the tables user key. The Integration Object Builder wizard also defines one integration component
key field corresponding to each of the tables user key columns.
The Integration Object Builder wizard builds the integration component keys based on these table
user keys. As illustrated in Figure 13, the wizard defines one integration component key for each
table user key column.
Figure 13. Integration Component Keys for Each Table User Key Column
Each valid integration component key contains fields. For example, as shown in Figure 14, for the
Contact integration component, User Key 3 is made up of five fields: CSN, First Name, Last Name,
Middle Name, and Personal Contact.
CAUTION: Only modify user keys if you have a good understanding of the business component and
integration logic.
When the Integration Object Builder wizard creates these integration component keys, it attempts
to use the appropriate table user keys the user keys that help to uniquely identify a given record.
In some cases, you may find that certain integration component keys created by the Integration
Object Builder wizard are not useful for your particular needs. In that case, you can manually
inactivate the keys you do not want to use by checking the Inactive flag on that particular user key
in Siebel Tools. You can also inactivate user key fields within a given user key.
NOTE: For ease of maintenance and upgrade, inactivate unnecessary generated user keys and user
key fields instead of deleting them.
Status Keys
In the context of Siebel business objects, user keys are a group of fields whose values must uniquely
identify only one Siebel business component record. Integration components within a corresponding
integration object also contain user keys.
For many integrations, you want to know the status. For example, if you are sending an order request
you want to know the ID of the Order created so that you can query on the order in the future. You
can set the Status Object of the EAI Siebel Adapter to True to return an integration object instance
as a status object.
The status returned is defined in the Integration Component using Status Keys. A Status Key is an
Integration Component key of the type Status Key. Fields defined as part of the Status Key are
included in the returned Status Object. If a Status Key is not defined for the Integration Component
then neither the component nor any of its children are included in the returned object:
To include descendants of an Integration Component without including any of its fields in the
returned status object, specify an empty Status Key.
To include information about which one of the update, insert, or delete operations was performed
during an upsert request or synchronize request, include a field named Operation in the Status
Key.
For example, when you insert quotes, each quote item in turn can have more quote items. In this
case, the first quote item inserted by the EAI Siebel Adapter has the Parent Id set to blank, but for
each child quote item, the EAI Siebel Adapter checks the keys to figure out which fields are to be
set. If the Hierarchy Parent Key is not defined, then the child quote item is inserted as a new quote
item without a link to its parent (denormalized).
NOTE: When the business component is hierarchy enabled, then the wizard automatically sets the
Hierarchy Parent Key for the complex integration component. To have a business component
hierarchy enabled you must set the property Hierarchy Parent Field.
Table 4 illustrates which permissions influence which operation type on an integration component.
Business Component
(Overridden by AdminMode)
NOTE: The transaction is rolled back if any of the permissions (excluding field-level permissions) are
denied.
Restricted access to a static set of integration objects. You can configure the EAI Siebel
Adapter business service, or any business service that is based on the
CSEEAISiebelAdapterService class, to restrict access to a static set of integration objects. To do
this, set a business service user property called AllowedIntObjects, which contains a comma-
separated list of integration object names that this configuration of the EAI Siebel Adapter can
use. This allows you to minimize the number of integration objects your users need to expose
outside of Siebel applications through HTTP inbound or MQSeries Receiver server components. If
this user property is not specified, the EAI Siebel Adapter uses any integration objects defined
in the current Siebel Repository.
ViewMode. You can specify the visibility mode of business components that the EAI Siebel
Adapter uses. This mode is specified as the integration object user property ViewMode. This user
property can take different values, as defined by LOV type REPOSITORY_BC_VIEWMODE_TYPE.
This chapter describes how to use the Integration Object Builder wizard in Siebel Tools to create new
Siebel integration objects. This wizard guides you through the process of selecting objects (either
from the Siebel repository or from an external system) on which you can base your new Siebel
integration object. This chapter also describes how to fine-tune and refine the integration object you
have created.
Creating Integration Objects Using the EAI Siebel Wizard Business Service on page 40
Resolving Synchronization Conflicts for Integration Objects and User Properties on page 54
NOTE: The Integration Object Builder provides a partial rendering of your data in the integration
object format. You must review the integration object definition and complete the definition of your
requirements. In particular, confirm that the user key definitions are defined properly. You may need
to enter keys and user properties manually or inactivate unused keys and fields in Siebel Tools. Do
not expect to use the integration object without modification.
Creating Integration Objects Using the EAI Siebel Wizard Business Service on page 40
The wizard also returns a list of the available components contained within the object you have
chosen, shown in Figure 15. When you select certain components in the wizard, you are activating
those components in your integration object. Your integration object contains the entire structural
definition of the business object you selected in the first wizard dialog box. Only the components you
checked, or left selected, are active within your integration object. That means any instances you
retrieve of that integration object contains only data represented by the selected components.
After the wizard creates your integration object, you can edit the object in Siebel Tools, as shown in
Figure 16. You might choose to drill down into the integration components and activate or inactivate
particular components or even particular fields within one or more components.
NOTE: Always inactivate the fields rather than delete them. When you execute the synchronization
task, using the Integration Object Synchronize wizard in Siebel Tools, inactivated fields remain
inactive, while the deleted fields are created as active fields in the integration object.
You can also use the wizard to deploy integration objects to the run-time database.
NOTE: If you deploy integration objects while the Siebel Server is running, you must subsequently
clear the Web services cache in the Administration - Web Services > Inbound (or Outbound) Web
Services view.
2 Choose File > New Object... to display the New Object Wizards dialog box.
5 Click Next.
a Select the source object. This is the object model for the new Siebel integration object. Only
business objects with Primary Business Components appear on this picklist.
b Type a unique name in the field for the new Siebel integration object and click Next.
NOTE: The name of an integration object must be unique among other integration objects.
There will be an error if the name already exists.
The next page of the wizard, the Integration Object Builder - Choose Integration Components
page, displays the available components of the object you chose.
6 Deselect the components you want the wizard to ignore. This means you cannot integrate data
for that component between the Siebel application and another system.
NOTE: Any component that has a plus sign (+) next to it is a parent in a parent-child relationship
with one or more child components. If you deselect the parent component, the children below
that component are deselected as well. You cannot include a child component without also
including the parent. The Integration Object Builder enforces this rule by automatically selecting
the parent of any child you choose to include.
For example, assume you have chosen to build your Siebel integration object on the Siebel
Account business object, and you want to create an integration component based on the Account
and Contact business components:
a Deselect the Account integration component at the top of the scrolling list. This action deselects
the entire tree below Account.
b Select the Contact component. When selecting a child component, its parent component is also
selected, but none of the components below the child component are selected. You must
individually select the ones you want.
7 From the Container Naming Convention drop-down menu, choose either List Of Prefix or
Suffix s.
This allows flexibility when generating XML Schema Definition (XSD) files from integration
objects. For example, rather than generating container elements such as xsd:ListOfContact, you
can choose to have elements generated called xsd:Contacts.
8 Select the Lower CamelCase for XML Tags checkbox to use this convention for naming XML tags.
CamelCase is a naming convention in which a name is formed of multiple words that are joined
together as a single word, with the first letter of each of the multiple words capitalized so that
each word that makes up the name can easily be read. The name derives from the hump or
humps that seem to appear in any Camel Case name. In Lower CamelCase, the first letter of the
name is lowercase, for example myNewIntegrationObject.
9 Click Next. The next page displays error or warning messages generated during the process.
Review the messages, and take the appropriate actions to address them.
10 (Optional) Select the Deploy the Integration Object checkbox to deploy the integration object to
the run-time database.
For more information, see Deploying Integration Objects to the Run-Time Database on page 46.
11 Click Finish.
Your new Siebel integration object appears in the list of integration objects in Siebel Tools.
On the Integration Components screen, the Account integration component is the only
component that has a blank field in the Parent Integration Component column. The blank field
identifies Account as the root component. The Siebel integration object also contains the other
components selected, such as Contact and its child components.
NOTE: When you create your integration object based on a Siebel business object, do not change
its integration components External Name Context; otherwise, the synchronization process will
not recognize the integration component, and will remove it from the integration object.
12 To view the fields that make up each integration component, select a component from the
integration component list in Siebel Tools.
The Integration Component Fields list displays the list of fields for that component. Note the
system fields Conflict Id, Created, Id, Mod Id, Updated, operation, and searchspec in the list.
This setting prevents the EAI Siebel Adapter Query and QueryPage method from outputting these
fields. For more details, see About Using Language-Independent Code with the EAI Siebel Adapter
Business Service on page 147.
2 Modify the business object definition to have that particular root business component as the
Primary Business Component.
3 Run the Integration Object Builder wizard and choose the business object you want to use.
4 Undo the changes to the business object definition that you made in Step 2.
NOTE: This is necessary because unless you are certain about what you are doing in terms of
changing the Primary Business Component of the business object, it is recommended that you
roll back the changes so that they do not affect any business logic.
2 Choose File > New Object to display the New Object Wizards dialog box.
3 Select the EAI tab, and then double-click the Integration Object icon.
5 Click Next and in the second page of the Integration Object Builder wizard:
a Select the source object Contact to be the base for the new Siebel integration object.
b Type a unique name in the field for the new Siebel integration object, for example Sample
Contact M:M, and then click Next.
c Select the source root for the new integration object from the list.
NOTE: There is also a component named Contact_Opportunity in the list. This component is an
MVGAssociation component, and you pick it only if you need this integration object to set the
primary opportunity for contact. For information on multivalue groups, see About Multivalue
Groups in the EAI Siebel Adapter Business Service on page 145.
7 Inactivate all integration component fields in the Contact integration component except First
Name, Last Name, Login Name, and Comment. (In this example, these are the only fields you
need for Contact.)
8 Inactivate all integration component fields in the Opportunity integration component except
Account, Account Location, Budget Amt, Name, and Description. (In this example, these are the
only fields you need for Opportunity.)
In Siebel Tools, inactivate the fields that do not apply to your business requirements.
If necessary, activate the fields that have been inactivated by the Siebel Wizard. For information,
see Chapter 2, Integration Objects.
Add the fields that have not been included by the Siebel Wizard. For information on the
implications of activating such fields, see Calculated Fields and Integration Objects on page 27
and Inner Joins and Integration Components on page 28.
Validate the user keys. For information, see Chapter 2, Integration Objects.
Update the user properties for your integration object to reflect your business requirements. For
information, see Resolving Synchronization Conflicts for Integration Objects and User Properties
on page 54.
NOTE: After validation, the integration objects you create in Siebel Tools must be compiled into the
SRF file.
For information on creating, modifying, and simulating workflow processes, see Siebel Business
Process Framework: Workflow Guide.
2 Create a new workflow process invoking the EAI Siebel Adapter business service against the new
integration object.
For example, create a workflow process to query with the new integration object and write the
output message to an XML file, as in the following:
This saves time by allowing you to modify integration object definitions without having to shut down
your production environment, edit integration objects in Siebel Tools, and recompile the SRF.
In version 8.1, integration objects are read first from the cache and then from the repository. A list
of deployed integration objects is maintained in the repository so that performance is not slowed by
rereading these integration objects.
2 Right-click the integration object to deploy, and then choose Deploy to Runtime Database.
3 In the Siebel client, navigate to Administration- Web Services > Inbound (or Outbound) Web
Services.
Deployed integration objects are shown in the Administration - Web Services > Deployed Integration
Objects view in the Siebel client.
3 In the Siebel client, navigate to Administration- Web Services > Inbound (or Outbound) Web
Services.
A field removed
To help simplify the synchronization task, Siebel EAI provides the Integration Object Synchronize
wizard. Although the process of synchronizing your integration object with its underlying business
object is straightforward, review the integration objects you have modified to make sure that you
have not inadvertently altered them by performing a synchronization. After synchronization, validate
your integration object.
Synchronization Rules
During the synchronization process, the wizard follows particular update rules. Consider a simple
example involving the Siebel Account integration object with only Contact and its child components
marked as active in the object. Figure 17 helps you to visualize this example.
Because the Account component is the parent of Contact, it is also selected, even though you cannot
see it in Figure 17.
Figure 18 illustrates how the Synchronization wizard takes into account any changes.
Figure 19 shows how the resulting integration object is structured after the synchronization.
The integration object now contains two new components, Business Address and Opportunity. Other
components are updated with the definitions of the corresponding components in the business
object.
In Figure 20 on page 51, the Contact_Personal Address in the existing Account integration object is
unchecked in the Synchronization wizard tree. This is represented by an X in this figure.
The component Contact_Personal Address has been deleted. When you use the updated integration
object, you cannot pass data for that component between a Siebel application and an external
application.
This example shows you how you might cause unexpected results by deselecting components.
However, if you do want to delete a particular component from the integration object, deleting a
component from the integration object method accomplishes that goal.
To make maintenance of integration objects easier, adhere to the following guidelines when creating
or editing your integration objects:
Use a meaningful name for any user key you have added that is different from the generated
user keys. Using meaningful names helps with debugging.
NOTE: The update process overrides the integration object and deletes user keys, user properties,
and so on. You can use the copy of the integration object made by the Synchronization wizard to see
how you have modified the object.
3 Click on the plus sign to list all the related integration components, as shown in the following
figure.
The process of retrieving Siebel integration objects and Siebel business object definitions can
take varying amounts of time, depending on the size of the selected objects.
4 Uncheck the boxes beside the objects and components you do not want to include in the
synchronization of your Siebel integration object. Note that only the objects that are included in
the new integration object are marked.
5 Choose to add new fields as active or inactive and click Next. Inactive is the default.
The process of performing the synchronization can take some time, depending on the complexity
of the selected objects.
The Integration Object Synchronize Summary screen appears, providing feedback from the
synchronization.
Each added field is checked as to whether or not it is required for use with the integration object.
6 Review the summary. If changes are needed, click Back and make the needed changes.
7 If no changes are needed, click Finish to synchronize the Siebel integration object and the Siebel
business object.
The Compare Objects dialog box appears. This tool allows you to move properties and objects
between versions using arrow buttons.
When you synchronize the Siebel integration object and the Siebel business object, the
Synchronization wizard performs update, insert, and delete operations on the existing integration
object definition. The Synchronization wizard selects or deselects components to make the Siebel
integration object look like the definition of the Siebel business object you chose.
The wizard generally updates the Siebel integration object either by updating the object and its
components or by updating some components and deleting others. For information, see
Updating the Entire Integration Object on page 48 and Deleting a Component from the
Integration Object on page 50.
8 Copy custom properties and custom user keys as needed. The wizard includes any new fields
added to the business object in your integration object for the new version of your Siebel
application. All these fields are set to active.
9 Inactivate any new fields that you do not need in a component of your updated integration object.
10 Right-click on your integration object, and select the Validate option to validate your integration
object.
NOTE: If you want to synchronize any of the external integration objects, follow this general
procedure to perform a synchronization operation.
Table 5 illustrates the behavior of the merging logic for each of the integration object parts that have
to be synchronized.
XML Properties Preserve the current integration object values to keep XML
compatible. Add new components/fields properties avoiding
conflict with existing XML.
External Sequence on components Preserve the component or field sequence within the parent
or fields component. Set the sequence on new components or fields
higher than the existing ones.
New Keys:
User Properties Preserve valid cases, remove invalid ones, and generate
warnings.
Table 6 shows the logic that will be used when synchronizing user properties.
Level
Values (Object,
(Default is Component,
User Property Name in italics) or Field) Merging Rules
Level
Values (Object,
(Default is Component,
User Property Name in italics) or Field) Merging Rules
Level
Values (Object,
(Default is Component,
User Property Name in italics) or Field) Merging Rules
4 Choose an envelope type to use in the schema, either none or Siebel Message Envelope.
5 Choose a location where you want to save the resulting schema file.
6 (Optional) Select the Include length information for String type checkbox to generate simple
types for all string elements in the integration object schema.
7 Click Finish.
The wizard generates the selected type of schema for the integration object. Use this to help you
map external data directly to the integration object. The schema serves as the definition for the XML
elements you can create using an external application or XML editing tool.
Force-Active Fields
Reexamine any fields in the underlying business component that have the force-active specification.
Such fields are processed during the integration even if they are not included in the integration
component. You might want to consider removing the force-active specification from such fields,
unless you absolutely need them.
Picklist Validation
Siebel applications have two classes of picklistsstatic picklists based on lists of values and dynamic
picklists based on joins.
Setting the property PICKLIST to Y in the integration object field directs the EAI Siebel Adapter to
validate that all operations conform to the picklist specified in the field. For dynamic picklists, this
setting is essential to make sure the joins are resolved properly. However, for unbounded static
picklists, this validation may be unnecessary and can be turned off by setting the PICKLIST property
to N. Even for bounded static picklists, you can turn off validation in the adapter, because the Object
Manager can perform the validation. Turning off the validation at the EAI Siebel Adapter level means
that picklist-related warnings and debugging messages do not show up along with other EAI Siebel
Adapter messages. This also means that bounded picklist errors will not be ignored, even if Ignore
Bounded Picklist is set to Y.
As well as certain warnings and messages not appearing, setting the integration component field user
property PICKLIST to N can also cause fields to be auto-completed. Providing only part of the value
for a particular field causes the field to be auto-filled with the first matching entry in the picklist. This
occurs especially when the picklist is based on a multilingual list of values (MLOV). For example, if
the incoming message contains the string On- and there exists an entry On-Hold, the field will
be set to On-Hold.
If the EAI Siebel Adapter performs the validation (PICKLIST is set to Y), auto-filling of the field does
not occur. In this case, the EAI Siebel Adapter supports only an exact match for the particular field
(in the previous example, the value On- will fail; only On-Hold will pass).
NOTE: Performing the validation of a bounded picklist in the EAI Siebel Adapter is about 10% faster
than performing the validation in the Object Manager.
System Fields
Integration object fields marked as System are not exported during a query operation. This setting
prevents the EAI Siebel Adapter from treating the field as a data field, which means for the Query
and QueryPage method the EAI Siebel Adapter do not write to the field. For the Synchronize and
Update method, the field will not be directly set in the business component unless the ISPrimaryMVG
is set to Y.
If you want to include System fields in the exported message, change the Integration Component
field type to Data.
NOTE: System fields are read-only. If you attempt to send a message with the value set for a System
field, the setting will be ignored and a warning message will be logged.
Familiarize yourself with the business logic in the business components. Integration designers
should use the presentation layer, or the user interface to get a good sense of how the business
component behaves, and what operations are allowed and not allowed.
Design with performance in mind. For more information on performance and using integration
objects, see Optimizing the Performance of Integration Objects on page 60.
Design with maintenance in mind. For more information on maintenance, see Best Practices for
Maintaining Integration Objects on page 52.
Resolve configuration conflicts. During the development of your integration points, you might
encounter issues with the configuration of business components that are configured to support
interactive GUI usage, but do not satisfy your integration requirements.
The following scenarios demonstrate three different situations in which you might encounter such
conflicts and a possible solution for each case:
Scenario 1. Your integration requires explicitly setting a primary child, but the business
component configuration does not allow that, because the related MVLink has Auto Primary
property set to Default.
Solution. Change the Auto Primary property from Default to Selected. This enables the EAI
Siebel Adapter to change the Auto Primary property according to the input request, while making
sure that there is always a primary child selected.
Scenario 2. A business component such as Internal Product is made read-only for regular GUI
usage, but you want your integration process to be able to update the Internal Product business
component.
Solution. Set the AdminMode user property on the integration object to Y. This allows the EAI
Siebel Adapter to use the business component in an administrator mode.
Scenario 3. Similar to scenario 2, a business component such as Internal Product is made read-
only for regular GUI usage, but you want your integration process to be able to update the
Internal Product business component. The only difference in this scenario is that the business
component is used through a link that has NoUpdate property set to Y.
Solution. Because there is a link with NoUpdate property set to Y, setting the AdminMode user
property on the integration object to Y is not going to help. You must create the following
exclusively for integration purposes:
A new link based on the original link with NoUpdate property Set to N.
A copy of the original business object referencing the new link instead of the original. Note
that both links must use the same business component.
NOTE: Customized configurations are not automatically upgraded during the Siebel Repository
upgrade, so use this option as a last resort.
4 Business Services
This chapter outlines the basic concepts of a business service, its structure and purpose, and how
you can customize and create your own business service. This chapter also describes how to test
your business service before it is implemented. The following topics are included:
Business services can simplify the task of moving data and converting data formats between the
Siebel application and external applications. Business services can also be used outside the context
of Siebel EAI to accomplish other types of tasks, such as performing a standard tax calculation, a
shipping rate calculation, or other specialized functions.
The business service can be assessed either directly by way of workflows (business processes) or by
way of a scripting service written in Siebel VB or Siebel eScript.
CAUTION: As with other specialized code such as Business Components, use only the specialized
services that are documented in Siebel documentation. The use of undocumented services is not
supported and can lead to undesired and unpredictable results.
In addition to the prebuilt business services, you can build your own business service and its
functionality in two different ways to suit your business requirements:
In Siebel Tools. Created at design time in Siebel Tools using Siebel VB or Siebel eScript. Design-
time business services are stored in the Siebel repository (.SRF), so you have to compile the
repository before testing them. When your test is completed, compile and disseminate the SRF
to your clients. The business services stored in the repository automatically come over to the
new repository during the upgrade process. General business services are based on the class
CSSService. However, for the purposes of Siebel EAI, you base your data transformation business
services on the CSSEAIDTEScriptService class. For information, see Creating Business Services
in Siebel Tools on page 68.
In Siebel client. Created at run time in the Siebel client using the Business Service
Administration screens. Run-time business services are stored in the Siebel run-time database,
so they can be tested right away. The run-time business services have to be migrated manually
after an upgrade process. For information, see Creating Business Services in the Siebel
Application on page 71.
NOTE: To use the DTE scripts, write your business service in Siebel eScript; otherwise, you can write
them in Siebel VB.
A business service has properties and methods, and maintains a state. Methods take arguments that
can be passed into the object programmatically or, in the case of Siebel EAI, declaratively by way of
workflows.
NOTE: For more information on business service methods and method arguments, see Siebel Object
Interfaces Reference.
Property Sets
Property sets are used internally to represent Siebel EAI data. A property set is a logical memory
structure that is used to pass the data between business services. Figure 22 illustrates the concept
of a property set.
NOTE: In Siebel Tools, a Value argument to a method is shown with the name of <Value>,
including the angle brackets. You can also define a Display Name for the Value argument in Siebel
Tools. This Display Name appears in the Siebel Business Process Designer when you are building
integration workflows. In this guide, the Display Name Message Text is shown when referring to
the Value argument, and the Name <Value> is shown when referring to the Value of the Value
argument.
Properties. A table containing name-value pairs. You can use the properties to represent column
names and data, field names and data, or other types of name-value pairs.
Children. An array of child-level property sets. You can use the array to represent instances of
integration objects. For example, a result set may contain an Account with some set of contact
records from the database. Each contact record is represented as a child property set.
It is recommended that you treat input property sets in business services as constants. If you need
to modify the inputs, make a copy first. Otherwise, there might be interference between business
service scripts and workflow processes that also modify the inputs, leading to unpredictable
application behavior.
For example, when creating the XMLHierarchy property set using a custom business service in a
workflow process, if the input property set is modified without making a copy, the following error
occurs:
NOTE: For more information on property sets and their methods, see Siebel Object Interfaces
Reference.
NOTE: Business services you create in Siebel Tools must be compiled into the Siebel .srf file. If you
intend to run the business services on your Siebel Server, then copy the compiled .srf file to your
SIEBEL_ROOT\Objects\lang_code directory.
NOTE: Each business service must belong to a project, and the project must be locked. For more
information, see Using Siebel Tools.
5 From the pull-down menu in the Project field, pick the project you locked in Step 1.
6 Choose the appropriate class for your business service from the Class picklist:
NOTE: For information on business service methods, see Siebel Object Interfaces Reference.
The Business Service Methods list appears in the Object List Editor. If you have already defined
methods for the selected business service, they appear in the Business Services Methods list.
3 Type the name of the method in the Name field of the new method.
The Business Service Methods Args list appears in the Object List Editor.
3 Type the name of the argument in the Name field of the new method argument record.
NOTE: If you plan to use this business service in a Siebel Business Application, specify the
Display Name as well.
5 Check the Optional check box if you do not want the argument to be required for the method.
6 Choose a Type for the argument. Refer to the following table for a list of different types and their
descriptions.
Argument Description
3 Select either Siebel eScript or Visual Basic for your scripting language.
NOTE: To write any Siebel VB script in the Business Services, your deployment platform must
support Siebel VB.
NOTE: Write your business service in Siebel eScript if you want to use the DTE scripts. For
information on scripting, see Using Siebel Tools.
The Business Service User Props list appears in the Object List Editor.
3 Type the name of the user property in the Name field of the new record.
Cache. If checked then the business service instance remains in existence until the users
session is finished; otherwise, the business service instance will be deleted after it finishes
executing.
3 Define methods for the business service in the Methods list applet:
4 Define method arguments for the methods in the Method Arguments list applet:
Type. The type of the business service method argument. Valid values are Output, Input,
and Input/Output.
6 Write your Siebel eScript or VB code in the Business Service Scripts list applet.
NOTE: To write any Siebel VB script in the Business Services, your deployment platform must
support Siebel VB.
7 Click Check Syntax to check the syntax of the business service script.
To be deployed, a business service must have at least one accessible method that is supported in
Siebel inbound Web services. The business service must include a valid integration object name for
any hierarchical argument.
NOTE: The Hierarchy type is not supported unless a valid integration object name is specified.
For more information on Web services, see Chapter 5, Web Services. For more information on Siebel
Self-Service Applications, see Siebel Self-Service Application Developers Guide.
2 In the Object List Editor, right-click the business service to deploy, and then choose Deploy as
Web Service.
3 Specify the following in the dialog box, and then click Finish:
Business service methods to expose. The operation names for the business service
methods are system generated. To edit an operation name, click it in the list.
URL for the Web service. Replace <webserver> with a valid host name and <lang> with a
valid language code, such as enu.
Generate WSDL checkbox. To generate a Web Services Description Language (WSDL) file,
select the checkbox, and then choose a location to save the WSDL file.
The business service is deployed. Deployed business services are shown in the Administration -
Business Services screen in the Siebel client. Deployed Web services are shown in the Administration
- Web Services > Inbound Web Services view.
You can also remove (undeploy) deployed business services from the Siebel run-time database.
2 Query for the deployed business service, and then select it.
3 Click Delete.
You can import a business service from an external XML file by clicking Import in the Business
Services list in the Object List Editor.
4 Browse for a business service XML file, and then click Import.
NOTE: The contents of the Simulator view are not persistent. To save the data entered in the
applets, click the Save To File button. This will save the data for the active applet in an XML file.
The data can then be loaded into the next session from an XML file by clicking on the Load From
File button.
2 In the Simulator list applet, click New to add the business service you want to test.
4 Enter the number of iterations you want to run the business service:
Specify the input parameters for the Business Service Method in the Input Property Set
applet. Multiple Input Property Sets can be defined and are identified by specifying a Test
Case #.
If the Input Property Set has multiple properties, these can be specified by clicking on the
glyph in the Property Name field. Hierarchical Property Sets can also be defined by clicking
on the glyph in the Child Type field.
The Simulator runs the specified number of iterations and loops through the test cases in order.
If you have defined multiple input arguments, you can choose to run only one argument at a time
by clicking Run On One Input.
NOTE: When the Output arguments are created, you can click Move To Input to test the outputs
as inputs to another method.
psInputs.SetProperty("FileName", "c:\\NewAccount.xml");
psOutputs.SetType "SiebelMessage";
svcReadFile.InvokeMethod("ReadEAIMsg",psInputs, psOutputs);
svcSaveData.InvokeMethod("Upsert",psOutputs,psOutputs2);
The following Siebel VB sample code shows how to call the EAI File Transport business service to read
an XML file. It also shows how to use the XML Converter business service to produce a property set:
TheApplication.RaiseErrorText Cstr(XMLOutputs.GetChildCount)
The CGI script might have extracted the field names and created XML elements from them to
resemble the following XML tags:
The CGI script might then have wrapped each data item inside the XML tags:
<FirstName>Hector</FirstName>
<LastName>Alacon</LastName>
To insert the preceding data into the Siebel Database as a Contact, your script calls a business
service that formats the XML input into a property set structure that the Siebel application
recognizes.
inputs = TheApplication().ReadEAIMsg("webform.xml");
outputs = TheApplication().NewPropertySet();
The following functions could be called from the preceding code. You attach the function to a business
service in Siebel Tools:
NOTE: You cannot pass a business object as an argument to a business service method.
if (MethodName=="GetWebContact")
outputs.SetProperty("First Name",fname);
return(CancelOperation);
return(ContinueOperation);
if (MethodName="GetWebContact")
CanInvoke ="TRUE";
return (CancelOperation);
else
return (ContinueOperation);
5 Web Services
This chapter describes Web services, their uses, and how to create, implement, and publish Siebel
Web services. This chapter also provides examples of how to invoke an external Web service and a
Siebel Web service. The following topics are included:
About Siebel Authentication and Session Management SOAP Headers on page 102
About Web Services and Web Single Sign-On Authentication on page 109
Business services or workflow processes in Siebel Business Applications can be exposed as Web
services to be consumed by an application, such as one of the Siebel Self-Service Applications. Siebel
Web Services framework has an ability to generate WSDL files to describe the Web services hosted
by the Siebel application. Also, the Siebel Web Services framework can call external Web services.
This is accomplished by importing a WSDL document, described as an external Web service, using
the WSDL Import Wizard in Siebel Tools.
To specify the structure of XML used in the body of SOAP messages, Web services use an XML Schema
Definition (XSD) standard. The XSD standard describes an XML document structure in terms of XML
elements and attributes. It also specifies abstract data types, and defines and extends the value
domains.
Users or programs interact with Web services by exchanging XML messages that conform to Simple
Object Access Protocol (SOAP). For Web services support, SOAP provides a standard SOAP envelope,
standard encoding rules that specify mapping of data based on an abstract data type into an XML
instance and back, and conventions for how to make remote procedure calls (RPC) using SOAP
messages.
Web Services Description Language (WSDL) 1.1. For information, see http://www.w3.org/TR/
2001/NOTE-wsdl-20010315.
Web Services Security (WS-Security) based on the clear-text UserName Token mechanism. For
information, see the following:
http://schemas.xmlsoap.org/ws/2002/07/secext
Web Services Interoperability (WS-I) Basic Profile 1.0. For information, see http://www.ws-i.org/
deliverables/workinggroup.aspx?wg=basicprofile.
Simple Object Access Protocol (SOAP) 1.1. For information, see http://www.w3.org/TR/2000/
NOTE-SOAP-20000508.
NOTE: For more details on supported elements and attributes, see XML Reference: Siebel Enterprise
Application Integration.
WS-I is a trademark of the Web Services Interoperability Organization in the United States and other
countries.
RPC-Literal Support
RPC allows the use of transports other than HTTP (for example, MQ and MSMQ), because you do not
have to use the SOAPAction header to specify the operation.
Specification R2717. An RPC-literal binding in a description must have the namespace attribute
specified, the value of which must be an absolute uniformed resource instant (URI), on contained
soapbind:body elements.
Specification R2729. A message described with an RPC-literal binding that is a response message
must have a wrapper element whose name is the corresponding wsdl:operation name suffixed with
the string Response.
Specification R2735. A message described with an RPC-literal binding must place the part
accessory elements for parameters and return value in no namespace.
Specification R2207. A wsdl:message in a description may contain wsdl:parts that use the
elements attribute provided that those wsdl:parts are not referred to by a soapbind:body in an rpc-
literal binding.
2 Select or add a new namespace from the Inbound Web Services list applet following the
instructions in Invoking Siebel Web Services Using an External System on page 83.
3 Create a new inbound service port record in the Service Ports list applet as indicated in Invoking
Siebel Web Services Using an External System on page 83, and in the Binding column select
SOAP_RPC_LITERAL from the drop-down list.
DOC-Literal Support
When a SOAP DOC-literal binding is used, the SOAP envelope (the Body element) will contain the
document WSDL part without any wrapper elements. The SOAP operation is determined by way of a
SOAPAction HTTP header.
NOTE: SOAP:Body is in the instance SOAP message, but soapbind:body is the attribute in the WSDL
document.
Making a Web service a DOC-literal one is the same as described in Making a Web Service an RPC-
Literal Web Service on page 81. When creating the new inbound service port record in the Service
Ports list applet, select SOAP_DOC_LITERAL from the drop-down list in the Binding column.
One-way operations come into play in both inbound and outbound scenarios:
Inbound. If the Business Service Workflow method does not have any output arguments, it is a
one-way operation.
Outbound. If the service proxy method has no output arguments, it is a one-way operation.
Consider using one-way operations when data loss is tolerable. In cases involving one-way
operations, you send a SOAP request and do not receive a SOAP response. The provider receives the
SOAP request and processes it.
NOTE: It is important to note that SOAP faults, if any, are not returned as well.
Specification R2714. For a one-way operation, an instance must not return a HTTP response
that contains a SOAP envelope. Specifically, the HTTP response entity-body must be empty.
Specification R2727. For one-way operations, an instance must not interpret the HTTP
response status code of 200 OK or 202 Accepted to mean the message is valid or that the receiver
would process it.
NOTE: In version 8.1, you can deploy business services and workflow processes as Web services and
generate WSDL files directly from Siebel Tools. For information on deploying business services, see
Deploying Business Services as Web Services on page 72. For information on deploying workflow
processes as Web services, see Siebel Business Process Framework: Workflow Guide.
NOTE: If publishing an ASI as an inbound Web service, make sure that the ASI is enabled for
external use in Siebel Tools.
b Enter the name of the inbound Web service in the Name column.
c Select Active in the Status field to enable external applications to call the Web service.
NOTE: If the Web service is inactive, then the external applications cannot invoke the Web
service without clearing the cache.
a Click New and enter the name of the port in the Name column.
b Pick the type of object published. If the required type is not available, add a new type following
Step c through Step f; otherwise, move to Step g.
c Click New and select the implementation type (Business Service or Workflow Process).
d Select the implementation name (the business service or business process that implements the
port type).
e Enter a name for the new type in the Name field and click Save.
f Click Pick in the Inbound Web Services Port Type Pick Applet to complete the process of adding
a new Type.
g Select the protocol or transport that will publish the Web service.
For the HTTP Transport, enter an HTTP address of the Web service to be called, such as
http://mycompany.com/webservice/orderservice.
jms://YourQueueName@YourConnectionFactory
For the Local Web Service transport, enter the name of the inbound port.
For the EAI MSMQ Server transport, enter one of the following:
mq://YourQueueName@YourQueueManagerName
msmq://YourQueueName@YourQueueMachineName
NOTE: When publishing using EAI MQSeries, EAI MSMQ, or EAI JMS, you cannot generate
WSDL files.
NOTE: RPC_Encoded, RPC_Literal, and DOC_Literal styles of binding are supported for
publishing Web services.
4 In the Operations list, create a new operation record for the new service port:
NOTE: Only the operations created in this step will be published and usable by applications
calling the Web service. Other business service methods will not be available to external
applications and can only be used for internal business service calls.
b Select the name of the business service method in the Method Display Name column.
NOTE: The Method Display Name column defaults to RunProcess if you chose Workflow
Process as the type for your service port. However, you can change this to another name.
For more information on using the Username/Password Authentication Type, see About RPC-
Literal and DOC-Literal Bindings on page 80.
When you have created a new inbound Web service record you can generate a WSDL document, as
described in the following procedure.
3 Import the WSDL to the external system using one of the following utilities:
In VisualStudio.Net, use the wsdl.exe utility, for example, wsdl.exe /l:CS mywsdlfile.wsdl.
In IBMs WSADIE, depending on the version, add the WSDL file to the Services perspective
and run the Create Service Proxy wizard.
In Oracle JDeveloper, use the Java Web Service from WSDL wizard.
NOTE: These utilities only generate proxy classes. Developers are responsible for writing code
that uses the proxy classes.
For instance, the following example illustrates a particular case where mustUnderstand has been set
to 1; and therefore, the header is interpreted as being mandatory. However, the corresponding filter
and handler to process the header was not defined. This causes a SOAP fault message to be returned.
The format of the Siebel SOAP fault message for this example follows:
Additional steps can involve defining VBCs based on the Web service.
Data and methods for an outbound Web service can be defined by either:
An outbound ASI
2 Choose File > New Object... to display the New Object Wizards dialog box.
a Select the project where you want the objects to be held after they are created from the WSDL
document.
b Specify the WSDL document that contains the Web service or Web services definition that you
want to import.
c Specify the file where you want to store the run-time data extracted from the WSDL document
or accept the default.
d Specify the log file where you want errors, warnings, and other information related to the import
process to be logged or accept the default.
4 Click Next.
5 (Optional) Select the Deploy the Integration Object(s) and the Proxy Business Service(s)
checkbox to deploy these objects to the Siebel run-time database.
Deployed integration objects are shown in the Administration - Web Services > Deployed
Integration Objects view in the Siebel client. Deployed business services are shown in the
Administration - Business Services screen in the Siebel client.
NOTE: If you deploy integration objects while the Siebel Server is running, you must
subsequently clear the Web services cache in the Administration - Web Services > Inbound (or
Outbound) Web Services view.
6 Click Finish to complete the process of importing the business service into the Siebel repository.
NOTE: For RPC services, the order of input arguments is important. You can set the order
through the Preferred Sequence property of the business service method argument in Siebel
Tools. By specifying this parameter, the outbound dispatcher makes sure that the sequence
parameters for an operation are in the correct order. The Preferred Sequence property is only
supported with outbound services.
Integration objects, representing input and output parameters of the service methods, if any of
the operations require a complex argument (XML Schema) to be passed. If the service does not
use complex arguments, then no integration object definitions will be created.
A Web service administration document (XML file) containing the run-time Web service
administration data that should be imported into the Siebel Web Client, using the Outbound Web
Services view of the Administration - Web Services screen.
The purpose of the document is to allow administrators to modify run-time parameters such as
the URL and encoding rules. The data contained within the document is used by the Web Services
Dispatcher to assemble the SOAP document, to set any HTTP headers required (for example,
soapAction), and to route the request to the correct URL. For information, see To import run-
time data about external Web services on page 88.
NOTE: You do not need to update your SRF file at design time. However, the service definition
must exist in the SRF file during run time.
3 In the Outbound Web Services list applet, click Import to bring up the EAI Web Service Import
dialog box.
4 Specify the export file created by the Web Services Import Wizard.
5 Click Import to import the Web service definition into the database.
WSDL does not provide native bindings for EAI MQSeries and EAI MSMQ transports. If your business
requires you to pick up messages using these transports, you can manually create an outbound Web
service definition and update a corresponding business service in Siebel Tools to point to that Web
service. The following procedure describes this process.
NOTE: When importing an external Web service, you do not need to specify the proxy
business service, integration objects, or the run-time parameters.
3 In the Service Ports list applet, create a new outbound service ports record:
a Enter the name of the Web service port in the Name column.
b Select a transport name for the protocol or queuing system for the Transport.
4 Enter the address for the transport chosen to publish the Web service:
http://webserver/eai_anon_lang/
start.swe?SWEExtSource=SecureWebService&SWEExtCmd=Execute
where:
where:
queue name = Java Naming and Directory Interface (JNDI) name of the queue
connection factory = JNDI name of the JMS connection factory
NOTE: The JNDI name varies depending upon the JMS provider and your implementation.
For the Local Web Service transport, enter the name of the inbound port.
The format to publish over EAI MQSeries or EAI MSMQ transports is:
where:
queue name = name of the queue that is specified by either the EAI MQ Series or the EAI
MSMQ transport at the time of its design
queue manager name = name of the EAI MQSeries Transport queue manager
queue machine name = name of the machine that owns the queue specified by the physical
queue name for the EAI MSMQ Transport
NOTE: When publishing using EAI MQSeries or EAI MSMQ, you cannot generate WSDL files.
For the Local Workflow or the Local Business Service transport, enter the name of a Business
Process or Business Service that should be called.
NOTE: RPC_Encoded, RPC_Literal, DOC_Literal, and Property Set styles of binding are
supported for publishing Web services.
Use the Property Set binding when the input property set to the proxy service is forwarded
without changes to the destination address. This is intended primarily for use in combination
with the Local Workflow or Local Business Service transport to avoid the overhead of
processing XML.
7 In the Operations list applet, create a new operation record for the new service port you created
in Step 3 on page 89:
a Select the name of the business service method in the Method Display Name column to complete
the process.
b Select the authentication type from the drop-down list.
NOTE: For more information on using the Username/Password Authentication Type, see
About Web Services Security Support on page 98.
8 Generate the WSDL file. For information, see To generate a WSDL file on page 85.
When you have created your outbound Web service, update a corresponding outbound proxy
business service in Siebel Tools to point to that Web service. This associates the outbound proxy
business service and the outbound Web service. The following procedure outlines the steps you take
to accomplish this task.
2 Add the following user properties for this business service and set their values based on the
outbound service port of your Web service:
siebel_port_name
siebel_web_service_name
siebel_web_service_namespace
Change the output from all your business services that provide the input to the outbound Web
service from SiebelMessage to the actual outbound Web service argument name specified in
Siebel Tools.
Change the output from your business services in Siebel Tools, as well as the name of the
property set child that contains the integration object instance.
Change the property set name from SiebelMessage to the actual outbound Web service argument
name by using a Siebel eScript service before calling the outbound Web service.
The following is the format for the outbound Web service dispatcher input arguments:
Name: siebel_transport_header:headerName
Name: siebel_transport_header:UserDefinedHeader
Value: myData
Name: siebel_transport_header:Authorization
Value: 0135DFDJKLJ
If the Web service to be invoked is within the sample application, then no need exists to invoke such
a Web service by using HTTP (or anything else).
An example of using a local business service is a department store developing a workflow in Siebel
Tools to perform credit card checks before purchases. The purchase is entered into the sales register
along with the credit card information (the outbound Web service proxy). If the credit card is issued
by the department store, the information can be checked using the internal database (a local
business service). The send request stays within the department stores own computer network. An
approval or denial is the output (the Web service endpoint). If the credit card is a MasterCard or a
Visa card, the card information is passed through the Internet for verification. No local business
service would be involved.
The input to the local business service is a property set representation of the SOAP request. Once
within the local business service, additional SOAP headers may be added to address infrastructure
requirements by direct modification of the input property, set by using Siebel eScript or Siebel VB.
The <xsd:any> tag can contain an attribute called namespace. If the value for that attribute is
known, then one or more integration components or even an integration object can be created. If
the value for that attribute is not known, then the business service method argument for that
particular <wsdl:part> tag is changed to data type Hierarchy, consequently losing any type
information.
The value for the attribute being known refers to the following situations:
A schema of targetNamespace value, being the same as that of the namespace attribute value,
is imported by way of the <xsd:import> tag.
A schema of targetNamespace value, being the same as that of the namespace attribute value,
is a child of the <wsdl:types> tag.
For the case of being known, all the global elements belonging to the particular schema of that
targetNamespace will be added in place of the tag. One or more integration components can
potentially be created.
Another tag similar to the <xsd:any> tag is the <xsd:anyAttribute> tag. The mapping is similar to
that of the <xsd:any> tag. In this case, one or more integration component fields can be created.
The <xsd:anyAttribute> tag has an attribute called namespace. If the namespace value is known
(the conditions for being known were noted in this section), then all the global attributes for that
particular schema will be added in place of this tag. Therefore, one or more integration component
fields can potentially be created.
In the case where the namespace value is not known, then the <wsdl:part> tag that is referring to
the schema element and type will be created as data type Hierarchy.
The <xsd:any> tag can contain an attribute called namespace. If the value for that attribute is
known, then one or more integration components or even an integration object can be created. If
the value for that attribute is not known, an error will be returned to the user saying that the
integration object cannot be created for a weakly typed schema.
The value for the attribute being known refers to the situation of the XML Schema Wizard where a
schema of targetNamespace value, being the same as that of the namespace value, has been
imported by way of the <xsd:import> tag.
For the case of being known, all the global elements belonging to the particular schema of that
targetNamespace will be added in place of the tag. So, one or more integration components can
potentially be created.
The mapping of the <xsd:anyAttribute> is similar to that of the <xsd:any> tag. In this case, one or
more integration component fields can be created.
The <xsd:anyAttribute> tag has an attribute called namespace. If the namespace value is known
(the condition for being known was noted in this section), then all the global attributes for that
particular schema will be added in place of this tag. Therefore, one or more integration component
fields can potentially be created.
In the case where the namespace value is not known, then an error is returned to the user stating
that an integration object cannot be created for a weakly typed schema.
3 The WSDL Import Wizard generates definitions for outbound proxy, integration objects for
complex parts, and administration entries.
4 The Outbound Web Service proxy is called with request property set.
5 The request is converted to an outbound SOAP request and sent to the external application.
7 The SOAP response is converted to a property set that can be processed by the callerfor
example, Calling Function.
The following example shows how to invoke Web services using Siebel eScript:
try {
// obtain the customer ID to query on. This value will be provided in the input property set
var custId = Inputs.GetProperty("custId");
// parse the output to obtain the customer full name check the type element on each PropertySet
(parent/child) to make sure we are at the element to obtain the customer name
if (wsOutput.GetChildCount() > 0) {
var getCustOutput = wsOutput.GetChild(0);
if (getCustOutput.GetType() == "getCustomerNameSoapOut:parameters") {
if (getCustOutput.GetChildCount() > 0) {
var outputListOfNames = getCustOutput.GetChild(0);
if (outputListOfNames.GetType() == "ListOfgetCustomerNameResponse") {
if (outputListOfNames.GetChildCount() > 0) {
var outputCustName = outputListOfNames.GetChild(0);
if (outputCustName.GetType() == "getCustomerNameResponse") {
var custName = outputCustName.GetProperty("getCustomerNameResult");
Outputs.SetProperty("customerName", custName);
}
}
}
}
}
}
return (CancelOperation);
}
catch (e) {
TheApplication().RaiseErrorText(e);
return (CancelOperation);
}
}
else
return (ContinueOperation);
}
1 The WSDL document for an active Web service is published in the Siebel Inbound Web Services
view. To allow processing of the Web service requests, the developer has to make sure:
a The Web Server and the Siebel Server are up and running.
2 In the external application, the WSDL document is imported to create a proxy that can be used
to call the Siebel Web service from Step 1.
3 The external application sends the SOAP request into the Siebel application.
4 The Web Service Inbound Dispatcher converts the SOAP request to a property set. Depending on
the inbound Web service configuration, the property set is passed to a business service or a
business process.
5 The property set is returned from the business service or business process to the Web Service
Inbound Dispatcher.
6 Response is converted to a SOAP message and sent back to the calling external application.
namespace sieOppClnt {
/* The optyQBE returns a list of opty based upon the required input params. Because
the input to the Siebelopty.QueryByExample method uses an Input/Output param,
ListOfInterOptyIntfaceTopElmt will be passed by ref to Siebel. To add the Siebel
Opportunity Web Service definition to the project, the wsdl.exe utility was run
to generate the necessary helper C# class for the service definition. */
[WebMethod]
public ListOfInterOptyIntfaceTopElmt optyQBE(string acctName, string acctLoc,
string salesStage) {
Siebelopty svc = new Siebelopty();
ListOfInterOptyIntfaceTopElmt siebelMessage = new
ListOfInterOptyIntfaceTopElmt();
ListOfInteroptyInterface optyList = new ListOfInteroptyInterface();
opty[] opty = new opty[1];
opty[0] = new opty();
opty[0].Account = acctName;
opty[0].AccountLocation = acctLoc;
opty[0].SalesStage = salesStage;
/* Assemble input to be provided to the Siebel Web service. For the sake of
simplicity the client will query on the Account Name, Location, and Sales
Stage. Ideally, also check to make sure that correct data is entered. */
optyList.opty = opty;
siebelMessage.ListOfInteroptyInterface = optyList;
svc.SiebeloptyQBE(ref siebelMessage);
/* Return the raw XML of the result set returned by Siebel. Additional
processing could be done to parse the response. */
return siebelMessage;
}
By conforming to industry standard Web service and security specifications, secure cross-enterprise
business processes is supported. You can deploy standards-based technology solutions to solve
specific business integration problems.
For security support, you can also apply access control to business services and workflows. For more
information on configuring access control, see Siebel Security Guide.
UseAnonPool = TRUE
4 In the Profile Configuration list, query the Alias field for SecureWebService.
5 Make sure that the SecureWebService profile (named subsystem) has parameters with the
following values:
6 When the client makes a call to the Web service, make sure that SWEExtSource points to the
correct virtual directory and named subsystem, for example:
http://myserver/eai_anon_enu/start.swe?SWEExtCmd=Execute
&SWEExtSource=SecureWebService&UserName=user&Password=pass
The following is a sample of the UserName token showing the username and password:
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
http://schemas.xmlsoap.org/ws/2002/07/secext
<wsse:UsernameToken xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
<wsse:Username>WKANDINSKY</wsse:Username>
<wsse:Password Type="wsse:PasswordText">AbstractArt123</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
Allows an inbound SOAP request to contain user credentials that can be provided to the inbound
SOAP dispatcher to perform the necessary authentication
Allows an inbound SOAP dispatcher to perform the necessary authentication on an inbound SOAP
request that contains user credentials
Allows an outbound SOAP request to contain user credentials that can be utilized by the external
application
The following is an example of passing the user name and password by way of a URL:
http://webserver/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&
Username=SADMIN&Password=SADMIN
With UserName tokens, the URL does not reveal the user credentials:
http://webserver/eai_anon_enu/
start.swe?SWEExtSource=SecureWebService&SWEExtCmd=Execute
NOTE: Using WS-Security is optional. If security is of the utmost importance, and if it is critical that
the password not be provided in clear text, use HTTPS.
Figure 26. Inbound Web Services View and the UserName Token
NOTE: No authentication type implies that the user credentials are in the URL.
Figure 27. Outbound Web Services List Applet and the Operations PickList
For example, a custom Web application can send a request that includes a username and password,
and invokes a stateless session, one that remains open after the outbound response is sent. The
Siebel Server generates an encrypted session token that contains user credentials and a session ID.
The Siebel Server includes the session token in the SOAP header of the outbound response. The client
application is responsible for capturing the returned session token and including it in the SOAP
header of the next request.
The Session Manager on the Siebel Web Server Extension (SWSE) extracts the user credentials and
session ID from the session token and reconnects to the session on the Siebel Server. If the original
session has been closed, a new session is created.
You can use the SOAP headers listed in Table 7 to invoke different types of sessions and pass
authentication credentials.
SOAP Header
Block Description
SessionType You use the SessionType SOAP header to define the type of session. Valid
values are None, Stateless, Stateful, and ServerDetermine:
None. A new session is opened for each request and then closed after a
response is sent out. The SessionType none may or may not include
UsernameToken and PasswordText SOAP headers. When UsernameToken
and PasswordText SOAP headers are included, these credentials are used
for authentication.
Stateless. A new session is opened for an initial request and the session
remains open for subsequent requests. Relogin occurs automatically
(transparent to the user) if the session is closed. UsernameToken and
PasswordText must be included as SOAP headers in the initial request to
open a stateless session.
Stateful. A new, dedicated session is opened for an initial request and the
session remains open for subsequent requests. Relogin does not occur
automatically if the session is closed. UsernameToken and PasswordText
must be included as SOAP headers in the initial request to open a stateful
session.
If SessionType is absent, then the default value is None, and the session will
be closed after the request is processed.
UsernameToken You use the UsernameToken SOAP header to send the Login ID to the Siebel
Server.
SOAP Header
Block Description
PasswordText You use the PasswordText SOAP header to send the password used by the login
ID to the Siebel server.
SessionToken Session tokens are used with stateless requests. They are sent and received
using the SessionToken SOAP header. After receiving an initial request with
valid authentication credentials and a session type set to Stateless, the Siebel
Server generates a session token and includes it in the SOAP header of the
outbound response. The session token is encrypted and consists of a session
ID and user credentials. The custom Web application uses the session token for
subsequent requests. The Session Manager on the SWSE extracts a session ID
and user credentials from the session token, and then passes the information
to the Siebel Server. The session ID is used to reconnect to an existing session
or automatically log in again if the session has been terminated.
For examples of using SOAP headers for session management and authentication, see Examples of
Using SOAP Headers for Authentication and Session Management on page 106.
The namespace used with Siebel Authentication and Session Management SOAP headers is:
xmlns="http://siebel.com/webservices"
NOTE: The Siebel Session Management and Authentication SOAP headers are different from the
SOAP headers used for WS-Security. Do not use the two types of header together. For more
information about WS-Security, see About WS-Security UserName Token Profile Support on page 100.
Username and password None A single request is sent with the username and
password used to log in, and the session is
closed after the response is sent out.
Session token (stateless) None When a SOAP header carries a session token
and has the session type set to None, then the
Session Manager on the SWSE closes (logs
out) of this session, and invalidates the
session token. The session token is not used
after the session is invalidated.
For examples that illustrate some of these combinations, see Examples of Using SOAP Headers for
Authentication and Session Management on page 106.
http://mywebserver/EAIObjMgr_enu/
start.swe?SWEExtSource=CustomUI&SWEExtCmd=Execute&WSSOAP=1
NOTE: When using Siebel Session Management and Authentication SOAP headers, then the WS-
Security authentication types for all Web service operations must be set to None. You set the WS-
Security authentication types in the Operations applets of the Inbound Web Services or Outbound
Web Services views in the Administration-Web Services screen. For more information about WS-
Security, see About WS-Security UserName Token Profile Support on page 100.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<SessionType xmlns="http://siebel.com/webservices">None</SessionType>
</soap:Header>
<soap:Body>
<!-- data goes here -->
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<UsernameToken xmlns="http://siebel.com/webservices">user</UsernameToken>
<PasswordText xmlns="http://siebel.com/webservices">hello123</PasswordText>
<SessionType xmlns="http://siebel.com/webservices">None</SessionType>
</soap:Header>
<soap:Body>
<!-- data goes here -->
</soap:Body>
</soap:Envelope>
Initial Request
This example illustrates the initial request that includes authentication credentials (username and
password) needed to login:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<UsernameToken xmlns="http://siebel.com/webservices">user</UsernameToken>
<PasswordText xmlns="http://siebel.com/webservices">hello123</PasswordText>
<SessionType xmlns="http://siebel.com/webservices">Stateless</SessionType>
</soap:Header>
<soap:Body>
<!-- data goes here -->
</soap:Body>
</soap:Envelope>
Response
This example illustrates the session token (encrypted) generated by the Siebel Server and sent back
in the SOAP header of the response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<siebel-header:SessionToken xmlns:siebel-header="http://siebel.com/
webservices">2-r-JCunnMN9SxI9Any9zGQTOFIuJEJfCXjfI0G-
9ZOOH4lJjbSd2P.G7vySzo07sFeJxUA0WhdnK_</siebel-header:SessionToken>
</soap:Header>
<soap:Body>
<!-- data goes here -->
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<SessionType xmlns="http://siebel.com/webservices">Stateless</SessionType>
<SessionToken xmlns="http://siebel.com/webservices">2-r-
JCunnMN9SxI9Any9zGQTOFIuJEJfCXjfI0G-9ZOOH4lJjbSd2P.G7vySzo07sFeJxUA0WhdnK_</
SessionToken>
</soap:Header>
<soap:Body>
<!-- data goes here -->
</soap:Body>
</soap:Envelope>
<soap:body>
<Account_spcService_Account_spcServiceQueryPage_Input
xmlns="http://siebel.com/CustomUI">
<ListOfTestAccount
xmlns="http://www.siebel.com/xml/Test%20Account/Query">
<Account>
<Name>A*</Name>
</Account>
</ListOfTestAccount>
</Account_spcService_Account_spcServiceQueryPage_Input>
</soap:body>
SSO Access Manager. SSO Access Manager, configured in front of the Java EE server,
challenges user login, authenticates user credentials with LDAP, and sets a security token in the
browser (http header), which gets forwarded to the Java EE server.
Java EE Server. This server extracts user credentials from the security token in the request.
The Session Manager Login method takes the request as an argument and forwards it to the
SWSE. The request contains the security token in the header.
SWSE. SWSE extracts the user credentials from the security token and sends user credentials
and the trust token to the Siebel Server.
Siebel Server. The Siebel Server validates user credentials with LDAP and validates the trust
token with security settings.
Language
Locale
Currency
Time zone
This information is stored in the users session by the Siebel Server, and any subsequent requests
will return data that is localized, for example in German with monetary amounts in euros and the
time in Central European Time.
The following example shows a SOAP header, sent from one of the Siebel Self-Service Applications,
with localization parameters:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xmlns:ns0="http://siebel.com/SelfService/Common/Setup"
xmlns:ns1="http://www.siebel.com/SelfService/Common/WebSite/Query"
xmlns:ns2="http://www.siebel.com/SelfService/Common/WebSite/Data"
xmlns:ns3="http://www.siebel.com/SelfService/Common/WebSite/Id">
<env:Header>
...
<sbh:LangCode xmlns:sbh="http://siebel.com/webservices">DEU</sbh:LangCode>
<sbh:Locale xmlns:sbh="http://siebel.com/webservices">DEU</sbh:Locale>
<sbh:CurrencyCode xmlns:sbh="http://siebel.com/webservices">EUR</
sbh:CurrencyCode>
...
</env:Header>
<env:Body>
<ns0:SelfServiceWebSiteQueryPage_Input>
...
</env:Body>
</env:Envelope>
If 'mustUnderstand' equals 1, the custom header is interpreted as being mandatory and the
custom header is processed by the filter defined for this purpose.
If 'mustUnderstand' equals 1 and a filter is not specified, the custom header is not read and a
SOAP:MustUnderstand fault is generated.
You want to keep the SOAP body and header processing isolated. The inbound dispatcher and
outbound proxy know how to process the SOAP body, but do not know how to set or consume
headers. Headers are application-specific. Some customization is needed to set and consume custom
headers. To process optional custom headers that are provided by external applications, a special
business service, a filter, is defined. You can configure the Web service outbound proxy and the Web
service inbound dispatcher to call specific filters for the processing of individual (custom) headers.
NOTE: Headers that are consumed by the filter service have to be removed from the SOAP message.
The following code sample illustrates a filter that has been written for the handling of custom SOAP
headers. The interface provided by this code sample lets you define the method on the filter that you
want to invoke, and also the corresponding input and output parameters.
if(MethodName == "StripHeader") {
if(Inputs.GetChildCount() > 0) {
Outputs.InsertChildAt(Inputs.GetChild(0), 0);
var soapEnv = Outputs.GetChild(0);
if(soapEnv.GetChildCount() == 2) { // headers and body
var callBackHeader = soapHeader.GetChild(0);
if(callBackHeader.GetChildCount() == 2) {
var headerContext = TheApplication().NewPropertySet();
headerContext.SetType("HeaderContext");
// get the header child property set
var callBackLocnHeader = callBackHeader.GetChild(0);
var correlationIdHeader = callBackHeader.GetChild(1);
headerContext.AddChild(callBackLocnHeader);
headerContext.AddChild(correlationIdHeader);
soapHeader.RemoveChild(0);
Outputs.AddChild(headerContext);
}
}
}
}
else if(MethodName == "AddHeader") {
if(Inputs.GetChildCount() > 0) {
Outputs.InsertChildAt(Inputs.GetChild(0), 0);
var soapEnv = Outputs.GetChild(0);
var soapHeader = TheApplication().NewPropertySet();
soapHeader.SetType("soapEnv:Header");
soapHeader.SetProperty("xmlns:soapEnv", "http://schemas.xmlsoap.org/
soap/envelope/");
var correlationIdHeader = TheApplication().NewPropertySet();
correlationIdHeader.SetType("CorrelationId");
if(Inputs.GetChildCount() == 2) {
// get the correlation id from soap header context
var soapHeaderCntxt = Inputs.GetChild(1);
var corIdHeader = soapHeaderCntxt.GetChild(0);
correlationIdHeader.SetValue(corIdHeader.GetValue());
}
else
{
// set default correlation id header
correlationIdHeader.SetValue("30");
}
soapHeader.AddChild(correlationIdHeader);
soapEnv.InsertChildAt(soapHeader, 0);|
}
}
else if(MethodName == "AddPSHeader") {
if(Inputs.GetChildCount() > 0) {
Outputs.InsertChildAt(Inputs.GetChild(0), 0);
var soapEnv = Outputs.GetChild(0);
var soapHeader = TheApplication().NewPropertySet();
soapHeader.SetType("PropertySetHeader");
soapHeader.SetProperty("xmlns:PropertySet", "http://www.siebel.com/
propertyset");
var correlationIdHeader = TheApplication().NewPropertySet();
correlationIdHeader.SetType("CorrelationId");
if(Inputs.GetChildCount() == 2) {
// get the correlation id from soap header context
var corIdHeader = soapHeaderCntxt.GetChild(0);
correlationIdHeader.SetValue(corIdHeader.GetValue());
}
else {
// set default correlation id header
correlationIdHeader.SetValue("30");
}
soapHeader.AddChild(correlationIdHeader);
soapEnv.InsertChildAt(soapHeader, 0);
}
return (CancelOperation);
To pass the information in the headers further down the stack to the actual business service method
or workflow being invoked the HeaderContext property set is passed to the business service or
workflow that is invoked. For example, on a call to an inbound Web service, if there are a couple of
headers in the SOAP message, the filter service extracts the header information. In order to use it
in the business service or workflow execution call, this information has to be contained in the
HeaderContext. Internally, the Siebel Web services infrastructure passes HeaderContext to the
eventual business service or workflow that is invoked.
The Web services cache is used to store all the global administration information that can be
manipulated in the Inbound and Outbound Web Service administration views.
The Clear Cache feature requires user interaction. The administrator decides when the Web service
configuration must be refreshed. When used, Web service configuration changes can be made
without restarting the Siebel Server or the Server Component that uses the configuration.
The Clear Cache feature is a button on the Administration - Web Services screen. This feature is
available for inbound and outbound Web services.
The view that appears displays three different list applets. The top applet lists the Siebel Servers
for the enterprise. The middle applet has three tabsComponents, Parameters and Events. The
bottom applet has two tabsEvents and Parameters.
2 In the top list applet, select the Siebel Server that you want to configure.
This list applet contains the components for the Siebel Server selected in the top applet.
This list applet contains the parameters for the Component selected in the middle applet.
5 Set the Log Level to 4 for any or all of the following Event Types.
Web Service Inbound WebSvcInboundArgTrc Web Service Inbound Used for logging
Argument Tracing Run-time Argument arguments to the
Tracing inbound dispatcher
Web Service Inbound WebSvcInbound Web Service Inbound Used for logging at
Run-time Event Type Web service inbound
run time.
Information is
logged to the
inbound dispatcher
Web Service Design WebSvcDesign Web Service Design- Used for logging at
time Event Type Web service design
time. For example,
at the time of WSDL
import and
generation
7 Select the EAI Object Manager component, and then click the Parameters tab.
8 Click Advanced to see the advanced parameters. (Click Reset to hide them again.)
The reason for the constraint on root component cardinality is that the Siebel Web services
infrastructure generally returns multiple instances of the root integration component for any given
request. Thus, having the cardinality set to anything other than Zero or More prevents the external
clients from correctly interoperating with Siebel Web services.
NOTE: When modifying run-time parameters, restart the server component. For information on
restarting server components, see Siebel System Administration Guide.
EAI Siebel Adapter is a preconfigured business service that is used with any integration process that
runs through the Siebel business object layer. Integration objects are used to update data in business
objects and are used when retrieving data from business objects. These integration objects are
configurable and can be used during an integration process (for example, entering and retrieving
data from the Siebel Business Application).
This chapter describes the functionality of the EAI Siebel Adapter business service, and the different
methods and arguments you can use with it to manipulate the data in the Siebel Database.
About Multivalue Groups in the EAI Siebel Adapter Business Service on page 145
About Using Language-Independent Code with the EAI Siebel Adapter Business Service on
page 147
Best Practices for Using the EAI Siebel Adapter Business Service on page 148
Enabling Logging for the EAI Siebel Adapter Business Service on page 150
Configuring the EAI Siebel Adapter Business Service for Concurrency Control on page 152
Read Siebel business objects from the Siebel Database into integration objects.
NOTE: When called locally, the EAI Siebel Adapter business service creates an additional
database connection.
Write an integration object instance whose data originates externally in a Siebel business object.
Update multiple corresponding top-level parent business component records with data from one
XML filefor an example, see Update Method on page 131.
NOTE: The Siebel Message is considered to be one transaction. The transaction is committed
when there is no error. If there is an error, the transaction is aborted and rolled back.
For more information on node types, see About the EAI UI Data Adapter Business Service on
page 157.
The business object data is represented as integration object data in XML format.
The XML document or integration object instance may also be referred to as a Siebel Message.
Fields that contain null values are not included in the XML examples.
However, these fields may be revealed when you use EAI XML Write to File.WriteEAIMsg() to print
out the XML.
Query Method
You can use a combination of input arguments when using the Query Business Service Method of the
EAI Siebel Adapter. The input arguments are as follows:
1 Query By Example (QBE). Pass in an integration object instance represented as a property set.
2 Primary Row Id. Pass in a string to the Object Id input argument. The string can be the row_id
of the primary business component of the Output Integration Object Name.
3 Output Integration Object Name. See the Primary Row Id for information.
2 and 3
3 and 4
2, 3, and 4
The EAI Siebel Adapter uses this input as criteria to query the base business object and to return a
corresponding integration object instance.
For an example of using the search specification method argument to limit the scope of your query
see About Using Language-Independent Code with the EAI Siebel Adapter Business Service on
page 147.
When using the EAI Siebel Adapter, to query all the business component records, you do not need
to specify any value in the Object Id process property of the workflow process. In this case not
specifying an Object Id or a Search Specification works as a wildcard.
If you want to query Siebel data using the EAI Siebel Adapter with the Query method and an
integration object instance (property set) containing a query by example (QBE) search criteria, then
all the fields present in the QBE will be used in the query. To retrieve a unique record, include the
fields that make up the user key for the underlying integration object component instance to ensure
you retrieve a unique record. You can use an asterisk (*) as a wildcard for each one of the fields.
</ListOfAccount>
</SiebelMessage>
You would receive all of the Accounts with names that start with A* and have locations that start
with H*. The CSN, HomePage, and Type fields cannot be blank because they are used in the query.
The EAI Siebel Adapter converts the QBE into a user Search Expression of the following:
[CSN] ~ LIKE "*" AND [Home Page] ~ LIKE "*" AND [Location] ~ LIKE "H*" AND [Name] ~
LIKE "A*" AND [Type] ~ LIKE "*"
You can run this example and review the output XML generated.
NOTE: The EAI Siebel Adapter explicitly overrides any Object Manager settings for the
MaxCursorSize parameter. The EAI Siebel Adapter uses a MaxCursorSize of -1. If you want to limit
the number of results received when using the Query method, use the QueryPage Method. You can
combine the Object Id and Search Specification together to query for parent and child data.
NOTE: The EAI Siebel Adapter returns the output of the Query() method as one Siebel Message. This
integration object instance is stored in the process memory. If your query returns a large number of
records, this will result in your Siebel component's memory consumption being high.
QueryPage Method
This method is useful when the search specification retrieves a large number of records at the root
component. To avoid returning one huge Siebel Message, you can specify the number of records to
be returned using the PageSize argument, as presented in Table 21 on page 143. You can also use
method arguments such as OutputIntObjectName, SearchSpec, SortSpec, ViewMode, and
StartRowNum to dictate which records to return.
Even though the QueryPage returns a limited number of records, it keeps the data in the cache, which
you can then retrieve by calling the EAI Siebel Adapter with a new value for the StartRowNum
method argument. Please note that this is only possible if the method arguments
OutputIntObjectName, PageSize, SearchSpec, SortSpec, and ViewMode are not changed and the
NewQuery method argument is set to False.
NOTE: The EAI Siebel Adapter returns the output of the QueryPage() method as one Siebel Message.
This integration object instance is stored in the process memory. If your query returns a large
number of records, this will result in your Siebel component's memory consumption being high.
// reuse the existing input property set, except don't reissue query
EAIin.SetProperty("NewQuery", "false");
i= i+10; // get next 10 records
EAIin.SetProperty("StartRowNum", i);
if (ResultSet.GetProperty("LastPage") == "true")
moreRecords = false;
Synchronize Method
You can use the Synchronize method to make the values in a business object instance match those
of an integration object instance. This operation can result in updates, insertions, or deletions in the
business components. The following rules apply to the results of this method:
If a child component is not present in the integration object instance, the corresponding child
business component rows are left untouched.
If the integration object instances child component has an empty container, then all child records
in the corresponding business component are deleted.
For a particular child component, records that exist in both the integration object instance and
business component are updated. Records that exist in the integration object hierarchy and not
in the business component are inserted. Records in the business component and not in the
integration object instance are deleted.
NOTE: The Synchronize method updates only the fields specified in the integration component
instance.
<OrganizationIntegrationId/>
</Contact_Organization>
</ListOfContact_Organization>
<ListOfContact_AlternatePhone/>
</Contact>
</ListOfContact>
<ListOfAccount_Organization>
<Account_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationId>0-R9NH</OrganizationId>
<OrganizationIntegrationId/>
</Account_Organization>
</ListOfAccount_Organization>
</Account>
</ListOfAccount>
</SiebelMessage>
Then the following XML (integration object instance) is submitted with Synchronize:
Following is the result you will receive. Because the contact information is included in the integration
object instance, User2 in the database is deleted because it was an unmatched node. User1 is
updated because it is a matched node. User3 is inserted because it is a new node. Since Business
Address was not included in the integration object instance, it is left in the business object.
<LastName>User3</LastName>
<Organization>Default Organization</Organization>
<ListOfContact_Organization>
<Contact_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationIntegrationId/>
</Contact_Organization>
</ListOfContact_Organization>
<ListOfContact_AlternatePhone/>
</Contact>
</ListOfContact>
</Account>
</ListOfAccount>
</SiebelMessage>
Integration Object
Record In Database Instance Record After Synchronize
Business Address: 123 Main St Contact: User1 Business Address: 123 Main St
Business Address: 456 Oak St Contact: User3 Business Address: 456 Oak St
This second example demonstrates how all records with an empty container are deleted when using
the Synchronize method.
<ListOfAccount_BusinessAddress>
<Account_BusinessAddress IsPrimaryMVG = "Y">
<AddressId>1-3JGOA</AddressId>
<AddressActiveStatus>Y</AddressActiveStatus>
<BillAddressFlag>Y</BillAddressFlag>
<City>MyTown</City>
<Country>Canada</Country>
<MainAddressFlag>Y</MainAddressFlag>
<ShipAddressFlag>Y</ShipAddressFlag>
<StreetAddress>123 Main St</StreetAddress>
</Account_BusinessAddress>
<Account_BusinessAddress IsPrimaryMVG = "N">
<AddressActiveStatus>Y</AddressActiveStatus>
<BillAddressFlag>Y</BillAddressFlag>
<AddressId>1-3JGOB</AddressId>
<City>YourTown</City>
<Country>Canada</Country>
<MainAddressFlag>Y</MainAddressFlag>
<ShipAddressFlag>Y</ShipAddressFlag>
<StreetAddress>456 Oak St</StreetAddress>
</Account_BusinessAddress>
</ListOfAccount_BusinessAddress>
<ListOfContact>
<Contact>
<ActiveStatus>Y</ActiveStatus>
<FirstName>User1</FirstName>
<LastName>User1</LastName>
<MiddleName/>
<Organization>Default Organization</Organization>
<ListOfContact_Organization>
<Contact_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationIntegrationId/>
</Contact_Organization>
</ListOfContact_Organization>
<ListOfContact_AlternatePhone/>
</Contact>
<Contact>
<ActiveStatus>Y</ActiveStatus>
<FirstName>User2</FirstName>
<LastName>User2</LastName>
<MiddleName/>
<Organization>Default Organization</Organization>
<ListOfContact_Organization>
<Contact_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationIntegrationId/>
</Contact_Organization>
</ListOfContact_Organization>
<ListOfContact_AlternatePhone/>
</Contact>
</ListOfContact>
<ListOfAccount_Organization>
<Account_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationId>0-R9NH</OrganizationId>
<OrganizationIntegrationId/>
</Account_Organization>
</ListOfAccount_Organization>
</Account>
</ListOfAccount>
</SiebelMessage>
After the sync operation, all the children contacts are deleted because none of the nodes match.
<AddressActiveStatus>Y</AddressActiveStatus>
<BillAddressFlag>Y</BillAddressFlag>
<AddressId>1-3JGOB</AddressId>
<City>YourTown</City>
<Country>Canada</Country>
<MainAddressFlag>Y</MainAddressFlag>
<ShipAddressFlag>Y</ShipAddressFlag>
<StreetAddress>456 Oak St</StreetAddress>
</Account_BusinessAddress>
</ListOfAccount_BusinessAddress>
<ListOfAccount_Organization>
<Account_Organization IsPrimaryMVG = "Y">
<Organization>Default Organization</Organization>
<OrganizationId>0-R9NH</OrganizationId>
<OrganizationIntegrationId/>
</Account_Organization>
</ListOfAccount_Organization>
</Account>
</ListOfAccount>
</SiebelMessage>
This second example demonstrates how all records with an empty container are deleted when using
the Synchronize method.
Table 11. Representation of Records with Empty Containers Being Deleted Using Synchronize
Method
Integration Object
Record In Database Instance Record After Synchronize
Contact: User2
Insert Method
This method is also similar to the Synchronize method with the exception that the EAI Siebel Adapter
generates an error if a matching root component is found; otherwise, it inserts the root component
and synchronizes all the children. It is important to note that when you insert a record, there is a
possibility that the business component would create default children for the record, which need to
be removed by the Insert method. The Insert method synchronizes the children, which deletes all
the default children. For example, if you insert an account associated with a specific organization, it
will also be automatically associated with a default organization. As part of the Insert method, the
EAI Siebel Adapter deletes the default association, and associates the new account with only the
organization that was originally defined in the input integration object instance. The EAI Siebel
Adapter achieves this by synchronizing the children.
<Status>Unscheduled</Status>
<Type>Appointment</Type>
</Action>
</ListOfAction>
</ServiceRequest>
</ListOfSampleServiceRequest>
</SiebelMessage>
For this example to work, you will need to have the contact, Kastrup-Larsen, in the database. If you
try the Insert method against a server database where the contact does not exist, you will receive
the following error:
Also, if you try to insert the previous instance a second time, you will receive the following error
message:
Upsert Method
The Upsert method is similar to the Synchronize method with one exception; the Upsert method does
not delete any records.
The Upsert method will result in insert or update operations. If the record exists, it will be updated.
If the record does not exist, it will be inserted. Unlike the Synchronize method, upsert will not delete
any children.
To determine if an update or insert is performed, the EAI Siebel Adapter runs a query using user keys
fields or the search specifications to determine if the parent or primary record already exists. If the
parent record exists, it will be updated. If no matching parent record is found, the new record will
be inserted. Once again, upsert will not delete any children. If existing children are found, they are
updated.
You can update multiple corresponding top-level parent business component records using one XML
file, as in the following example:
<Field2>bbbb</Field2>
...
</Transaction>
...
</ListofTransaction>
</SiebelMessage>
Update Method
This method is similar to the Synchronize method, except that the EAI Siebel Adapter returns an
error if no match is found for the root component; otherwise, it updates the matching record and
synchronizes all the children. For example, if you send an order with one order item to the EAI Siebel
Adapter, it will take the following actions:
1 Queries for the order, and if it finds a match, it updates the record.
2 Updates or inserts the new order item depending on whether a match was found for the new
order item.
Delete Method
You can delete one or more records in a business component that is mapped to the root integration
component, given an integration object instance. A business component record is deleted as
specified by an integration object instance. The integration component instance fields are used to
query the corresponding business component and any records retrieved will be deleted. You invoke
the Delete method using only one of the following method arguments:
NOTE: To have the EAI Siebel Adapter perform a delete operation, define an integration object that
contains the minimum fields on the primary business component for the business object. The EAI
Siebel Adapter attempts to delete matching records in the business component before deleting the
parent record.
For example, if you pass in this xml document, the Account Test account is deleted.
</SiebelMessage>
Any child contacts that once belonged to the account will still remain in the database, but will not be
associated with this Account.
Execute Method
The Execute method can be specified on the EAI Siebel Adapter to perform combinations of various
operations on components in an integration object instance. This method uses the following
operations:
query
upsert
update
updatesync
insert
insertsync
delete
skipnode
skiptree
none
These operations perform the same tasks as the related methods. For example, the delete operation
makes the EAI Siebel Adapter delete the business component record matched to the particular
integration component instance. However, what will be done to the children depends on the
combination of the parent operation and the child operation. For information, see Table 12 on
page 133.
NOTE: The operation method names are case sensitive. If you misspell an operation method, the
EAI Siebel Adapter assumes the default operation.
An XML document sent to a Siebel application can include operations that describe whether a
particular data element needs to be inserted, updated, deleted, synchronized, and so on. These
operations can be specified as an attribute at the component level. They cannot be specified for any
other element.
The following XML example demonstrates using the upsert and delete operation to delete a particular
child record without updating the parent:
<ListofSampleAccount>
<Account operation="upsert">
<Name>A. K. Parker Distribution</Name>
<Location>HQ-Distribution</Location>
<Organization>North American Organization</ Organization>
<Division/>
<CurrencyCode>USD</CurrencyCode>
<Description>This is the key account in the AK Parker Family</
Description>
<HomePage>www.parker.com</HomePage>
<LineofBusiness>Manufacturing</LineofBusiness>
<ListOfContact>
<Contact operation="delete">
<FirstName>Stan</FirstName>
<JobTitle>Senior Mgr of MIS</JobTitle>
<LastName>Graner</LastName>
<MiddleName>A</MiddleName>
<PersonalContact>N</PersonalContact>
<Account>A. K. Parker Distribution</Account>
<AccountLocation>HQ-Distribution</AccountLocation>
</Contact>
</ListOfContact>
</Account>
</ListofSampleAccount>
</SiebelMessage>
NOTE: Specifying an operation within the <ListOf> tag is not supported. For information on the
<ListOf> tag, see XML Reference: Siebel Enterprise Application Integration.
Each child node inherits the operation from the parent if another operation is not explicitly specified.
If another operation is explicitly specified, then Table 12 represents the results of the operation on
the current node.
Record in Database
The code represents GENCOMM0 and GENCOMM1 being retrieved as the contacts for this example.
<Organization>Default Organization</Organization>
</Contact>
</ListOfContact>
/Account>
</ListOfAccount>
</SiebelMessage>
In this case, if a matching Account1 exists in the database, then the EAI Siebel Adapter will perform
an update of that record. If no record matching Account1 exists, then the EAI Siebel Adapter will
insert a new account.
For all the matching child contacts, the sync operation is inherited. Therefore, if the child exists, it
will be updated. If the child does not exist, it is inserted. Any child contacts that exist in the database
but do not match the integration object instance (unmatched children) are deleted.
The reason for this logic is that the sync operation makes the record in the database look like the
integration object instance.
NOTE: The examples represented by Table 14, Table 15 on page 137, and Table 18 on page 138
basically have the same result. However, as reflected in Table 17 on page 138, the children do not
automatically inherit Update if it is only set for the root.
In this case, if a record matching Account1 exists in the database, then the EAI Siebel Adapter
updates that specific record. If no matching account exists, then the result of the EAI Siebel Adapter
is an error with this message:
For all the matching child contacts, the update operation is inherited. Therefore, if the child exists,
it will be updated. If the child does not exist, it is inserted. For child contacts that exist in the
database but do not match the integration object instance, they will be deleted. These may be child
contacts created or associated with the Account by default.
This is very similar to the previous example except the record must exist in the database.
In this case, if a record matching Account1 exists in the database, then the EAI Siebel Adapter
updates that record. If no record matching Account1 exists, then the result from the EAI Siebel
Adapter is an error.
You can also override the parent operation as in the case for Contact2. Since Contact2 does not
exist, and there is an explicit insert operation, it will be inserted. Any unmatched children will be
deleted as part of the parent operation (update). This is the reason why Contact0 is deleted.
If you are explicitly overriding the parent operation, you must make sure the operation applies. For
example, the two combinations in Table 16 and Table 17 on page 138 will fail. In Table 16, it fails
because an insert is attempted when Contact1 already exists in the database.
In Table 17, the update fails because SubContact3 inherits from Contact2's operation, and
Subcontact3 does not exist in the database.
Account1 Account1
Contact1 Contact1
SubContact1 SubContact1
SubContact2 SubContact3
Example of a Parent Using the Update Operation and One More Child
Using the Upsert Operation
This example demonstrates the effects of records after an update operation acts on the parent, and
an upsert operation acts on one of the children records. Table 18 is a high level representation of this
example.
In this case, if a record matching Account1 exists in the database, then the EAI Siebel Adapter
updates that record. If no record matching Account1 exists, then the result of the EAI Siebel Adapter
is an error.
For a record matching Contact2, the upsert operation overrides the update operation. Therefore, if
Contact2 exists, it is updated. If no record matching Contact2 is found, it is inserted. Unmatched
child contacts are deleted.
Example of a Parent Using the Upsert Operation and One More Child
Using the Sync Operation
This example demonstrates the effects of records after an update operation acts on the parent, and
a sync operation acts on one of the children records. Table 19 is a high level representation of this
example.
Contact2 Organization2
Organization2 Contact2
Organization3
In this case, if a record matching Account1 exists in the database, then the EAI Siebel Adapter
updates that record. If no record matching Account1 exists, then the EAI Siebel Adapter inserts the
record.
For all child contacts, the upsert operation applies. Therefore, if the child exists, it is updated. If the
child does not exist, it is inserted. For child contacts that exist in the database, but do not match the
integration object instance, they will remain unchanged because upsert does not delete children.
In the case of Contact2, which has the sync operation overriding the upsert operation, it is updated,
and its children are synchronized.
Skiptree Operation
The whole sub tree rooted at this node is not processed. It is the same as that whole sub tree not
existing in the integration object instance. Operations specified in child nodes do not affect
processing in any way since the EAI Siebel Adapter does not act on the child.
Based on this example, the account is upserted. The processing of the first contact is completely
skipped although the business address child has an insert operation set. Also, the second contact is
upserted.
If the skiptree operation is specified for the account integration component, then the EAI Siebel
Adapter skips processing the complete account. This results in no operation. It is possible to have
many accounts with some having skiptree specified as shown in the following example. The EAI
Siebel Adapter processes the trees that do not have skiptree specified.
</Account>
</ListOfSampleAccount>
</SiebelMessage>
Skipnode Operation
Similar to all other Execute operations, the children nodes inherit the semantics of the operation from
the parent nodes. If a node has operation skipnode set, then the EAI Siebel Adapter will skip setting
field values for all children unless a child has an explicit operation set that will override.
Based on this example, the account is skipped. However, the EAI Siebel Adapter will attempt to insert
the two contacts.
Table 21 presents each argument of the EAI Siebel Adapter business service methods.
Table 21. Defining EAI Siebel Adapter Business Service Method Arguments
DeleteByUserKey Delete By User A Boolean argument. Forces the EAI Siebel Adapter
Key to use only the user keys to identify a record.
LastPage Last Page Boolean indicating whether or not the last record in
the query result set has been returned.
MessageId Message Id The MessageId can be used to specify the ID for the
generated message. By default, the EAI Siebel
Adapter generates a unique ID for each message.
However, if you want to use the workflow process
instance ID, then you can use this argument to
specify the ID.
Table 21. Defining EAI Siebel Adapter Business Service Method Arguments
QueryByUserKey Query By Key A Boolean argument. Forces the EAI Siebel Adapter
to use only the user keys to perform a query.
SiebelMessage Siebel Message The input or the output integration object instance.
StartRowNum Starting Row Default is 0 (first page). Indicates the row in the
Number result set for the QueryPage method to start
retrieving a page of records.
StatusObject Status Object This argument tells the EAI Siebel Adapter whether
or not to return a status message.
[IntCompName.IntCompFieldName]
For example, given an integration object definition with two integration components, Account as the
root component and Contact as the child component, the following search specification is allowed:
This search specification queries accounts that either have a site that starts with the character A, or
do not have a site specified. In addition, for the queried accounts, it queries only those associated
contacts that have a phone number.
NOTE: The operator between fields for a particular integration component instance can be AND
unless between the same field. You use the DOT notation to refer to integration components and their
fields.
You can include the child integration component in a search specification only if its parent
components are also included.
An integration component instance that corresponds to a primary MVG is denoted by the attribute
IsPrimaryMVG set to Y. This attribute is a hidden integration component field and does not have a
corresponding business component field.
Each MVG that appears on the client UI is mapped to a separate integration component. For example,
in the Orders Entry - Orders screen, there is an Account Address, a Bill-to Address, and a Ship-to
Address. Each of these MVGs needs a separate integration component definition. Each field defined
for an integration component (represented by the class CSSEAIIntCompFieldDef) maps to a field in
the MVG. For such fields, External Name denotes the name of the business component field as it
appears on the master business component, and the user property MVGFieldName denotes the name
of the business component field as it appears on the MVG business component.
NOTE: Setting a primary record in an MVG is supported only when the Auto Primary property of the
underlying MVLink is specified as Selected or None. If Auto Primary is defined as Default, then the
Object Manager does not allow the EAI Siebel Adapter to set the primary. The exception to this rule
are all the visibility MVG components (components whose records are used by Object Manager to
determine who is going to see their parent records). For information on Auto Primary property, see
Siebel Tools Online Help.
In the outbound direction, for example, the Query method, if the AllLangIndependentVals is set to
Y, then the EAI Siebel Adapter translates the language-dependent values in the Siebel Database to
their language-independent counterpart based on the List Of Values entries in the database.
In the inbound direction, for example the Synchronize method, if the AllLangIndependentVals is set
to Y, then the EAI Siebel Adapter expects language-independent values in the input message, and
translates them to language-dependent values based on the current language setting and the entries
in the List Of Values in the database.
NOTE: The LOV-based fields are always validated using language-dependent values. Using language
independent values for LOVs and MLOVs increases the EAI Siebel Adapter CPU usage by about five
percent, but allows easier communication between systems that operate on different languages.
About LOV Translation and the EAI Siebel Adapter Business Service
The Siebel application distinguishes two types of lists of values (LOV): multilingual LOV (MLOV) and
single-language LOV.
Multilingual LOV (MLOV) stores a language-independent code (LIC) in the Siebel Database that is
translated to a language-dependent value (LDV) for active language by Object Manager. MLOVs are
distinguished by having the Translation Table specified in the Column definition.
Single-language LOV stores the LDV for the current language in the Siebel Database. The Boolean
integration object user property AllLangIndependentVals determines whether the EAI Siebel Adapter
should use LDV (N = no translation necessary) or LIC (Y = translation needed) for such LOVs.
Translating to LIC affects the performance, but allows easier cooperation between systems that
operate on different languages. This option should be especially used by various import and export
utilities. The default value is undefined for backward compatibility with the behavior of release 6.x.
Table 22 explains the behavior of the EAI Siebel Adapter according to the integration object user
property AllLangIndependentVals values.
Table 22. EAI Siebel Adapters Behavior for the User Property AllLangIndependentVals
AllLangIndependentVals Y N Undefined
Run-Time Events. Siebel EAI supports triggering workflows based on run-time events such as Write
Record, which is triggered whenever a record is written. If you use both the EAI Siebel Adapter to
import data into Siebel application and run-time events, pay attention to the following.
For the EAI Siebel Adapter, one call to the EAI Siebel Adapter with an input message is a transaction.
Within a transaction, the EAI Siebel Adapter makes multiple Write Record calls. At any point in the
transaction, if the EAI Siebel Adapter encounters a problem the transaction is rolled back entirely.
However, if you have specified events to trigger at Write Record, such events are invoked as soon as
the EAI Siebel Adapter makes Write Record calls even though the EAI Siebel Adapter may be in the
middle of a transaction. If you have export data workflows triggered on such events, this may lead
to exporting data from Siebel applications that is not committed in Siebel applications and may be
rolled back. It is also possible that your events are triggered when the record is not completely
populated, which leads to situations that are not handled by your specified event processing
workflow.
To avoid the effects of this interaction between the EAI Siebel Adapter and run-time events use the
business service EAI Transaction Service to figure out if a transaction (typically, the EAI Siebel
Adapter) is in progress. You may then want to skip processing that is not desirable when the EAI
Siebel Adapter is in progress.
For example, suppose you have a workflow to export Orders from Siebel applications, which is
triggered whenever the Order record is written. You also import Orders into Siebel applications using
EAI. In such a situation, you do not want to export Orders while they are being imported, because
the import may be aborted and rolled back. You achieve this using the business service EAI
Transaction Service as the first step of the export workflow. If you find that a transaction is in process
you can branch directly to the end step.
Workflow Policies. In addition to Run-Time Events, Siebel applications also support Workflow
Policies as a triggering mechanism for workflows. You can use workflow policies instead of run-time
events to avoid the situation discussed in this section. Use Workflow Policies instead of Run-Time
Events when possible.
Keep the integration objects small. Basically, inactivate any unused fields in the integration
component. Avoid creating large integration object instances.
Test the developed object definitions using the EAI Siebel Adapter before adding to production.
You need to test your input and output using working and negative scenarios. Also do
performance testing to make sure you are satisfied with the performance of the input and the
output.
Oracle does not support the use of EAI to update data that is based on administration-type
business components such as Client - Mobile or Position. Only the System Administrator updates
these types of data.
Always use a search specification with the Query() method to avoid receiving every object when
run.
To optimize database performance, you can explicitly specify that the EAI Siebel Adapter use only
user key fields. This feature is available for the methods Query, Delete, and Execute. To use it,
set the input property QueryByUserKey to True for the EAI Siebel Adapter business service and
pass an integration object instance (for example, a Siebel Message) as an input as well. By
default, the Siebel adapter uses all the fields in the input integration object instance.
The EAI Siebel Adapter functionality must be considered in light of the entire application
functionality. For example, the Siebel Communications product line provides preconfigured Asset
Based Ordering functionality that uses the Siebel workflow process and business service. The
workflow processes use the EAI Siebel Adapter business service to extract data from the database
and to update the database.
When using this functionality, the possibility exists that you might get an error in a step of the
workflow process that indicates a problem with the EAI Siebel Adapter, such as the asset you want
to insert already exists in the system. In this case, you should first verify that you are not inserting
a duplicate asset. If you have validated that the asset is new and not a duplicate, then you need to
research the specifics as to why the EAI Siebel Adapter failed to insert the new asset or attempted
to insert a duplicate asset.
If you have modified the preconfigured Asset integration object or business object, it could be one
of your customizations. For example, perhaps your asset requires additional fields, and you are not
providing those fields in your inbound integration object instance. Therefore, it uses any default
values, thus creating a potential duplicate asset.
For more information on how to perform logging in the Siebel clients, see Siebel System Monitoring
and Diagnostics Guide.
Table 23. Component Events for Debugging EAI Siebel Adapter Problems
EAISiebAdptSvcArgTrc 3/4 Dumps the inputs and output arguments for the EAI
Siebel Adapter when EnableServiceArgTracing=true.
Format=Siebel Hierarchical
Table 23. Component Events for Debugging EAI Siebel Adapter Problems
For all the events listed in Table 23, setting the logging level to level 4 is sufficient for most types of
testing. You can set the component event to level 5 if you want to see debug level output, but it is
not generally recommended as it adds more lines of data to the log file that may or may not be
helpful. Logging level 4/5 represents that a logging level of 4 or 5 is supported.
2 In the top applet, select the Siebel Server that you want to enable EAI Siebel Adapter logging.
3 In the middle applet, select the Components tab, and highlight the component.
4 In the lower applet, select the Events tab, and set component events.
When you enable the component event logging, make sure you select the appropriate server
component or components involved in the process. For example, if you are testing receiving XML data
in the MQSeries Server Receiver, then you would enable logging on the MQSeriesSrvRcvr component.
You can also use the same srvrmgr command to turn on the component event logging. You will use
the "%" shortcut syntax to enable events. An example of this syntax is "change evtloglvl
EAISIEB%=4 for comp BusIntMgr".
If you are running the Siebel Developer Web Client, add the following to your .cfg file:
[EAISubsys]
EnableServiceArgTracing = TRUE
If you are running the Siebel Web Client, modify the following Siebel Server parameter for
your object manager:
"EnableServiceArgTracing" = true
2 Set the appropriate component event level on your server component through the server
manager on the server or SIEBEL_LOG_EVENTS in the Siebel Developer Web Client.
=3, then input arguments will be written out to a file when an error happens.
Modification Key
A Modification Key is an Integration Component Key of the type Modification Key. A Modification Key
is a collection of fields that together should be used to verify the version of an integration component
instance. Typically, Modification Key fields are Mod Id fields for the tables used. Multiple Modification
Key fields may be needed, because a business component may be updating multiple tables, either
as extension tables, or through implicit or explicit joins.
The EAI Siebel Adapter methods (Insert, Update, Synchronize, Upsert) check for the existence of a
Modification Key. If no Modification Key is specified in the integration component definition, or if
Modification Key fields are not included in the XML request, the EAI Siebel Adapter does not check
for the record version and proceeds with the requested operation. If a valid Modification Key is found,
but the corresponding record cannot be found, the EAI Siebel Adapter assumes that the record has
been deleted by other users and returns the error SSASqlErrWriteConflict.
If a valid Modification Key as well as the corresponding record can be found, the EAI Siebel Adapter
checks if the Modification Key fields in the XML request and the matched record are consistent. If
any of the fields are inconsistent, the EAI Siebel Adapter assumes that the record has been modified
by other users and returns the error SSASqlErrWriteConflict. If all the fields are consistent, the EAI
Siebel Adapter proceeds with the requested operation.
Modification IDs
To determine which Mod Id fields need to be used as part of a Modification Key, you expose Mod Id
fields for tables whose columns may be updated by that integration object. In some situations you
might need to add corresponding integration component fields as well as business component fields.
NOTE: The EAI Siebel Adapter can update base and extension tables. It may even update joined
table columns through picklists that allow updates.
All fields must be present in the integration object instance for the Mod Key to be used.
Only one defined Modification Key is present for each integration component. Unlike for User
Keys, multiple Mod Keys are not allowed.
Be prefixed with CX string and preferably followed by the name of the join
To configure the EAI Siebel Adapter business service for concurrency control
1 For each integration component, identify all needed Modification IDs:
NOTE: In addition to the Modification ID for the base table, Modification IDs for tables that are
used through one-to-one extension as well as through implicit joins are relevant. For example,
on modifying an account record MODIFICATION_NUM column on S_ORG_EXT is updated, not the
MODIFICATION_NUM column on S_PARTY.
a Identify all active fields in an integration component that will be updated and have to be
concurrency safe.
b Select the corresponding business component, the value in the External Name property of the
integration component.
c For each field identified in Step a, check the value of the Join property of the field. If the join is
not specified, then the field belongs to the base table; otherwise, note the name of the join.
d In the Object explorer, select Business Component > Join and query for the business component
from Step b. Search whether there is an entry whose Alias property matches the name of the
join from Step c:
If a matching Alias is found, then this field belongs to a Joined Table. The name of the
join in Step c is the join name, and the value of the Table property is the joined table.
If no Alias matches, then this is an implicit join to an Extension Table. The name of the
join in Step c is the name of the extension table.
2 Create business component fields for Mod Ids of Joined Tables. For the above example, create a
new field in the business component Account with the following settings:
Type. DTYPE_INTEGER
4 For MVG and MVG Association integration components, add user property MVGFieldName and
AssocFieldName respectively, on all Modification ID fields as follows:
a Check the Integration Component User Prop sub type for user properties of the integration
component.
b If there is a user property called MVGAssociation, then the integration component is a MVG
Association, but if there is a user property called Association then the integration component is
a MVG.
NOTE: If the integration component is neither an MVG nor an MVG Association, then nothing
needs to be done.
5 Repeat the following steps for each Modification ID field on the integration component:
b Set the value of the user property to the same as the field namefor example, Mod Id,
extension table name.Mod Id, or CX_join.Mod Id.
6 Create Modification Key.
Define a new integration component key of type Modification Key, and include all the integration
component fields exposed in Step 3 on page 154 to this key.
a The client program should store the value of the Modification IDs when it queries data from the
Siebel Database.
b The client program should send exactly the same values of the Modification IDs that it retrieved
from the Siebel Database when sending an update.
c The client program should not send any Modification IDs when sending a new record to the Siebel
application. If this is violated, the client program generates an error indicating that the record
has been deleted by another user.
Field Home Page has property Join set to S_ORG_EXT. This is an implicit join, because it is not
listed in the joins; therefore, this field belongs to Extension Table S_ORG_EXT.
Field Primary Organization has property Join set to Primary Organization-S_BU. This is an explicit
join, because it is listed in the joins. The value of Table property is S_BU; therefore, this field
belongs to Joined Table S_BU joined over Primary Organization-S_BU.
1 For field Mod Id create a new user property with the name of AssocFieldName with a value of
Mod Id.
2 For field S_ORG_EXT.Mod Id create a new user property with the name of AssocFieldName with
a value of S_ORG_EXT.Mod Id.
In this integration component example, Account of the Sample Account integration object, takes the
following action:
5 Add integration component fields Mod Id, S_ORG_EXT.Mod Id, and S_BU.Mod Id to the
Modification Key.
Status IDs
When using Status IDs with Modification IDs, the following behavior can be present:
All fields must be present in the integration object instance for the Modification Key to be used.
Only one defined Modification Key is present for each integration component. Unlike User Keys,
multiple Modification Keys are not used with Status IDs.
The EAI UI Data Adapter is similar to the EAI Siebel Adapter business service, but contains key
differences that make it more suitable for UI rendering by custom Web applications. The differences
are summarized as follows:
Row Id as User Key. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter does not use user
keys defined in the integration object. It uses an implicit, hard-coded user key, which comprises
the Row Id field.
For more information about how User Keys are used with the EAI Siebel Adapter, see Integration
Component Keys on page 29.
Row Id and Mod Id as Status Key. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter
does not use status keys defined in the integration object. It uses an implicit, hard-coded status
key, which comprises the fields Row Id and Mod Id.
For more information about how Status Keys are used with the EAI Siebel Adapter, see
Integration Component Keys on page 29.
Operation Semantics on Leaf Nodes. In an integration object hierarchy, nodes with at least
one child are called internal nodes and nodes without children are called leaf nodes. When either
the insert or update method is called on the EAI Siebel Adapter, the adapter performs the
operation on both internal nodes and leaf nodes. When the insert or update method is called on
the EAI UI Data Adapter, the adapter performs insert on leaf nodes only as represented in
Figure 29.
The match nodes in Figure 29 reflects that the database contains a record with the same user
keys as the integration object instance.
Predefined Queries. The EAI UI Data Adapter extends the Query Page functionality of the EAI
Siebel Adapter. The EAI UI Data Adapter can take the name of a predefined query and execute
the query.
For detailed information about the QueryPage method, see QueryPage Method on page 159.
Child Pagination. The EAI UI Data Adapter supports child pagination, enabling custom UIs to
render one page of data at a time.
For more information, see Root and Child Pagination on page 160.
Strongly Typed Data. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter supports the
exchange of strongly typed data.
The EAI UI Data Adapter is most suitable for use in custom UI development where the service is
called indirectly by Web services. In other types of integration scenarios, the EAI Siebel Adapter is
a more suitable choice. For more information about the EAI Siebel Adapter, see EAI Siebel Adapter
Business Service on page 117.
QueryPage Method
Custom UIs can use the QueryPage method to query data in the Siebel database one page at a time.
QueryPage supports both query-by-example (QBE) and predefined queries (PDQ). However, it is
recommended that you use either QBE or a PDQ, but not both at the same time. If both QBE and
PDQ are specified, PDQ overrides QBE. In this case, the EAI UI Data Adapter executes the PDQ,
ignores the QBE, and does not generate an error.
ExecutionMode Input
LOVLanguageMode Input
NamedSearchSpec Input
NewQuery Input
NumOutputObjects Output
OutputIntObjectName Input
SiebelMessage Input/Output
ViewMode Input
NOTE: Pagination over root components benefits performance because, as long as the search
specification, sort specification, and view mode remain the same, the business component is not re-
executed with each invocation of QueryPage. However, for pagination over child components, the
component is reexecuted every time you invoke QueryPage.
Attribute Description
startrownum Determines the starting point for record retrieval. The 0-based
index of the record within the recordset.
lastpage Indicates whether the record being returned is the last record in
the record set. The value is set by the EAI UI Data Adapter. Valid
values are true or false.
recordcountneeded When set to true, indicates that a record count is needed for this
component. Valid values are true or false.
recordcount Value set by the EAI UI Data Adapter indicating the approximate
record count provided by the object manager based on the search
specification.
Request
<SiebelMessage MessageType="Integration Object" IntObjectName="Account"
IntObjectFormat="Siebel Hierarchical">
<ListOfAccount pagesize="10" startrownum="0" recordcountneeded = "true">
<Account>
<Name>='A'</Name>
<ListOfContact>
<Contact>
<FirstName></FirstName>
<LastName></LastName>
</Contact>
</ListOfContact>
</Account>
</ListOfAccount>
</SiebelMessage>
Response
SiebelMessage MessageType="Integration Object" IntObjectName="Account"
IntObjectFormat="Siebel Hierarchical">
<ListOfAccount recordcount="2" lastpage="true">
<Account>
<Name>Adams Tech</Name>
<ListOfContact lastpage="true">
<Contact>
<FirstName>Sally</FirstName>
<LastName>Brown</LastName>
</Contact>
<Contact>
<FirstName>Terry</FirstName>
<LastName>Smith</LastName>
</Contact>
</ListOfContact>
</Account>
<Account>
<Name>Aleph Inc.</Name>
<ListOfContact lastpage="true">
<Contact>
<FirstName>Bill</FirstName>
<LastName>Jones</LastName>
<Contact>
<Contact>
<FirstName>Roland</FirstName>
<LastName>Smith</LastName>
</Contact>
</ListOfContact>
</Account>
</ListOfAccount>
</SiebelMessage>
Sort Specification
You can specify a sort specification on one or more integration component fields of an integration
component. For each field you want sort on, you must define the attributes listed in Table 26. If both
attributes are not specified, the field is not considered as a sort field.
Attribute Description
Request
<SiebelMessage MessageType="Integration Object" IntObjectName="Account"
IntObjectFormat="Siebel Hierarchical">
<ListOfAccount>
<Account>
<Row_Id>2-1111</Row_Id>
<ListOfContact pagesize="40" startrownum="0" recordcountneeded="true">
<Contact>
<FirstName sortorder="ASC" sortsequence="1"></FirstName>
</Contact>
</ListOfContact>
</Account>
</ListOfAccount>
</SiebelMessage>
Response
<SiebelMessage MessageType="Integration Object" IntObjectName="Account"
IntObjectFormat="Siebel Hierarchical">
<ListOfAccount lastpage="true">
<Account>
<Row_ID>2-1111</Row_ID>
<ListOfContact recordcount="3" lastpage="true">
<Contact>
<FirstName>Alice</FirstName>
</Contact>
<Contact>
<FirstName>Bill</FirstName>
</Contact>
<Contact>
<FirstName>Casey</FirstName>
</Contact>
</ListOfContact>
</Account>
</ListOfAccount>
</SiebelMessage>
Predefined Query
You can specify the name of a PDQ using the method argument NamedSearchSpec. The EAI UI Data
Adapter uses this value to set the search specification at the business object level.
Search Specification
You can use the searchspec attribute on a component instance for complicated queries.
For example, query by example (QBE) uses AND as the implicit operator between fields. You could
implement OR semantics by using multiple integration component instances, but this would result in
a query for each integration component instance and might result in duplicate records being
returned. In a this case, using the searchspec attribute could avoid this problem.
Expression: (Expression)
Expression: [Field XML tag] IS NULL | [Field XML tag] IS NOT NULL
NOTE: In EXISTS and NOT EXISTS expressions, use the business component field names of
multivalue group (MVG) fields, not the integration component XML tag names.
The EAI UI Data Adapter parses the searchspec (unlike the EAI Siebel Adapter) and performs the
following operations before setting the search specification on the business component:
Converts Field XML tags into business component field names. For example, assume two business
component fields, First Name and Last Name, have XML tags FirstName and LastName
respectively. The EAI UI Data Adapter converts the XML tags as shown in Table 27.
[FirstName] LIKE '*Jon*' AND [First Name] LIKE '*Jon*' AND [Last
[LastName] = 'Doe' Name] = 'Doe'
[FirstName] LIKE '*Jon*' OR [First Name] LIKE '*Jon*' OR [Last
[LastName] LIKE 'Doe*' Name] LIKE 'Doe'
If the input argument LOVLanguageMode is set to LIC, converts LOV values to language
dependent codes. See EAI UI Data Adapter Business Service Method Arguments on page 175.
For more information about query language, see Siebel Developers Reference.
UpdateLeaves Method
Use UpdateLeaves to update existing records in the Siebel database. When UpdateLeaves is invoked
on an integration object hierarchy, the EAI UI Data Adapter updates leaf nodes only and uses internal
nodes for maintaining parent-child relationships.
Both internal nodes and leaf nodes must have Row Ids specified or the EAI UI Data Adapter generates
an error. The EAI UI Data Adapter also generates an error if it does not find a match for the internal
node and leaf node for a given Row Id.
BusObjCacheSize Input
LOVLanguageMode Input
SiebelMessage Input/Output
Request
The following is an example of a request:
Response
The following is an example of a response:
Request
The following is an example of a request:
Response
The following is an example of a response:
InitLeaves Method
Use InitLeaves to retrieve pre-default values. When InitLeaves is invoked on an integration object
hierarchy, it retrieves the pre-default values for all leaf nodes. All internal nodes must exist in the
database and Row Id must be specified.
BusObjCacheSize Input
LOVLanguageMode Input
SiebelMessage Input/Output
ViewMode Input
Request
The following is an example of a request:
Response
The following is an example of a response:
Request
The following is an example of a request:
Response
The following is an example of a response:
InsertLeaves Method
Use InsertLeaves to insert records into the Siebel database. When InsertLeaves is invoked on an
integration object hierarchy, the EAI UI Data Adapter inserts leaf nodes only and uses internal nodes
for maintaining parent-child relationships:
Internal Nodes. All internal nodes must already exist in the database and Row Id must be
specified (Row Id is the implicit, hard-coded user key used by the EAI UI Data Adapter). If the
internal node does not exist or Row Id is not specified, the EAI UI Data Adapter returns an error.
For more information about user keys, see About the EAI UI Data Adapter Business Service on
page 157.
Leaf Nodes. Whether or not Row Id must be specified for leaf nodes depends on the type of
integration component:
InsertLeaves returns an integration object hierarchy. Each integration component instance in the
hierarchy has two fields: Row Id and Mod Id (implicit status keys used by the EAI UI Data Adapter).
You can use these fields to retrieve the Row Id of the newly created record.
BusObjCacheSize Input
LOVLanguageMode Input
SiebelMessage Input/Output
Request
The following is an example of a request:
Response
The following is an example of a response:
Request
The following is an example of a request:
Response
The following is an example of a response:
Request
The following is an example of a request:
Response
The following is an example of a response:
DeleteLeaves Method
The DeleteLeaves method deletes leaf nodes only. If the Cascade Delete on the Link object is set to
TRUE, then child records are also deleted. Row Ids are required for both internal nodes and leaf
nodes. DeleteLeaves does not return a value when the operation is successful.
IntObjectName Input
LOVLanguageMode Input
SiebelMessage Input/Output
Execute Method
The Execute method allows you to perform multiple operations on multiple business components. It
is the only method that operates on internal nodes. The Execute method returns the same kind of
object that the InsertLeaves method returns. For more information, see InsertLeaves Method on
page 168.
NOTE: the Execute method requires a status object only when it contains an insert operation on a
child integration component instance. However, because the EAI UI Data Adapter processes in a top-
down fashion, it adds a status object to the integration object instance even if an insert operation is
not present.
The operations are defined by the operation attribute on the integration component instance. An
integration component instance can have the following operations as defined in Table 32:
Operation Description
BusObjCacheSize Input
LOVLanguageMode Input
SiebelMessage Input/Output
Request
The following is an example of a request:
Response
The following is an example of a response:
LOVLanguageMode LOV Language Mode Indicates whether the EAI UI Data Adapter needs
to translate the LOV value before sending it to the
object manager. Valid values are LIC or LDC. If LIC
is specified, then the EAI UI Data Adapter expects
language independent values in the input message
and translates them to language dependent values
(based on the current language setting) before the
request is sent to the object manager. If LDC is
specified, the EAI UI Data Adapter does not
translate the value before sending it to the object
manager.
NamedSearchSpec Predefined Query Name of a PDQ. The EAI UI Data Adapter sets the
name of the PDQ on the business object instance.
If NamedSearchSpec and QBE are specified,
NamedSearchSpec is used.
Some UDS Web services have already been preconfigured in Siebel Tools. For information on
preconfigured UDS services, see Siebel Web UI Dynamic Developer Kit Guide.
The following procedure details how to reuse an integration object with the Data Access Service
wizard in Siebel Tools to create a new UDS Web service and deploy it to the Siebel run-time database.
NOTE: You can also create a new integration object in this wizard, in which case the Integration
Object Builder wizard is also started. For more information on using the Integration Object Builder
wizard, see Creating Integration Objects Using the EAI Siebel Wizard Business Service on page 40.
2 Choose File > New Object... to display the New Object Wizards dialog box.
3 Click the EAI tab, and then double-click Data Access Service.
The Integration Object Page of the Data Access Service wizard appears.
a Select the locked project in which you want the business service and integration object to be.
If you choose to create a new one, the Integration Object Builder wizard will start when
you click Next.
If you choose to reuse an integration object, select it from the drop-down menu.
c Click Next.
b (Optional) Select the Deploy Business Service checkbox to deploy the business service to the
run-time database.
Deployed business services are shown in the Administration - Business Services screen in the
Siebel client.
c Click Next.
5 On the UDS Methods Page, choose the methods to be exposed on the business service, and then
click Next.
Insert
Update
QueryPage
Delete
Execute
Init
a In the URL for Web field, replace <webserver> with a valid host name and <lang> with a valid
language code, such as enu.
b Click Browse to choose a location to save the WSDL file.
c Click Next.
a Expand the integration object and integration components, and then select an integration
component field to display the associated business component.
b Select UI Business.
8 Click Next.
9 (Optional) On the Integration Object Builder page, select the Deploy the Integration Object
checkbox to deploy the integration object to the run-time database.
NOTE: If you deploy integration objects while the Siebel Server is running, you must
subsequently clear the Web services cache in the Administration - Web Services > Inbound (or
Outbound) Web Services view.
10 Click Finish.
The business service, Web service, and integration object (if new) are created.
This chapter describes the virtual business component (VBC), its uses, and restrictions. This chapter
also describes how you can create a new VBC in Siebel Tools. The following topics are included:
You can take two approaches to use VBCs, as illustrated in Figure 30 on page 180:
Use the XML Gateway business service to pass data between the VBC and one of the Siebel
transports, such as the EAI HTTP Transport or the EAI MSMQ Transport.
Write your own business service in Siebel eScript or in Siebel VB to implement the methods
described in this chapter.
You can drill down on a VBC to a standard business component, another VBC, or the same
VBC.
You can drill down onto a VBC from a standard business component, another VBC, or the
same VBC.
You can define VBCs that can participate as a parent in a business object. The VBC you define
can be a parent to a standard BC or a VBC.
You still can use an older version of the XML format or property set by setting the VBC
Compatibility Mode parameter to the appropriate version. For information, see Table 35 on
page 182.
You can pass search and sort specifications to the business service used by a VBC.
You can use Validation, Pre Default Value, Post Default Value, Link Specification, and No Copy
attributes of the VBC fields.
You can have picklists based on VBC, and use the picklist properties such as No Insert, No Delete,
No Update, No Merge, Search Specification, and Sort Specification.
You can use the Cascade Delete, Search Spec, Sort Spec, No Insert, No Update, and No Delete
link properties when a VBC is the child business component on the link.
You can use No Insert, No Update, No Delete, Search Spec, Sort Spec, and Maximum Cursor Size
business component properties.
You can define a business object as containing both standard business components and VBCs.
When configuring applets based on VBCs, use CSSFrame (Form) and CSSFrameList (List) instead
of specialized applet classes.
Using the same name for the VBC field names and the remote data source field names may
reduce the amount of required programming. (Optional)
VBCs cannot be implemented using any business component class other than CSSBCVExtern.
This means specialized business components such as Quotes and Forecasts cannot be
implemented as VBCs.
For information, see Creating a New Virtual Business Component on page 182.
For information, see Setting User Properties for the Virtual Business Component on page 182.
Configure your XML Gateway Service or write your own Business Service.
For information, see XML Gateway Service on page 183 and Custom Business Service
Methods on page 195.
6 Set the class to CSSBCVExtern. This class provides the VBC functionality.
Service Parameters (Optional) Any parameters required by the business service. The
Siebel application passes this user property, as an input argument, to
the business service.
Remote Source (Optional) External data source that the business service is to use.
This property allows the VBC to pass a root property argument to the
underlying business service, but it does not allow a connection directly
to the external datasource. The Siebel application passes only this
user property as an input argument.
VBC Compatibility Mode (Optional) Determines the format of the property set passed from a
VBC to a business service, or the format in which the outgoing XML
from the XML Gateway will be. A valid value is Siebel xxx, where xxx
can be any Siebel release number. Some examples would be Siebel 6
or Siebel 7.0.4. If xxx is less than 7.5, the format will be in a release
that is earlier than release 7.5. Otherwise, a new property set, and the
XML format will be passed.
If you are creating a VBC in 7.5, there is no need to define this new
user property, because the default is to use the new PropertySet from
a VBC and the new outgoing XML from the XML Gateway.
2 In the Object Explorer, expand the Business Component tree, and then select Business
Component User Prop.
3 In the Object List Editor, click in the Business Component User Props list, right-click, and then
choose New Record.
4 Type the name of the user property, such as Service Name, in the Name field.
5 Type the value of the user property, such as a business service name, in the Value field.
6 Repeat the process for every user property you want to define for this VBC.
NOTE: For the list of different property sets and their format, see Examples of the Outgoing XML
Format on page 186 and Examples of Incoming XML Format on page 192.
You can configure the XML Gateway by specifying the transport protocol and the transport
parameters you use in the Service Parameters User Property of the VBC, as shown in Table 36. When
using the XML Gateway, specify the following user properties for your VBC.
Name Value
VBC Compatibility Mode Siebel xxx, where xxx can be any Siebel release number.
NOTE: You can concatenate multiple name-value pairs using a semicolon (;), but do not use any
spaces between the name, the equal sign, the value, and the semicolon.
For example, if you want to specify the EAI HTTP Transport, you may use something like the
following:
You can also implement VBC with MQSeries. The following procedure lists the steps you take to
implement this.
2 Define another service parameter for the name of a workflow process to run, with the following
user properties on the VBC:
3 Define a workflow process, EAITEST, to call the EAI MQSeries Server Transport with the
SendReceive method.
4 Define a new process property, <Value>, on the workflow process, and use it as an output
argument on the EAI MQSeries Server Transport step in the workflow process.
Method Description
Init Initializes the XML Gateway business service for every business component.
PreInsert Performs an operation that tests for the existence of the given business component.
Only default values are returned from the external application.
Query Queries the given business component from the given data source.
Argument Description
Remote Source The VBC Remote Source user property. The remote source from
which the service is to retrieve data for the business component.
This must be a valid connect string. When configuring the
repository business component on top of the specialized business
component class CSSBCVExten, you can define a user property
Remote Source to allow the Transport Services to determine the
remote destination and any connect information. If this user
property is defined, it is passed to every request as the <remote-
source> tag.
Business Component Name Name of the business component or its equivalent, such as a table
name.
NOTE: The XML examples in this chapter have extraneous carriage returns and line feeds for ease
of reading. Delete all the carriage returns and line feeds before using any of the examples.
<row>
<value
field="AccountId">146</value>
<value field="Name">Max
Adams</value>
<value
field="Phone">(408)234-1029</
value>
<value field="Location">San
Jose</value>
<value
field="AccessId">146</value>
</row>
</siebel-xmlext-delete-req>
<value field="AccountId">1-
6</value>
<value field="Name">Max
Adams</value>
<value
field="Phone">(398)765-1290</
value>
<value
field="Location">Troy</value>
<value field="AccessId"></
value>
</row>
</siebel-xmlext-insert-req>
PreInsert Request <siebel-xmlext-preinsert-req> siebel-xmlext-preinsert-req.
</node>
</node>
</search-spec>
<sort-spec>
<sort
field="Location">ASCENDING</
sort>
<sort field="Name">DESCENDING</
sort>
</sort-spec>
</Siebel-xmlext-query-req>
Integration Platform Technologies: Siebel Enterprise Application 18 9
Integration Version 8.1
For Oracle internal distribution only
Siebel Virtual Business Components Examples of the Outgoing XML Format
<value changed="false"
field="Name">Max Adams</value>
<value changed="true"
field="Phone">(408)234-1029</
value>
<value changed="true"
field="Location">San Jose</value>
<value changed="false"
field="AccessId">146</value>
</row>
</siebel-xmlext-update-req>
value-type="NUMBER">1000</node>
The valid value-types are TEXT, NUMBER, DATETIME, UTCDATETIME, DATE, and
TIME.
The valid values are LIKE, NOT LIKE, SOUNDSLIKE, =, <>, <=, <, >=, >, AND,
OR, +, -, *, /, ^.
</siebel-xmlext-status> siebel-xmlext-status.
status-code.
error-text.
<value field="Phone">(398)765-
1290</value>
<value field="Location">Troy</
value>
<value field="AccessId">146</
value>
</row>
</siebel-xmlext-insert-ret>
PreInsert <siebel-xmlext-preinsert-ret> siebel-xmlext-preinsert-ret.
Return
<row> Returns default values for each field, if
there is any default value.
<value field="Location">San
Jose</value>
</row>
</siebel-xmlext-preinsert-ret>
<row> value.
<value field="Phone">(650)123-
1000</value>
<value field="Location">Palo
Alto</value>
<value field="AccessId">129</
value>
</row>
</siebel-xmlext-query-ret>
</row>
</siebel-xmlext-update-ret>
NOTE: Custom business services can be based only on the CSSService class, as specified in Siebel
Tools.
These methods pass property sets between the VBC and the business service. VBC methods take
property sets as arguments. Each method takes two property sets: an Inputs property set and an
Outputs property set. The methods are called by the CSSBCVExtern class in response to requests
from other objects that refer to, or are based on the VBC.
If VBCs are used, custom business services are written to access external relational databases.
However, it is recommended that you use external business components (EBCs) to access these
databases instead of writing custom business services. For more information on EBCs, see
Chapter 10, External Business Components.
Parameter Description
Remote Source (Optional) Specifies the name of an external data source. This
is the VBCs Remote Source user property, if defined. For
information, see Table 35 on page 182.
Business Component Id Internally generated unique value that represents the VBC.
VBC Compatibility Mode (Optional) This is the VBCs Compatibility Mode user property, if
defined. For information, see Table 35 on page 182.
When a response has been received, the method packages the response from the external data
source into the outputs property set.
Please add a note that the output property set of Insert and Update methods for VBC does not affect
the data in the business component unlike Query method which uses the output property set to
populate the business component. The output property set for Insert and Update is used to indicate
that what fields or record has been changed.
NOTE: All the optional parameters have been omitted from these examples to simplify them.
Delete
The Delete method is called when a record is deleted. Figure 31 illustrates the property set for the
Delete input.
The following is the XML representation of the property set shown in Figure 31:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact">
<PropertySet
AccountId="1-6"
Name="Max Adams"
Phone="(408)234-1029"
Location="San Jose"
AccessId="146" />
</PropertySet>
The following is the XML representation of the property set shown in Figure 32:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet />
Error Return
Figure 33 illustrates the property set for the Error Return, when an error is detected.
The following is the XML representation of the property set shown in Figure 33 on page 198:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet>
<Status Status="4"
Error_spcField="Name"
</PropertySet>
Init
The Init method is called when the VBC is first instantiated. It initializes the VBC. It expects to receive
the list of fields supported by the external system.
NOTE: When a field is not initialized in the Init method of the VBC, the Update method is not fired
when the field gets updated.
The following is the XML representation of the property set shown in Figure 34:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact"/>
The following is the XML representation of the property set shown in Figure 35:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
AccountId=""
Name=""
Phone=""
Location=""
AccessId="" />
Insert
The Insert method is called when a New Record is committed. Figure 36 illustrates the property set
for the Insert input.
The following is the XML representation of the property set shown in Figure 36:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact">
<PropertySet
AccountId="1-6"
Name="Max Adams"
Phone="(398)765-1290"
Location="Troy"
AccessId="" />
</PropertySet>
NOTE: The property set for the Insert output does not affect the data in the business component.
The output property set for Insert is used to indicate what fields or records were changed.
The following is the XML representation of the property set shown in Figure 37:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
<PropertySet
AccountId="1-6"
Name="Max Adams"
Phone="(398)765-1290"
Location="Troy"
AccessId="146" />
</PropertySet>
PreInsert
The PreInsert method is called when a New Record operation is performed. It supplies default values.
Figure 38 illustrates the property set for the PreInsert input.
The following is the XML representation of the property set shown in Figure 38:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact"/>
The following is the XML representation of the property set shown in Figure 39:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet>
</PropertySet>
Query
The Query method is called when a search is performed. The Query method must be supported by
every VBC. Each record that matches the query is represented as a property set. For example, if 5
records match the query, there will be 5 child property sets. Each property set contains a list of field
namesfield value pairs representing the values of each field for that particular record. Figure 40
and Figure 41 illustrate the property set for the Query input and are followed by its XML
representation.
The following is the XML representation of the property set shown in Figure 40 on page 205 and
Figure 41:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
max-rows="6"
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact">
<search-spec>
<node node-type="Identifier">Phone</node>
</node>
<node node-type="Identifier">AccountId</node>
</node>
</node>
</search-spec>
<sort-spec>
<sort field="Location">ASCENDING</sort>
<sort field="Name">DESCENDING</sort>
</sort-spec>
</PropertySet>
The following is the XML representation of the property set shown in Figure 42:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet>
<PropertySet
AccountId="1-6"
Name="Sara Chen"
Phone="(415)298-7890"
Location="San Francisco"
AccessId="128" />
<PropertySet
AccountId="1-6"
Name="Eric Brown"
Phone="(650)123-1000"
Location="Palo Alto"
AccessId="129" />
</PropertySet>
Update
The Update method is called when a record is modified. Figure 43 illustrates the property set for the
Update input.
The following is the XML representation of the property set shown in Figure 43:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
Business_spcComponent_spcId="1"
Business_spcComponent_spcName="Contact">
<PropertySet
Field_spcName="AccountId"
Changed="false"
Field_spcValue="1-6"/>
<PropertySet
Field_spcName="Name"
Changed="false"
Field_spcValue="MaxAdams"/>
<PropertySet
Field_spcName="Phone"
Changed="true"
Field_spcValue="(408)234-1029"/>
<PropertySet
Field_spcName="Location"
Changed="true"
Field_spcValue="SanJose"/>
<PropertySet
Field_spcName="AccessId"
Changed="false"
Field_spcValue="146" />
</PropertySet>
NOTE: The property set for Update output does not affect the data in the business component. The
output property set for Update is used to indicate what fields or records were changed.
The following is the XML representation of the property set shown in Figure 44:
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
<PropertySet
Phone=="(408)234-1029"
</PropertySet>
{
fieldList += ", ";
valueList += ", ";
}
fieldList += fieldName;
valueList += "'" + fieldValue + "'";
}
fieldName = child.GetNextProperty();
}
// The insert statement is...
var insertStmt = "insert into Contacts (" + fieldList + ") values (" + valueList + ")";
// Now, inserting into the data source...
var conn = getConnection();
conn.Execute (insertStmt);
// In this example, we need to query back the record just inserted to get
// the value of its primary key. We made this primary key part of the buscomp
// to make update and delete easy. The primary key is "AccessId".
var selectStmt = "select * from Contacts where ";
var whereClause = "";
child = Inputs.GetChild(0)
fieldName = child.GetFirstProperty();
while (fieldName != "")
{
fieldValue = child.GetProperty(fieldName);
if (fieldName != "AccessId")
{
if (whereClause != "")
whereClause += " and ";
if (fieldValue == "")
whereClause += fieldName + " is null";
else
whereClause += fieldName + "='" + fieldValue + "'";
}
fieldName = child.GetNextProperty();
}
// The select statement is...
selectStmt += whereClause;
// Now, let's select the new record back
var rs = getRecordset();
rs.Open(selectStmt, conn);
// We're expecting only one row back in this example.
var fcount, fields, row, fieldValue;
row = TheApplication().NewPropertySet();
fields = rs.Fields();
fcount = fields.Count();
for (var j = 0; j < fcount; j++)
{
fieldValue = fields.Item(j).Value();
if (fieldValue == null)
row.SetProperty(fields.Item(j).Name(), "");
else
row.SetProperty(fields.Item(j).Name(), fieldValue);
}
Outputs.AddChild(row);
conn.Mode = 3;
conn.CursorLocation = 3;
conn.Open(connectionString , uid, passwd);
return conn;
}
function getRecordset() {
var rs = COMCreateObject("ADODB.Recordset");
return rs;
}
function logPropSet(inputPS, fileName) {
// Use EAI XML Write to File business service to write
// inputPS property set to fileName file in c:\temp directory.
var fileSvc = TheApplication().GetService("EAI XML Write to File");
var outPS = TheApplication().NewPropertySet();
var fileLoc = "c:\\temp\\" + fileName;
var tmpProp = inputPS.Copy();
tmpProp.SetProperty("FileName", fileLoc);
fileSvc.InvokeMethod("WritePropSet", tmpProp, outPS);
// clean up
outPS = null;
fileSvc = null;
tmpProp = null;
}
function stringReplace (string, from, to) {
// Replaces from with to in string
var stringLength = string.length;
var fromLength = from.length;
if ((stringLength == 0) || (fromLength == 0))
return string;
var fromIndex = string.indexOf(from);
if (fromIndex < 0)
return string;
var newString = string.substring(0, fromIndex) + to;
if ((fromIndex + fromLength) < stringLength)
newString += stringReplace(string.substring(fromIndex+fromLength, stringLength), from, to);
return newString;
}
Siebel EAI supports file attachments for exchanging business documents such as sales literature,
activity attachments, and product defect attachments with another Siebel instance or an external
system such as Oracle Applications.
In order to use file attachments you first need to create Integration Objects. For information, see
Chapter 2, Integration Objects, and Chapter 3, Creating and Maintaining Integration Objects.
Siebel EAI offers the choice of integrating file attachments using MIME (the industry standard for
exchanging multipart messages), or including the attachment within the body of the XML document,
referred to as an inline XML attachment. Consider using inline XML attachments when integrating
two instances of Siebel applications using file attachments.
MIME (Multipurpose Internet Mail Extensions). MIME is the industry standard for
exchanging multipart messages. The first part of the MIME message is an XML document
representing the business object being exchanged and attachments to the object are included as
separate parts of the multipart message. MIME is the recommended choice for integrating Siebel
applications with other applications.
Inline XML attachments (Inline Extensible Markup Language). With inline XML
attachments, the entire business object you are exchanging, including any attachments, is sent
as a single XML file. In this case, attachments are included within the body of the inline XML
attachment. Consider using inline XML attachments when integrating two instances of Siebel
applications using file attachments. For information, see XML Reference: Siebel Enterprise
Application Integration.
The following checklist shows the high-level procedures you must perform to use MIME to exchange
attachments between Siebel applications and another external system:
Create an integration object using the EAI Siebel Wizard business service.
For information, see About the EAI MIME Hierarchy Converter on page 226.
2 Choose File > New Object to display the New Object Wizards dialog box.
4 Follow the procedure in Creating Integration Objects Using the EAI Siebel Wizard Business Service
on page 40 to create the integration object.
NOTE: When creating your integration object you must select the Attachment integration object.
The following figure illustrates this when the source object is Account.
5 Click Next to see a list of the warnings and errors generated by the Integration Object Builder.
7 Click Finish.
8 In the Object Explorer, select Integration Object, and then select your new integration object in
the Object List Editor.
9 In the Object Explorer, expand the Integration Object tree to show the Integration Component
object.
10 Select an integration component, expand the Integration Component tree, and then select the
Integration Component Field object.
11 Select the XXX_Attachment Component and the Attachment Id Component fields, and verify that
the Data Type object for the Attachment Id field is set to DTYPE_ATTACHMENT.
12 Compile the SRF file and copy it to the object directory under your Siebel Server directory as well
as under your Tools directory.
NOTE: Stop the services before copying the SRF file. For information on the SRF file, see Using
Siebel Tools.
For more information on creating workflow processes, see Siebel Business Process Framework:
Workflow Guide.
3 Give the new workflow process a name and associate it with a locked project.
5 Create a workflow process consisting of Start, End, and four Business Services. Set up each
Business Service according to the task it needs to accomplish.
Set workflow process properties when you need a global property for the entire workflow.
Data
Name Type Default String
SiebelMessage Hierarchy
Error Message String
Error Code String
Object Id String
MIMEHierarchy Hierarchy
7 The first business service queries the Account information from the database using the EAI Siebel
Adapter business service with the Query method. This step requires the following input and
output arguments.
NOTE: For more information on using the EAI Siebel Adapter, see Chapter 6, EAI Siebel Adapter
Business Service.
8 The second business service in the workflow converts the Account integration object and its
attachments to a MIME hierarchy using the EAI MIME Hierarchy Converter business service with
the SiebelMessage to MIME Hierarchy method. This step requires the following input and output
arguments.
NOTE: For more information on the EAI MIME Hierarchy Converter, see About the EAI MIME
Hierarchy Converter on page 226.
9 The third business service of the workflow converts the MIME hierarchy to a document to be sent
to File Transport business service. This step uses the EAI MIME Doc Converter business service
with the MIME Hierarchy To MIME Doc method. This step requires the following input and output
arguments.
NOTE: For more information on the EAI MIME Doc Converter, see About the EAI MIME Doc
Converter on page 228.
10 For the final step, set up the last business service of the workflow to write the information into
a file using the EAI File Transport business service with the Send method. This step requires the
following input arguments.
NOTE: For information on File Transport, see Transports and Interfaces: Siebel Enterprise
Application Integration.
NOTE: When passing the process property value for a workflow process from an external application
(or another business service) as the input property set, the corresponding property name in the input
property set must be same name as the process property and is case sensitive.
3 Give the new workflow process a name and associate it with a locked project.
5 Create a workflow process consisting of Start, End and four Business Services. Set up each
Business Service according to the task it needs to accomplish.
Set workflow process properties when you need a global property for the entire workflow.
SiebelMessage Hierarchy
Object Id String
MIMEHierarchy Hierarchy
MIMEMsg Binary
7 The first business service in the workflow reads the Account information from a file using the EAI
File Transport business service with Receive method. This step requires the following input and
output arguments.
NOTE: For information on File Transport, see Transports and Interfaces: Siebel Enterprise
Application Integration.
8 The second business service of the workflow converts the Account information to a MIME
hierarchy using the EAI MIME Doc Converter business service with the MIME Doc to MIME
Hierarchy method. This step requires the following input and output arguments.
9 The third business service of the workflow converts the MIME hierarchy to a document, and sends
it to the EAI Siebel Adapter business service. This step uses the EAI MIME Hierarchy Converter
business service with the MIME Hierarchy to Siebel Message method. This step requires the
following input and output arguments.
10 The last step of the workflow writes the information into the database using the EAI Siebel
Adapter business service with the Insert or Update method. This step requires the following input
argument.
Outbound Integration
The EAI MIME Hierarchy Converter transforms the input Siebel Message into a MIME Hierarchy.
Figure 45 illustrates the Siebel Message of a sample Account with attachments. This figure represents
both input and output to the MIME Hierarchy Converter.
Figure 45. Sample Account with Attachments as Input to the MIME Hierarchy Converter
The first child of a MIME Hierarchy is the XML format of the Sample Account Integration Object
instance found in the Siebel Message. The remaining two children are the corresponding children
found under Attachments. If there is no child of type Attachments in the Siebel Message, the output
is just a MIME Hierarchy with a child of type Document. This document will contain the XML format
of the Sample Account integration object instance.
Inbound Integration
The MIME Hierarchy Converter transforms a MIME Hierarchy input into a Siebel Message. For the
inbound process, the first child of the MIME Hierarchy has to be the XML format of the Integration
Object instance; otherwise, an error is generated. Figure 47 illustrates the incoming hierarchy.
The output of this process is illustrated in Figure 45 on page 227. The output for this process is the
same as the input.
Property Description
Table 43 illustrates some examples of how a MIME Message maps to a MIME Hierarchy.
MIME-Version: 1.0
Content-Type: application/xml
Content-Transfer-Encoding: 7bit
This is a test.
MIME-Version: 1.0
----abc
Content-Type: application/xml
Content-Transfer-Encoding: 7bit
This is test2.
----abc--
The business service needs the following properties on the child property set as shown in Table 44.
These properties reflect the most accurate information on the data contained in the child property
set.
NOTE: On the inbound direction, the business service is independent of the transport. It assumes
that the input property set contains the MIME message, and writes a property set representation of
the MIME message. A property set is used to represent each part of the MIME message. When
decoding the MIME message, the business service automatically sets the properties based on the
values in the MIME message.
About Using External Business Components with the Siebel Web Clients on page 247
About Overriding Connection Pooling Parameters for the Data Source on page 247
Loading an Oracle Business Intelligence Presentation Folder for Use as an External Table on
page 250
Before continuing with configuring and implementing external business components (EBCs), review
the following books on the Siebel Bookshelf:
NOTE: The Siebel Bookshelf is available on Oracle Technology Network (OTN), Oracle E-Delivery, or
it might be installed locally on your intranet, or on a network location.
Import the external table definition into Siebel Tools using the External Table Schema Import
Wizard.
This wizard creates a new Table object definition in the Siebel Repository, based upon the
contents of a DDL (data definition language) file.
As may be appropriate, it is possible to import an external view definition rather than a table
definition. When a view rather than a table definition is imported, it is necessary to amend the
Type property of the created Table definition to reflect External View.
NOTE: You can import a database view definition as well as a table definition here. While no
difference exists in the resulting Siebel Table object, if it references an external database view,
only read access from the Siebel Application is supported.
NOTE: One column in the external table or view must be mapped to the Id system field by setting
the System Field Mapping property for the column.
Configure the table definition and specify the data source object.
The Data Source object is a child object of the Table Object in Siebel Tools and may need to be
exposed in the Object Explorer. For information on exposing objects in the Object Explorer of
Siebel Tools, see Using Siebel Tools.
This object tells the object manager which data source to use to access the object.
When the table is imported, specify additional table properties for the corresponding external
table.
After the data source definition is named in Siebel Tools, specify the run-time parameters by
completing the following:
For more information about using Siebel Tools, see Using Siebel Tools on the Siebel Bookshelf.
This task is a step in Process of Configuring External Business Components on page 233.
3 Click the General tab, and then double-click External Table Schema Import.
4 In the External Table Schema Import Wizard, specify the following values:
The project with which the new Table object definition will be associated.
The database where the external table resides. The value specified must correspond to the
database platform used by the Siebel database.
The full path for the location of the SQL/DDL file that contains the external table definition.
5 Click Next to confirm the entries, and then click Finish to import the DDL file.
A Table object definition is added to the Siebel Repository, corresponding to the external table.
6 Repeat Step 2 through Step 5 for every external table definition you want to import.
float Numeric
real Numeric
decimal Numeric
money Numeric
smallmoney Numeric
char Character
nchar Character
varchar Varchar
nvarchar Varchar
text Long
ntext Long
FLOAT Numeric
REAL Numeric
DECIMAL Numeric
NUMERIC Numeric
CHAR Character
VARGRAPHIC Varchar
CLOB CLOB
DATE Datetime
TIME Datetime
TIMESTAMP Datetime
Number Numeric
Char Character
Nchar Character
varchar2 Varchar
nvarchar2 Varchar
Long Long
CLOB CLOB
date Datetime
Float Numeric
Double Numeric
Char Character
Varchar Varchar
Longvarchar Long
Datetime Datetime
Date Datetime
Time Datetime
Table 46 contains the data types that are not supported for importing table definitions.
varbinary
binary
image
cursor
uniqueidentifier
BLOB
Oracle TIMESTAMP
NCLOB
BLOB
BFILE
ROWID
UROWID
RAW
LONG RAW
Longvarbinary
Binary
Object
Unknown
The external table name is stored in the Table objects Alias property. This external table name
consists of the following:
A three-digit batch code specified in the External Table Schema Import Wizard
The external column name is stored in the Column child objects Alias property. An X is added as the
prefix and a four-digit number is added as the suffix for the external column name, for example,
X_ABC_0000001_0001.
The Table objects Type property is set to External or External View (if a view was imported). This
column denotes that the table resides outside of the Siebel database.
When the EBC is defined, you must map the Siebel applications system fields to the corresponding
external table column. System Field mapping is accomplished at the column level, rather than using
business component user properties. Specify the System Field Mapping column attribute if you want
to map a Siebel system field to a column.
NOTE: At a minimum, the Id field must be mapped to a unique column defined in the external table
and in the Table object definition, which is specified in the business components Table property.
By default, the Siebel applications system fields are not included in the generated SQL for external
tables.
System Field Mapping is used to specify the mapping between table columns and Siebel internal
fields.
The following is a list of the Siebel applications internal fields that may be mapped to external table
columns:
Created By. (Optional) String containing the user name of the person and the system that
created the records.
Non-system. (Optional).
Updated. (Optional) Datetime corresponding to when the record was last updated.
Updated By. (Optional) String containing the user name of the person and system that last
updated the record.
Id. Mandatory. The single column unique identifier of the record. A column in the external table
must be mapped to the Id field.
NOTE: The System Field Mapping property should be used in conjunction with external tables only.
When the external table has been defined, specify the data source for the corresponding external
table. The Data Source child object of the Table object specifies the data source for the corresponding
external table:
The Data Source child object corresponds to a data source defined in the application
configuration file (.cfg) or in the Application - Server Configuration screen > Profile Configuration
view.
The Data Source child object instructs the Application Object Manager to use the data source for
a specific table. If a Data Source child object is not specified, the default data source for the
application will be used.
NOTE: The Data Source child object is specified for external tables only.
For more information about the Data Source child object, see Siebel Tools Online Help.
When the table is imported, you may specify additional table properties for the corresponding
external table:
External API Write. Allows you to perform reads directly from the database and have write
operations processed by way of a script.
A Boolean property is used to indicate whether or not inserts, updates, or deletes to external
tables should be handled by an external API. If this property is set to TRUE, the
BusComp_PreWriteRecord and BusComp_PreDeleteRecord events should be scripted to publish
the insert, update, or delete operation to an external API.
Key Generation Business Service. Allows a business service to generate a primary key (Id
field) for a business component. If this is not specified, the Siebel application will generate a
row_id value for the column that corresponds to the Id system field.
Key Generation Service Method. Allows a business service method to be invoked when
generating a primary key for a business component.
For more information about these table properties, see Siebel Tools Online Help.
When a Table object definition corresponding to the external table exists in the repository, you can
configure a business component to use the new Table object definition.
In general, configuring an EBC is similar to configuring a standard business component with the
following exceptions:
Data Source business component property. Specify the Data Source business component
property. Set the value for this property to the name of the corresponding Table Data Source.
Log Changes property. Set the Log Changes property to False (unchecked). This will prevent
Siebel Remote or Replication transactions from being created. (The default is true.)
CSSBusComp class. It is recommended that all EBCs use the CSSBusComp class.
NOTE: Substituting a Siebel-provided table with an external table can result in significant
downstream configuration work, and in some cases can restrict or prevent the use of standard
functionality provided for the Siebel Business Applications.
If testing using the Siebel Developer Web Client, add a [DataSource] section to the client .cfg file.
This task is a step in Process of Configuring External Business Components on page 233.
3 Change the Profile and Alias properties to the Data Source name configured in Siebel Tools.
For the Microsoft SQL Server or the IBM DB2 databases, create an ODBC or equivalent
connection and input the name of this in the parameter.
For an Oracle RDBMS, this value should specify the TNS name associated with the
database and not an ODBC or other entry.
See Table 47 on page 244 for a listing of the supported SQL types.
See Table 47 on page 244 for a listing of the supported connector Dynamic Link Library (DLL)
names and SQL Styles.
NOTE: The DSUsername and the DSPassword parameters are optional. However, to avoid
receiving a log in prompt when accessing the external data source, specify DSUsername and the
DSPassword. If specified, this will override the default user name and password.
The DSUsername and the DSPassword parameters are activated only when using the Database
Security Adapter. For more information, see Configuring a User in LDAP or ADSI Security Adapter To
Access EBCs.
If you are using the Lightweight Directory Access Protocol (LDAP) or the Microsoft Active Directory
Service Interfaces (ADSI) setup for the Siebel application and you try to access an EBC, the security
adapter is called to authorize the user trying to access the external database.
When LDAP or ADSI authentication is used, the username and password values for the external data
source is provided in the ADSI SharedCredentialsDN parameter and the CredentialAttributeType
attribute.
For example, the name of your external data source is: MyExtDataSrc, and your ADSI is configured
with the following parameters:
SharedCredentialsDN= cn=sharedcred,ou=people,dc=siebel,dc=com
CredentialAttributeType = mail
In your ADSI server modify the mail attribute for the following entry:
cn=sharedcred,ou=people,dc=siebel,dc=com
Before modifying, one value must already exist (assuming sadmin and db2 are the user name and
password for the ServerDataSrc data source, which is the primary data source):
Add additional values to the mail attribute (assuming mmay and mmay are the user name and password
for the MyExtDataSrc data source, which is the external data source):
After adding the new value for the external data source to the mail attribute, you are able to access
EBCs.
Configuring the Data Source Definition for the Siebel Developer Web Client
If testing using the Siebel Developer Web Client, add a [DataSource] section to the client .cfg file for
the data source definition named in Siebel Tools. In this example, WindyCity is the data source being
added.
To configure the data source definition in the Siebel Developer Web Client
1 Add the data source definition named in Siebel Tools. In this example, the data source definition
named is WindyCity:
[DataSources]
Local = Local
Sample = Sample
ServerDataSrc = Server
GatewayDataSrc = Gateway
WindyCity = WindyCity
2 In the data source section of the applications .cfg file, add the following parameters:
[WindyCity]
Docked = TRUE
SqlStyle = database SQL type (for the supported SQL types, see Table 47 on page 244)
DLL = DLL Name corresponding to the SQL type (for the supported connector DLL
names, see Table 47 on page 244)
2 In the Component Definitions list applet, select your Application Object Manager Component. For
example, select the Call Center Object Manager (ENU).
3 Choose Start Reconfiguration from the Menu drop-down list on the Component Definitions list
applet.
The Definition State of the component will be set to Reconfiguring. Reselect your application
component after selecting the Start Reconfiguring menu item.
4 In the Component Parameters list applet, query for OM - Named Data Source name, and update
the Value by adding the alias name of the data source specified in the To configure the data
source definition section.
The format of the OM - Named Data Source name parameter is a comma-delimited list of data
source aliases. It is recommended that you do not modify the default values, and that you add
their new data sources to the preexisting list.
5 After the parameter values are reconfigured, commit the new configuration by selecting Commit
Reconfiguration from the Menu drop-down list on the Component Definitions list applet.
To cancel the reconfiguration before it has been committed, select Cancel Reconfiguration from
the Menu drop-down list on the Component Definitions list applet.
IsNewRecordPending
GetOldFieldValue
Creating and populating the external table is the responsibility of the customer. Consult your
database administrator for the appropriate method to use.
EBCs cannot be docked, so they do not apply to mobile users on the Siebel Mobile Web Client.
Siebel Remote is not supported.
EBCs support many-to-many relationships with the limitation that for such relationships the
intersection table must be from the same data source as the child business component.
EBCs rely on the Business Object Layer of the Siebel Architecture. Therefore, EBCs are used only
in Siebel Server components using this layer such as the Application Object Manager (for
example, the Call Center Object Manager), Workflow Process Manager, and so on. EBCs are not
used on components not using this layer such as Workflow Policies (the Workflow Monitor agent),
Assignment Manager, Incentive Compensation, and so on.
The Id field must be mapped to an underlying column in the external table in order to support
insert, update, delete, and query operations.
Using the Oracle Sequence Object to populate the Id system field is not supported. The value of
the Id system field has to be known by the object manager at the record commit time, while the
Oracle Sequence Object value is populated by the database server when the change is being
processed inside the data base.
If the column that was mapped to the Id system field has Primary Key checked, then row_id
values are generated by the object manager. Otherwise, a user-entered row_id value is assumed,
and the object manager does not generate a row_id value for it.
However, in either configuration, the Primary Key column should not use the Oracle Sequence
Object.
For EBCs that contain multivalue groups, if a primary join is enabled, then both the parent and
the child business components must be from the same data source. Multivalue groups are also
supported as long as such configuration does not require that a distributed join or a subquery be
performed.
Siebel visibility control (for example ViewMode) is not supported for EBCs.
An external join alias must have the same name as the name used for the external table.
EBCs based on Database views can be used for queries only, updates are not supported.
NOTE: Significant configuration effort and changes may be required if you choose to reconfigure a
standard Siebel business component on an external table. For example, existing join and link
definitions are unlikely to function, because the source fields and underlying columns may not exist
in the external table.
Like other joined fields, the fields based on the join to the EBC are read-only.
The limitations for joining business components to tables in an external data source are as follows:
The source field for the join must be based on a table in the default data source.
The destination column of the join must be the column mapped to System Field Id.
Multiple single join specifications are not supported for the join to the external table.
Reverse navigation (for example, a call to go to the last record) is not supported when fields from
multiple data sources are active.
Join Constraints are supported. Joins to more than one external table may be specified. However,
increasing the number of external joined data sources can cause degradation in performance.
All fields in the sort specification must either be based on columns in the same external table, or
be based on columns in the default data source.
Named search specifications cannot be set on fields from an external data source.
Performance tests are recommended if searching and sorting are permitted on fields based on joins
to the external tables. The Siebel application does not have information on the data shape in the
external tables. The Siebel application follows a rule-based approach to decide the order in which to
query the external tables.
For example, consider the case where there are search and sort specifications on the fields in the
Siebel Data Source but none on the fields from the external data source. The Siebel application
decides to query the Siebel tables first. Only the rows matching the query specification in the current
workset are retrieved from the external data source. As more rows are retrieved from the tables in
the Siebel Data Source, the rows from the external data source are also retrieved.
The rules become complex when Search and Sort Specifications are applied to multiple data sources.
The rules followed are based on the following requirements:
2 Shipping the least amount of data between the Siebel and external data sources
Step 2 and Step 3 may produce competing results. In that case, Step 2 takes precedence.
If, as result of the search and sort specifications in effect, the external table on which the Sort is
based is not the driving table, the Siebel application raises an error if more than 1000 rows are
retrieved. Refine the query specification in the event of this error.
Directives specified using the Business Component User property External DataSource Field Priority
On Search to allow hinting of the order in which the tables in the data sources should be queried are
supported. These directives may be applied based on a knowledge of the data shape in the Siebel
and external tables.
Property Value
A query on Field A is likely to be selective. If there is a search specification on Field A, the table that
field A is based on is considered the driving table.
A query on Field B is likely to be selective. If there is a search specification on Field B and none on
Field A, the table that field B is based on is considered the driving table.
Distributed joins are configured the same as standard joins. The query is distributed when the Data
Source child object of the table provides a hint to the Object Manager (OM) to federate the query.
Implement the external data source (similar to what was done for EBCs).
The Datasource child object of the Table provides a hint to the object manager to federate the
query.
Add the fields from the external table to the business component using the join specified.
The source field for the distributed join must be based on a table in the business components
data source.
The destination column of the distributed join must be a column mapped to the Id System Field.
Multiple join specifications are not supported for a distributed join. However, join constraints are
supported.
Reverse navigation (for example, a call to go to the last record) is not supported when the fields
from multiple data sources are active.
All fields in the sort specification must be from the same data source.
All fields in the named search specifications must be from the default data source.
EBCs, in conjunction with the Analytics database connector, allow the ability to construct business
components that derive their data from Oracle Business Intelligence (BI). EBCs support Oracle BI as
a source for having Siebel Tools import the structure of an Oracle BI Presentation Folder by reading
sources such as an XML file.
NOTE: Analytics integration is read-only, and any business components that use Analytics as a data
source must be configured to support read-only access.
The following procedure generates the Oracle BI Presentation folder as an XML file from Oracle BI.
Follow these instructions to avoid the Repository Documentation wizard exporting the full repository
definition into an XML file, and not only the selected object.
d Choose the catalog you want to import into Siebel Tools and click Add With Children.
e Click Next.
f Click Finish.
4 Choose Tools > Utilities, choose Repository Documentation and click Execute.
If you import an XML file that contains several presentation folders, Siebel Tools creates one external
table for each presentation folder.
1 Configure EBCs for read and make sure that the data is displayed correctly in the application.
If the development team feels that some fields require script in order to display correctly then
defer the implementation of these fields until testing is complete for a simple read.
2 Add any data transformation script or configuration required in order to provide read access to
the more complex fields for display.
3 Configure EBCs for update and make sure that the data is stored correctly in the external
database(s) and displayed correctly in the Siebel application.
4 Once testing of data update is complete, establish any data transformation configuration or script
required to update the fields.
Make sure that the configuration uses script, which is preferred. However, it is recommended that
any data transformation scripts be written on the Pre event.
As part of the troubleshooting process associated with EBCs, increasing the tracing level for a
number of component events is suggested.
2 Change the Log Level for the following Event Types to a higher value (the default is 1).
Task Configuration
DBC Log
SQL
Following this change, restarting the affected components is recommended. With the increase log
level, more information is stored in the relevant log files. Reset these values back to 1 when
troubleshooting is completed.
Siebel Business Applications provide a number of business services. These services do not require
any modification, but they do require that you choose and configure them to suit your requirements.
For general information on using business services, see Chapter 4, Business Services.
EAI XML XSD Generator CSSEAISchXSDService Used to generate an XSD file from an
integration object.
EAI Query Spec Service CSSEAIQuerySpecService Used internally by the EAI Siebel
Adapter to convert the SearchSpec
method argument as a string to an
Integration Object Instance that the
EAI Siebel Adapter can use as a Query
By Example object.
EAI BTS COM Transport CSSEAIBtsComService EAI Siebel to BTS COM Transport.
EAI XML Write to File CSSEAIXMLPrtService Print a property set to a file as XML.
For information, see XML Reference:
Siebel Enterprise Application
Integration.
EAI XML Read from File CSSEAIXMLPrtService Read an XML file and parse to a
property set. For information, see
XML Reference: Siebel Enterprise
Application Integration.
Property sets are in-memory representations of integration objects. This appendix describes the
relationship between the property set and the integration object. For an overview of property sets,
see Using Siebel Tools.
Using this representation, you can pass a set of integration object instances of a specified type to an
EAI business service. You pass the integration object instances as a child property set of the business
service method arguments. This property set always has a type of SiebelMessage. You can pass the
SiebelMessage property set from one business service to another in a workflow without knowing the
internal representation of the integration objects.
Value of Type
Name Parent Attribute Properties Description
Service Method Not applicable Ignored The properties of This is the top-
Arguments this property set level property set
contain the service of a business
specific services input or
parameters, such output. The
as PrimaryRowId properties of this
for the EAI Siebel property set
Adapter. contain the
service-specific
parameters (for
example,
PrimaryRowId for
the EAI Siebel
Adapter).
Value of Type
Name Parent Attribute Properties Description
Root Object List Root Component The property This property set
Component Name names of the represents the
property set root component of
represent the field an integration
names of the object instance.
component, and
the property
values are the field
values.
Figure 49 on page 261 shows an example instance of this object type, using the Integration Object
Hierarchy representation. There are two Sample Account instances. The first object instance has an
Account component and two Business Address child components. The second object instance has
only an Account component with no child components.
This appendix lists the various inbound and outbound DTDs for the XML Gateway business service.
It covers the following topics:
Outbound DTDs for the XML Gateway Business Service on page 263
Inbound DTDs for the XML Gateway Business Service on page 265
Delete
The following DTD is for the Delete request:
Init
The following DTD is for the Init request:
Insert
The following DTD is for the Insert request:
PreInsert
The following DTD is for the PreInsert request:
Query
The following DTD is for the Query request:
Update
The following DTD is for the Update request:
Delete Response
The following DTD is for the Delete response:
Init Response
The following DTD is for the Init response:
Insert Response
The following DTD is for the Insert response:
PreInsert Response
The following DTD is for the PreInsert response:
Query Response
The following DTD is for the Query response:
Update Response
The following DTD is for the Update response:
Index
Symbols of 117
%methodName% request, sample outbound external data, creating from 117
DTDs 263 integration object maintenance, about 52
%methodName% response, sample inbound relation to business services 65
DTDs 265 structure of 18
* (asterisk), using as querying wildcard 119 user key requirement 30
business service methods
arguments, defining 69
A business objects as arguments 76
activating fields, about 40 defining 69
AllowedIntObjects business service user described 66
property 36 Business Service Methods screen, using 71
application business service methods, custom
external application, about setting up 195 See also virtual business components
arguments about 195
Init method, XML Gateway business common input parameters (table) 196
service 186 connecting methods, list of 195
IsPrimaryMVG 145 Delete method, example 197
AssocFieldName user property Error Return property set, example 198
associations with 20 Init method, example 199
Association user property Insert method, example 201
associations with 20 output parameters (table) 196
association, defined 20 PreInsert method, example 203
Query method, example 205
B Update method, example 209
base object types, for integration Business Service Simulator, running 73
components (table) 15 business services
base table, using Mod Id 153 accessing using Siebel eScript or Siebel
body data, contents of 14 VB 74
buscomp Id tag 187 argument types 70
Business Component Id argument, XML customized business services, type of 66
Gateway method 186 defined 65
Business Component Name argument, XML deploying as Web services 72
Gateway method 186 deploying to run-time database from Data
business components Access Service wizard 177
association, role of 20 deploying to run-time database from WSDL
integration restrictions 61 Import Wizard 87
linking 24 EAI MIME Hierarchy Converter, creating
multivalue field example 22 inbound workflow process
multivalue group example 25 (example) 226
relation to business services 65 EAI MIME Hierarchy Converter, creating
specialized 181 outbound workflow process
update permission rules 35 (example) 223
business objects EAI Siebel Adapter, about 117
business service methods, as arguments EAI Siebel Wizard, about 38
to 76 EAI UI Data Adapter, about 157
EAI Siebel Adapter business service, role general uses 65
AssocFieldName 20 W
Association 20 Web services
business service user properties, defining 70 about 79
External Name 20 cache refresh 113
MVGAssociation 20 consuming external Web services 86
virtual business components (table) 182 custom SOAP filters 108, 110
virtual business components, defining defining Web Service Inbound Dispatcher 85
for 183 deploying business services as 72
DOC-literal support 81
V enabling tracing 113
value tag 194 generating a WSDL file 85
VBC Compatibility Mode user property 184 invoking using an external system 83
VBCs. See virtual business components invoking, examples of 92, 94
ViewMode argument Local Business Service 92
EAI Siebel Adapter business service method one-way operations 82
argument 144 outbound, administration 88
locating arguments for 142 outbound, creating based on WSDL file 86
ViewMode argument, about 176 outbound, integration objects as input
ViewMode integration object user arguments 91
property 36 publishing inbound 83
virtual business components RPC-literal support 81
See also virtual business components, security support 98
methods Session Management SOAP headers 102
about 179 Siebel Authentication 102
custom code example 211 single sign-on authentication 109
docking restrictions 181 SOAP fault message example 85
external application setup, about 195 support for transport headers 91
incoming XML format, tags and descriptions using Data Access Service wizard to expose
(table) 192 Siebel data to external
mobile users, restriction 181 applications 176
MQSeries, implementing with 184 XML schema support for the <xsd:any>
multivalue groups 181 tag 92
new virtual business component, Web Services Description Language (WSDL)
creating 182 about 79
outgoing XML format, tags and descriptions consuming an external Web service using the
(table) 186 WSDL Import Wizard 86
specialized business components, generating a WSDL file 85
restriction 181 importing a WSDL file 86
user properties (table) 182 invoking an external Web service 94
user properties, defining 183 link to reference material 80
XML Gateway business service, Web Services Interoperability (WS-I)
configuring 184 standard, link to reference
virtual business components, methods material 80
See also virtual business components Web Services Security (WS-Security)
Delete method example 197 standard
Error Return property set, example 198 link to reference material 80
Init method, example 199 support for UserName Token
Insert method, example 201 mechanism 100
PreInsert property set, example 203 workflows
Query property set, example 205 inbound MIME request 224
Update property set, example 209 outbound MIME request 222
virtual business services policies, about using 148
See business service methods WSDL Import Wizard