Steps to Implement a Provider
Essentially a Provider is a 'Server' in the traditional sense. It will most likely require something like a web- or application server (IIS, JBoss, Tomcat etc) to deploy a provider. A provider can be quite simple or it can have quite a bit of complexity, depending what it will support. In a DIRECT environment the provider must also implement the environment provider interface. In a brokered environment the provider doesn't have to worry about this as the broker will manage the environments for the provider. Either way there are several steps or components that must be considered for a provider implementation.
- Chose the data model you provider deals with (i.e. SIF AU 1.3)
- What SIF Objects does the provider deal with?
- Provider must be able to marshal/unmarshal your data model to/from XML/JSON
- Manage the SIF Environment for the consumers in a DIRECT environment.
- Does the provider publish Events?
- Does the provider interact in a direct or brokered environment?
- Does the provider support delayed responses (unlikely in a DIRECT environment)?
Once the above is decided you should be in a position to start implementing all or at least parts of your provider.
How do you get hold of a data model and how do you include this in your provider? This is the first thing you will ask yourself. In the past you most likely would have used the OpenADK to take care of this. In SIF3 that has changed. There is no OpenADK! Not yet anyway...
There are several ways how you can get the SIF Data Model you need for your provider:
- Create the model object yourself. This can be a lot of work, or you only implement the SIF objects you need for your provider.
- Use the SIF Specification's XSD that defines the data model and use some sort of generator to create the data model classes for you based on the XSD (that us what the SIF3 Frameworks provide you with).
- Maybe a 3rd Party has a library that provides you with the classes for the data model you require.
Whatever method you use, you will require functionality that marshals your data model classes into XML/JSON or unmarshals XML/JSON back to your data model classes.
If the provider works in a DIRECT environment it must also implement a basic version of the environment interface. This can be a challenge and frameworks may be of help. See also the SIF Environment pages.
Events (DIRECT environment)
If your provider publishes Events it must further implement the Queue Interface/Connector, Queue Manager, Event Connector, Subscription Connector etc. At that moment you may agree that a provider could become complex and that a brokered environment might be a better solution. The broker would generally manage queues for providers and consumers.
If you use the SIF3 Farmework (Java only as of May 2014) all of the above is taken care of. You can implement a provider almost immediately, assuming you use a data model that has the marshal/unmarshal functionality supported. In the SIF3 Framework from GitHub there is such a data model for SIF AU 1.3. Use the Developer's Guide that details what steps, classes, configurations you need to implement or consider to get a provider implemented.