Looking for simple OSLC program that pulls data from app to another app

Hello, I just learned about OSLC yesterday. I’m a simple computer programmer in languages such as C/C++ and Fortran to name a few. I know knowing of HTML.

On a laptop (using Windows 10 or Linux), I’d like to create some type of very simple working OSCL program (of some kind) that pulls data from one application and deposits it in another application.

Is there some YouTube video or Internet webpage that can help me?

Looking for 1 working program, maybe 4:

(1) I do have access to Google Chrome. Can you give me an OSCL program that works only with Google Chrome. How do I run it? I’ve never coded anything for HTML before. So, I need very detailed step by step directions on how to do this. What should I see when I run the program?

Again using OSLC, I’m looking for something that I can run that pulls data from one application to another.

(2) I also have access to Bitbucket, C/C++, and Fortran. Can you give me a second program that does the above with Bitbucket and C/C++ or Fortran?

(3) Third, I might be able to get an account in Jira and Confluence. Do you have another simple program that maybe pulls from Chrome and deposits data in Jira. This is at least something that I should know how to do.

(4) Fourth, what about Jira, Cameo, and Windchill? This is something I should also know how to do.

Thank you,

P.S.: What kind of OSLC support does Jira, Cameo/MagicDraw/SysML, and the PLM program Windchill have?

Partial Restatement of Original Question:

I want to also learn what Windchill offers in terms of using the OSLC standard?

I’d like to learn how to program the libraries/APIs to use OSLC. Can you tell me?

Basically, I’d like to come up with a simple application that performs a get and put using the API and/or library.

Ultimately, I’m looking for a simple OSLC application that programmatically pulls data from one application and deposits it in another application.

Do you have one for me?

The following videos do not not demonstrate how to communicate programmatically. They also rely on “Advanced REST Client” and “Jazz Services” which I am not concerned with!

Main Questions: Can you tell me where the library interfaces are? Can you point me to any examples? What languages are available for the libraries? How do I compile the examples?

What else should I know or be asking?

Thank you,

Welcome to the OSLC community @MikesSimpleShow !

You might want to look at the resources under Resources | OSLC for some introductions. You should find a good primer, as well as some articles and surveys that should give you a good overview.

As a developer you can also view the content on Get started with developing OSLC applications. Plenty of tutorials and sample applications.

You can also try to run the Reference implementation GitHub - oslc-op/refimpl. 4 OSLC interfaces, but with no real applications behind them. But it does give an idea about OSLC (and how to implement it).

And to nudge the vendors to complement, here’s an incomplete list of OSLC interfaces for some of the applications you mentioned:

Hello Christopher,

Welcome to the OSLC community, a pleasure to have your interest. Jad gave quite good pointers, let me take the Fortran/C++/other interfaces bit. To my knowledge, there are only SDKs for OSLC in:

  • Java (Eclipse Lyo – actively maintained)
  • .NET/C# (OSLC4NET – not actively maintained)
  • JavaScript (OSLCJS – not actively maintained)

There was also a very simple helper in Perl that we retired long time ago and a few C++ examples (not a proper library) that I never got a chance to run (though I checked the code just now and would strongly discourage trying to parse the RDF/XML data format using XML tools directly – XML represents a tree data structure, while RDF uses a graph data model, encoded into RDF/XML – there be dragons).

In general, you need two things to interact with an OSLC REST API endpoint:

  • an HTTP client to make REST API calls (I assume you have access to curl in Fortran or similar), and
  • an RDF library to marshal and unmarshal graphs (I know of two C-compatible options, serd and redland, assuming you can use produce some FFI bindings to call C code from your language of choice)

For the build instructions, README files should provide enough details. If not, you may find it useful to consult build server configs like this and this one.

Best regards,
Andrew

Regarding

Ultimately, I’m looking for a simple OSLC application that programmatically pulls data from one application and deposits it in another application.

You will find it difficult to find a perfect example of what you are trying to do precisely because OSLC discourages copying of data (aka “link, don’t sync”). From what I see, you are specifically after an OSLC client, not building an OSLC-compliant server. Check out these:

For the majority of cases, you can consume the materials for “Jazz Services”, as they are essentially OSLC + Jazz-specific authentication bits, which you can ignore. Most of the learning materials have been created for Jazz or for OSLC-based integration of some tools with Jazz, so you will find it hard to completely avoid all Jazz-specific information.

By the way, we’d be very interested in your feedback on the bits of documentation you will find most and least useful, so that we can use your newcomer status as an advantage when it comes to looking at the docs with the fresh eyes.

Hello,

Can Cameo and Windchill work together in an Eclipse Lyo environment, why or why not?

What are the details? Is it easy or hard, why or why not?

Thank you,
MikesSimpleShow

Hello @MikesSimpleShow,

For your purpose, Lyo is just a set of libraries for client/server implementation.

In the simplest case (native support), Cameo and Windchill can be integrated (in one direction) without a need for Lyo if one of those tools implements an OSLC REST API (e.g. if a vendor used Lyo server libraries) and another has an OSLC client (using Lyo client libraries, for example). For a bidirectional integration, both tools should expose a REST API following the OSLC standard and both should consume each other’s API. I saw that Cameo supports OSLC via Cameo Datahub (in one direction only, AFAIK) to link to the requirements (primarily against Jazz). Windchill seems to support OSLC, serving as an OSLC server, exactly in the requirements domain. In this case, you simply follow tool manuals for administrators and try to establish an OSLC connection between two tools.

Another option is adversarial integration. Despite a pair of tools not willing to implement OSLC (or parts of it that you specifically care about), you can develop such interfaces yourself using Lyo (or buy them). Koneksys (@axel.reichwein) developed a Magicdraw OSLC server for the SysMLv1 domain (though SysMLv1 was never a standardized OSLC domain, to be clear), SodiusWillert (@Frej) offered Windchill connector in the past (AFAIK, it was phased out in favor of a native OSLC support in Windchill).

Does that make sense?

–Andrew.

Andrew,

This makes sense. Can you give me an exact reference? I.E.: Where can I go for clarification? Are you 50%/…/90%/100% positive?

Question: How difficult would it be to develop an interface between Windchill and Cameo? What would it involve? How long would it take? Not counting blank lines, how many lines of code would a person be looking at?

Where can I get example source code for Koneksys’ and/or SodiusWillert’s interfaces?

Can you describe the classes? How many classes would it take? How many objects would be involved?

What kinds of problems would I run into if I were to try to develop the interface? What are the difficult and not so difficult problems?

Do you recommend doing it?

(In developing these new interfaces, does it make sense to ask: What else has to be installed? What compilers are involved?)

What kind of problems did Koneksys and SodiusWillert have?

Thank you,

The links I gave in my reply are as exact as I can because I don’t have direct experience with the tool pair you are interested in.

The one from Koneksys is linked above, the one from SodiusWillert is proprietary, as far as I know.

I think it’s the vendors of the tools for the native support and Koneksys/SodiusWillert for further OSLC extensions. We (me and @jad) also do OSLC consulting in some cases.

You may want to go over the repos we linked before and see for yourself.

You may want to use GitHub Gloc – Get this Extension for 🦊 Firefox (en-US) and look through the repos we linked.

The reference implementation includes quite a lot of generated code:

Cameo adaptor also involves quite a bit of EMF generated code:

Jama adaptor didn’t involve generated code:

See more open source repos here: https://github.com/eclipse/lyo#test-and-sample-repositories

You may find the following academic publications (somewhat) illuminating:

Additionally, https://www.sciencedirect.com/science/article/pii/S2452414X18300359 may be a good explanation of architectural principles we recommend (and discourage) when integrating engineering tools.

In most cases, Java JDK 11+, Apache Maven, and Eclipse Lyo Designer (Lyo is a set of libraries, while Lyo Designer is an Eclipse IDE based modelling and code gen tool) . If you don’t want to use code generation, the JDK and Maven would be enough.

Though the SLOC counts may not be very good in that extension. Another check on the Jama repo with the loc tool (brew install loc on macOS):

Can you elaborate on this? What does “one direction” mean? How is Cameo limited on on a native environment?

And, how does the OSLC defined domains specifications such as Change Management, Quality Management, Requirement Management, and Configuration Management, etc map to Cameo and WIndchill?

Thank you,

Sorry, Christopher, I was writing hypothetically: if a pair of tools have native support (i.e., offered by the original vendor; has nothing to do with a native environment) for OSLC, then the integration can be done without coding.

Practically, I saw (from the slides linked before) that Cameo supports linking to Jazz Doors NG requirements via some Cameo Datahub (which, in my opinion, would require Cameo Datahub to implement OSLC RM as a client), and Windchill from the public docs (also linked to before) seems to support OSLC RM as a server. By the way, this DataHub thing seems to be quite dead according to Dassault. Its (apparent) successor, Teamwork Cloud claims to support OSLC Architecture Management specification as a server (which is nice, though doesn’t seem to fill the gap of an OSLC Requirements Management client, which DataHub ostensibly did).

“One direction” means that a client can connect to a server, not the other way around. Thus, if the things discussed above work as advertised, it should be possible for you to link from Cameo to Windchill requirements. But not for Windchill to link to Cameo unless someone (you?) implements an OSLC Server on the Cameo side and someone (PTC?) develops an OSLC Client inside Windchill (I think Windchill allows linking to Integrity Modeller but again, haven’t done it in practice, so I am not sure how portable it is).

Regarding the specs, I see OSLC Requirement Management being mentioned in Cameo and Windchill marketing materials, and OSLC Architecture Management in the Dassault Teamwork Cloud.

Have you tried contacting PTC and Dassault with these questions?

As a side note, there is now ongoing work to define OSLC Profiles, which would simplify the job of ascertaining which tools can connect to which. Would you be interested to contribute your use case to the work group? Online calls are on Thursdays at 10:00 AM US Eastern if I didn’t mix up the time zones.

Cheers,
Andrew

This link briefly discusses the OSLC Connector for Jira. It came from jad.

Questions: Is communication between Jira with Windchill and Cameo good and two-way? Do you have documentation on this?

Do you have any detailed information on the interfaces between Jira and both Windchill and Cameo? Since I am really lacking in practical information, what is the intent of their communication?

Do you have any small coded examples?

Can you point me to a tutorial?

Thank you,

@MikesSimpleShow,

Unfortunately, vendors are reluctant to provide us with the detailed technical specifications of their OSLC interface implementations. Thus, we cannot provide you with the detailed information about specific tools let alone tool pairs, which is why I pointed you to vendors about specific tools.

The link you mentioned points to a tool from MID, Ed Gentry (MID) should be able to help. My knowledge about that Jira connector comes only from the commercial marketing materials from the vendor, same that you have access to. I don’t see him on the forum. You can post to oslc-op@lists.oasis-open-projects.org | Home mailing list, he should be reading that.

To answer your question about two-way, I don’t think you can expect an out of the box integration from the Cameo side if you only instlall a Jira adaptor. My understanding is that MID relies on information being pulled into Smartfacts in order to create links between pairs of artifacts if such links are not supported by the vendors of the respective tools. In other words, those links back to Cameo artifacts are not done via OSLC but in a proprietary way. See this illustration:

source

Regards,
Andrew

Hello @MikesSimpleShow

I am the product owner of MID Smartfacts. We have many OSLC based integration. @andrew is correct that some of our integrations to modeling tools have required synchronization into Smartfacts in order to story. We recently upgraded our Cameo/MagicDraw integration so that links are stored directly.

In addition to OSLC integration integrations we also offer our underlying integration technology genOSLC. This is a fully feature OSLC framework that accelerates the implementation of OSLC integration. It is often used to create integration to internal system. For most system you can have a working OSLC based integration proof of concept in just one working day.

We have OSCL integrations to PTC Codebeamer and we are planning an integration to PTC Windchill.

I would be happy to discuss your integration requirements.

Ed
e.gentry@mid.de

1 Like