Applies to:
Siebel System Software - Version: 7.5.3 [16157]Information in this document applies to any platform.
Area(s):Siebel EAI
Release(s):V8 (Enterprise), V8 (Professional), V7 (Enterprise), V7 (Professional), V7 (MidMarket)
Database(s):All Supported Databases
App Server OS(s):All Supported Platforms
Latest release tested against:V8 (Enterprise)
Keywords:Web service, inbound, outbound, http, Framework, WSDL, provider, consumer, WSDL Import Wizard
This document was previously published as Siebel Technical Note 626.
Purpose
- Expose an existing Siebel business service or workflow process as a Web Service to be consumed by an external application.
- Consume a Web Service Definition Language (WSDL) file provided by an external application and have the Siebel application invoke that Web Service.
Scope and Application
This document is informational and intended for any user.
How To Test Siebel Inbound Web Services Using a Siebel Client
- ASIs are version and schema independent so you can use the same ASI invocations across different Siebel versions. The independence is accomplished through the use of internal and external integration objects.
- ASIs can be easily and quickly be exposed within the Web Services framework.
Overview
|
System
|
Step
|
Application
|
|
Provider
|
1. Identify the ASI business service to be exposed
|
Siebel Bookshelf and Siebel Tools
|
|
2. Activate the business service in the Inbound Web Services Administration View.
|
Siebel Client
|
|
|
3. Generate a WSDL that describes the web service
|
Siebel Client
|
|
|
Consumer
|
4. Import the WSDL and define the proxy objects (Business service and Integration objects)
|
Siebel Tools
|
|
5. Register the business service in the Outbound Web Services Administration View
|
Siebel Client
|
|
|
6. Invoke the Web Service
|
Siebel Client or Siebel Tools
|
- Web Services Provider
- One Siebel server environment, with the Siebel Web Server Extension (SWSE) set up
- Application servers need to be running
- Siebel Enterprise Application Integration (EAI) component group needs to be enabled
- Access to the Web Services Administration view for this application
- Since we are using a pre-built Siebel ASI, you will not need to compile any .srf files on this system.
- Web Services Consumer
- You will need a Siebel Dedicated or Zero Footprint Client.
- Siebel Tools client
- You will need the ability to compile and deploy a new .srf file on this system
- After you compile a new .srf file, you will need to stop and restart the components involved with the testing so that the new .srf file is used.
- You will also need to restart the object manager for your thin client.
- You must have access to the Workflow Process Simulator or Business Service Simulator to run tests.
- As the consumer application, you can use your own dedicated Siebel client and the sample or local database.
- As the provider application, you can use your Siebel server and your server database.
- Identify or create the business service or web service to be exposed. In this case, we are using the Siebel Contact ASI. Below is an example of how you can see it in Siebel Tools.
- Activate it in the Siebel Web Services Administration View as an Inbound Web Service. Login to the Siebel Client, and go to the following view:
- In Siebel 7.5, locate the view under Web Services Administration.
- In Siebel 7.7.x, 7.8.x, and 8.x, locate the view under Administration - Web Services.
- Navigate to the Inbound Web Services view and find the entry for Siebel Contact.
- Change the status from Inactive to Active.
- Under the Service Ports, update the URL below with your webserver, language, userid and password under the Address.
- Generate the WSDL that describes the web service and save this file. When you click the Generate WSDL button, you may get a download popup asking where you want to save the file. Change the FileName to a meaningful value such as SiebelContact.WSDL and save the file.
- Click the "Clear Cache" button after you have activated the inbound Web Service and clear the cache.
- Open up the WSDL file in a text editor application, such as Notepad.
- Execute a global search and replace (Edit -> Replace).
- Search for the following string in WSDL:
- The application will make 7 replacements. Save the new file.
- Launch Siebel Tools to import the WSDL and create the necessary objects.
- Once in Siebel Tools, launch the Web Service wizard. Go to File -> New Object -> EAI (tab) -> Web Service.
- Fill in the required fields for the WSDL Import Wizard.
- Project - A project to store business services and integration objects created. You can create a new project or use an existing project.
- WSDL Document - This is the WSDL document that is generated in the previous step.
- Runtime Data - This is a file that will be generated by the WSDL wizard. It will contain the values you will import into the Outbound Web Services Administration view.
- Log File - This is the log that will be generated by the WSDL wizard. It will contain a summary of objects created and any errors.
- After the wizard completes, you will have a new business service and new integration object.
|
Component Name
|
Original Cardinality
|
New Cardinality
|
|
ListOfContactInterfaceTopElmt
|
<blank>
|
One
|
|
/Contact
|
One or more
|
One
|
- Compile your changes into your client's .srf file. Remember to compile both the business service and integration object.
- To register the imported WSDL, login to the Siebel Client and go to the Web Services Administration View for Outbound Web Services. Click on the Import button and point to the Runtime Data file generated by the Import WSDL wizard.
- Go to the Business Service Simulator.
- In Siebel 7.5, it is under Business Service Administration.
- In Siebel 7.7.x, 7.8.x, and 8.x, it is under Administration - Business Service.
- In the Business Service Simulator, specify a Service Name and Method.
- Service Name - the name of the proxy business service, such as Default_Binding_Siebel Contact.
- For this test, we will use the Method Name, SiebelContactQueryById.
- To see which input arguments are required for this method, look in Siebel Tools at the business service.
- The names of the input arguments will different depending on the Siebel version you are using.
- For example, in the Siebel 7.7 Tools, under the method SiebelContactQueryById, you can see the required input argument is Siebel Contact_SiebelContactQueryById_Input:PrimaryRowId and it is of data type String.
- Navigate back to the Business Service simulator, click on the glyph next to the Property Name and type in the input argument name exactly as shown in Siebel Tools.
- Using the Siebel 7.7 example, you will type in Siebel Contact_SiebelContactQueryById_Input:PrimaryRowId, keeping the spacing, case and underscore characters in the Property Name field.
- For the value, supply a valid row_id, such as 0-1 for the Siebel Administrator.
- Click on the Run button to invoke the web service. If it is successful, you'll see data returned to the Output Arguments.
- Click on the Save to File button to the save the data to a file for easier viewing. You can also use this file as a starting point to determine what the input arguments for your proxy business service should look like.
- As before, the first step is to identify the required Input arguments for the method.
- In Siebel 8.0, the arguments are a Status Object String (SiebelContactInsert_Input:StatusObject) and the Integration Object instance (SiebelContactInsert_Input:SiebelMessage).
- In Siebel 7.7 and 7.8, the arguments are a Status Object String (SiebelContact_Insert_Input:StatusObject) and the Integration Object instance (SiebelContact_Insert_Input:SiebelMessage).
- In Siebel 7.5, the arguments are a Status Object String (SiebelContact_Insert_Input:StatusObject:string) and the Integration Object instance (SiebelContact_Insert_Input:SiebelMessage).
- If your proxy web service input arguments is an integration object, it is easiest to construct it from a sample integration object instance saved as an XML file. Alternatively, you can also write business service script to manually create the required property set.
- To construct the input data from sample data, you will need to first retrieve a sample integration object instance.
- In this case you will need to invoke the same webservice but with a different method called QueryById.
- This method will allow you to accomplish the following:
- Query for sample data
- Retrieve data
- Save the data to the output file
- Update the data as an XML file.
|
Step Name
|
Type
|
Business Service Name
|
Business Method Name
|
|
1. start
|
Start
|
|
|
|
2. Query for Contact
|
Business Service
|
<Your proxy business service name>
|
SiebelContactQueryById
|
|
3. Write out Contact
|
Business Service
|
EAI XML Write to File
|
WritePropSet
|
|
4. end
|
End
|
|
|
|
Process Property Name
|
Data Type
|
Integration Object
|
|
SiebelContactOutput
|
Integration Object
|
|
|
Input Argument
|
SiebelContactQueryById_Input:PrimaryRowId
|
|
Type
|
Literal
|
|
Value
|
<a row_id for a contact that exists on the web service provider>
|
|
Output Arg (Property Name)
|
SiebelContactOutput
|
|
Type
|
Output Argument
|
|
Output Argument
|
SiebelContactQueryById_Output:SiebelMessage
|
|
Input Arg
|
FileName
|
|
Type
|
Literal
|
|
Value
|
<full path and filename where to save the output as xml>
|
|
Process Property Name
|
|
|
Input Arg
|
Siebel Message
|
|
Type
|
Process Property
|
|
Value
|
|
|
Process Property Name
|
SiebelContactOutput
|
|
Input Argument
|
Siebel Contact_SiebelContactQueryById_Input:PrimaryRowId
|
|
Type
|
Literal
|
|
Value
|
<a row_id for a contact that exists on the web service provider>
|
|
Output Arg (Property Name)
|
SiebelContactOutput
|
|
Type
|
Output Argument
|
|
Output Argument
|
Siebel Contact_SiebelContactQueryById_Output:SiebelMessage
|
|
Input Arg
|
FileName
|
|
Type
|
Literal
|
|
Value
|
<full path and filename where to save the output as xml>
|
|
Process Property Name
|
|
|
Input Arg
|
Siebel Message
|
|
Type
|
Process Property
|
|
Value
|
|
|
Process Property Name
|
SiebelContactOutput
|
|
Input Argument
|
PrimaryRowId
|
|
Type
|
Literal
|
|
Value
|
<a row_id for a contact that exists on the web service provider>
|
|
Output Arg (Property Name)
|
SiebelContactOutput
|
|
Type
|
Output Argument
|
|
Output Argument
|
SiebelMessage
|
|
Input Arg
|
FileName
|
|
Type
|
Literal
|
|
Value
|
<full path and filename where to save the output as xml>
|
|
Process Property Name
|
|
|
Input Arg
|
SiebelContact_QueryById_Output:SiebelMessage
|
|
Type
|
Process Property
|
|
Value
|
|
|
Process Property Name
|
SiebelContactOutput
|
- Run the workflow process through the workflow process simulator. You need to simulate this workflow process to retrieve output or the XML file.
- Once you have the XML file saved as a file, you need modify it so that you can use it as an inbound integration object instance. The reason is because the inbound integration object tags are different than those for an outbound integration object. You will need to change the element names so the XML will work for the Insert method. You will need to modify the element values (data content) so you insert a new contact; the easiest way to do this is to change the user key values in the data content (text in blue below).
- The XML you received from the QueryById method is in the format for the QueryByIdOutput message. So you will need to convert it to the format expected for the Insert_Input message (note, not necessary for Siebel 8.x, as the tag is Siebel_spcMessage, and does not specify input or output in it's name).
- You will make this change twice (for the opening and closing elements).
- For a Siebel 7.7 test, change this tag from:
- For a Siebel 7.5 test, change this tag from:
- Then make additional changes so that the record is unique by changing the attribute data, for example the values for FirstName, Id, and LastName. You may also want to remove any other information you do not want to insert such as personal address.
- Below is the text of a modified file for Siebel version 7.7. Please note that this XML will be different depending on your Siebel version so if your XML does not match this one exactly, it is not necessarily an error.
- Now that you have the sample data, you can build a Workflow Process that will invoke the SiebelContactInsert method.
|
Step Name
|
Type
|
Business Service Name
|
Business Method Name
|
|
1. start
|
Start
|
|
|
|
2. Read in Property Set
|
Business Service
|
EAI XML Read from File
|
ReadPropSet
|
|
3. Invoke WS (Insert)
|
Business Service
|
<Your proxy business service name>
|
SiebelContactInsert
|
|
4. end
|
End
|
|
|
- Siebel Contact_SiebelContactInsert_Input:SiebelMessage (an integration object)
- Siebel Contact_SiebelContactInsert_Input:StatusObject (a string)
- Siebel Contact_SiebelContactInsert_Output:SiebelMessage (an integration object)
|
Process Property Name
|
Data Type
|
Integration Object
|
|
Siebel Contact_SiebelContactInsert_Input:SiebelMessage
|
Integration Object
|
ListOfContactInterfaceTopElmt
|
|
Siebel Contact_SiebelContactInsert_Output:SiebelMessage
|
Integration Object
|
ListOfContactInterfaceTopElmt
|
- SiebelContact_Insert_Input:SiebelMessage (an integration object)
- SiebelContact_Insert_Input:StatusObject (a string)
- SiebelContact_Insert_Output:SiebelMessage (an integration object)
|
Process Property Name
|
Data Type
|
Integration Object
|
|
SiebelContact_Insert_Input:SiebelMessage
|
Integration Object
|
ListOfContactInterfaceTopElmt
|
|
SiebelContact_Insert_Output:SiebelMessage
|
Integration Object
|
ListOfContactInterfaceTopElmt
|
|
Input Argument
|
FileName
|
|
Type
|
Literal
|
|
Value
|
<full path and filename of the modified input file>
|
|
Property Name
|
Siebel Contact_SiebelContactInsert_Input:SiebelMessage
|
|
Type
|
Output Argument
|
|
Value
|
|
|
Output Argument
|
|
|
Input Argument
|
Siebel Contact_SiebelContactInsert_Input:SiebelMessage
|
|
Type
|
Process Property
|
|
Value
|
|
|
Property Name
|
Siebel Contact_SiebelContactInsert_Input:SiebelMessage
|
|
Input Argument
|
Siebel Contact_SiebelContactInsert_Input:StatusObject
|
|
Type
|
Literal
|
|
Value
|
True
|
|
Property Name
|
|
|
Property Name
|
Siebel Contact_SiebelContactInsert_Output:SiebelMessage
|
|
Type
|
Output Argument
|
|
Value
|
|
|
Output Argument
|
Siebel Contact_SiebelContactInsert_Output:SiebelMessage
|
|
Input Argument
|
FileName
|
|
Type
|
Literal
|
|
Value
|
<full path and filename of the modified input file>
|
|
Property Name
|
SiebelContact_Insert_Input:SiebelMessage
|
|
Type
|
Output Argument
|
|
Value
|
|
|
Output Argument
|
|
|
Input Argument
|
SiebelMessage
|
|
Type
|
Process Property
|
|
Value
|
|
|
Property Name
|
SiebelContactInsert_Input:SiebelMessage
|
|
Input Argument
|
StatusObject
|
|
Type
|
Literal
|
|
Value
|
True
|
|
Property Name
|
|
|
Property Name
|
SiebelContactInsert_Output:SiebelMessage
|
|
Type
|
Output Argument
|
|
Value
|
|
|
Output Argument
|
SiebelMessage
|
- Run the workflow process through the workflow process simulator. You need to simulate this workflow process to retrieve output or the XML file.
- You can verify the record was successfully created by logging in with the Siebel client on your Web Service Provider machine. Run a query for the new contact that has the Row_ID of the record you got back from the workflow process simulator.