Links

Custom Button

Phorm Prohibited

The contents of this site, and communications between this site and its users, are protected by database right, copyright, confidentiality and the right not to be intercepted conferred by section 1(3) of the Regulation of Investigatory Powers Act 2000.

The use of those contents and communications by Internet Service Providers or others to profile or classify users of this site for advertising or other purposes is strictly forbidden.

« How I got started with Lotus Notes | Main| »

Anaximander, a Notes 8 plug-in for visualising the connections between Notes Databases

Category  
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 


One of the perennial problems faced by all Notes developers is understanding the connections between different Notes Databases.

Anaximander is a plug-in I'm writing for a client which visualises the connections between Notes Databases. Here's the very first output from the very first version. Shown in the picture are the connections between about 550 Notes Databases. I thought it would be complex but not this complex!

Clicking on a target database highlights which source databases have one or more connections to the target database.

A picture named M2

The next step is to improve the visualisation so that information about the connected design elements is shown in a tree view. The Java model driving the graph already has the information so it just needs a TableTree to display it.

I'd also like to filter the display to make the graph simpler. Perhaps by only displaying n generations of children from the target database so in the picture above one would only see the yellow nodes.

Oh, if you're wondering, Anaximander was pre-Socratic Greek philosopher who created one of the first maps of the world. Cool name, cool dude!

Comments

GravatarImage1 - Un-freaking-believable. I'm gobsmacked.

GravatarImage2 - Wow.

What\ how are you determining what is a "connection" between databases?

GravatarImage3 - Anaxi is basically a three step process which to some extent is customised/tailored to the clients environment.

1. I export the design (and profile documents etc) of all the databases as dxl and store them in a full-text indexed Notes Database. This database on its own is very useful for finding agents when you know the name but have forgotten which database it's in etc Emoticon

In my clients environment this is about 130,000 design elements. The first time I extract all the dxl it takes about 5 hours but subsequent runs take minutes because it only looks at design elements which have changed.

2. I run an agent against all the dxl which does a set of regular expression searches through all 130,000 design elements looking for matches which indicate a connection from one database to another. This is the 'tricky' bit and the bit that probably need more refinement. The output of the agent is a bunch of Notes DatabaseConnection documents, each one of which indicates a source/target db/design element etc

Luckily the clients environment has a few policies in place which make the analysis somewhat simpler than a general case analysis would be.

3. The Anaxi plug-in visualises the view of DatabaseConnection documents.

The beauty of doing it this way is that the visualisation is independent of the analysis. So, for example, one could manually create documents in step two or generate them via some other mechanism. So long as the correct type of Notes Document are created then Anaxi will be able to visualise them. It's also useful to be able to manually create DatabaseConnection documents for cases where one knows that it's impossible to programatically determine a connection. For example, if you had some obscure Lotusscript which constructs a database path by combining Country and day of the week i.e. gb/wed/orders.nsf, gb/thu/orders.nsf, us/wed/orders.nsf etc then one could manually create the necessary DatabaseConnection documents and Anaxi would still visualise them.

Since I wrote the last post I've added a bunch of filters to the graph so it's possible to see *only* the databases connected to the source database. In addition one can filter in/out source/target connections and 'freeze' the graph. These filters make it much easier to use the graph without getting to overwhelmed.

Hope that helps. Let me know if you have any more questions.

GravatarImage4 - Its a wonderful tool. Will this be able to identify interfaces with other technologies like oracle connections or web service calls ..

Can you post the link to code?

GravatarImage5 - It seems that you were quicker. I started same project { Link } not knowing about your effort. You have more features implemented and you are even paid for that. This is not my case so maybe I'll stop my project. Best of luck.


Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)