Have you ever had the need to display, check and process structured data in a custom way? Let’s say you want to release a complete assembly, and want to perform a series of custom checks and actions on that structure. Please welcome powerTree!
I know, we need to find a new technology, so that we can define new product names. But meanwhile our love (and obsession) for PowerShell should be well known. And it will grow, now that PowerShell went open source and it’s available on many platforms, and with PowerShell version 5, debugging capabilities have been introduced.
Anyway, back to our problem. In recent projects, we faced the need to navigate through a structure and perform custom checks and operations. In our particular case, we had to check a quite large assembly, including all drawings, and test whether all the company’s business rules comply. We actually had to release the complete assembly, including drawings, but in case where for some reasons the drawings could not be released, the parent assemblies could also not be release. The default Vault dialog cannot perform this, so we had to invent something new.
Instead of doing something custom, we decided to create a little tool that give us the flexibility to do this kind of customization in a flexible and repeatable way. So, we developed a dialog that shows data as a structure, with configurable actions. All the logic is once again in a PowerShell script, so that we can define and tweak the logic as we need, without affecting the dialog’s source code. This way, the dialog becomes useful in many different situations.
Here is the sample implementation from our project. First, we had to collect the structure of the assembly, including all the drawing. Second, we had to check the compliancy of the components from bottom up. Third, we had to perform cleaning actions on the problematic components.
For collecting the components with drawings, we had to integrate the drawings in the structure, in order to ensure that the upper level assembly can only be OK if all the children and related drawings are OK too. As drawings are parents of the model, we switched the position of drawing and component, so that the drawing becomes the child and the model becomes the child of the drawing. OK, give a look to this picture, it makes it easier:
In the example above, the assembly 10001.iam contains a child 10018.iam. However, the child 10018.iam, has one or more drawings. Therefore, we switched position between model and drawing, so that the 10018.idw becomes the child of 10001.iam. This way, if we now perform our check and the drawing 10018.idw has a problem, the top assembly 10001.iam cannot be released.
Another requirement was to be able to work in Vault, while the dialog is open. So, in case where the check finds errors, the user can fix the problems in Vault while keeping an eye on the list of problematic files.
The dialog can be extended with custom action, for instance, the “Go To Folder”, which makes it simple to jump to the problematic file in Vault and fix the problem. However, any sort of action can be configured. And the same is with Check and Process. Both buttons run a PowerShell function, therefore what should happen during the check and the process, is up to you.
As mentioned earlier, you can load into the dialog whatever you want, the way you want. It just has to be a structure (parent-child relation). The object types could be mixed. So, here for instance we load the folder structure and the according files in one dialog:
Here another example, where we load the file structure, like for the first case, but also load the according items:
Technically, it’s also possible to combine external data sources. So, for instance in the case above, the item might come from the ERP in order to check if every relevant component has a valid item.
So, the possibilities are endless. If you have the need to perform a custom check or custom operations over a custom data structure, then powerTree might be the cost effective way. Talking about costs. This is not a product you can download or purchase. Given the complexity of the topic, we provide access to this tool in the context of a project. So, if you have the need for powerTree, just get in touch with us via firstname.lastname@example.org and ask about powerTree. We will then discuss with you your requirements and ensure that powerTree is the right tool for you and define how the configuration will be done.
I hope I was able to give you an overview of what powerTree can do for you, and look forward for your feedback.