Wouldn’t it be great to integrate your business logic directly inside the Utility Network Service? Or perhaps create your own Web service extension that interacts with your utility network dataset? All of this is now made possible with the Enterprise SDK 10.8.1!
Server Object Extension or Interceptor?
You can now create Server Object Extensions (SOEs) and Server Object Interceptors (SOIs) that target your utility network dataset with the Enterprise SDK 10.8.1. Whether you’re a .NET or Java developer, the choice of building either type of server object greatly depends on your end goal.
Server Object Extension (SOE)
Typically, a Server Object Extension is created to expose custom Web service REST resources and operations. This is a good option if you want to make new functionality available to homemade or third-party client applications through your own defined REST API. Exposing a custom network trace operation or a new subnetwork export format endpoint are examples of what you could do in a SOE.
Server Object Interceptor (SOI)
The other option is to build a Server Object Interceptor to add your own business logic inside existing service operations. Extra processing steps can thus be added to existing Map Service REST operations, or to any of its extensions, including the Utility Network Service. This is done without modifying the existing ArcGIS Server REST API. Adding extra user access checks on certain REST operations or doing pre- or post-processing work when validating network topology are examples of what you could do in a SOI.
API functionality highlights
The Enterprise SDK 10.8.1 allows you to access and work with an existing utility network dataset. Here is an overview of things you can accomplish with the API:
- Access the network schema and properties: Get information about the utility network and its schema, including domain networks, network tiers, asset groups and types, terminal configurations and network sources.
- Manage subnetworks: Update and export subnetworks using custom trace configurations.
- Manage network associations: Create and modify all network association types on features and non-spatial objects.
- Trace the network: Configure and execute all types of network traces and propagations.
- Query the network topology: Access and navigate the network topology. This can be handy to define your own network tracing algorithm or rapidly access neighboring features and objects.
Finding your way through the API
The Enterprise SDK 10.8.1 exposes over 100 utility network specific classes, interfaces and enumerations for you to build server object extensions and interceptors. An Object Model Diagram (OMD) of the Utility Network is provided in the online guides to help you navigate through the API. It is a good complement to the API reference that can be found under the ESRI.ArcGIS.GeoDatabase .NET namespace and the com.esri.arcgis.geodatabase Java package of the Enterprise SDK 10.8.1.
As explained in the Work with utility networks’ section of both the .NET Guide and the Java Guide, you have to first open the utility network dataset using the IDataset interface. From there, you can access the data element (IDEBaseNetwork) and the base network (IBaseNetwork). From the base network, you can then query the network topology (IUtilityNetworkQuery) and create a network tracer (ITracer). Please consult the code snippets provided in the guides for more details.