A key benefit of the Syndeia digital thread platform is that it enables the user to retrieve data from all the federated repositories through a single interface, the Syndeia Cloud REST API. Several Jupyter notebooks released with Syndeia 3.5 each focus on a specific repository type. This post will cover non-Configuration-Managed (non-CM or regular) DOORS NextGen project interactions; CM-related calls will be treated in a separate post.
The Syndeia_Cloud_3.5 DOORS-NG_Regular_Projects notebook illustrates requests and responses for seven major questions.
- What projects are in a DOORS-NG repository?
- What root-level artifacts (resources and folders) are in a DOORS-NG project?
- What root-level folders are in a DOORS-NG project?
- What are the contents of a DOORS-NG folder?
- What requirements are in a DOORS-NG collection?
- How do I find a DOORS-NG artifact by ID?
- What is a DOORS-NG artifact connected to (in other models)?
For each section, we will identify the question being asked and what the results look like. More detail about the API method/Python code patterns used to make these queries are described in the accompanying TechNote(s).
Getting Started
All Syndeia documentation can be accessed most easily through the Help icon on the Syndeia Web Dashboard once Syndeia Cloud has been installed. In understanding these queries, it may be especially helpful to review the Syndeia data model under API – Overview. Intercax periodically offers live online training classes that provide a comprehensive review of all things Syndeia. Click here to know more.
Parts 1 and 2
As in the previous notebooks, the initial cells are devoted to
- Importing Python libraries, including the Syndeia Cloud Python language client,
- Authenticating into Syndeia Cloud through its own REST API, and
- Retrieving a list of repositories (DOORS-NG repositories in this example) that this instance of Syndeia Cloud is set up to access.
The results for this list are shown in Figure 1. This query was made to the Syndeia database, not the DOORS repository, but we will need a DOORS Repository Key, REPO11 in this example for DNG 7.0.2 @ Intercax, in our next DOORS-specific requests.
What DOORS Projects are in a Repository?
The cell labelled Step 2.3 asks, “What DOORS-NG projects are contained in the DNG 7.0.2 @ Intercax repository?” Before this request could be passed to DOORS, the user is asked at run-time to enter their DNG password, which is required along with their username for all requests. For the request, we used the DOORSNGApi class with the get_doors_containers() method. The results are tabulated as in Figure 2. This report shows only the project name, but project keys (IDs) are also returned with the response and will be used for later requests. For more information on the Syndeia-related Python code in this section, see the TechNote, “DOORS NG Authentication and Projects”. Link shared below.
What DNG Artifacts are in a Project, Collection or Folder?
Steps 3.1 – 3.4 are four examples of getting the contents, a list of artifacts, from a higher-level DOORS element, which could be a project, a collection or a folder. In Step 3.1, we ask, what are the root level artifacts in a specific DNG project, “JasClm702_NonCM_RequirementsProject”? These are classified as either resources (typically requirements), folders, collections, modules or other DNG artifact types. The results are tabulated in Figure 3, showing each artifact with ID and type.
Step 3.1 uses the get_doors_artifacts() method with the optional parameter container_external_key to identify the DOORS project. We can add one more parameter other_collection to get the contents of a specific collection within that project. In Step 3.2, the notebook does that for the collection “cUAV Specification”, then loops through the requirements returned for that collection individually to obtain their attributes. Figure 4 shows the results for these requirements color-coded by their Priority attribute.
The response shown in Figure 5 for Step 3.3 is a repetition of the request in 3.1 with the optional parameter type_external_key = “Folder”. Only folders within “JasClm702_NonCM_RequirementsProject” are returned.
The final example of the get_doors_artifacts() method is shown in Figure 6. The request specifies a particular folder by name, “Sandbox”, retrieves its key from results in Figure 3, and uses the optional parameter other_folder. There are 41 artifacts in this folder, including resources, collections and subfolders. For more information on the Syndeia-related Python code in this section, see the TechNote, “Navigating DOORS-NG Collections, Folders and Requirements”. Link shared below.
Search DNG Artifacts by ID
In Part 4, Syndeia uses the get_doors_artifact_by_external_key() method to search for a specific artifact by its external (DOORS-based) key. The notebook example prints out the name and url of the artifact.
What is a DNG Artifact connected to (in other models)
In Figure 7, we display a list of the Syndeia inter-model relations in the Syndeia container (digital thread project) “MBSB01” to or from the DNG artifacts from the list displayed in Figure 4. Unlike the previous requests described in this post, this request is directed to the Syndeia Cloud database, not the DNG repository, and it is made in the form of a Gremlin language query.
The query iterates through the list of artifacts and prints the number of inter-model connections for each artifact. In this example, only three of these have inter-model connections. Those appear in the table at the bottom of Figure 7 with the relation id (Syndeia key) and the source and target artifacts. Each of the artifacts is represented by a link to the element in its native repository, DOORS NG and JIRA respectively in this example. For more information on the Syndeia-related Python code in this section, see the TechNote, “Queries to Syndeia Cloud Database”. Link shared below.
Conclusions
In this Jupyter notebook, we have shown how basic information about projects, resources, collections, folders and their attributes can be retrieved from a DOORS NG repository via the Syndeia Cloud REST API. In the same notebook, we also get data about the inter-model connections those DOORS elements are participating in. In Part 7 of this series, we will extend the examples to Components, Baselines and Streams in a CM (Configuration-Managed) DOORS Project.
Jupyter Notebook: Syndeia_Cloud_3.5_DOORS-NG_Regular_Projects
Download TechNote(s).
Click here to download our Technotes.
Next in this series
The next set of posts in this series will use Jupyter notebooks as the primary means for demonstrating the Syndeia API and will focus on the following topics.
- Part 1 – Introducing the Syndeia API
- Part 2 – Hello Syndeia Cloud Notebook
- Part 3 – Syndeia Cloud 3.5 JIRA Notebook
- Part 4 – Syndeia Cloud 3.5 Analytics Notebook
- Part 5 – Syndeia Cloud 3.5 Jama Notebook
- Part 6 – Syndeia Cloud 3.5 DOORS-NG Regular Projects Notebook (This Part)
- Part 7– Syndeia Cloud 3.5 DOORS-NG CM-Enabled Projects Notebook
- Part 8– Syndeia Cloud 3.5 TestRail Notebook
Contributions by
The notebook was created by Dr. Manas Bajaj, Chief Systems Officer at Intercax, who leads product research and development. He was a contributor to the SysML (Systems Modeling Language) 1.0 open standard and leads the SysML v2 API and Services standards development as part of the SysML v2 Submission Team (SST).