Search This Blog

SBL-EAI-04300: Business Service '%1' does not have method '%2' defined in the current SRF.

Applies to:
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