Archimate Merge

My main task for my internship has been working with a business modeling tool called the Archimate Tool. The Management Consulting department of KPMG uses this tool on a daily basis to organize the various client and business dealings. Through using this software, they have identified some functionality that they wish the software had. Since it is merely an addition that they would like to be added but is not necessary, they had not previously tasked someone to work on it. So, instead of a full programming team, I have been working on this project solo for the past couple of weeks.

I have been working on two major parts. The first part was a plug-in that merges two elements. A plug-in is a set of code that adds some functionality to software. Archimate’s modeling software uses a series of elements to create the business models. In the situation where two elements were created that served the same purpose, the old method was to go through the .xml file of the model and manually copy over the information about the element and then perform some modifications in the software itself. My plugin changed this process to a simple menu button. It allows the user to choose which element they want to be the master, meaning that the final merged product will have the masters name, documentation, and id. After the master is chosen, it merges over all information (relationships, properties, etc.) to the master element and updates all the views in which the lesser element was present to now show the master element.

The second project I have been working on builds off the previous project. Instead of merging the elements, it merges the whole models. Each model can have multiple elements, all grouped by the type of elements, and multiple views. I had to go through each folder of elements and copy over each element. The problem with this approach is that if the two models you are trying to merge originally came from the same file (i.e. one person sent the same file to two different people who then modified the project and sent it back), there could be elements with the same id. In this case, I need to use the previous plug-in that I wrote to merge these two elements. This is the only part I have not completed yet, but will be completed in the next couple of days.