I have a Geoprocessing Server that creates stops and routes from an input of point features. The GP Server uses a Map Service to display the results. I am able to get the stops added as a Feature Layer from the GP Server's map service and view attributes and add graphics from the stops.
What I would like to do is to join that Stops Feature Layer to a SQL table in a Map Service that has a Dynamic Workspace so that additional information on the stops can be viewed.
I followed an example from GitHub, developer-support/joinDataSource_show_All_data_fromDataGrid.html at master · Esri/developer-support · GitHub but am not able to view the joined FeatureLayer's attributes. It does not look like any features are added, but it does look like the FeatureLayer is being created as I don't get any errors but something is not right because after loading the layer, I am trying to view the attributes but it shows no graphics.
Am I not applying the JoinData properly? Is it possible to join from my GP Server Feature Layer to a SQL Table from a dynamic workspace in another layer?
Thanks for any help solving this issue.
Mele
<SPAN class="keyword token">function</SPAN> <SPAN class="token function">showStopResults</SPAN><SPAN class="punctuation token">(</SPAN>results<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="comment token">//define the layer's data source from a table </SPAN>
<SPAN class="keyword token">var</SPAN> rightTableSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
rightTableSource<SPAN class="punctuation token">.</SPAN>dataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">TableDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN>
workspaceId<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"FireInspectWorkspaceID"</SPAN><SPAN class="punctuation token">,</SPAN>
dataSourceName<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"FireInspect.dbo.viewMapScheduledInspections"</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//point to the joined Table related to specific FeatureLayer ID </SPAN>
<SPAN class="keyword token">var</SPAN> leftTableSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerMapSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN>
mapLayerId<SPAN class="punctuation token">:</SPAN> <SPAN class="number token">1</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//create a layerDataSource to storage on the fly "join" data </SPAN>
<SPAN class="keyword token">var</SPAN> joinDataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">JoinDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN>
joinType<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"left-outer-join"</SPAN><SPAN class="punctuation token">,</SPAN>
leftTableKey<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"Name"</SPAN><SPAN class="punctuation token">,</SPAN>
rightTableKey<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"FireInspect.dbo.viewMapScheduledInspections.ID_String"</SPAN><SPAN class="punctuation token">,</SPAN>
leftTableSource<SPAN class="punctuation token">:</SPAN> leftTableSource<SPAN class="punctuation token">,</SPAN>
rightTableSource<SPAN class="punctuation token">:</SPAN> rightTableSource
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//query the feature layer with layerDataSource and list out all data in grid </SPAN>
<SPAN class="keyword token">var</SPAN> layerDataSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerDataSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
layerDataSource<SPAN class="punctuation token">.</SPAN>dataSource <SPAN class="operator token">=</SPAN> joinDataSource<SPAN class="punctuation token">;</SPAN>
joinFeatureLayer <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">FeatureLayer</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fvmascesri01%3A6080%2Farcgis%2Frest%2Fservices%2FFire%2FFireInspections%2FMapServer%2FdynamicLayer" target="_blank">http://vmascesri01:6080/arcgis/rest/services/Fire/FireInspections/MapServer/dynamicLayer</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">{</SPAN>
mode<SPAN class="punctuation token">:</SPAN> FeatureLayer<SPAN class="punctuation token">.</SPAN>MODE_ONDEMAND<SPAN class="punctuation token">,</SPAN>
outFields<SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"*"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
source<SPAN class="punctuation token">:</SPAN> layerDataSource<SPAN class="punctuation token">,</SPAN>
id<SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"datalayer"</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//This function works with an array of FindResult that the task returns</SPAN>
map<SPAN class="punctuation token">.</SPAN><SPAN class="token function">addLayer</SPAN><SPAN class="punctuation token">(</SPAN>joinFeatureLayer<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="token function">on</SPAN><SPAN class="punctuation token">(</SPAN>joinFeatureLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"load"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">function</SPAN><SPAN class="punctuation token">(</SPAN>evt<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="token function">alert</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'!'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">//create array of attributes</SPAN>
<SPAN class="keyword token">var</SPAN> items <SPAN class="operator token">=</SPAN> arrayUtils<SPAN class="punctuation token">.</SPAN><SPAN class="token function">map</SPAN><SPAN class="punctuation token">(</SPAN>results<SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">function</SPAN> <SPAN class="punctuation token">(</SPAN>result<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">var</SPAN> graphic <SPAN class="operator token">=</SPAN> result<SPAN class="punctuation token">.</SPAN>feature<SPAN class="punctuation token">;</SPAN>
graphic<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setSymbol</SPAN><SPAN class="punctuation token">(</SPAN>marker<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
map<SPAN class="punctuation token">.</SPAN>graphics<SPAN class="punctuation token">.</SPAN><SPAN class="token function">add</SPAN><SPAN class="punctuation token">(</SPAN>graphic<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">return</SPAN> result<SPAN class="punctuation token">.</SPAN>feature<SPAN class="punctuation token">.</SPAN>attributes<SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>