NIH | National Cancer Institute | NCI Wiki  

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1.2.1 High Level Structure

 The main responsibility of the CTS2DF is to accept incoming HTTP requests and delegate to the appropriate Service Plugin implementations. At a high level, the logic of accepting an incoming request is as follows:

START
   WHILE TRUE:
      ACCEPT HTTP REQUEST

...

         THEN: RETURN NOT_IMPLEMENTED_ERROR             #If not found, assume CTS2 Service is not Implemented
         ELSE: ServiceProviderSERVICE_INTERFACE.getServiceexecute().call()              #If matching implementation is found, execute it
      END IF
   END WHILE:
END

 

HTTP Requests are accepted and validated by a series of RestControllers. The responsibility of these RestControllers is to accept requests, parse parameters, and check all possible pre-conditions. They also connect the various HTTP requests to the appropriate CTS2 Profile Interfaces. Once the RestControllers have accepted the requests and identified the needed CTS2 Profile Interfaces to fulfill it, The process of discovering the available implementations of those needed CTS2 Profile Interfaces begins.

Service Discovery happens via the ServiceProvider interface. Each Service Plugin must register this Service as an OSGi Service. In this way, a Service Plugin advertises each CTS2 Profile that it implements.

NOTE: Service Plugins are not required to implement all of the CTS2 Profile Interfaces. They may implement one, or all, or (most likely) some subset that matches the desired CTS2 functionality. 

 

1.2.2 Basic Request Sequence

...