Você está na página 1de 41

Debugging Workflow:

Quite a few readers have asked me about real time scenarios of various posts that I have
written. I try to explain with examples so that it is easy to understand but I think putting it
in real working scenario will make more sense and more understanding. So, today I am
going to narrate a story how I debugged a workflow error that we faced in our
Development environment .
One fine day I an email with the following content in it
Error Code: (SBL-BPR-00187)(SBL-BPR-00100)(SBL-EXL-00151)(SBL-SCR-00141),
Error Message: Error updating business component at step Update Sales Stage.(SBL-BPR-
00187)

This error is returned when the workflow is executing the Siebel Operation business
service.(SBL-BPR-00100)


What I could figure out from this mail was that there is an error in a workflow which has
a step named Update Sales Stage but I had to find answer to the questions like
Which Workflow?
From where it is being invoked?
Why it is failing?
So to find the RC (Root Cause) this is what I did.
Went to Administration Server > Server Management > Tasks

Queried for Workflow process manager (WPM) records

Only realized that the log level is too low to get any information

So Went to Administration Server > Server Configuration > Components to increase
the log level

Queried for WPM component and increase the log level for the following components
Workflow Definition Loading
Workflow Engine Invoked
Workflow Process Execution
Workflow Step Execution
SQL Tracing

Went again to Administration Server > Server Management > Tasks. Now I could see
enough details of workflow process to figure out which Process is failing.

The name of the process was GEAE Update Quote Sales Stage
So, I went to tools had a look at workflow only to know that It was trying to update the
opportunity sales stage and there was a script on the BC that was firing and preventing the
statusfrom being updated hence resulting in the workflow failure.
This post is supposed to give you a direction on which you can proceed. It will be only with
experience that you will know what exactly needs to be done in different situations.
Share this:

Digg
Print


Learn by Sharing Siebel Knowledge

How to Increase Log Levels in Dedicated Client
Right Click on My Computer
Goto Properties -> Advanced -> Environment Variables
Goto System Variables. Click New. Add below values
Variable Name : SIEBEL_LOG_EVENTS
Variable Value: can be (1,2,3,4,ALL). Highest value is ALL
Goto System Variables again. Click New. Add below values
Variable Name : SIEBEL_LOG_DIR
Variable Value: Directory where you wants logs like (c:\LocalLogdir)
If you dont specify the directory, it will default to /SiebelDir/client/log for Client Logs and
/SiebelDir/tools/log for Tools logs
Tools Logfile : siebdev.log
Client Logfile : siebel.log
LogOff your System and Login again. Relaunch your Siebel Application and Tools. You can see
as you navigate through the application , your logfile size keeps increasing. BE-AWARE to
reduce log level to 1 after your debugging is done, else it will create 100s of MB file
NOTE: You can also see the .dmp files in same log dir. You can get the XML files involved in
your EAI Transactions as these .dmp files.
How to design Siebel Outbound Web Services
22 APRIL 2009 6 COMMENTS


Its complicated, but lets simplify it ..
We need to configure Outbound Web Services in Siebel for invoking any third party Web Service and get data in the
form of response message, on passing the required inputs to the external Web Service.
Requirement:
Siebel needs to get the latest Currency Conversion Rates, example INR vs USD.
Solution:
We will use a third party Web Service to do this conversion and get the converted currency rate in Siebel.
WSDL: http://www.webservicex.net/CurrencyConvertor.asmx?wsdl
Implementation: Its simple, just follow the below steps in order.
1. Import the given WSDL file given above in Siebel Tools using the wizard: New Object -> EAI -> Web Services. If
you are not able to import the WSDL directly from web url, just save the WSDL as a local xml file:
CurrencyConvertor.asmx.xml on your desktop and then try to import it using the wizard.

Wsdl Import Wizard.
2. This will generated two file as below -
Runtime file: CurrencyConvertor.asmx
Log file: CurrencyConvertor.asmx.log
Runtime file: This file contains the Outbound Web Service parameters which can be imported in Outbound Web
Service Screen
Log File: This file contains the logs generated in case the WSDL import in Siebel Tools fails. If there are warnings,
they should not create any issues, and can be ignored.
3. Importing WSDL in Siebel Tools will also create a new Business Service and a few new Integration Objects to be
created. In this case new
Proxy Business Service: CurrencyConvertorSoap
Integration Objects: ConversionRate <This is Input Integration Object> and ConversionRateResponse <This is
Output Integration Object>

Proxy BS After Import of WSDL.

Integration Objects Created After WSDL Import
4. You will see that the Base Object Type property of these IOs is XML, which suggests that these are External
Integration Objects.
5. Compile your new Business Service and Integration Objects and Launch Siebel application from your dedicated
client.
6. Navigate to Sitemap -> Outbound Web Service screen. Click on Import button and browse for the Runtime file[
CurrencyConvertor.asmx ] generated by the wizard earlier.
7. This will create a proxy Outbound Web Service in your Outbound Web Services Screen by. In the Operations
applet, you will see the proxy Business Service Method Name.

Outbound Web Service Screen
8. Click on the Clear Cache button at the top applet. This completes your Web Service Creation. Now, Re-launch
your dedicated client for testing.





How To Test Siebel Workflows?
Filed under How To, Tips&Tricks, All, Configuration
Siebel Workflows can be tested using Simulators. Using simulators we set the input process properties
to some valid values and execute the simulator. Siebel provides two types of Simulator to test
Workflows: Process Simulators and Business Service Simulators.
Process Simulators: This simulator is available under Siebel Tools. Open Siebel Tools and create a
workflow appropriately. Once ready to test, mention the default values for all the inputs under the WF
process properties default string, especially Object Id. These values will be used when you simulate the
workflow. To start the process Simulator choose the WF which is having a status completed or In-
Progress, right click and choose Simulate Workflow process. Make sure you have provided all the Debug
options correctly otherwise you might have trouble. Check my previous post on setting up debug
options. Depending on what login information you have provided under debug options it will connect to
Local or Server while debugging. This will open up a new Siebel Client and you use the buttons to
traverse the workflow. I use this simulator when I am developing the workflow before I check-in to the
server. I will post another blog with more information on using this sometime next week.


Business Service Simulator: This simulator is available in Siebel Client. The Siebel Client could be Local
dedicated client or could be a web client. Before we test the Siebel Workflow under this simulator
publish and activate the workflow. Otherwise it wont work. To invoke this simulator, under Siebel Client
go to sitemap-> Administration-Business Service ->Simulator. I like this simulator very much the reason
being that even if the Process Simulator in Siebel Tools mentioned above didnt report any errors this
will definitely report errors if any. So this is very close to testing in real scenario. Other benefit of using
this is that you can save your test cases in a file and load them when necessary. This simulator can also
be used to test Business Services. I will post another blog with more information on using this simulator
sometime next week.



1. Asked for the contents of the training
Siebel 7.5
Basic Siebel Architecture UI layer, BO layer, DO layer
Navigation
Applets, Views, Business Components
Configuration
MVG, Picklists, Joins, Links
Expressions
Visibility
Concept of PARTY tables
Case Study

1. How do you differentiate between an extension table and base table?
Extension table has a foreign key relationship with a base table. Usually PAR_ROW_ID column makes the foreign key.
Extension table name like suffix _X.

1. How do you uniquely identify an extension Column?
The extension field name starts with X_
Column Type is Extension.

1. What is a business object?
A business object consists of one or more business components. Its a logical unit of information. E.g. an Opportunity business object can contain opportunity and contact business
components.
A Business Object has represents functional business area and it has relationship between business Components.

1. What is a view? What is the difference between a view and a screen?
A view is a visual presentation of a Business Object. A screen is a collection of one or more views.
Screen has multiple Views and view has multiple applets.

1. Give example of a extension table
S_CONTACT_X
S_CONTACT_XM

1. Name the various types of tables in Siebel.
Base Tables contain the application data
Interface Tables staging tables (EIM_) used for loading data.
Repository Tables contain the object definitions


1. What is a MVG? Where are the values for an MVG stored?
MVG Multi Value Group.
MVG is used to represent 1->M relation between two entities. Using MVG makes it possible to show Master-Detail relationship using only one Applet.
e.g. 1 Account -> M addresses. You can configure 1 MVG, which can store Multiple Addresses of an account.
MVG: Multi-value Group the Name justifies the function.


1. What is a Party Table? What is its use?
The concept of PARTY table was introduced from Siebel 7.0. Party refers to all types of Siebel person and business entities like Contact, Employee, User, Account and Organization
etc. The S_PARTY table is the base table for all party business components and it has multiple extension tables (S_ORG_EXT, S_CONTACT etc.) that store the business data.

1. What is .srf file?
Its the Siebel Repository File. It contains the compiled version of all the object definitions present in a project. This file is used by Siebel.exe to run the application.

1. Is it possible to add columns in the table?
Yes, tables can be extended. It can be done through the Siebel Tools.

1. What is an Applet? List out the different types of applets
The applet is responsible for displaying the data to the user. An applet maps to a business component in the business layer. The different types of applets are:
List Applet
Form Applet
Pick Applet
MVG Applet
Associate Applet
Chart Applet

1. Give examples of Business Component
Account, Contact, Opportunity, Assets, Action, Service Request

1. What is a Local Database? How it is stored?
The local database is an exact replica of the server database. It contains repository tables and data for that particular user. The local DB is extracted from the server DB by running
a server task giving the users login-id as a parameter. It is stored as a .dbf file (Sybase SQL Anywhere file).

1. Differences between BO & BC?
A Business Object (BO) is made up of one or more Business Components (BC). E.g. An Opportunity business object can contain opportunity and contact business components.
1. Enumerate the steps required to do configuration once requirement document is given (check-out project etc.).
The steps are
Check out a project from the local machine
Do the configuration changes on the local machine.
Compile it and test it on the local machine
Check In the compiled projects.
Compile the projects at server.

1. What is a Gateway Server?
Siebel Gateway Server is a server that has information about the Siebel servers and directs the server request task to the Si ebel server that is less burdened. In a single Siebel
server environment, the gateway too (mostly) lies on the same machine as the Siebel server.




1. What is the difference between Static Picklist and Dynamic Picklist?
The basic difference is that Static picklist is based on Picklist Generic BC (S_LST_OF_VAL table) and the dynamic picklist is based on BCs other that Picklist Generic.

1. How many columns you can extend in Table?
It depends on the third Party DBMS, how many columns it is supporting. Depending upon it, u can extend columns. Like Oracle is supporting 1024 columns.

20 What is Join? Suppose I want an additional field to appear in asset screen say SR#
Elucidate the various steps to configure it. (Note SR# is not present in Asset BC.)

Join creates a relationship between a BC and a table other than its base table. It allows BC to use columns from that table.
Config:
Step1 Lock the projects
Step2 Create a join between asset BC and S_SRV_REQ Table
Step3 Give the join spec specifying the source field and dest column.
Step4 Go to asset BC---fields
Step5 Create a new field add the column name which corresponds
To SR# Field in S_SRV_REQ table. Then give the join name.
Step6 Compile the project.

21. What is the significance of setting the outer join flag true?
If set true all the records can be retrieved even though the join
Fields are empty. Say for every Contact, i have a Primary Account associated with it. Thus there is a join between defined between Contact BC and S_ORG_EXT table that has the primary
account column. Now if for contact 2 there is no entry in Primary account column, then that particular record will not be retrieved of Outer Join Flag is not set. In order to retrieve all the
records we need to set the Flag to TRUE

22. What is the difference between link and join?
A link implements 1:M & M:M relationship between the BCs. Link object type makes master-detail view possible in which one record of master BC displays with many detail BC record
associated with that master BC. And the join implements 1:1 & M:1 relationship.

23. What is the purpose of EIM?
To load the data from legacy system to Siebel tables.

24. Examples of EIM Tables

EIM_ACCOUNT
EIM_AGREEMENT
EIM_ASSET

25. What are the different processes in EIM

Imports

Exports

Deletes

Merges



26. What are staging tables and what is their purpose.

Staging tables are Siebel Interface tables which are prefixed with EIM_.

Interface tables are used for maintaining the integrity while loading the data.

27. What is the primary BC? How can u find out that a BC is a primary BC in a BO?
Primary BC is a master BC from list of BCs, and parent BC business component
has the same name as the BO.

28. What is the use of a pickmap? If not specified what will happen to the picklist?
Pickmap is used to copy a value from a picklist field to a business component
field .If pickmap not specified field the there will be no values displayed and
the picklist will appear blank.

29. If the view is not in users responsibility what will happen to the drilldown?
The Drilldown will not appear.

30. Have you created any web template?
No. Siebel has provided the web templates we can directly use them.

31. What is the difference between workflow process and a workflow policy?
Workflow process is a graphical tool to define a business process. And workflow
Policy is the set of conditions and actions. When the conditions define in the workflow policy are meet, the corresponding workflow process runs.
Workflow process runs within application object manager and workflow
policy runs as Server tasks.

32. How a workflow can be invoked?
Workflow can be invoked through
Workflow policies
Run time events
Repeating Component Request
Script

33. What are the events available at BC level?
SetFieldValue, PreSetFieldValue
GetFieldValue, PreGetFieldValue
CopyRecord, PreCopyRecord
NewRecord, PreNewRecord
DeleteRecord, PreDeleteRecord
WriteRecord, PreWriteRecord
Query, PreQuery
Invokemethode, PreInvokemethode
ChangeRecord

34. How can u make a field read only dynamically?
By using the user property Field Read Only Field [field name]

35. How can u say that the link relation is 1:M or M:M?
If the relationship is M:M the link definition will have a Inter table, Inter parent
column, Inter child column whereas in 1:M relationship will have a source id and
destination id.



36. What is an association applet? What is the significance of it?
When user want to add a new record in the detail applet in Master-Detail view, it is same as we are associating a new detail record to the master record. Associate applet gives user the
available list of records that can be associated with the master record with the flexibility to add a totally new record.

37. On which table picklist generic BC is based on?
S_LIST_OF_VAL

38. Extension tables for S_Party
S_CONTACT
S_ORG_EXT
S_BU
S_POSTN
S_ORG_GROUP
39. What is static and dynamic drilldown?
In static drilldown the destination view is fixed but in case of dynamic drilldown the destination view can change dynamically depending in value in some field.

40. What is the difference between _X and _XM table?
_X is 1:1 extension table and _XM is 1:M extension table

41. If I want to extend the table with a column where can I add it? why?
We have two options for adding an extension column, we can add a column to the base table or we can add a column to the extension table. The selection criteria is that if the data in the
extension column exist for most of the records and is been used frequently then its a better option to add the column to the base table itself otherwise it data in the column is not frequently
accessed then we can add the column to the extension table.

42. What is the difference between mobile web client, dedicated web client
and wireless web client?
Dedicated web client connects directly to a database server for all data access, and it does not store any Siebel data locally.
Web client runs in a standard browser.
Wireless web client uses a wireless-enabled mobile device with a Web browser and Internet service (Laptop)
Mobile web client is designed for local data access, without the need to be connected to a server.
Handheld client uses Mobile devices with a Web browser and Internet service using the Palm operating system.

43. What are the steps to extend the database?
Check out the relevant project.
Add the column or table as an extension column or table respectively.
Apply the changes to the local database.
Compile the project and check in the changes.
Apply the changes at the server database.
Restart the server.
Activate the changes to increase the database version.

44. What is the difference between Get and Check out?
Get makes it possible for the developer to get the server copy of the relevant project but Check out along with getting the server copy of the project, also locks the project at the server so
that other developers are not able to check out the same project till the project in checked in.

45. What is the significance of undo check out? maintain lock
Whenever we want to revert back to the server copy of the project and again start the form scratch do undo check out with maintain lock. This prevent from other developers checking
out the same project in the mean time.

46. I have configured the view, compiled it still the view is not appearing? What will be the cause?
The view is not assigned to the user responsibility.

47. What is the constraint picklist?
You can dynamically filter a pick applet to display only records that have field values matching corresponding fields in the originating business components records. This can be done using
constraint picklist.

48. What is hierarchical picklist?
A hierarchical picklist displays values that are constrained by values selected in another picklist. This is done using the Parent LIC property and the BC for the main picklist is set to Picklist
Hierarchical and for the child picklist it is set to Picklist Hierarchical Sub-Area.

49. What are business component user properties?
Business component user properties allows to provide the specialized behavior such as making the record read only dynamically, changing the read only nature of the one field depending
on value present in some other field.
Some of the BC user properties are:
BCReadOnly Field
FieldReadOnlyField
DeepCopy n
DeepDelete n
OnFieldUpdateInvoke n
OnFieldUpdateSet n

50. What is the significance of a position?
Position of the user in the organization decides the amount of data that is visible to him.

51. Can we change the position during a session?
No

52. Can a user have more than one responsibility?
Yes

53. Is it possible to add more than one user to a responsibility?
Yes

54. How does a mobile client work?
The Mobile client carries the exact replica of the server database relevant to him. This helps when the client is in remote area. Then after the work is done he synchronies with the server
database to update the data and get the replica of the updated database.

55. What is the difference between a .cfg and .srf file?
The .cfg is the Siebel configuration file that has configuration details and the corresponding .srf files path is also mentioned.
The .srf file is the siebel repository file that has the compiled version of the object definitions. The .cfg file is a readable notepad file while the .srf file contains binary representation of the
object definition.



56. What is a repository?
The repository is the part of database that has the object definition stored in it. Many applications can share the same repository. The master copy of the repository lies in the server. Every
developer has its own local copy.


57. What is the significance of a primary?
Primary shows the main record associated with the master among the list of records. The primary record is displayed by default on the applet. If primary is defined it results in better
performance as it reduced the number of queries required to populate the record. Primary is the recommended practice and not the essential thing.

58. How can u set a primary for a MVG at BC level?
Under BC-MVL object definition, we can define the primary record under Primary Id field property

59. What is the significance of Force Active?
When set to TRUE retrieves data for all the fields even if the fields are not registered on the UI. This degrades the performance as extra data is retrieved even if that is not used.

60. What are diff types of a join?
Implicit and Explicit Joins.

61. What is the implicit join? Can we create a implicit join if yes.Where can we define a implicit join?
The join that are siebel provided are there definition is not present under Join object type. We cannot create implicit joins.

62. Are the joined fields editable? How?
The joined fields are not editable, but if we use Dynamic Picklist to retrieve data from joined table we can edit the fields.

63. How to create a explicit join?
Under BC child object definition, Join we define the join and the table with which join is to be created. Then we define the join specification under join child object definition, where we define
the destination column and the source field.

64. What is the significance of source id and destination column?
The Source Field property identifies the foreign key field in the business component and the Destination Column property identifies the primary key column in the joined table. If left blank
both have the default value as ROW_ID.

65. How to create a static picklist? Which fields need to be set?
For creating the static picklist we define the picklist that is to be used under the Field object definition property.
Then we define the picklist under picklist object definition with
Type Field property set to Type and
Type value set to the LOV_TYPE that is to be invoked and
Static property set to TRUE.

66. What is the difference between bounded and unbounded picklist?
Under Bounded picklist user has to select any one option from the available list but in case of unbounded picklist user can select data from the available options or add there own data.
67. What is an index? Significance?
An index object definition is a logical representation of physical index in the underlying database management system. We cannot modify or delete the standard indexes provided by siebel
but we can define the custom indexes if required.

68. Can Link be used for 1:1 relationship?
No

69. How to bring a Party data party BC?
There are implicit joins provided by siebel, to bring party data in the same party BC. The name of the implicit join is same as that of the table therefore we just need to define join property for
the single value field as the table name and the column property as the required column name.

70. How to bring a Party data other party BC?
In this case we define an explicit join with PAR_ROW_ID as a destination column under join specification.

71. How to bring a Party data non party BC?
In this case we define an explicit join with source field and destination column.

72. How to bring a Non party BC data non party BC?
In this case we define an explicit join

73. How can u set a primary for a MVG at applet level?
We can select the primary record from the available list of record in the MVG applet.

74. Are there any performance implications with a MVG? Is there any solution for it?
If primary is not defined then the number of queries required to display the applet are more than if the primary is defined.

75. What is the significance of cascade delete property? When we set it as clear what will happen?
Whenever Master record is deleted, should the child record also be deleted or not or just the foreign key is to be cleared is specified by Cascade delete property. It has three values Delete,
Clear and None.
Delete: It deletes the child record also and the FK is also removed.
Clear: It just removes the FK but doesnt delete the child record.
None: It just leaves the child record and FK as it is.

76. What is indirect MVG?
An indirect multi-value link has a parent business component that related to the business component on which the MVL is defined by a join. The source field of an indirect multi-value link is
based on a column that is joined in from another table and not a column in the base table.

77. What is the difference between a stop step and end step?
In workflow End steps shows the exception that is an error has occurred while running a workflow and the Stop is the logical end of the workflow and shows that the workflow ran
successfully.

78. How a WF process can be tested?
WF process can be tested using the workflow simulator.



79. What is the use of RCR?
Suppose I want to run a workflow process after every 10 min and continue this 10 time then RCR (Repeating Component Request) is used.

80. If there are more than one matching conditions for a workflow process. Which path will it follow?
In fact it should match all the conditions that are mentioned to run a particular process.

81. What is a sub process?
Sub process is predefined workflow process that can be invoked in the a new workflow process

82. Tell me the functionality of consumer goods.
Our client is manufacturing, selling and distributing the cigarettes under different brands with different prices. To implement the Trade marketing and Distribution they have chosen the
consumer goods vertical.

The basic functionality can be described as follows.
The sales representatives are classified into 3 groups. One is Pre-sales where the reps book the order, collect the payments, generate invoice and deliver the goods to the customers.
PromtSales where the reps only book the order from the customers
Delivery Where they deliver the goods to the customers order through the prompt sales reps and collect the payments.

It also includes the booking the return orders, performing activities like credit limit allowed, type of payment allowed, and significance of the outlet.

83. How do you implemented EAI
A: Among the various available options, we integrated the SIEBEL application with back end SAP environment by using the IBM MQSeries middleware.


84. What is significance of IBM MQSeries?
A: It comes under hub & spoke type of integration. Its an asynchronous and will be deliver the message only once. The applications which are integrated by using this middle ware need not
be online at same time. The messaging will be implemented by using queues

85. How SIEBEL application identify the IBM MQSeries queues.
A: Goto Sitemap -> Server Administration -> Enterprise Configuration -> Enterprise Profile Configuration.

Create both the connection as well as data handling sub systems of relevant type (Depends on the middle ware using). After that restart the siebel services so that parameters defined are
used to be stored under siebns.dat. These will be used by the eapps.cfg to create the connection between the IBM MQSeries and SIEBEL.

86. What is Dispatch Service?
A: When the message is received it will be initially dispatched to the workflow by using the Dispatch Workflow Process under the Data handling subsystem created in the profile
configuration.

The parsing of the incoming XML will be done by the following way

Sitemap -> Integration Administration Screen - > Dispatch Service Screen

Under rulesets, the rules are defined by using the XPATH, by using which the XML will be parsed and dispatched to either business service of workflow process.

87. What is siebel handheld?
A: By using siebel handheld we are able to deploy siebel application in the POCKETPC (limitations are there with data and no of screens). Instead of using laptop, our client is using
POCKETPCs for easy carrying as well as less consumption of time for reps to take the orders at the outlets.

88. Tell me about functionality of Sales application.
A: Our client is doing financial services in various countries. They divided them into different divisions. Each division is falli ng under a particular sales methodology. Each sales methodology
is having defined number of sales stages. In each sales stage, they are predefined number activities to be completed.

Initially when an opportunity is created, it has to under go all the sales stages and activities depending upon the Sales Methodology. The number of activities under a sales stage and the
number of sales stages depends upon the sales methodology which is in turn dependant on the division

89. What are activity templates?
A: Activity templates are used to sequence the activities order under a particular sales stage.

Goto Sitemap -> Application Administration -> Activity Templates.

90. What are the differences between the compile time business services and runtime business services?

Runtime Business Services: These BS are defined in the Application itself. Compilation is not required for these BS. These are used to be stored in the database itself.

Goto Sitemap -> Business Service Administration -> Business Service Methods
Compiletime Business Services: These BS are defined in tools. In Siebel Tools, Under Object Explorer, go to Business Service. The BS services defined here are needed to compiled into
before use.

91. What are the best practices used for scripting (Verify for more)
A: Implementing the error handling by using the try-catch-finally blocks.

92. Rate yourself in configuration, scripting, workflows, EAI (all the modules that are there in your CV).

93. What are the events available at BC level?

94. Give some scenario from previous organization which u have implemented through the script

95. What is the code to activate a customized button in script and on which event will you specify it?
At AppletPreCanInvoke event, set CanInvoke to TRUE
96. What was your role in the previous organization?
97. Business Processes Scenario included in the previous organization?
98. Your role in previous project?
99. What did you do for 2 months after u joined TCS?
100. Difference between Siebel 6 and Siebel Version 7 in very much detail including architecture?
101. How do I display totals at the bottom of List Applet
1 Set the Totals Displayed and Totals Required properties of the List object to TRUE.
2 Set the Total Required property of the specific list columns that need to be totaled to TRUE.
3 Set the Web Template used by the Base or Edit List applet Web template to Applet List Totals (Base/EditList).
4 Use the value Total for the Property attribute of the <swe:control> tag in the template file:
<swe:control id=XXX property=Total/>
or <swe:control id=XXX>
<swe: this property=Total/>
</swe: control>
When the Property attribute is set to Total, either in the <swe: control> tag or the <swe:this> tag, the total for the list column values is rendered if the list
Column is enabled for totals. If the list column is not enabled for totals, no output
is generated. This property is valid only when the <swe:control> tag is mapped
to a list column.

102. Where do we configure scale and precision?
At the column object definition.

103. How do I select dynamic pick applet in scripting?

104. In scripting how will you decide whether to use this or Getbuscomp()
When we want to refer the active BC, we use this and when we are not sure about the active BC or we want to refer some other BC whose name is known we use Getbuscomp()

105. How do I trap error of scripting in Production environment?
106. How do I trap error of Workflow?

107. When is setprofileattribute and getsharedglobal used?
SetProfileAttr is used in personalization to assign values to attributes in a user
Profile.
Syntax SetProfileAttr name, value
Returns Not applicable
Parameter Description
position Name A string containing the name of the position.
Parameter Description
name A string indicating the name of the attribute
value The value of name
Usage SetProfileAttr assigns the value value to the attribute in a user profile indicated by
name. If the profile attribute specified in the parameter string already exists, the
corresponding persistent profile attribute in the application is updated with the new
value. If the profile attribute specified in the parameter string does not exist in the
list of persistent profile attributes, it is created as a dynamic profile attribute,
without quotation marks encompassing the name.
Used With Browser Script, COM Data Control, COM Data Server, Server Script, CORBA Object
Manager, Java Data Bean, Mobile/Dedicated Web Client Automation Server
See Also Name on page 172. For more information on user profile attributes, read
Applications Administration Guide.
Example Here is an example for Browser Script:
function Applet_PreInvokeMethod (name, inputPropSet)
{
if (name == "hobbyReq") {
var hobby = theApplication().GetProfileAttr("Hobby");
if (hobby == "") {
hobby = prompt("Please enter your favorite
hobby");
theApplication().SetProfileAttr("Hobby", hobby);
}
return ("CancelOperation");
}
else
return ("ContinueOperation");
}
SetSharedGlobal
Shared global variables are unique to the user and the users associated session.
One user's global variables are not visible to other users. The variables are global
to the current user and session only. The SetSharedGlobal property sets a shared user-defined global variable, which may be accessed using GetSharedGlobal.

Used With Browser Script
Example The following example displays a status message to the user.
function BusComp_PreSetFieldValue (fieldName, value) {
if (fieldName == "Account Status") {
var cVolume = this.GetFieldValue("Current Volume");
if ((value == "Inactive") && (cVolume > 0)) {
TheApplication().SWEAlert("Unable to inactivate an
account that has a current volume greater than 0");
return ("CancelOperation");
}
else
return ("ContinueOperation");
}
else
return ("ContinueOperation");
}


108. How do I get a value of a dynamic pick list using scripting?

109. How do I call workflow process from scripting

By using scripts, workflow processes can be invoked from anywhere in the Siebel application or from external programs.
When invoking a process from a script, you can specify that the process run either on the server or in the object manager. To run a process on the server, call the service Workflow Process
Manager (Server Request). To run a process in the application object manager, call the service Workflow Process Manager.



The following is a sample script that invokes a workflow process called My Account Process. In this example, the process is invoked in the object manager.
// Example: Invoking a Workflow Process via scripting
function Invoke_Process()
{
var svc = TheApplication().GetService("Workflow Process
Manager");
var Input = TheApplication().NewPropertySet();
var Output = TheApplication().NewPropertySet();
var bo = TheApplication().ActiveBusObject();
var bc = bo.GetBusComp("Account");
var rowId = bc.GetFieldValue("Id");
Input.SetProperty("ProcessName", "My Account Process");
Input.SetProperty("Object Id", rowId);
svc.InvokeMethod("RunProcess", Input, Output);
}

110. How is the configuration different of static drilldown which points to same BC than the one which points to different BC?
In the static drill down to the other BC the destination BC and the source and destination property is defined.

111. When is link search spec used and when is BC Search spec used and how they are combined in application?
112. What is SWSE?
113. What is significance of eapps.cfg?
114. What is Siebel service?
115. What are the process properties?

116. What is an object id and what is its significance?
When testing the WF Policy for a particular record we define the row id of the object id record under default string under Process properties.

117. What is the significance of Siebel operation id?
It is the object identification of an object that is updated, created or queried during Siebel operation. It is populated automatically when the Siebel operation step is executed.

118. What is a script? And why it is used?
Sometimes there are business requirements that cannot be fulfilled using configuration. Siebel provides alternative for to achieve these and that is through Script.

119. What are diff scriptable objects?
Applets, BC, Business Services, Application.

120. What is difference between a server script and a browser script?
Browser script is written were we need to communicate with the user or desktop application. Also when the scope of the script is limited to the current record only.
Server script is written when the scope of the script is not limited to the current record.

121. What are profile attributes?
The user profile attribute are the profile attributes that are set using Set Profile attribute method and are accessed using Get Profile attribute method.



122. What is the difference between this. And Application (). Method?
Scope of this is limited to the active business object only but using Application () it is possible to refer any of the business Object.

123. How much text a Siebel editor can store.
16 K of text can be stored in Siebel editor.

124. What is the difference between preinvoke and precanInvoke event?
Preinvoke event occurs prior to calling the actual method, and PrecanInvoke event occurs prior to Preinvoke event, just to check that if the user has privilege to invoke the method.

125. What are WF server component?
WF Monitor Agent, WF Tuning Agent

126. Where can u write a business service?
At Tools and Application level.

127. What is the difference between writing a script in a tool and in an application?
Scripts written at tools level are complied in the .srf file, therefore changes cannot be incorporated easily. Scripts written at the Application level are not the complied script and thus changes
can be incorporated easily. But Application level scripts are not secure as any user having access to the view will be able to view the script. The Tools level scripts are faster to load then
application level scripts as they are complied scripts. If the script with the same name exist at both tools and application level then Tolls level script being the complied one have priority over
the application level script.

128. What are the different tables used in WF?
S_ESCL_REQ
S_ESCL_STATE
S_ESCL_ACTN_REQ
S_ESCL_LOG

129. What is a Siebel operation step? Does it support a Delete operation?
Siebel operation step user in WF to insert, update, Query the database. It does not support Delete operation.

130. What is the significance of Immediate post changes
Whenever we need incorporate the changes in the field immediately, we need to send the changes to the server. This can be done by setting immediate post changes property at the field
level.

131. What is the code to activate a customized button in a script and on which event will u use for it?
The script is written at AppletPreCanInvoke event and setting the CanInvoke to TRUE.

132. What was your role in previous organization?

133. Where did u write the script? On which event?

134. What was the business process followed?

135. When are link search spec used and when is BC Search spec used and how they are combined in application?
The link search spec will be added to the child BC search spec only if the link is active.

136. Visibility Concepts in Siebel. Where all is Visibility Specified in Siebel Application?
Visibility Concepts in Siebel ensures that what all views should be visible to the user and what amount of data is relevant for him. Responsibility and Position determines the visibility for the
user.

137.How is tabs and show dropdown configured? How they are diff from visibility prospective?
View dropdown are configured using visibility applet and visibility applet type property at the view level, and View Tabs are configured at BC View mode level.

138.You have to show Opportunity in Activity Screen. How will you do that?
Using a join from Activity BC to Opportunity Base table.

139.Difference between Siebel 6 and Siebel Version 7 in very much detail including architecture?

140. If we have fields A and B both are not mandatory fields .but if A is having value then B is mandatory, how you achieve this in Configuration?

This can be done using the Field user properties. Under Field B > User properties, add a User Property with Name = Required & Value = IIf ( [ A ] is NOT NULL, Y, N ). This will check the
value of field A and if it found out to be NOT NUL, then field B will be made Required else field B is not a required field. We can also check that if field A is having some specific value for that
field B becomes required.

141.What is the difference between Default column and Fixed Column?
Default columns take the value from the ifb file if the value is in EIM column is NULL, while Fixed column take the value given in ifb file even if the value under EIM
column is not NULL.

142.Why do we define Destination field and the Source column under join spec and not destination column and the source column?
As the Join is between a BC and the Table for mapping between the two we define the child objects of both the objects i.e. for BC we define Destination field and for Table,
the Source column. Also as we are just displaying the data from other Table and not coping the data into some other column, we dont require the destination column.

143.User is able to select record from the dynamic picklist and the controls in the applet are populated with the selected records data, but when refreshed data is not seen.
What might be the problem?

Whenever dynamic picklist is used, the pickmap shows what all fields need to be populated and it also stores the id of the selected record for future reference. This id is
not defined in our case.



144.What is get profile attribute and get shared global? What is the difference between them?
Get Profile attribute method is used for get the user profile attribute that is set using set profile attribute method to access the user specific attribute. The profile attributes are
of two types, Persistent and Dynamic. Persistent attribute are the defined attributes that exist in Siebel and the values of these attributes is actually stored in the database.
Whenever a new attribute is created it is the dynamic attribute and it is valid for the current session only. Its value is not stored in the Database.
Shared Global are the global variable declared by the user. These are session specific and the variables declared by one user cannot be accessed by some other user. They can
be set using Set Shared Global method and accessed using Get Shared Global method.

145.What are the new features added in 7.7 siebel application?

The Application home page view is more interactive with applets providing direct links to the data and common tasks related to the current user. Individual user
can personalize their homepage including layout and visible applets using the built in layout editor.
Site map shows four level of navigation.
Screen specific home pages are also provided.
Navigation links are available at screen and view level.
Back, Forward and History navigation is done supported by the browser buttons.
The active applet is highlighted.
Records can be sorted by clicking on the column itself.
Column can be freeze by double clicking on the column itself.
Columns can be arranged by drag and drop method.
Controls are logical grouped in the form applet.
Grid Layout capability provides flexible form design.
Print button is provided.
Query Assistance is provided.
Text editor is provided for the text field.
Shuttle applet simplifies associating and grouping records.
Record count option is present in the menu.
Read only view can be added in the responsibility of the user.
There is a new tab layout in Application Administration screen that makes it easier for the administrator to define default tab layout for responsibility.
Siebel 7.7 has a new Inbox functionality that provides user with a centralized list of all the items requiring their attention. This can include SR, Opportunity,
Expense Reports, Content Items.
iHelp provides real time assistance as user navigates through the application, by continually showing guidance related to the screen he is working on.
146.What is Upgrade? How does it work, explain in brief?

Upgrade is carried out to make organization specific data and functionalities available the new release. Upgrade is an iterative process that works from environment to environment. The Dev
environment is upgraded at the first step. It merges the repository with the new release. The output files, i.e. the schema and repository fil e serves as input to the prod environment. If Dev
environment is not present then the schema and repository file provided with the new release is used.

The upgrade tasks are classified as Pre upgrade, Upgrade and Post upgrade.

Pre upgrade:
It covers the following tasks, upgrade RDBMS, setting RDBMS parameters, renaming the repository, upgrade third party software, close database connections, clear pending workflow tasks,
disable custom triggers.

Upgrade:
In Dev environment
1. Run the Database server configuration utility in Upgrep mode. This performs the basic upgrade of the siebel database schema and also loads the repository to prepare for merge.
2. Then the actual merging of the repository takes place which takes the vanilla and custom repository of the earlier version and the vanilla repository of the new version, to prepare a new
custom repository for the new version.
3. Run the Database server configuration utility in Upgphys mode. This further upgrade the repository to include the changes reported after the merge and thus completes the database
upgrade.
The output from this step i.e. the two files, custrep.dat and schema.ddl that servers as input to the prod environment.

In Prod environment
1. Run the Database server configuration utility in Upgrep mode that uses the two files from Dev environment to change the database schema.
2. Run the Database server configuration utility in Upgphys mode that completes the database upgrade and also perform some admin tasks.

Post Upgrade:
Setting up the user i.e. extracting database for each developer.
Setting up the user access and visibility.
Post upgrade configuration.
Testing.


Top of Form Using the EAI HTTP Transport in Sessionless Mode

Using the EAI HTTP Transport in sessionless mode allows you to use one URL to perform Login, Request, and Logoff in a single HTTP request. This mode does not use session cookies because there is no login session between the
HTTP requests. The disadvantage of this mode is the overhead incurred by the Application Object Manager needing to log in with every request.
Table 21 presents each of the variables for sessionless mode.
Table 21. Sessionless Mode Variables
Variable Description
webserver URL of the Web server that has Siebel Web Engine installed, such as www.myserver.com.
path Default is eai. Virtual path on the server referring to the specific SWE configuration.
source Named subsystem as specified in the [HTTP Services] section in the application configuration (.cfg) file.
username Siebel user name for the Application Object Manager login.
password Password for the login user name.
data text Business service input data. Most of the time, this is the text of an XML document that on the server side is converted to a PropertySet and passed to the business service. For more information on how to pass
Properties and PropertySet to Business Services, see Siebel Business Process Framework: Workflow Guide.
Example Request for the HTTP Protocol in Sessionless Mode
In this example, the URL describes the parameters for the HTTP Inbound Transport call over HTTP:
Using HTTP GET:
URL = http://webserver/path/start.swe?SWEExtSource=source&SWEExtCmd=Execute&UserName=username&Password=
password&SWEExtData=data text
NOTE: Unlike session mode, the SWEExtCmd is Execute, not ExecuteLogin.
Using HTTP POST:
URL = http://webserver/path/start.swe
HTTP Body = SWEExtSource=source&SWEExtCmd=Execute&UserName=username&Password=
password&SWEExtData=data text
NOTE: When using the sessionless mode with the POST method, the XML data text must be URL-encoded to prevent any errors.
When using the sessionless mode with the POST method, the data text includes the login credentials as well as the XML document. Therefore, it is recommended that the data text be URL-encoded and that the Content-Type
header be set to application/x-www-form-urlencoded without specifying the character set (for example, ;charset=UTF-8).
Use an escape code for any special characters (that is, use an ampersand, followed by the special character's escape characters, followed by a semi-colon) before encoding them for the URL. For more information, see the
topic on special (escape) characters in XML Reference: Siebel Enterprise Application Integration.
Example Sessionless Mode URL
NOTE: This sample URL must be entered as a single line of text. The URL is presented here on separate lines for clarity.
http://www.myserver.com/eai/start.swe?SWEExtSource=SiebelQuery&
SWEExtCmd=Execute&UserName=user1&Password=login123
&SWEExtData=<?xml version="1.0" encoding="UTF-8"?>
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account">
<ListofSampleAccount>
<Account>
<Name>A. K. Parker Distribution</Name>
<ListOfContact>
<Contact>
<FirstName>Stan</FirstName>
<LastName>Graner</LastName>
</Contact>
</ListOfContact>
</Account>
</ListofSampleAccount>
</SiebelMessage>
To use this URL you do the following:
Change the Web server address, www.myserver.com, to your actual Web server URL.
Verify that the SWEExtSource argument has a corresponding section in the [HTTP Services] section of your eai.cfg file.
Change the Username and Password arguments to those of a valid system user, such as SADMIN/SADMIN.



Transports and Interfaces: Siebel Enterprise
Application Integration

Copyright 2011, Oracle and/or its affiliates. All rights
reserved. Legal Notices.




Difference between queues and web service:
Web Services:
They are the fastest methods of integrating external applications. Process are like no extra setup is
needed, Data can travel via internet .But They have their conditions like limitations of data can be
sent(vary from 1-4MB),retry mechanism can be needed in case of failure.
Queues:
Here we can sent more data comparing with web services. No retry mechanism is needed in case of
queues .In this case queues are more reliable But queues we needed extra h/w as well as s/w setup
needed in Siebel as well as external system/middleware.

EAI Transaction Service:

Simple Scenario

A simple usage scenario for the EAI Transaction Service is that the activity should report
when an update of this kind is made by an EAI interface rather than the end user. So I
added another business service step to the workflow as follows:

Business Service: EAI Transaction Service
Business Service Method: IsInTransaction
Output Argument: Populate the WF Process Property IsEAITransaction with the value of the
IsInTransaction output argument.


I also changed the Siebel Operation step which creates the activity record to include the
following expression in the description text.

+ IIF([&IsEAITransaction]='true'," Update made by EAI Siebel Adapter","")

As a result, the text "Update made by EAI Siebel Adapter" will be added to the description
text when EAI Siebel Adapter is currently executing a transaction upon the record.

Next, I used the Business Service Simulator to invoke EAI Siebel Adapter's Upsert operation
on some opportunities and voil, the activities were created as follows:


Other Scenarios

The EAI Transaction Service is especially useful for situations when a complete Siebel
Message is treated as a single transaction (which is the default behaviour of EAI Siebel
Adapter) and runtime events or scripts in "Pre" event handlers need to wait until all data
operations have been committed successfully.

We can imagine that the EAI Transaction Service's IsInTransaction method can be invoked
at the beginning of the respective script or workflow to determine whether the current event
has been caused by an EAI transaction and then defer the script or workflow execution.

This avoids problems which occur when the "Pre" event handlers are executed for a record
which is touched by EAI Siebel Adapter but later an erroneous record in the Siebel Message
causes EAI Siebel Adapter to "roll back" the changes (technically correct: it does not
commit).



Property Sets and XML Converters


This is a follow-up on a previous post on Integration Objects and their representation in
memory which, triggered by Jose's comment on the XML Converters overview, explained
how an integration object definition is used byEAI Siebel Adapter to produce a hierarchical
property set.

In order for an external system to read or interpret the Siebel data, the datastream must be
converted from a property set to a somewhat more standard based form of communication.

Being an early adopter of emerging technologies, the Siebel design team for version 6 (aka
Siebel 2000) decided to use XML as the favorite language for data exchange when it comes
to Siebel EAI (this was back in 1999, so kudos for being so wise to adopt the then-hyped
XML).

So how do the various XML conversion business services work exactly?

The more explorative you are, the more you learn. So grab a Siebel app, navigate to the
good ol' Business Service Simulator view and test drive the services.

I followed the following process to verify the findings below:

1. Run EAI Siebel Adapter's Query method using any integration object and sample record
you like to produce a hierarchical property set. Slightly modify the output (e.g. rename
SiebelMessage to XMLHierarchy) if needed.

2. Run the xml converter service's method against this hierarchical property set and inspect
the output.

1. EAI XML Converter

This converter service only cooperates when there is a child property set of type
"SiebelMessage" present in the input property set for the IntObjHierToXMLDoc method. This
method has a lot of optional input arguments that drive how the resulting XML should look
such as XMLCharEncoding, XMLHeaderText, UseSiebelMessageEnvelope and Tags on
Separate Lines.

As with all converter services, the resulting XML document is stored in the Value property of
the output property set, ready for consumption by a transport service.

2. XML Hierarchy Converter

Some components of Siebel CRM such as Data Quality exchange data in the form of
hierarchical property sets which have their root property set's type set to "XML Hierarchy".
In order to convert to and from such property sets, you use the XML Hierarchy Converter
business service.

The XMLHierToXMLDoc method of this business service has similar input arguments as it's
sibling in EAI XML Converter albeit they are not specific to SiebelMessage handling.

The Value property of the resulting output property set contains the generated XML
document which is an exact representation of the child hierarchy of the XMLHierarchy root.

3. XML Converter

This business service simply converts the entire input property set to an XML document and
vice versa without requiring specific child types. Its PropSetToXML method does not have
any input arguments so you have no control how the XML document is generated. However
you can control the business service's behaviour by modifying its user properties in Siebel
Tools.

Comparing the Results

If you compare the output of the three converters, you will note some differences.
Only EAI XML Converter (left) converts the properties to elements (note the Account
Status field in red borders in the screenshot below)
XML Hierarchy Converter (middle) starts with the first child property set whereas
XML Converter (right) swallows the entire hierarchy of the input property set


http://siebel-essentials.blogspot.com/search/label/EAI












Bookshelf Home | Contents | Index | PDF

Integration Platform Technologies: Siebel Enterprise Application Integration > Integration Objects > About Integration
Component Keys >
User Keys

A 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. Make sure that the generated user
keys match your business requirements; otherwise, inactivate them or add new user keys as appropriate.
In Siebel Tools, user keys are defined as Integration Component Key objects, with the Key Type property set
to User Key.
Integration component keys are built by the Integration Object Builder wizard, based on values in the
underlying table of the business component on which the integration component is based. 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.
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 the Account Name and Account
Integration Id fields present. When the EAI Siebel Adapter performs validation, it first checks the Account
Name and Account Location fields (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 the Account Location field present, but set to null, then the EAI Siebel Adapter
would pick 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.
NOTE: For performance reasons, user keys for child integration components are not included in the WHERE
clause of the SQL generated to query for child component records in the Siebel database. If you must query
the child component to find matching records, consider redesigning your integration objects, such as
creating a new integration object where the child component becomes the parent. For example, if Account is
the parent and Asset the child, and you to query for specific assets, then create a new integration object
where Asset is the parent and Account is the child.
User Key Generation Algorithm
The Integration Object Builder wizard computes the user keys by traversing several Siebel objects, including
the business object, business component, table, and link. This is because not every table user key meets the
requirements to be used as the basis for integration object user keys.
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, you can determine the table on which
your business component is based by looking in Siebel Tools.
To find the user keys for a table
1. Select the Business Component object in the Object Explorer.
The Business Components list appears in the Object List Editor.
2. Select a business component.
3. Click the link in the Table column.
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.
Figure 11. User Keys for Table S_CONTACT

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 table's 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 table's user
key. The Integration Object Builder wizard also defines one integration component key field corresponding to
each of the table's 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.
Figure 14. Contact Integration Component Key Fields

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.



Integration Platform Technologies: Siebel Enterprise
Application Integration

Copyright 2011, Oracle and/or its affiliates. All rights
reserved. Legal Notices.


Status Keys

It is useful to know the status of your integrations. For example, if you are sending an order request, you
might want to know the ID of the Order created so that you can query on the order in the future. You can
set the StatusObject method argument of the EAI Siebel Adapter business service 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 StatusObject.
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.
Ex:



Integration Component Field Properties


In this post we are going to go through the Integration Component field properties in
detail because these are the properties that you will modifying frequently.
Type: This property can have one of the three values
Data : This is the default type for the business component fields vanilla and custom fields.
System: This is the default type for the business component system fields (Id, Created,
Updated).
Custom: This is new type that has been introduced in Siebel 8.0. I havent had a chance to
play with property thoroughly but whatever I have seen so far this property can used to
introduce tags with constant values.
Name, External Name and XML Tag: These three properties are related. They are just
three different representation of the same field and are used at different time. Lets go
through them one by one
External Name: This is the name of the business component field. Lets say you added a
new field SR Number in your business component that you need to sent to external
application as part of your XML. So, you will create a new Integration Component
fieldand mention SR Number in the External Name property.
Name: For most of the scenarios this value will be same as External name. There are very
few cases where you will need to change this value and we will go through one such
scenario later in the series.
XML Tag: The external application expects new XML Tag to be ServiceRequestNumber
then in the XML Tag property you will mention ServiceRequestNumber as value.
XML Style: This is very important property and can have one of the three values:
Attribute: If you define XML Style of your field as an Attribute then once your Siebel
Message is converted into XML Hierarchy it will appear inside a XML Tag

Element: Your field will appear as an XML Tag inside XML Hierarchy

Element: Your field will appear as an XML Tag inside XML Hierarchy

ComponentElementValue: You can define one field as ComponentElementValue and it
will appear value of the the IC to which this IC fields belong. I havent been able to exact
practical use of this property, so my understanding might not be accurate. Please feel free
to correct or enhance it if you can.
Below image will show what effect these properties have on fields when they appear in XML

Attribute is property of element used to describe more about element. So, how is it decided
that, to which element this attribute will belong?? This is where the next property comes
into play.
XML Parent Field: Usually this field does not have any value but when you define a field as
an attribute then you need to specify to which element this attribute belongs. In the above
example I wanted to make App an attribute of the Folder element. So, as shown in the
screen shot below I defined Folder as parent of App.

Rest of the properties are self explanatory but if you have any questions about them, do let
me know. Before I end this post I have a question for you
What if I define an Integration Component field as Attribute but leave its XML
Parent Field blank???

Siebel EAI - Integration Objects
Siebel integration objects allow you to represent integration metadata for Siebel business
objects,XML, and other external data structures as common structures that the Enterprise
Application Integration (EAI) infrastructure can understand. Because these integration objects
adhere to a set of structural conventions, they can be traversed and transformed
programmatically, using Siebel eScript objects, methods, and functions, or transformed
declaratively using Siebel Data Mapper.

The Siebel integration object provides a hierarchical structure that represents a complex data
type.The typical integration project involves transporting data from one application to
another.In the context of Siebel EAI, data is transported in the form of an integration
message(Siebel Message).

A message,typically consists of header data that identifies the message type and structure,
and a body that contains one or more instances of data. This siebel message is nothing but
integration object instance.

An integration object instance is actual data organized in the format or structure of the
integration object.
Key Feature of Integration Object:
1)Custom Integration Component Fields:
Custom attributes can be added manually to integration objects as integration component
fields. The integration component field typeof custom attributes must be set to Custom. XML
style can be chosen as Attribute or Element, appearing in the schema as XML attributes and
XML elements, respectively.
2) Multivalue Groups in IO:
when you are creating IO the MVG Field are going to convert into a child Integration
components.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.

In Parent integration component field user property will be there that contains the entry
MVGFieldName or AssocFieldName.
3)integration component Picklists Field:
If you want to perform validation of Picklist field by "EAI siebel Adapter" provide IC Field user
property "PICKLIST=Y" otherwise validation will be taken care by Object Manager during
execution.
4)integration component Calculated Fields:
By default these fields are inactive in IC and it can be activated as per business requirement.
5)integration component Inner Join Fields:
By default the wizard inactivates such fields. If your business needs require these
fields,activate them.Activating an inner join can cause a query on that integration component
not to find existing rows.
6)integration component Field Dependencies:
Define dependency between fields by using the user properties of the integration component
field. The names of these user properties must start with FieldDependency, and the value of
each property should contain the name of the field on which the associated field is
dependent. The EAI Siebel Adapter processes fields in the order defined by these
dependencies, and generates an error if cyclic dependencies exist.
7)integration component Operation Controls:
Each integration component has user properties that indicate if an Insert, Update, or Delete
can be performed on the corresponding business component,If any of these user properties
are set to Y, the corresponding business component method is used to validate the operation.

NoInsert: if Y an Insert, can not be performed on the corresponding business component.

NoUpdate: if Y an Update, can not be performed on the corresponding business component

NoDelete: If Y a Delete, can not be performed on the corresponding business component

NoQuery: If Y a Query, can not be performed on the corresponding business component by
using EAI Siebel Adapter.

NoSynchronize: If Y a Synchronization, can not be performed on the corresponding business
component by using EAI Siebel Adapter.

AdminMode: If Y then 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.

IgnorePermissionErrorsOnUpdate: Used to suppress the errors from having the NoUpdate,
The error is ignored and processing continues.

IgnorePermissionErrorsOnInsert: Used to suppress the errors from having the NoInsert, The
error is ignored and processing continues.

IgnorePermissionErrorsOnDelete: Used to suppress the errors from having the NoDelete, The
error is ignored and processing continues.

8)Integration Component Keys:
There are multiple IC Key which are controling operation are as follows:-

User Key:
A user key is a group of fields whose values must uniquely identify a Siebel business
componentrecord. During inbound integration, user keys are used to determine whether
the incoming data updates an existing record or inserts a new one.

Status Key:
In many integrations, we want to know the status of Integration Operation.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 StatusObject.

Hierarchy Parent Key:
The Hierarchy Parent Key is used for integration objects that have a homogeneous hierarchy.
This key should only have the Parent Id. The Hierarchy Parent Key is used for maintaining the
hierarchy and keeping the data normalized.

Hierarchy Root Key:
The Hierarchy Root Key is an optional key that is useful only when integration objects have a
homogeneous hierarchy. You can use this key to improve performance. The Hierarchy Root
Key must have only one field, Root Id, which the EAI Siebel Adapter populates with the value
of the ID field in the component instance that is in the root of the homogenous hierarchy.

Você também pode gostar