You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

I try to undestand the workflow for pb note : SO Weekly Meeting 2021-04-28

It's not a documentation but a debug note


SDNCAdapterV1.bpmn

1- Process message

Call  SDNCAdapter.preProcessRequest (groovy)

Prepare SDNC HTTP call (body and header)

Header "X-ONAP-RequestID" is set with variable "mso-request-id"

This workFlow have an input message : "sdncAdapterWorkflowRequest"

It's a XML with a tag "RequestHeader" and inside a tag "RequestId" this RequestId will be set as value of variable "SDNCA_requestId"

2- Invoke SDNC Adapter

No groovy code, juste a HTTP call to SDNC with data from step 1

3- Test : "is Response Ok?"

Test Http response code from step 2, if it's 200 go to step 4.

4- Reset callback request and set timer value

Call SDNCAdapter.resetCallbackRequest (groovy)

Remove var sdncAdapterCallbackRequest and set timeout (5 minutes by default can be change with param : mso.adapters.sdnc.timeout )

Launch SubProcess "Wait for asynchronous message" and wait SDNC callBack.

In this workflow it's waiting for a message "sdncAdapterCallbackRequest"

5- Timeout

If SubProcess "Wait for asynchronous message" still running after 5 minutes (timeout set step 4)

Call SDNCAdapter.setTimeout (groovy)

With Thread.sleep(1000) → to remove ?

Only debug and tace log, why no warning or error log ?


Callback Webservice

WS implementation is into org.onap.so.bpmn.common.workflow.service.SDNCAdapterCallbackServiceImpl

    @WebMethod(operationName = "SDNCAdapterCallback")
    @WebResult(name = "SDNCAdapterResponse", targetNamespace = "http://org.onap/workflow/sdnc/adapter/schema/v1",
            partName = "SDNCAdapterCallbackResponse")
    public SDNCAdapterResponse sdncAdapterCallback(@WebParam(name = "SDNCAdapterCallbackRequest",
            targetNamespace = "http://org.onap/workflow/sdnc/adapter/schema/v1",
            partName = "SDNCAdapterCallbackRequest") SDNCAdapterCallbackRequest sdncAdapterCallbackRequest) {

        String method = "sdncAdapterCallback";
        Object message = sdncAdapterCallbackRequest;
        String messageEventName = "sdncAdapterCallbackRequest";
        String messageVariable = "sdncAdapterCallbackRequest";
        String correlationVariable = "SDNCA_requestId";
        String correlationValue = sdncAdapterCallbackRequest.getCallbackHeader().getRequestId();

        CallbackResult result = callback.handleCallback(method, message, messageEventName, messageVariable,
                correlationVariable, correlationValue, logMarker);

        if (result instanceof CallbackError) {
            return new SDNCAdapterErrorResponse(((CallbackError) result).getErrorMessage());
        } else {
            return new SDNCAdapterResponse();
        }
    }


All code to link the Http to process are into CallbackHandlerService.correlate() method

In this code we create a query to Camunda runtime to find process waiting for message "sdncAdapterCallbackRequest" with variable "SDNCA_requestId" set to value of requestID




  • No labels