Integrating OSLC RefImpl with IBM Jazz

Hi,
This started as a question in github for the RefImpl, but was recommended to move to here.
[https://github.com/oslc-op/refimpl/issues/493\]

I am adding test data using the client-toolchain,
however, the trs/base seems to be empty.

according to Copilot’s analysis:

The TRS is correctly registered and resource changes are tracked via trsEventHandler.onCreated() calls in RestDelegate. However, when server starts, RestDelegate maps are empty, so TRS initializes with zero resources. Once client-toolchain populates data via POST requests, new resources ARE added to TRS correctly. The fix is to make TRS initialization lazy or ensure it re-syncs after the maps are populated.

I am still too new to the code base to be sure if this is correct, but it looks like a reasonable assesment.

What am I missing?
many thanks

—-
reply from Jad-el-khoury
Can I suggest we take dialog on the OSLC forum https://forum.open-services.net/?

In the meantime, here’s a quick answer …
If you are familiar with TRS, there is a baseLog and and changeLog. In this case, the BaseLog is empty. All changes (via POST) will be handled in the ChangeLog.

I am trying to get Jazz to see the artifacts and in particular links to Jazz Artifacts that are stored in the refImpl testdata (I created).

From what I can understand, Jazz lqe requires the artifacts to be in the trs/base
they are not

@dhakehurst Welcome to this forum.

So did my short response explain how it currently works? Copilot’s explanation is also correct. But I am not sure if the suggested changes are necessary.

It’s perfectly reasonable (for this reference implementation) that the baseLog is empty (given that the application started with an empty data base). Once resources are added to the system, they will appear in the ChangeLog.

Jazz LQE will first read the BaseLog. But then it will regularly check the ChangeLogs to see if there are any changes that i can absorb.

Hi,

I am quite short on time this week. Thus, replying on a phone - you may need to do extra digging.

First, I think we should avoid https://xyproblem.info/ because OSLC is non-trivial and Jazz is complicated. Those two together make for a rather challenging combo.

Jazz has important limitations on OSLC interop:

So, let’s start with the simple things first:

  • Ensure you do NOT have GC enabled on ANY project in your Jazz install.
  • Ensure you can make a link other than relatedTo from DNG to any adaptor.

You somehow managed to jump into the deep end from the first steps :slight_smile:

Regards,
Andrew

Thanks for the comments and support.
It maybe the deep end, but not my first rodeo (just to mix metaphors :wink: )

I am able to create a link within Jazz (RM is what I’m working with) to an external artifact from the refimpl.
I do not have GC enabled on the RM-project.

From what I have understood, I need:

  1. RefImpl, rootservices to advertise the RM Service Provider Catalog, there is some debate as to whether the new ns open-services.net/ns/rm# is required or if the old on that is in the RefImpl.rootservices is sufficient.
  2. RefImpl RM Service Provider Catalog must point to service provider with domain as open-services.net/ns/rm#, which I think it does.
  3. add the RefImpl as friend in Jazz ../jts/admin
  4. Add an Association “Uses - Requirements” in the specific Jazz Project I want links in.

This is a problem, because I cannot get the “Uses - Requirements” association offered by Jazz.

  1. Ensure the Link Types for the project include the link type stored in the RefImpl.

  2. In LQE admin add the RefImpl trs as a data source.
    I had to switch off authorisation in the RefImpl to make this work, I could not get the OAuth to be accepted by Jazz.

This is also where there is debate, as to whether the RefImpl trs/base needs to include the artifacts or not.

There are some difficulties with this process that could be made smoother
a) The I cannot switch the Jazz consumer stored in oslcOAuthStore.xml to ‘not provided’ whilst the RefImpl is running, I have to stop it change it manually, then restart.
b) mapping oslcOAuthStore.xml to a volume in docker-compose was an issue, so I changed its path to something absolute in the source code to make this possible.
c) As RefImpl does not start up with any data, I populate it with the example data from client-toolchain + my own links to my Jazz-RM artifacts for the use case I am trying to test.
have to do this everytime I restart RefImpl, I could I’m sure map something in the compose to a volume, but I do also want to be able to ‘reset’ RefImpl to no data at points, so currently easiest to do this with a restart, even if it would be nice to leave it running and have a ‘clear/reset’ endpoint to invoke.

My main issue is that Jazz-RM will not offer the Uses-Requirements endpoint, which I think is needed for it to see the external artifacts.
And I can see in the Jazz-LQE that it is not indexing the RefImpl arfitacts, which (according to Gemini) is because there is nothing in the trs/base.

From the little I can understand about trs, it is not required that things are in the base, however if they are not, then how can RM know they exist ? the RefImpl trs (changes) feed does not seem to contain all additions, it only contains the last few.

Glad to hear that this is not your first rodeo, for this is not for the faint of heart!

In RootServices published seem to be out of date · Issue #492 · oslc-op/refimpl · GitHub, you wrote that you can readily see the “Provides - Requirements” association. This indicates that the OSLC domains of the RefImpl were picked up by Jazz.

As I said before, Jazz has limitations on what kind of relations the links may have when pointing to artifacts in 3rd-party systems. Please see IBM Documentation for more information.

Let us start with that and once you confirm on your side, we will move to the next issue.

Cheers,
Andrew

Thank you. That looks like a useful table you pointed me to.
However, the table appears to be saying that my external (RefImpl) source of requirements can only use the referencedBy link type to point to Jazz-RM artifacts!
That seems highly restrictive and I think I must have miss-understood the table !

I am very much afraid that our reading of that table is correct. Do you want to give another Jazz tool a try to link to a RefImpl artifact?

The table is not very clear, the ‘*’ in the RM row could mean anything, or it could refer to a footnote.

Anyhow, given that the AM row clearly defines what is allowed, I will use that instead.
So using the RefImpl-AM server.
I have:

  • set up RefImpl-AM as a friend in Jazz/jts
  • added the RefImpl-AM to a bunch of whitelists in /jts/admin and /rm/admin
  • changed the entry added by Jazz to the refimpl oslcOAuthStore.xml to be provisional=false
  • Added Association ‘Provides - Requirements’ to Jazz-RM project
  • Tried to create a ‘Satisfied By - Architecture Element’ Link - which just hangs the browser

I discovered that Jazz was trying to access the RefImpl-AM linkType selectionDialog instead of the Resource Selection Dialog….but even after removing the linkType selection dialog from the RefImpl…I get the same Jazz-Browser page freeze.

The asterisk refers to the OSLC 2.0 and Rhapsody footnote, in my opinion.

As for the table, I think it needs to be read in the following way:

  • Rows represent IBM Jazz products, one per domain (DOORS NG for RM, Rhapsody for AM and so on).
  • The first data column represents the capabilities/limitations when linking from a Jazz tool to another Jazz tool.
  • The second data column represents the capability of a Jazz tool to link with a 3rd-party tool.

Thusly, the following statement:

QM artifacts can be linked to RM artifacts by using one of these link types:
Validates (a requirement)
Validates* (a requirement collection)

can be interpreted this way:

A Jazz QM tool (i.e. Jazz Enginering Test Management) allows the following link types linking Jazz QM and non-Jazz artifacts: validates (towards a 3rd-party OSLC RM tool, e.g. OASIS OSLC RefImpl RM).

Would you be interested in evaluating this linking capability?

P.S. I took some liberty to update titles on this thread and a number of issues for the benefit of future readers (including me).

I am currently trying to configure Jazz-RM as a consumer of links to its requirements that are stored in an external tool.
Currently, both the RefImpl-RM and RefImpl-AM are in scope (I’ll probably get to the others later).

however, I am hitting issues with both…as described above.
I am very happy to give feedback about successes and failures in all I do (so an evaluation of sorts, yes).
Especially as I am getting good help and input in return. Many thanks.

I realise I am on version 7.0.2 of Jazz currently, and I see that the latest in 7.2.0.
You link to table above is for v7.0.2, but I can’t dind the similar table in the 7.2.0 docs.
Is v7.2.0 better ? does it accept more link types?

@andrew
Given that Jazz-RM only accepts ‘reference’ links between requirements in external OSLC sources. (from my understanding of the table).

How should I create those using Lyo.

From what I can see of the ‘Requirement’ class. There is no ‘references’ property to assign links to!

Interesting Discovery regarding the rootservices document.

When Refimpl-RM/rootservices defines
xmlns:oslc_rm="http://open-services.net/xmlns/rm/1.0/"
then when adding an Association to a project, Jazz offers both

  • ”Provides - Requirements”
  • ”Provides - Related Requirements”

when the oslc_rm namespaces is defined as
xmlns:oslc_rm="http://open-services.net/ns/rm#"
then Jazz offers only

  • ”Provides - Requirements”

I wonder where that is documented !

1 Like

How should I create those using Lyo.

My recollection is that you have two options:

App links to Jazz

  1. You use the selection dialog offered by Jazz inside an app which will make links to Jazz. The RefImpl has some sample pickers (e.g. Selection Dialog sample client ) but they are not designed to be used as a bona fide client (i.e. RefImpl does not try to update its resource with a link to an external system and publish that update over TRS). Pro tip: You can use OSLC Selection WebComponent Demo to test your dialogs as well (source in GitHub - OSLC/oslc-selection-utils: Support for OSLC Selection dialogs).
  2. Jazz JTS shall be configured to pick up your app’s TRS feed. Most likely, we will have to resolve RootServices lack a TRS feed link and reference OSLC 1.0 domains · Issue #492 · oslc-op/refimpl · GitHub to get it working.

Jazz link to the App

  1. You use a selection dialog (once we fix the 0px issue and you get down to 1 dialog). For AM, we also need to solve add an implementation in AM Resource Selection dialog returns nothing · Issue #499 · oslc-op/refimpl · GitHub.
  2. Jazz will most likely try to force the App (RefImpl) to store the link. RefImpl already supports this via a POST request on the resource to which you try to link. RefImpl already supports that.
  3. If you want the link to show up from the Jazz side to RefImpl, RefImpl needs to expose the TRS feed (it does already but not in the rootservices document) and the JTS shall pick it up successfully.

Hi,
Thanks for that.
I have already, using my own version of RefImpl, fixed the 0px issue, and the AM selection dialog returning nothing.
What happens, when I select an AM resource from Jazz, is - nothing !

My goal is to create the link external to Jazz, but I’m starting with creating the link in Jazz.
I can create a ‘references’ link to a RefImpl-RM link from Jazz - if rootservices has the 1.0 namespace.

Jazz fails, silently, to create a link to a RefImpl-AM resource.
The browser i not making any relevant network calls, I am in progress trying to access the Jazz server logs.

I think the request will come to RefImpl AM not via the browser but via the Jazz backend. You may want to adjust log levels on the adaptor or even use something like GoReplay or Wireshark to confirm that Jazz server tries to connect to RefImpl.

Hi all

A lot of “interesting” Jazz challenges on this thread. I have recently also had to handle similar issues against Doors NG. It’s a fair bit of guess work :-1:

Can you clarify what you mean @dhakehurst with

  • the AM selection dialog returning nothing.
  • What happens, when I select an AM resource from Jazz, is - nothing !

Do you see the AM selection Dialog within Jazz? (I assume it means Doors?)

If yes, does the AM Selection Dialog show some entries?

If yes, what happens when you select an item form the dialog? Can you inspect the page to see what is returned from that dialog to the parent window? (If you have gone this far, I suspect Doors does not like what i received from the dialog)

@jad the blank AM selection dialog issue is being tracked via AM Dialogs have 0px hint sizes · Issue #498 · oslc-op/refimpl · GitHub

By ‘Jazz’, I mean the Jazz-RM tool (also known as DOORS-ng).

  • I see the selection dialog (after fixing the 0px bug)
  • I see resources listed in the dialog (after fixing the TODO)
  • I select one resource, click OK
  • I can see in the network tab of the browser that the correct resource is in the response

Input about the issue from Gemini (who is faster at reading the IBM docs and of things than I am, though may get confused :wink: ), indicates that maybe the returned resource-rdf maybe OSLC compliant, but not Jazz compliant. e.g. properties such as type and serviceProvider are missing. However, the lyo properties for setting these don’t seem to agree with the way they are written if I look at an example rdf from Jazz. It may even be barking up the wrong tree.