Interoperability, RecordMap CSV Wizard, and Money
I work as an Integration Engineer for United States Department of Veterans Affairs (VA). I work on a Health Connect production which processes many RecordMap files. I do not fully understand RecordMaps and I wanted to develop an application for the Interoperability contest where I could learn more about working with RecordMaps. I browsed InterSystems documentation for inspiration on how to start. I was happy to find CSV Record Wizard. I had created a CSV file for my Analytics contest entry. I wanted to use it to test the CSV Record Wizard. It was not obvious how to use it. The dialogue in Portal page had a field for quoted content. The data in my file consisted of quoted values separated by commas. I tried to call the underlying code from a classmethod of my own. It did not work as expected. I used Studio debugger to figure out what happened. I believed I had found a bug in InterSystems code and I created a custom class with corrective action. I brought up the issue during contest kickoff webinar and Stefan Wittmann encouraged me to post it here: CSV Record Wizard has a bug? | InterSystems Developer Community | CSV
I was able to create a RecordMap class by processing a sample file using my version of CSV Record Wizard class. I remembered there is Production Manager on Open Exchange providing REST API to manage IRIS Interoperability productions: InterSystems Open Exchange
I decided to use this REST API to create a production and add a RecordMap File Service and a BPL Process to it. I noticed the Web application was not there after zpm install production-manager. Once I had a production I configured it using Production Manager REST API calls from a classmethod. Once I achieved sending RecordMap records to my BPL Process I decided I would add a REST Operation to insert data into IRIS analytics-for-money database. I created a docker-compose file to build two IRIS images and run two IRIS containers that can communicate using the web port. The only requirement is to git clone two repositories: iris-analytics and interoperability-for-money before running docker-compose up -d from interoperability-for-money directory.
I like running applications in containers. I like to utilize Installer class to configure IRIS to run a fully configured Interoperability production automatically running. I try to get my application to work with ZPM Package Manager at each contest, because I like the opportunity to earn a bonus entry. I struggled to get my production to auto-start. I could have added code to the Installer class for this, but I did not want to duplicate code running in Installer class at build time and run it from zpm installer. For this interoperability production I added a JOB command to SYSTEM entrypoint of %ZSTART to execute my class method that creates RecordMap and Production configuration when IRIS starts. The Ensemble AutoStart global got set in Installer class. The production did not auto-start on initial IRIS startup, but it was running after IRIS restart.