SOA Suite 12c: Sharing resources between SOA composites and Service Bus projects with Design Time MDS

2

A file-based, design-time MDS Repository is automatically included when you create a SOA composite application. You cannot modify the MDS Repository name, but you
can modify it to point to an existing repository. Sharing operations are done against the design-time repository. You cannot perform these operations against a database-backed MDS Repository.

This design time MDS Repository is accessible from all SOA composite projects in your local JDeveloper environment. Additionally, the design time MDS Repository is also accessible from Service Bus projects. That last statement requires qualification: at design time – resources can be transferred (i.e. copied) from the MDS repository to a Service Bus project and vice versa, documents can be transferred (i.e. copied) from a Service Bus project to the Design Time MDS repository. This operation can update/overwrite existing resources. The transfer operation will also recognize dependent resources and bring these along as well.

Resource can be opened in JDeveloper directly from the MDS connection to be inspected; they cannot be edited in this way: to be edited, the resources need to be included in a proper project.

To be clear: Service Bus projects cannot contain references to resources in the MDS repository – they can only exchange objects with MDS as a convenience to the developer. SOA composites, as in 11g, can use the oramds:  reference to at design time as well as run time refer to resources in MDS.

A simple walk through:

Here you see a straightforward SOA composite project, with a WSDL that references an XSD document. If we want these documents to also be available for use in a Service Bus project, we can right click the WSDL and select the option Share using SOA Design-Time MDS Repository:

image

The SOA-MDS Transfer wizard opens – to have us select the target folder and the dependent resources to bring along.

image

Press Next.

On the next page, select (and if necessary create) the target directory:

image

Press Next.

This page lists the selected resources and their dependencies:

image

Press Next.

This page provides an overview of the references [to the transferred resources] in the SOA composite that will be updated as part of the transfer you are about to start:

image

Press Finish to embark on the transfer.

image

The result of the transfer can be verified under the SOA-MDS connection category in the IDE Connections panel in the Resources window:

image

The references to the transferred resources have been updated:

image

 

Switch to Service Bus project

Open a Service Bus project.

Right clicking on an object in the Design Time MDS repository exposes the option Service Bus | Import Resource.

image

Select this menu action to transfer the resource to the current Service Bus project.

The transfer dialog starts. Select the target folder – and create one if necessary.

image

Press Select.

image

Press Next.

An overview is presented of the resource(s) that will be transferred, including dependent objects. We can deselect any resource that should not be copied into the Service Bus project.

image

Press Finish.

The two resources are copied to the Service Bus project – and the Schemas folder is also created:

image

Based on the WSDL, we can for example start to create a proxy service. Note that from this point on, there is no link at all between the WSDL resource and the MDS repository.

image

Suppose we make a change in the AircraftService.xsd document:

image

Can we feed this change back to the shared copy of this resource in the MDS repository?

Yes, we can.

Right click the resource. Select Service Bus | Publish to SOA Designtime Repository.

image

This starts the transfer-from-project-to-MDS Repository dialog.

image

The resources to be published are listed:

image

and the wizard shows that the repository already contains the AircraftService.xsd. The publish wizard does not do a comparison or intelligent merge. We can instruct it to override the resource in the repository – that is about it.

image

Press Finish.

image

When we next open the XSD resource from the MDS repository in the context of the SOA composite where it started its life, we will see that the change made in the Service Bus project has indeed be applied:

image

Creating a new resource in the Service Bus Project

We next create a new resource in the Service Bus project – a Domain Value Map:

image

image

This new resource can also be published to the Designtime MDS Repository:

image

Let’s create a new directory in the MDS repository:

image

and call it DomainValueMaps:

image

Press OK, press Next:

image

Press Finish

image

And after refreshing the MDS connection

image

The new resource is visible and available:

image

When you want to make use of the DVM in another Service Bus project, you use the context menu option Import Resource.

If you want to refer to a resource in the MDS repository from a SOA composite application, you can browse for the resource in the standard browse dialog:

image

Note: when the Service Bus project has been deployed, the Domain Value Map is deployed as part of the Service Bus project. It is accessible through the Service Bus Design Composer tool – for inspection and even for run time editing:

image

About Author

Lucas Jellema, active in IT (and with Oracle) since 1994. Oracle ACE Director and Oracle Developer Champion. Solution architect and developer on diverse areas including SQL, JavaScript, Kubernetes & Docker, Machine Learning, Java, SOA and microservices, events in various shapes and forms and many other things. Author of the Oracle Press book Oracle SOA Suite 12c Handbook. Frequent presenter on user groups and community events and conferences such as JavaOne, Oracle Code, CodeOne, NLJUG JFall and Oracle OpenWorld.

2 Comments

    • What I do in 12c project if I need to share artefacts between SB and Composites is using a SB project called SharedObjects with the folder structure the MDS needs so having an apps folder.
      My design-time environment in JDeveloper uses a file-based MDS which points to this SB project root location.

      – SBApplication
      – SharedObjects = MDS root folder for File-based MDS.
      – apps

      Other SB projects in the SBApplication can reference the SharedObjects project.
      There is no way to use the runtime MDS in SB projects.