[turns up amplifier, cranks up volume to 11, puts Huey Lewis and the News vinyl on record player….]
I start up Visual Studio 6.0 and settle down to some nostalgic programming with Visual Basic (VB) 6. Ah, college memories come flooding back and strangely not many related to actual study. I feel like I have stepped back in time – the processor has worked its speed up to 88 mph and now I am back using VB6. I also remember learning Delphi Version 1.0 so that I could *help* a friend do their final year project. Good times.
A long time ago I posted this blog. I had not realized it was over a year ago, but I will continue on with more information around the Export. I chose to use VB6 as it was the easiest way to start working against eRoom’s API’s. John and I discussed whether we should attempt to migrate against the eRoom database tables or use its API’s. It was decided to go down the path of using the API’s which should provide more flexibility going forward. Though I do still like the idea of migrating from the database directly.
The design of the export piece is fairly simplistic.
Start at the top of the eRoom structure and walk each branch outputting all associated metadata into a well formed XML document. The goal was to have as much data as required to recreate it all again in another eRoom instance. [Note, we have not actually written a Load module for going into eRoom.]
For the most part, in the code, every object can be treated as an IERUItem. This helps with creating helper functions as we can simply pass this object type about. The next important step is to determine the properties that are part of IERUItem by which you can further derive information. By doing this you open up a host of new goodies to delve into.
For example is this item a container. To find out check the property isContainer (which is missing from API help document). A container is a way of grouping other objects together. Kind of like a folder. If a room is being exported, first the groups and members are put into the XML, followed by properties relating immediately to the room, then a container element is identified. The Exporter takes a depth first approach, so a list of all items in the container are identified and the process continues.
One thing to note, a visual debugger is your friend. The API documentation is good up to a point. Then you realize that some object properties were left out of the documentation or property values may not be quite what you expected them to be, like properties may not be instantiated if they are not relevant to the object. Once the gaps are filled in it becomes quite intuitive working through eRoom structures.
Currently, the user can export all of the communities or facilities, or selected rooms. The design thought running behind this was to be in the position of exporting rooms to the repository of choice. In other words, if marketing and legal have all their content within the same facility but would like them to be in separate repositories, this can be accommodated. Actually it can be accommodated in a couple of ways. At the export setup, you can export specific rooms to be designated for specific repositories. All of the necessary metedata will still be exported (i.e. users, groups, etc.) with each room. The result is multiple export.xml files. Then at ingestion time, the user would ingest each export.xml and associate it with the appropriate repository. The other method would be to export all rooms and handle the repository association at ingestion time.
Some thoughts around improving the Exporter Tool is around further investigation into the eRoom XML Query interface. This opens up more options for different programming languages and different thoughts around the overall export. Of course, it could open up more gotcha’s as well 🙂 The next exciting installment around eRoom migration will be around the transformation tool. Now that we have all this wonderful XML, what do we do with it? This is were things really start to get interesting as what will the eRoom XML output be transformed into?
So who else has been looking at their eRoom environment wondering when and how they are going to migrate away from their legacy system?