This week I have been working on rewriting storage and retrieval in the Neoj4 database to make it easier to draw the graphs using Graphviz. It took much longer than expected because of problems I was having with Neo4j, but I have completed storage of a Run object (which represents the trace of a workflow run and contains invocations and their associated input/output data) and retrieval of a Run object out of the database. Last week I was having problems with the storage, because after I stored all the invocations and data, I have to traverse the run to find initial inputs and final outputs of the run and create relationships to them from the run to make queries easier and much faster. I was having problems getting that traversal to work using Neo4j’s traversal system and went on the Neo4j discussion boards to find answers. I never did get that traversal working in Neo4j so I ended up writing that one in java code that accesses my REST wrapper classes. All the other traversal’s that I have tried have been successful so I would still say that Neo4j is simplifying queries, it just does not have sufficient documentation yet to make getting started easy if you want to run the Neo4j database as a server rather than in embedded mode. That problem is solved now though so I can move on to writing code for the queries that we want to execute on the database. I also got finding paths in the database working this week using Neo4j, so that should simplify queries which we are working on right now. Hopefully I have solved all the issues we are going to have with Neo4j and we will be able to ignore the little details of Neo4j from this point on.
If there’s anything specific you’re missing in the Neo4j documentation, please drop me a mail!