We are running the last few migration tests for Ganister V2. It will be ready any minute. When we develop features and test new code addition or evolution on Ganister, there are multiple ways to validate our work. First, developers run their processes and then check the result in the application. When new features are added to the main codebase, our CI/CD runs a script representing most usages of our application. Today we have 290 tests and this is growing. But between a visual check in the application and the automated script we spend an important amount of time checking the detailed result of our action by exploring data from the neo4j Browser.
The complex testing of Engineering Change Orders
Product Lifecycle Management has one particular discipline that requires to be very rigorous on how the data connections are maintained. Our CEO, Yoann Maingon has listed on its PLM blog some of the processes of the Engineering Change Order:
- What’s an interchangeable revision in Graph?
- What’s a non-interchangeable revision in a PLM graph ?
- ECO Objections and remarks
When you run some of these processes, some properties need to change on the node but it's not displayed to the user like "_isLatest" on a relationship. Other relationship like "revises" will be visible on a single node but we don't provide a global view of all the ECO changes. In the day to day life it does not matter, Ganister is built to take care of these for you. But when we develop we need to see all these changes and if we had to deal with tables from a SQL database that would be a much bigger investment and I believe you would have to build yourself a graph viewer based on these tables.
Neo4j Browser to the Rescue
Neo4j provides their browser to navigate into the graph database. You start with a cypher query to fetch the required starting nodes (or all of them but we tend to start from one node, we will explain why). Then you can double click on a node to fetch its missing relationships and related nodes. By clicking on a node or a relationship you can get their properties. For better visibility you can style edges and nodes on a label basis, adapting their size and color.
In this example the ECO in green was handling the change of two nodes (handlesChangeOf link in yellow) and generated their new revisions (generated link in green). The new revisions are related to their former revisions (revises link in pink) and new consumes link have been generated.
Thank you Neo4j for the property panel
Neo4j browser is saving us many hours compared to a sql database to check if our work is correct, what you create is so clear that it is even easier to rollback an ECO change. The only issue we had got recently solved by neo4j… the property panel!!!
It use to be terrible, when you had more than 6 or 7 properties (which might be because you shouldn't have too many props on a node).
They fixed it with a great property table on the side which doesn't seem like much but it saves us hours of slider manipulation.
Thank you neo4j!