ITK Reference Implementation

CFH ITK Java reference implementation of the ITK Java API. The purpose of the reference implementation is to provide a simple yet functional implementation of the ITK Java APIs for use as education and reference as well some potential real world usage in lightweight ITK compliant applications.

Design principles

Undoubtedly the ITK API and reference implementation could have been coded to be more elegant and more efficient. However in order to keep the code as general and simple as possible the following design principles have been adhered to:

  • Should adhere to the ITK specifications (version 2.01)
  • Should be as simple as possible
  • The API should hide the underlying transport specifics / complexity
  • Should be easy to integrate / extend with payload specific APIs - e.g. the CDAAPI
  • Have a consistent addressing scheme for all integration patterns
  • Only use core Java (i.e. avoid uncessary external dependencies)

Design Decisions

  • Servlet container required for inbound HTTP connections
  • Serialisation / deserialisation
    • Simple XML + XSLT used for message serialisation
    • XPath used to for deserialisation
    • Static helper methods provided on relevant classes
  • Asynchronicity of the Simple Asynchronous Pattern is managed at the application layer (note it would have been equally valid for this to be managed at the transport layer).
  • Message correlation is responsibility of application layer (not transport layers) - even for Infrastructure Acknowledgements
  • Simple message responses are created by the application layer
  • Whether or not to apply Base64 encoding is a property of the ITKService
  • Whether or not to add a distribution envelope is a property of the ITKTransportRoute (may be subject to change)