The last months I’ve been working on the Entity Relation Diagram Creator plug-in for the XRM ToolBox. At this moment the plug-in is functioning well and some new ideas start to cross my mind. E.g. a much more advanced way of creating an initial layout of the entities within a solution.
The entity layouting algorythm has had a couple of iterations. Going from a simple grid based layout in which the grid row height is determined by the largest entity, to a flexible grid based layout in which the grid row height is variable per column of expanded and collapsed entities.
For smaller solutions the layouting is fine, however if you generate an Entity Relation Diagram for large solutions such as the “Default Solution”, you end up with a grid of hundreds of entities.
From there on it can be hard to drag the entities to an easy to handle layout.
Then the following idea popped up, what if during the initial generation of the Entity Relation Diagram I determine what the hotspots are in the diagram. And then create a layout based on the hotspots.
A hotspot is in my eyes an entity that has relationships with many other entities. Based on the number of inter entity relationships, I can create an ordered list from hotspot to cold, from there on I could render a grid layout like the example below.
However I forsee the following problems when it comes to related entities that are used in multiple hotspots:
How do I place them on the canvas?
Should I place the related entities in such a way that the relationship connections are as efficient as possible?
Do I need to duplicate them per hotspot?
When duplicate the related entities per hotspot, a number of functional areas will appear on the diagram. However the number of entities to render might grow exponentially.
Do I need a new rendering mode in which I render a diagram per hotspot?
Do I need a rendering mode in which I just render the hotspot entities?
In this mode I show only the hotspot entities related in some way to each other.
As you can see a lot of questions that need to be answered. Can you help me? What should I do?
For now I’m stuck…Your ideas are more than welcome!