Why some REST objects are not displayed

Understand why a REST resource service object does not appear in the Viewer, and what is shown in its place

Overview

Where you look for a REST resource service object and cannot find it in the Viewer, the object has usually been simplified away during the import of the analysis results. This page explains when that happens, what is displayed instead, and how to confirm it for a given application.

This is long-standing behaviour: it is not specific to any release.

What the import does

Application results pass through an import step logged as Simplification of relationships for REST operations. The step looks for a chain of three objects:

caller  ->  REST resource service  ->  REST operation

Where it finds one, the intermediate resource service adds nothing that the two objects either side do not already express, so the import removes it from the displayed results and connects the caller straight to the operation:

  • The caller is linked directly to the REST operation. The link carries the type that the resource service itself would have carried.
  • The caller takes on the role name of the resource service, where the caller does not already have one of its own.
  • The resource service stops being a displayed object, and records which object it was merged into.

The result is the same information with one fewer hop: you see which object calls which REST operation, without an intermediate node between them.

Which objects are affected

The step works from the object’s internal type, so it applies to the REST service and REST operation types of any technology whose objects fall into those categories, not to one technology alone.

The types most often noticed are the JQuery resource services, because a JQuery front end typically calls a REST operation through one:

  • JQuery GET resource service
  • JQuery POST resource service

Confirming it for an application

A resource service that has been simplified away carries the Raw label, together with the name of the step that set it and the object it was merged into. Query the application’s Neo4j database to list them, replacing <application> with the application name:

MATCH (n:`<application>`:Raw)
WHERE n.SetToRawBy = 'SimplifyRESTOperations'
  AND NOT n:Deleted
RETURN DISTINCT n.Type, count(n)

Where the result lists the type you were looking for, the object exists but has been merged into its caller by this step rather than being lost during the analysis.