Академический Документы
Профессиональный Документы
Культура Документы
(Binding = RPC)
Stat us Activ e
HW Service Request Query Workflow Process HW Query SR Inbound Parent HTTP http://dcorpcrm.company.com/eai_anon_enu/start.swe? SWEExtSource=SecureWebService&SWEExtCmd=Execute SOAP_RPC_LITERAL Method Display Name RunProcess
Import WSDL in Siebel Tools. This creates IO and Business Service. Compile Objects.
When UsernameToken needs to be part of Siebel soap request i.e. when Siebel is expected to pass username and password as part of header to target system, modify proxy business service as follows. Add properties called Username and Password to method of Proxy Business Service. BS Name = HW Service Request Query Method Name = HWQuerySROperation Arguments=
Name CustomHeaderContext HWQuerySROperation_Input:Error Code HWQuerySROperation_Input:Error Message HWQuerySROperation_Input:Object Id HWQuerySROperation_Input:Process Instance Id HWQuerySROperation_Input:Siebel Operation Object Id HWQuerySROperation_Output:Error Code HWQuerySROperation_Output:Error Message HWQuerySROperation_Output:Object Id HWQuerySROperation_Output:Process Instance Id HWQuerySROperation_Output:Siebel Operation Object Id HWQuerySROperation_Output:ppServiceReque stIO XMLHierarchyOutput faultactor faultcode faultstring Data Type Hierarchy String String String String String String String String String String Integration Object Hierarchy String String String ListOfWc_Service_Request_IoT opElmt Integration Object Type Input / Output Input Input Input Input Input Output Output Output Output Output Output Output Output Output Output Storage Type Hierarchy Property Property Property Property Property Property Property Property Property Property Hierarchy Hierarchy Property Property Property
Siebel-Soap-Request
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Header> <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"> <wsse:UsernameToken> <wsse:Username>E465163</wsse:Username> <wsse:Password>WELC0M3</wsse:Password> </wsse:UsernameToken> </wsse:Security> </SOAP-ENV:Header> <SOAP-ENV:Body> <rpc:HWQuerySROperation xmlns:rpc="http://siebel.com/Service/FS/CopyActivity"> <Object_spcId>2-VUNSE</Object_spcId> </rpc:HWQuerySROperation> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Siebel-Soap-Reply
<!-- This is an example of RPC-Literal Binding--> <!-- Body has one element, whose name is <OperationName> + 'Reponse'--> <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <rpc:HWQuerySROperationResponse xmlns:rpc="http://siebel.com/Service/FS/CopyActivity"> <Error_spcCode></Error_spcCode> <Error_spcMessage></Error_spcMessage> <Object_spcId>2-VUNSE</Object_spcId> <Process_spcInstance_spcId>2-YC20N</Process_spcInstance_spcId> <Siebel_spcOperation_spcObject_spcId></Siebel_spcOperation_spcObject_spcId> <ppServiceRequestIO> <ListOfWc_Service_Request_Io xmlns="http://www.siebel.com/xml/Service%20Request"> <ServiceRequest> <Id>2-VUNSE</Id> <Abstract>test me 1:00 pm</Abstract> <Area>Inbound Email</Area> <Description>test me 1:00 pm</Description> <Owner>E465163</Owner> <Priority>2-High</Priority> <SRNumber>2-53498606</SRNumber> <Severity>3-Medium</Severity> <Status>Open</Status> <Sub-Area>Inbound Email</Sub-Area> <Sub-Status>Not Started</Sub-Status> </ServiceRequest> </ListOfWc_Service_Request_Io> </ppServiceRequestIO> </rpc:HWQuerySROperationResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
eApps.cfg
[/eai_enu] ConnectString = siebel.TCPIP.None.None://az18u779.company.com:2331/SBLAPPD/EAIObjMgr_enu EnableExtServiceOnly = TRUE WebPublicRootDir = /webapp/siebel_crm_dev/8.0.0.0/public/enu SiebEntSecToken = PtbkUMFMXK0VMAktJ3P9DgEAAE/X [/eai_anon_enu] ConnectString = siebel.TCPIP.None.None://az18u779.company.com:2331/SBLAPPD/EAIObjMgr_enu EnableExtServiceOnly = TRUE UseAnonPool = TRUE AnonUserPool = 10 WebPublicRootDir = /webapp/siebel_crm_dev/8.0.0.0/public/enu SiebEntSecToken = o72iRvfkUqBf8+wdcAq0BQEAAFHM
Database Authentication
LDAP Authentication
Parameter Application User Application Password Base Dn CRC Credentials Attribute Type Security Adapter Dll Name User Password Hash Algorithm Hash DB Cred Hash User Password Port Propagate Change Password Expire Warn Days (ADSI only) Password Attribute Type Roles Attribute Type
Alias ApplicationUser ApplicationPassword BaseDn CRC CredentialsAttributeTyp e SecAdptDllName HashAlgorithm HashDBPwd HashUserPwd Port PropagateChange PasswordExpireWarnDa ys PasswordAttributeType RolesAttributeType
Data Type String String String String String String String Boolean Boolean Integer Boolean Integer String String
Value cn=SiebelQA,ou=ApplicationUsers,o =company ******** o=company ******** physicalDeliveryOfficeName sscfldap RSASHA1 FALSE FALSE 389 FALSE
userPassword
Server Name Shared Credentials DN Shared DB Password Shared DB Username Siebel Username Attribute Type SSL Database Single Sign On Trust Token Username Attribute Type Use SSL (ADSI only, Obsolete) Use Adapter Defined Username
ServerName SharedCredentialsDN SharedDBPassword SharedDBUsername SiebelUsernameAttribut eType SslDatabase SingleSignOn TrustToken UsernameAttributeType UseSsl UseAdapterUsername
String String String String String String Boolean String String Boolean Boolean
<service name="HWQuerySR"> <port binding="tns:HW_spcService_spcRequest_spcQuery" name="HW_spcService_spcRequest_spcQuery"> <soap:address location="http://dcorpcrm.company.com/eai_anon_enu/start.swe? SWEExtSource=SecureWebService&SWEExtCmd=Execute"> </soap:address> </port> </service>
<binding name="HW_spcService_spcRequest_spcQuery" type="tns:HW_spcService_spcRequest_spcQuery"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"></soap:binding> <operation name="HWQuerySROperation"> <soap:operation soapAction="rpc/http://siebel.com/Service/FS/CopyActivity:HWQuerySROperation"></soap:operation> <input> <soap:body namespace="http://siebel.com/Service/FS/CopyActivity" use="literal"></soap:body> </input> <output> <soap:body namespace="http://siebel.com/Service/FS/CopyActivity" use="literal"></soap:body> </output> </operation> </binding>
<message name="HWQuerySROperation_Input"> <part name="Process_spcInstance_spcId" <part name="Object_spcId" <part name="Siebel_spcOperation_spcObject_spcId" <part name="Error_spcCode" <part name="Error_spcMessage" </message> <message name="HWQuerySROperation_Output"> <part name="Error_spcCode" <part name="Error_spcMessage" <part name="Object_spcId" <part name="Process_spcInstance_spcId" <part name="Siebel_spcOperation_spcObject_spcId" <part name="ppServiceRequestIO" </message>
<xsd:element name="ListOfWc_Service_Request_Io" type="xsdLocal0:ListOfWc_Service_Request_Io"></xsd:element> <xsd:complexType name="ListOfWc_Service_Request_IoTopElmt"> <xsd:sequence> <xsd:element name="ListOfWc_Service_Request_Io" maxOccurs="1" minOccurs="1" type="xsdLocal0:ListOfWc_Service_Request_Io"> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ListOfWc_Service_Request_Io"> <xsd:sequence> <xsd:element name="ServiceRequest" maxOccurs="unbounded" minOccurs="0" type="xsdLocal0:ServiceRequest"> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ServiceRequest">
<xsd:sequence> <xsd:element name="Id" maxOccurs="1" minOccurs="0" type="xsdLocal0:string30"></xsd:element> <xsd:element name="Created" maxOccurs="1" minOccurs="0" type="xsdLocal0:string30"></xsd:element> <xsd:element name="Updated" maxOccurs="1" minOccurs="0" type="xsdLocal0:string30"></xsd:element> . . . .
Generate WSDL on server Import this WSDL on local New BS and IOs would get created in local BS Name = HWServiceRequestQueryDLPort Method Name = HWQuerySROperationDL Arguments =
Name CustomHeaderContext HWQuerySROperationDL_Input:HWQuerySROperati onDL_Input HWQuerySROperationDL_Output:HWQuerySROperat ionDL_Output XMLHierarchyOutput faultactor faultcode faultstring
Data Type Hierarchy Integration Object Integration Object Hierarchy String String String
Service
<service name="HWQuerySRDL"> <port binding="tns:HWServiceRequestQueryDLPort" name="HWServiceRequestQueryDLPort"> <soap:address location="http://dcorpcrm.company.com/eai_anon_enu/start.swe? SWEExtSource=SecureWebService&SWEExtCmd=Execute"> </soap:address> </port> </service>
Binding
<binding name="HWServiceRequestQueryDLPort" type="tns:HWServiceRequestQueryDLPort"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding> <operation name="HWQuerySROperationDL"> <soap:operation soapAction="document/http://siebel.com/Service/FS/HWQuerySRDL:HWQuerySROperationDL"></soap:operation> <input> <soap:body use="literal"></soap:body> </input> <output> <soap:body use="literal"></soap:body> </output> </operation> </binding>
Schema
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://siebel.com/Service/FS/HWQuerySRDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.siebel.com/xml/Service%20Request"></xsd:import> <xsd:element name="HWQuerySROperationDL_Input"> <xsd:complexType> <xsd:sequence> <xsd:element name="Process_spcInstance_spcId" type="xsd:string"></xsd:element> <xsd:element name="Object_spcId" type="xsd:string"></xsd:element> <xsd:element name="Siebel_spcOperation_spcObject_spcId" type="xsd:string"></xsd:element> <xsd:element name="Error_spcCode" type="xsd:string"></xsd:element> <xsd:element name="Error_spcMessage" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> .
SchemaContinued
. . . <xsd:element name="HWQuerySROperationDL_Output"> <xsd:complexType> <xsd:sequence> <xsd:element name="Error_spcCode" type="xsd:string"></xsd:element> <xsd:element name="Error_spcMessage" type="xsd:string"></xsd:element> <xsd:element name="Object_spcId" type="xsd:string"></xsd:element> <xsd:element name="Process_spcInstance_spcId" type="xsd:string"></xsd:element> <xsd:element name="Siebel_spcOperation_spcObject_spcId" type="xsd:string"></xsd:element> <xsd:element ref="xsdLocal1:ListOfWc_Service_Request_Io"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
SOAP - Request
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Header> <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"> <wsse:UsernameToken> <wsse:Username>E465163</wsse:Username> <wsse:Password>WELC0M3</wsse:Password> </wsse:UsernameToken> </wsse:Security> </SOAP-ENV:Header> <SOAP-ENV:Body> <HWQuerySROperationDL_Input xmlns="http://siebel.com/Service/FS/HWQuerySRDL"> <Object_spcId xmlns="http://siebel.com/Service/FS/HWQuerySRDL">2-VUNSE</Object_spcId> </HWQuerySROperationDL_Input> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SOAP Reply
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns:HWQuerySROperationDL_Output xmlns:ns="http://siebel.com/Service/FS/HWQuerySRDL"> <ns:Error_spcCode></ns:Error_spcCode> <ns:Error_spcMessage></ns:Error_spcMessage> <ns:Object_spcId>2-VUNSE</ns:Object_spcId> <ns:Process_spcInstance_spcId>2-YC98X</ns:Process_spcInstance_spcId> <ns:Siebel_spcOperation_spcObject_spcId></ns:Siebel_spcOperation_spcObject_spcId> <ListOfWc_Service_Request_Io xmlns="http://www.siebel.com/xml/Service%20Request"> <ServiceRequest> <Id>2-VUNSE</Id> <ModId>5</ModId> <Abstract>test me 1:00 pm</Abstract> <Account>USA</Account> <AccountId>1-2M8Y</AccountId> <Area>Inbound Email</Area> <Severity>3-Medium</Severity> <Status>Open</Status> <Sub-Area>Inbound Email</Sub-Area> <Sub-Status>Not Started</Sub-Status> <Type></Type> <Version></Version> </ServiceRequest> </ListOfWc_Service_Request_Io> </ns:HWQuerySROperationDL_Output> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Output Arguments:
Child1 HWQuerySROperationDL_Output:HWQuerySROperationDL_Output + ListOfHWQuerySROperationDL_Output - MessageId - MessageType = Integration Object - IntObjectName = HWQuerySROperationDL_Output - IntObjectFormat = Siebel Hierarchical + HWQuerySROperationDL_Output + ListOfListOfWc_Service_Request_Io - Error_spcMessage - Error_spcCode - Object_spcId = 2-VUNSE - Process_spcInstance_spcId = 2-YC98X - Siebel_spcOperation_spcObject_spcId + ListOfWc_Service_Request_Io + ListOfServiceRequest + ServiceRequest SRNumber = 2-53498606 Id = 2-VUNSE Abstract = test me 1:00 pm Area = Inbound Email Sub-Area = Inbound Email
RPC Literal
Supports transport type HTTP, MQ, MSMQ and JMS There can be multiple child under BODY tag of the SOAP request
DOC Literal
Only supports HTTP There can be only one child under BODY tag
function Service_PreInvokeMethod (MethodName, Inputs, Outputs) { if( MethodName == "SendReceive"){ var Auth = TheApplication().InvokeMethod("LookupValue","HW_SAP_AUTHENTICATION","Username:Password"); Inputs.SetProperty("HDR.Authorization", "Basic " + Auth); } } return (ContinueOperation);
Solution
Please note it is only possible to create anonymous web services on Siebel 7.8 and above.
1.
Make sure the eapps.cfg entry for the OM you will use has the following entries:
1.1 Make sure you have the below parameters set either on the eai_anon_enu section or on the [defaults] section of the
eapps.cfg. If you set it on the eai_anon_enu section it will override the defaults section values.
2.
3.
Locate the Siebel server\bin\enu\<language>\eai.cfg file, open the eai.cfg file and review the 'AnonWebService' service to the eai.cfg file as follows:
[HTTP Services] .... WebService = WebService SecureWebService = SecureWebService .... AnonWebService = AnonWebService
4. On your web service you need to change the address from for example:
http://MyWebServer/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&Username=SADMIN&Password=SADMIN to http://MyWebServer/eai_anon_enu/start.swe?SWEExtSource=AnonWebService&SweExtCmd=Execute Note the change on the address to point to the eai_anon_enu (or the one you created) and change the SWEExtSource to point to AnonWebService (assuming this was the name you gave to the named subsystem). Along with that, make sure the operations have the Authentication Type set to None. After the changes are made, restart the Siebel Server, Gateway and web server so that all the changes take effect. Please note that using the Anonymous Session Pool for web services has a side effect that any web service that needs to use it MUST use the same named subsystem, that is, there should be no other call to any web service using the Anonymous Session Pool with a named subsystem different from the original one. If more than one named subsystem is used, the Siebel response after the second named subsystem is used will be just an 'OK' encoded in UTF16 for any other anonymous web service call. This behavior is reported on the Change Request 12-1V7F8WH which is planned to be fixed on a future version.