In the last couple of years, we have seen Oracle Cloud Infrastructure is getting a reputation for reliability and becoming a key player in the cloud market.
A few months ago I also cleared Oracle Cloud Infrastructure 2019 Certified Architect Professional and Oracle Cloud Infrastructure 2019 Certified Architect Associate certifications.
It’s now time to get hands dirty with OCI services. I have my personal free OCI account and the idea was to use only free resources to try to build a practical solution.
Well, recently I have been asked for the possible ways how to synchronize downstream or co-existent applications with the HR data that are maintained in the Oracle HCM Cloud system in real time. It depends on detailed requirements but in general, there is a solution that allows polling HR events (referential data updates as well as employment transactions). I am talking about the Atom feeds feature. You can review my blog where I have explained the Atom feeds feature in details.
So I came up with a simple integration flow involving a couple of OCI free resources.
Below is a diagram that describes an integration flow:
Let me go through all components:
- Compute Instance
As you can see I use a free compute instance with a minimal shape but it’s quite enough to run a simple python code that implements atom feeds reader and invokes a notification REST API service to publish messages.
For demonstration purposes I implemented only a new hire event but you are free to extend a code for all supported atom feeds.
A Python script launches every 30 second and polls atom feeds since the last run.
Here is an original code attached:
It is running as a background process:
Once it finds new events it calls the oci_notification function that invokes OCI rest service to publish message to the specific topic. It was a bit challenging to figure out how to sign Oracle Cloud Infrastructure API requests. It is described here.
The OCI Notifications service broadcasts messages to distributed components through a publish-subscribe pattern, delivering secure, highly reliable, low latency and durable messages for applications hosted on OCI and externally. So you can add as many subscribers as you need.
Concludes the post a brief “silent movie” that demonstrates the described integration scenario in action.
I used a notification service just for the proof of concept. In a real scenario, it could be replaced with REST API calls to the feeding systems (databases).
I hope you find this useful.