Siebel Call Center - Version: 7.8.2.4 [19224] - Release: V7
Information in this document applies to any platform.
Symptoms
The following behavior was encountered.
- A Business Service (BS) had 2 methods, Method1 and Method2.
- The BS was published as inbound Web Service (WebSvc), with both method exposed as operation
- Later on, the BS was amended and Method 2 removed.
- The new version of the BS was compiled into SRF and deployed on the servers.
- The definition of the WebSvc was also amended to remove the operation corresponding to Method2
The generation of the WSDL raises the error below anyway.
SBL-EAI-04300: Business Service 'Test SR' does not have method 'Method2' defined in the current SRF.
Cause
The inbound WebSvc view is defined as below.
Applet[0]: Inbound Web Services List Applet;
Applet[1]: Inbound Service Ports List Applet;
Applet[2]: Inbound Operations List Applet;
BusComp[0]: Web Service based on table S_WS_WEBSERVICE
BusComp[1]: Port based on table S_WS_PORT
BusComp[2]: Operation based on table S_WS_OPERATION
The link Port/Operation uses intersection table S_WS_PORT_OPER, PORT_ID/OPERATION_ID
Addition of an operation to a port (bottom applet) does the following inserts
INSERT INTO SIEBEL.S_WS_PORT_OPER
INSERT INTO SIEBEL.S_WS_OPERATION
Delete of an operation does the following:
DELETE FROM SIEBEL.S_WS_PORT_OPER
When generating a WSDL, various select statements are done, including one on table S_WS_OPERATION, with id of the Implementation record uses for the Port. Also, as the deleted of published operation did not delete the record from S_WS_OPERATION, the application obviously search for the method listed in the BS's def, hence the error SBL-EAI-04300.
Solution
The above is expected. Considering we can create several ports (within same or different WebSvc) using the same implementation record, when an operation is removed from a port, only the intersection record should be removed (S_WS_PORT_OPER) and not record in S_WS_OPERATION because potentially another port can still use it. This is the purpose of many-to-many relationship.
To overcome the error, the following can be done.
- Delete the Service Port record (eventually save the information from Address and binding)
- Create a new Service Port record
- Open the Pick List on Type
- Query for the Implementation previously created for the BS, search on field [Implementation Name]=
- Delete this record
- Recreate the Implementation record on BS again (as you done initially)
- Continue the creation of the port as done initially (transport, address, binding)
Then re-create the Operation(s).
Enhancement BUG 10545401 was created to have the Web Service's administration views enhanced in the future.
No comments:
Post a Comment