Syndeia is a digital thread platform, part of the infrastructure of an integrated system development environment. While its capabilities are available through user interfaces we provide, such as the SysML plugins and the Syndeia Web Dashboard, the full power is realized as a set of “ready-to-integrate” services for building custom interfaces and dashboards. This involves the use of Syndeia Cloud REST API calls which can be used from data science, business analytics, visualization and other data consumer applications to build powerful analysis and automation engines.
As examples of how this works, Intercax is releasing several Jupyter notebooks with Syndeia 3.5 release that illustrate how these REST API calls may be used together to create extended reports on a particular digital thread. This accompanying blog series will highlight some key features of these notebooks.
In this post, we will introduce some of the main sections of our notebooks. Future posts will dive more deeply into the specific kinds of questions which can be asked of the digital threads.
Getting Started – Syndeia Cloud Notebook
This Jupyter notebook is available as part of the API Cookbook, which may be downloaded with the Syndeia 3.5 release software and the Syndeia Cloud Python Client by regular and evaluation license holders. Click here for more information.
All Syndeia documentation can be accessed most easily through the Help icon on the Syndeia Web Dashboard once Syndeia Cloud has been installed. In terms of thinking about these queries, it may be especially helpful to review the Syndeia data model under the “API – Overview” and “API – Swagger doc” help menus in the Web Dashboard. See the first post in this blog series. Intercax periodically offers on-line live training classes that provide a comprehensive review of all things Syndeia. Check out the Syndeia Training Program page for the next offering.
Set-up and Sign-in
Steps 1 and 2 in the Hello_Syndeia_3.5_Cloud Jupyter notebook appear in similar form in all our notebooks. We import the Python libraries we will use for analysis and display in Step 1. This includes the Python language client for the Syndeia Cloud REST API, syndeia_cloud_35x_client_sdk. In Step 2, the notebook signs in to an instance of Syndeia Cloud with the user’s account username and password, which is entered at run-time. This section contains commented-out code if LDAP authentication is preferred.
Step 3 has been added as documentation by the notebook author to supplement the specific commentary in the code sections.
Getting Repositories and Repository Types
The first part of the analysis asks questions of the Syndeia Cloud database, which stores the inter-model connections and a limited set of information about the model elements at the ends of those connections. A starting point in analyzing the Syndeia Cloud database contents is to identify what repository types and which repositories of each type are being managed by Syndeia.
Step 4 uses the RepositoryTypeAPI class get_repository_types() endpoint. The entries returned represent the array of different modeling tools that Syndeia currently provides integrations for. The initial table entries appear as in Figure 1.
The cell labelled Step 4b asks, “What repositories of each type are accessible to this instance of Syndeia Cloud?” The results are tabulated as in Figure 2, where several repository URIs have been masked out. For this, we used the RepositoryAPI class with the get_repositories() endpoint. Some repository types may be represented by more than one repository, especially in the File System and RESTful types. In the Syndeia Cloud instance in our example, there were 105 repositories of 22 repository types.
The request in Step 4c uses a method, get_containers(), formulated to return a list of the Syndeia Projects, which are Containers in the Syndeia data model. Typically, each project will represent a single digital thread. A list of container names and keys is returned, but only the number of projects is printed out.
That list is used to generate a series of graph queries to count the number of current inter-model relations in each Syndeia project. The results are tabulated in Figure 3, showing a real-time record of the number of inter-model links, by project, as a particular point in time.
Fetch data in a specific integrated repository
The Jupyter notebook can also retrieve data from the federated repositories, in this case Jama Connect, via calls to the Syndeia Cloud REST API. Here we can ask questions about model elements in those repositories, whether or not they are part of a Syndeia-managed digital thread, and about the intra-model relations managed within those repositories.
Interaction with Jama (service) on Syndeia Cloud
The cell labelled 5a in the notebook asks, “Show me all the Jama repositories managed by this instance of Syndeia Cloud”. This query is to the Syndeia database like those in the earlier section, not the Jama repository, but the results in Figure 4, especially the REPO key, will be useful in the subsequent queries.
Step 5b asks, “Show me all Jama projects in Jama @ Intercax (REPO4)”. Before this query can be made, the user must authenticate into the Jama repository with username and password to establish that Syndeia, acting on their behalf, is authorized to see that data. Results are printed out as a list.
The take-home message is that we can ask complex questions of the Jama repository in the same notebook and the same API that we are using for the Syndeia Cloud digital threads and other repositories, such as Jama in the next section.
Syndeia Cloud Notebook – Conclusions
In this post, we have outlined the three main elements of our Jupyter notebooks,
- The set-up and authentication into Syndeia Cloud,
- Queries directed to the Syndeia Cloud database, and
- Queries directed to one or more of the federated repositories via the Syndeia Cloud REST API.
In subsequent notebooks, we will expand the range of questions asked, introduce notebooks focused on specific repositories or specific systems, and different ways of reporting and visualizing the responses.
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 (This part)
- 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
- Part 7– Syndeia Cloud 3.5 DOORS-NG CM-Enabled Projects Notebook
- Part 8– Syndeia Cloud 3.5 TestRail Notebook
Additional posts are in development and the content list will be revised on a regular basis.
The notebook was created by Dr. Manas Bajaj, Chief Systems Officer at Intercax, who leads product research and development, including the Syndeia platform. He focuses on new tools and technologies to support digital thread, digital engineering, and MBSE/MBSE. 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).