Today I'm releasing a new EWD 3 module - ewd-feder8.
ewd-feder8 is a federation or integration platform, built as an extension of the EWD 3 ewd-xpress module. So what does it do and what's it for?
It's all about federating and integrating multiple web or REST service end-points.
At its simplest you can use it as a proxy server in front of a remote web service or REST end-point.
More usefully, you can send an HTTP or REST request to ewd-feder8, which can then forward it to every member of a group of web service or REST end-point servers. The responses from the servers are automatically combined by ewd-feder8 to create a composite response which is then returned to the client that sent the original request to ewd-feder8.
Even more usefully, you can customise ewd-feder8 by adding event handlers to:
- intercept incoming requests to ewd-feder8
- intercept responses returned to ewd-feder8 by web service or REST end-point servers
- intervene just before a combined/composite response is returned.
Things you can do when handling these events include:
- modifying the incoming request
- modifying the incoming response(s)
- modifying the composite response
but you can also forward a new request to a remote end-point server or group of servers. As a result you can easily and simply define a complex "dance" whereby a single incoming request into ewd-feder8 can generate a cascade of intermediate requests and responses between ewd-feder8 and your remote web service or REST end-points, eg for single sign-on and/or implementing other authentication services, ultimately resulting in a final, combined response being returned to the client that sent the original request to ewd-feder8.
Furthermore, because ewd-feder8 extends ewd-xpress, your event handler functions have exactly the same access to Cache as you would with ewd-xpress (courtesy of the EWD 3 module ewd-document-store). This means you can cache intermediate information within ewd-feder8 during a complex "dance" to generate a complex composite response. By also making use of the EWD 3 ewd-session module, you could also maintain EWD sessions to further assist with this process.
Your remote endpoints can be any web service or REST service, including other ewd-xpress servers.
For example, for users of VistA, the US Dept of Veteran's Affairs' EHR, you could use ewd-feder8 to manage and maintain federated access (including single sign-on authentication services) across multiple VistA systems, where each VistA system was interfaced using the EWD 3 ewd-qoper8-vistarpc module.
If you want to take a look and try out ewd-feder8, see https://github.com/robtweed/ewd-feder8
Full documentation can be found here: http://gradvs1.mgateway.com/download/ewd-feder8.pdf
Of course, like all EWD 3 modules, it's free, Open Source software, licensed under the Apache 2 license.