Grummt in the Middle(ware)

Software Architecture, Software Quality, SOA, Java, Oracle, OSB

The SOA Artifact Dependency Viewer

Have you ever felt overwhelmed by the number of interdependent artifacts in an Oracle Service Bus configuration? There are WSDLs importing XSDs which import other XSDs. There are Proxy Services calling other Proxy or Business Services. Services depend on resources such as XQuery or MFL transformations. How do you know how everything is connected? How do you find circular dependencies, dependency magnets, and orphaned artifacts? How you know the routing between your services is correct?



The Eclipse-based Oracle Service Bus IDE (OEPE) assists you with a “References” View, which lists the inbound and outbound references of the currently selected artifact. But is doesn’t show you the big picture, it lacks a graphical overview. This is where the SOA Artifact Dependency Analyzer comes into play. I developed this small Eclipse Plugin to do just that: it displays all your artifacts and their interdependencies. This is valuable in many situations:

  • As a developer or tester new to a project, you are assisted in understanding the structure of the current code base.
  • As an architect, you are assisted in analyzing the architecture of a given project and can identify target architecture violations or room for improvement more quickly.
  • As a developer working in a project, you are provided an overview of your current work’s context and you can rapidly navigate between related artifacts.
  • As a person responsible for documenting a system, you can use the customized graphical representations generated by the tool to highlight key technical aspects.


Installing SOA ADV is very easy. In Eclipse, select Help / Install New Software…
Then enter in the “Work with:” field. Then select the feature and advance through the install wizard.


You can generate a dependency view by choosing “View SOA Artifact Dependencies” from the context menu of an OSB Configuration, OSB Project, or single file. If an OSB Configuration or a single file is selected, all the artifacts in the respective OSB Configuration are analyzed. If one or more OSB Projects are selected, only the artifacts in these projects are analyzed. If a single file is selected, it is used as the focus artifact.

Enabling the Focus mode and selecting an appropriate focus artifact is an important key to generating meaningful visualizations. If you enable the Focus mode and select a focus artifact, only dependencies of this artifact up to the specified depth (distance) will be displayed. You can exclude further artifacts from the visualization by activating “unidirectional dependency traversal”. In this mode, every dependency chain originating from your focus artifact only has arrows in one direction: either outgoing or incoming. Using the first few buttons in the view, you can enable or disable certain artifact types.

Double clicking an artifact that is backed by a file will open the appropriate editor. Using the delete key removes an artifact from the view. The view is not synchronized with the actual artifacts. So if you change something on the file system, you will have to regenerate the view by using the context menu command. Usually you will have to drag the graph nodes around a bit to get a truly beautiful visualization. Beware that your layout gets lost if “Auto redraw” is enabled and you interact with any of the buttons that affect the visualization content!
You can export an XML representation of your artifact dependencies using the rightmost button.


I hope you enjoy this useful tool as much as I and my colleagues do! Please do not hesitate to report bugs or feature requests!

See also: The SOA Dependency Problem


Click on the picture below to see a large version.


1 Comment

  1. Rudolf

    Hi Eberhard,

    I installed the SOA Dependancy Viewer, imported our SOA projects using eclipse OEPE, however when I want to view a artefact I get the following error :

    ENTRY 4 2 2014-07-10 15:51:30.371
    !MESSAGE An internal error occurred during: “calculating SOA dependencies”.
    !STACK 0
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(
    at java.lang.String.substring(

    I decompiled the class in question ( and on that line :

    String fileOrDirToUse = location.substring(osbWorkspace
    .length() + 1);

    Which is the preceding line :

    osbWorkspace = project.getWorkspace().getRoot().getRawLocation().toOSString()

    Some diagnostic information :

    IDE : Eclipse Platform
    Version: 3.7.1
    Build id: M20110909-1335

    Java 7 is my default JRE, and I am running Oracle Enterprise Pack for Eclipse

    If I can help solve this in any way contact me on my supplied email address.

    Rudolf Harmse

Leave a Reply

Theme by Anders Norén