Is it Possible to List / Report the DOORS Next Artifacts Not Used in a Module?
One of the problems with the 'Remove Artifact' is that if the user then forgets to select 'If the artifact is not in other modules, permanently delete it' it is removed from the module but left in the 'requirement soup'.
I need a way to identify these orphan artifacts so that we can find and and then, if needs be, delete them.
Report Builder doesn't seem to provide any help - if I start with 'Requirement' it's impossible to specify constraints on a relationship that doesn't exist (i.e. the absence of a 'uses' relationship). In fact it's impossible to specify conditions on any relationship, only artefacts.
Is there any mechanism short of having to learn SPARQL and using the 'Advanced' section to handcraft a query that allows me to find these unused artifacts?
6 answers
Hi Nic,
There's a system attribute called Used in Modules, might that help?
Here's an example where I added it to my view in a base artifacts folder. The artifact where the icon does not display is where I removed the artifact from a module, but did not permanently delete it.
Regards,
Carol
Comments
Hi Carol - I don't think this is viable. It takes ages to display. I can't see any mechanism to allow me to use the value of this attribute in a View or a Report.
Regards
Nic
There is a partial method. In a view it is possible to select 'Where Used (Modules) Is Not Any Of ... [checklist for modules].
The problem is then that this list doesn't update i.e. if any modules are added the view definition needs to be edited to add the new module(s). It also takes a while to run to the point where it issues a warning.This doesn't look to be feasible either.
Use Report Builder and the Data Warehouse as a data source.
Add your requirement artefact and then in conditions, select "Collection or Module is Unassigned". That will show you all artefacts matching your other conditions that are not in any collection or module
Comments
Sounds like the answer but I cannot see the condition you suggest for a Requirement artifact.
Make sure you're using the Rational Data Warehouse data source for your report
I cannot use the Data Warehouse because configuration management has been enabled '..
if you enable configuration management capabilities for these projects you can only create reports using the Report Builder with an LQE data source.
Then your only option is to turn the relationship round and use:
Requirement --Does not Exist--> Module
Requirements are "Used By" a Module and I believe that's the only relationship that they can have, so if you go with the above it should work
tested this the other day and it worked for me
You can get the list of DOORS Next artifacts not used in any module using Rational Publishig Engine. A simple RPE template with some JavaScript/condition should give you this output:
https://server:port/rm/publish/resources?projectName=name1 will provide all resources in the project (named name1)
If you refer the XML returned,
dataSource/artifact/identifier will give the resource/artifact ID and
dataSource/artifact/moduleContext/contextBinding/moduleDisplayName will give the module in which the artifact is used.
If any artifact is used in more than one module, there will be multiple entries for that artifact.
Comments
Again - possibly correct. We don't have access to RPE (held by a remote site).
Presumably I could do the same thing in Report Builder using SPARQL in the Advanced pane (if I understood how to construct the query)? One of the real problems is the lack of a published schema against which to construct queries / views / reports.
Nic,
Try this...
Open your component, go to the Views tab (leftside), then create a filter by clicking the blue plus symbol.
Once you have the filter options up, scroll to the bottom of the attribute list to find "Where used (Modules)", select "Is not any of", click Browse and shift/ctrl+select to pick all modules of interest from the list.If you want to find arts not used in any Module then you'll need to select all the modules.
If you do not have too many artifacts in the component then this filter may be able to run to completion without timeout. If not then add another filter, eg on Artifact Type and select only those you are interested in....
Once you're done you can save this artifacts view (just like a module view except this is a view outside a module in the folder structure) with the filter to a new View, eg "Artifacts not in a module", so it can be called any time.
And it's a View, so you can also export the data out to csv/xls/xlsx if needed.
Comments
Hi Adrian - I'd already tried this and given up on this. It's not feasible in terms of performance (70K artefacts and rising daily) - even by restricting to an artefact type.
The other problem with this approach is having to specifically choose a set of folders (which requires the selection to be modified as more folders are added because it doesn't have the sense to choose child folders if the parent is selected).
Thanks anyway.
Hi Nic
OK, looking at the artifact count you may want to check if you can split that content into more than 1 component to improve performance.
Here's some info on recommended limits --> https://jazz.net/wiki/bin/view/Deployment/DNGPerformanceAndData
Hi Adrian - that's interesting. 200,000 artifacts per project is severely limiting - particularly when we include non-functional design verification artifacts that aren't properly handled by Quality Manager (and functional test).
What are the implications on traceability / views between components?
Report Builder will allow selection of multiple components so that end should not be a problem.
Hi all,
I have the same issue like Nic and searching for solution I found this post. We are searching for base artifacts which are not in any or specific Module. Because of performances we are looking for Report Builder solution. In our case Report Builder works for OK with Used By link for base artifacts within the Module, but searching for orphans is impossible.
LQE for Configuration counts differently base artifacts and module artifacts what mans module artifact are count minimum twice, as based and as module artifact.
Result is a following
Used By (Required) - works correctly
Used By (Does not exist) - list all artifacts as base artifacts, no matters if artifacts are in module or not.
Used By (Optional) - duplicates entries, each module artifact is present minimum twice, as base and as module artifact.
Do you have any advice or solution?
Tnx
I know this is an old article but look here: Finding artifacts which are not in a module using JRS