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