יום רביעי, 16 במרץ 2011

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.

אין תגובות:

הוסף רשומת תגובה