Inbound Web services
External system/clients try to access siebel functionality.
We generate WSDL and share.
Generating WSDL
Create a workflow(with required process properties(when they are few in number) or
with IO(when fields are more))
In inbound web services we add our workflows and generate WSDL.
Example: Capture WhatsApp number in Chatbot - from Chatbot to DMS
Link/URL(endpoint), tag(format) , value these are sent through WSDL so that the
other system can send data to us using these parameters.
So we expose our required fields either through process properties/IO.
Outbound Web services
We(Siebel) try to access external systems/clients functionality.
We receive WSDL in this case.
from the WSDL we get to know the endpoint and the format ( tags and value we need
to send through parameters.)
Data in a Siebel application can be represented as XML.
It can be sent over a standard protocol such as HTTP which provides components that
allow bidirectional exchange of XML documents over the firewall using the HTTP
protocol.
This exchange can be made secure at the transport layer by using the HTTPS
protocol.
supports XML for an outgoing or incoming message. can be configured to use an XSD
or DTD that is externally specified to define external integration objects. Siebel
Tools includes an Integration Object Wizard that can be used to import and process
an external XSD or DTD and to generate these external integration objects that
represent the XSD or the DTD.
XSD - XML Schema Definitions - Defines the metadata(describe information of data)
of XML
DTD - Document Types Definitions - Defines the metadata(describe information of
data) of XML
Adapter
An adapter is a component that provides a low level interface to allow one
application to talk to another application. The three types of adapters available
in include:
Siebel EAI adapters
EAI UI Data Adapter.
Transport Adapter
3 layers
UI(contains basic data)
|
|
Business Layer(Contains Logics, BC, Applets etc.)
|
|
Database(Contains all/detailed data)
Now 3rd party system either requires data/sends data which we need to update
For which we use Data from UI which can be accessed using integration objects.
-----------------------------------------------------------------------------------
-----------------------------------------------
MultiValue Link Primary Id field;
Parent BC/Master BC is fetching data from Child BC
Relation is M:M
Primary Id field is a field created in parent BC
Primary Id field column -> Foreign Key Table is Child's Table
i.e The Primary Id field column will store the row id of the child record
How does this Primary Id field column get populated?
i.e although we have added foreign key table as child's table, we need to mention
how it is populated
In the MVG Applet there is a system generated field (SSA Primary Id), when we
select a record as a primary record in the MVG
the row id of that record gets stored in the Primary Id Field of parent BC.
Thus We can use Primary join to convert M:M to M:1 and filter a single record.
It increases the efficiency as the query to bring multiple records will only
trigger when MVG applet is opened
otherwise the primary join query will trigger to display the primary record data.
-----------------------------------------------------------------------------------
-----------------------------------------------
About Objects - Objects are same in any language so relate accordingly
Object - Collection of variables
It will store type of variable/property and corresponding values.
Like:
Date Object:- It is a collection of variables related to time like
Date, Month, Year, Hour, Minutes, Seconds.
var dateobj = new Date();
//This will create a dateobj which will store today's date.
You can convert a dateobj to string as per requirement
//Functions are also similar to other languages , try to get the high level data
and define fucntions accordingly
Here if we use pass by reference then no need to return the datestring.
function dateobjtostr(dateobj, &dateobjstr){
var date = dateobj.getDate();
var month = dateobj.getMonth();
var year = dateobj.getFullYear();
var hours = dateobj.getHours();
var minutes = dateobj.getMinutes();
var seconds = dateobj. getSeconds();
month = month -(-1);
dateobjstr = month + "/" + date + "/" + year + " " + hours + ":" + minutes +
":" + seconds;
}
//Now if we want to make changes to get Required Date, we have to do changes in the
date object itself.
//Then we will pass the dateobj to convert it to string for our use.
this refers to the current context of Business component.
-----------------------------------------------------------------------------------
-----------------------------------------------
Drilldown Object in Siebel:
# Drill down on a field in a "List Applet".
# Navigates to different view
Name : Name for the Drilldown Object.
Hyperlink Field : List Column name on which Drilldown needs to be created.
Business Component : The business component that the user is drilling into
(destination).
View : Name for the Destination view in the View Field.
Destination Field : The field in the destination business component whose value
equals the value of the source field in the source business component.
Source field: The field in the applet’s business component (the source of the
drilldown) whose value is applied as a search specification to the destination
field in the destination business component (the business component that is
specified by the Business Component property).
Souce field/ Destination Field :If it is within the BO then we need to put only
source field, But if we have to navigate to other BO then we need to put source
field and destination field
In Dynamic Drilldown ,the drilldown object also has dynamic drilldown destination
object definitions, each of which points to the type Field in the business
component and specifies a Value to look for there. When the value in a dynamic
drilldown destination is matched, the logic routes to a different drilldown object
(typically with a different destination view).
https://siebeloracle.wordpress.com/2009/05/29/static-dynamic-drilldown-in-siebel/
-----------------------------------------------------------------------------------
----------------
SQL Query to get columns used in calculated fields
with t as (
select f.NAME, f.CALCVAL,
DECODE(f.MULTI_VALUED, 'Y', f.MVLINK_NAME || '.' || f.DEST_FLD_NAME,
DECODE(f.CALCULATED, 'Y', f.CALCVAL,
DECODE(f.JOIN_NAME, null, b.TABLE_NAME || '.' || f.COL_NAME,
DECODE(j.DEST_TBL_NAME, null, f.JOIN_NAME || '.' || f.COL_NAME,
j.DEST_TBL_NAME || '.' || f.COL_NAME)))) VAL
from siebel.S_FIELD f
join siebel.S_BUSCOMP b on b.row_id = f.BUSCOMP_ID
left join siebel.S_JOIN j on j.NAME = f.JOIN_NAME AND j.BUSCOMP_ID =
f.BUSCOMP_ID
where b.name = 'Order Entry - Line Items')
select distinct level, SYS_CONNECT_BY_PATH(t.NAME, '/') PATH, t.NAME, t.VAL from t
start with name = 'Adjusted List Price - Display'
connect by prior CALCVAL LIKE '%[' || NAME || ']%'
order by 2;
-----------------------------------------------------------------------------------
----------------
Using SearchSpec in IO:-
IC.field = Value
"[HTIM MDF Fund Request.Pre Approval Number]='"+[&Pre Approval Number]+"'
HardCoded
[HTIM MDF Fund Request.Pre Approval Number] = "1-27648000456"
Data Validation Manager
--------------------------
Data Validation Manager aka DVM, is a Business Service that can validate business
component data based on a set of rules. In the case of a rule violation, a custom
error message appears or a user-defined error code is returned.
Advantages of DVM over Scripting :
SRF Independent
No downtime required for adding/modifying rules
Executes before any applet/BC events
Works at application level
-----------------------------------------------------------------------------------
----------------