AnsweredAssumed Answered

Unable to create table for 'leftTableSource' / 'rightTableSource' dynamic dataLayer with 'id': -1.

Question asked by mkoneya on Oct 10, 2017

I am struggling with trying to use a Map Service that is created by Geoprocessing Service for it output to join to a table in another service.

 

My map service created with routing results has a stops layer and the map service supports dynamiclayers.   Another map service has a dynamic workspace with dynamiclayers enabled.    I am trying to join from the map service with the Route Stops to the Map Service with the Workspace.

 

I cannot add a dynamic workspace to the Geoprocessing Service map service in ArcCatalog or Manager so I am wondering if what I am attempting to do is even possible.    The documentation on doing this is not very informative.

 

When trying to create my dynamiclayer I get the

 

Unable to create table for 'leftTableSource' / 'rightTableSource' dynamic dataLayer with 'id': -1. error   message.

 

Below is how I am trying to create my dynamiclayer in ArcGIS JavaScript and what is being passed to ArcGIS Server.

 

Thanks for any assistance.    I am at a dead end.

 

Mele

 

function addJoin(evt){
                     
                     //define the layer's data source from a table 
         var rightTableSource = new LayerDataSource();
         rightTableSource.dataSource = new TableDataSource({
         workspaceId: "FireInspectWorkspaceID",
         dataSourceName: "FireInspect.dbo.viewMapScheduledInspections"
         });
          
        //point to the joined Table related to specific FeatureLayer ID
        var leftTableSource = new LayerMapSource({
             mapLayerId: 1
         });
         //create a layerDataSource to storage on the fly "join" data
         var joinDataSource = new JoinDataSource({
             joinType: "left-outer-join",
             leftTableKey: "Name",
             rightTableKey: "FireInspect.dbo.viewMapScheduledInspections.ID_STRING",
             leftTableSource: leftTableSource,
             rightTableSource: rightTableSource
         });
                   
         //query the feature layer with layerDataSource and list out all data in grid 
         var layerDataSource = new LayerDataSource();
         layerDataSource.dataSource = joinDataSource;
      
               joinFeatureLayer = new FeatureLayer(gpResultLayer.url + "/dynamicLayer", {
         mode: FeatureLayer.MODE_ONDEMAND,
         outFields: ["*"],
         source: layerDataSource,
         id: "datalayer"
       });
    
               map.addLayer(joinFeatureLayer);
               on(joinFeatureLayer, "load", function(evt)
               {
                    var query = new Query();
                   query.where = "1=1";               
                   query.outFields = ["*"];
          joinFeatureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results){
                                   console.log(results);               
          })
                    
               })
               
               
          }
{"source":{"type":"dataLayer","dataSource":{"type":"joinTable","leftTableSource":{"type":"mapLayer","mapLayerId":1},"rightTableSource":{"type":"dataLayer","dataSource":{"type":"table","workspaceId":"FireInspectWorkspaceID","dataSourceName":"FireInspect.dbo.viewMapScheduledInspections"}},"leftTableKey":"Name","rightTableKey":"FireInspect.dbo.viewMapScheduledInspections.ID_STRING","joinType":"esriLeftOuterJoin"}}}

Outcomes