The WSO2 Governance Registry (G-Reg) is an SOA-integrated registry-repository for storing and managing data or metadata related to services and other artifacts. It consists of two Web-based interfaces: the G-Reg Publisher and G-Reg Store. The Publisher is used to create and manage assets, while the Store is used to search for and subscribe to assets.
Let's take a look at the basic use cases of the G-Reg using a sample scenario.
Introducing the sample
BuyMore is a fictitious supermarket chain with more than 200 retail branches. Given below is a snapshot of the existing services of BuyMore with their lifecycle states:
Service | Version | Description | Current Lifecycle State |
---|---|---|---|
BuyMoreBillCalculateRESTAPI | 1.0.0 | This is a Swagger-based REST service. It takes the item values, adds the tax rates, and gives out the total item value. BuyMore plans to discontinue this service after implementing a new loyalty scheme. | PRODUCTION |
BuyMoreBillCalculateRESTAPI | 2.0.0 | This is a Swagger-based REST service that implements version 2 of | TESTING |
Let's go through the main features of WSO2 G-Reg using BuyMore's services as an example.
Before you begin:
- Install Oracle Java SE Development Kit (JDK) version 1.6.24 or later or 1.7.* and set the
JAVA_HOME
environment variable. - Download WSO2 Governance Registry to any location of your server. We call it
<G-REG_HOME>
. Start the G-Reg server by navigating to the
<G-REG_HOME>/bin/
directory using the command line and executingwso2server.bat
(for Windows) orwso2server.sh
(for Linux).
Deploying the sample to create assets
Assets are registry resources or collections of resources that store metadata and information regarding governance-related entities. Developers create assets and manage their life cycles and dependencies using the G-Reg Publisher.
For the sake of simplicity, instead of creating assets from scratch using the G-Reg Publisher, let's deploy a sample that comes with the WSO2 G-Reg distribution. It creates different types of assets in the G-Reg. WSO2 G-Reg supports REST, JSON, SOAP, and Thrift, although we only work with REST services in this guide.
For information on creating assets from scratch through the G-Reg Publisher, see Adding and Deleting Assets.
Make sure you have the G-Reg server started as instructed in the "Before you begin" tip above.
Using the command line or terminal, navigate to the
<G-REG_HOME>/samples/getting_started/
directory and execute the following command. It deploys the assets in the server:ant
Let's log in to the G-Reg Store and check whether the assets were created successfully.
- Go to the G-Reg Store using the URL https://localhost:9443/store/.
- Type "buymore" in the search field, click the search icon, and note that no search results appear. This is because all assets related to BuyMore are made private and are not visible to anonymous users.
- Let's log in to the G-Reg Store. Click the Sign In link in the top right-hand corner of the console and enter admin/admin as the credentials in the login screen.
- Note that searching for "buymore" now produces results in the Store.
You now have sample services and other artifacts related to BuyMore along with two users (a developer called Smith and a DevOps engineer called Mark ) deployed in the G-Reg. Next, let's log in to the G-Reg Store as Smith and subscribe to an asset.
Subscribing to an asset
Smith is a developer at BuyMore. Smith comes to the G-Reg Store searching for the asset BuyMoreBillCalculateRESTAPI version 1.0.0
to calculate bill values of the products being purchased at BuyMore, and subscribes to it to receive notifications regarding any changes that happen to the asset later.
- Log in to the G-Reg Store (https://localhost:9443/store/) as Smith. Smith's credentials are smith/smith@bm.
- Click Rest Services in the left menu.
Notice that many services are shown in the search results. Smith knows that the service he wants (i.e.,BuyMoreBillCalculateRESTAPI version 1.0.0
) is owned by the Think Tank team in Boston and is hosted by the Boston data center, so he filters the search by those criteria to make sure he finds the right one. - Expand the Teams filter in the Filter by menu, expand the Boston menu, and click the icon with the plus sign next to Think Tank to select it.
- Expand the DataCenters filter in the Filter by menu, and click the icon with the plus sign next to Boston to select it.
- Search for the asset by typing "name:BuyMoreBillCalculateRESTAPI" in the search field and clicking the search icon.
- The service
BuyMoreBillCalculateRESTAPI
version 1.0.0
appears in the search results. Click it to open it.
The asset opens. Scroll down to see the following links:
- Visualize: Opens a Swagger console where you can invoke the REST asset.
- Show Dependencies: Opens a diagram displaying all the dependencies this asset has with other assets.
- Copy URL: Gives you the option to copy the URL of the Swagger definition.
- Download: Downloads the Swagger definition of the REST asset to a given location on your machine.
Smith has now discovered the REST asset that can be called from other applications to calculate bill values. Next, Smith subscribes to receive notifications for this asset. A notification is an alert that you get via email and/or the G-Reg Store regarding an asset's lifecycle and/or information change.
Click the ->OPTIONS button in the top right-hand corner of the screen to expand the notification settings.
You can subscribe to receive notifications through emails or through the G-Reg Store. You can also opt to receive notifications when an asset is changed and/or when it goes through a lifecycle state change.Enable the option to receive notifications related to lifecycle state changes via the G-Reg Store.
Smith (developer) is now using BuyMoreBillCalculateRESTAPI
version 1 for development work.
Changing the lifecycle states of assets
BuyMore wants to introduce BuyMoreBillCalculateRESTAPI
version 2, which implements the company's new loyalty scheme. As its testing is completed, BuyMore wants developers to use the new version of the asset in their applications. Mark , who is a DevOps engineer of BuyMore, logs in to the G -Reg Publisher and changes the lifecycle state of BuyMoreBillCalculateRESTAPI
version 2 from TESTING
to PRODUCTION
.
- Log in to the G-Reg Publisher ( https://localhost:9443/publisher/ ) as Mark. Mark's credentials are mark/ mark@bm.
Use the following text to search for the service to be promoted to production, and then click the asset to open it.
name:BuyMoreBillCalculateRESTAPI version:2.0.0
Once the asset opens in the Publisher, go to its LIFECYCLE tab, add a comment to explain why you are changing its lifecycle state, and then click Promote .
Note that the lifecycle state of the service is changed from
TESTING
toPRODUCTION
, and the comment you added appears under history. Any user who goes to the LIFECYCLE tab of this service can see the comments history.
Now that a new version of the asset is in production, Mark deprecates the older version (i.e., version 1). This triggers an alert to Smith, who is subscribed to it to receive notifications.i.e., version 1). This triggers an alert to Smith, who is subscribed to it to receive notifications.- Click the GOVERNANCE CENTER - PUBLISHER label at the top of the console to go to the publisher's Homepage, search for the term "BuyMoreBillCalculateRESTAPI", and click version 1.0.0 of the asset to open it.
Once the asset is opened, go to its LIFECYCLE tab and click Deprecate.
Note that the lifecycle state of the asset is updated successfully.
Mark has now published the company's new loyalty scheme and deprecated the old one.
Receiving notifications
In the previous section, Mark deprecated the asset BuyMoreBillCalculateRESTAPI version 1.0.0
. Smith, who is a developer at BuyMore, has subscribed to receive notifications regarding lifecycle state changes of the same asset through the G-Reg Store. Therefore, Mark's activity triggers a notification for Smith in the G-Reg Store.
- Sign in to the G-Reg Store (https://localhost:9443/store/) as Smith (smith/smith@bm).
- Click any one of the menus (such as REST Services) and note the new notification icon in the upper right-hand corner of the G-Reg Store.
- Click the icon to expand and read the notification.
Upon seeing the notification, Smith searches for a new version of the asset. - Log in to the G-Reg Store (https://localhost:9443/store/) as Smith. Smith's credentials are smith/smith@bm.
- Click Rest Services in the left menu.
- Search for the asset by typing "name:BuyMoreBillCalculateRESTAPI" in the search field and clicking the search icon.
Notice that many services are shown in the search results. Smith knows that the service he wants (i.e.,BuyMoreBillCalculateRESTAPI version 2.0.0
) is developed using Java and belongs to the silver throttling tier, so he refines the search by those criteria to make sure he finds the right one. - Select java under Language in the Refine by menu.
- Select silver under Throttling Tier in the Refine by menu.
The service
BuyMoreBillCalculateRESTAPI
version 2.0.0
appears in the search results. Click it to open it.
Reviewing the new version of the asset
In the previous step, Smith opened BuyMoreBillCalculateRESTAPI Version 2.0.0
in the G-Reg Store.
- Go to the User Reviews tab of the asset and add a rating (let's say 5). Also add a review comment (such as "This version of the asset is recommended as it implements the company's new loyalty scheme"), and then click Post Review.
- Note that the review that Smith just added appears on the console, under the NEWEST category. You can filter reviews according to popularity and the date added.
Now that the new version of the asset is in production and the developers are actively using it, BuyMore decides to discontinue version 1.0.0. Mark, who is the DevOps engineer, logs in to the G-Reg Publisher and checks the dependencies that version 1.0.0 has with other assets before making it obsolete.
Viewing the dependencies of an asset
Log in to the G-Reg Publisher (https://localhost:9443/publisher/) as Mark (credentials: mark/mark@bm).
Search for the term "BuyMoreBillCalculateRESTAPI" and click version 1.0.0 of the asset to open it.
- C lick Show Dependencies to view the asset's dependency graph and the policies.
The dependency graph opens. Note that you can click the icons to view more information about them.
For more information on viewing dependencies of an asset, go to Dependency Visualization with WSO2 Governance Registry.
As this asset has no dependencies with other assets, Mark continues to make it obsolete.
- Go to the asset's LIFECYCLE tab and click Obsolete.
- Note that the lifecycle state of version 1.0.0 is now
OBSOLETE
.
This sample is configured with lifecycle checkpoints defined on this asset, so that when 5 minutes pass after making it obsolete, you view the Current State Duration of it in red color as shown below.
Also, when 24 hours pass after making it obsolete, when you search for the asset in the G-Reg Publisher, it shows the current obsolete state in red color as shown below.
Smith (developer) subscribed to receive notifications about the lifecycle state changes of version 1.0.0 of the asset earlier in this guide. Therefore, this lifecycle state change triggers a notification to Smith in the G-Reg Store. Upon receiving the notification, Smith makes a backup of the asset.
Making a backup of an asset
- Log in to the G-Reg Store (https://localhost:9443/store/) as Smith if you haven't done so already (credentials: smith/smith@bm).
- Click any one of the menus (say the REST Services menu) and note that you now have 2 notifications in the upper right-hand corner of the G-Reg Store.
Smith reads the notification and notices that version 1.0.0 of the asset has been discontinued by BuyMore. Smith proceeds to make a backup of the asset. - Search for " BuyMoreBillCalculateRESTAPI" in the G-Reg Store and click version 1.0.0 to open it.
The Swagger-based REST asset opens in the Store. Scroll down and click the Download button to download the content of the Swagger file.
Smith now has a local copy of the asset that BuyMore has discontinued.
In this Quick Start Guide, you have gone through some of the key functionality of WSO2 G-Reg. For an in-depth understanding of the G-Reg, see Deep Dive.