Hexagon Geospatial
MENU

Shared Samples

GeoMedia Smart Client Workflow Manager provides tools for building and delivering highly-constrained, map-based workflows for the office or the field.
Showing results for 
Search instead for 
Do you mean 

Third Party Integration

by Community Manager on ‎01-21-2016 08:02 AM (1,558 Views)

Abstract

The third party integration sample shows how to communicate with the client using external tools. This may be achieved by offering a custom javascript interface or adding a local web service to the client.

Bitbucket Link

https://bitbucket.org/HGDN/hgdn_gmsc/src/2eef0f0f7111d9de952d94e8f91052c2bc6946c7/Client/ThridpartyI...

Description

Besides the standard XML Automate interface and the default javascript interface, developers may create their own extensions to offer additional options to communitcate with the client using javascript  or SOAP based web services. 

JavascriptInterface

Whenever an extension to the default javascript interface is needed, a new ScriptingObject must be created extending the AbstractScriptingObject or implementing the IScriptingObject interface.

In this sample there is a simple method getHalloWorldString() that might be called using javascript using window.MyJavascriptInterface.getHalloWorldString(): 

@ScriptingObject(name = "MyJavascriptInterface")
public class JavascriptInterface extends AbstractScriptingObject
{
	public JavascriptInterface() 
	{
		super();
		myPublicBooleanValue = false;		
	}
	
	public boolean		myPublicBooleanValue;	
	
	/**
	 * This method can be called by window.MyJavascriptInterface.getHalloWorldString() in your Javascript
	 * 
	 * @return
	 */
	public String getHalloWorldString()
	{
		return "Hallo World String!";
	}	
}

 

SoapInterface

 The SoapInterface is a local endpoint that is exposed on the client side as a standard SOAP based web service. Using this strategy it is possible to offer a standardized interface that may be called from any other application that is capable of consuming a web service:

 

@WebService(serviceName="SoapEndpointSample", portName="SoapEndpointSamplePort", endpointInterface="com.hgdn.gmsc.web.sdk.thirdparty.publish.soap.endpoint.SoapEndpointSample")
@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
public class SoapEndpointSample
{	
	@Oneway
	public void showConfirmDialogAsynchron(@WebParam(name = "confirmMessage") String confirmMessage)
	{
		boolean confirmResult = GUIToolkit.showConfirmDialog(confirmMessage);
		Log.getLogger().log(Level.INFO, String.format("The result of the confirm dialog is '%s'", confirmResult));
	}
	
	public boolean showConfirmDialogSynchron(@WebParam(name = "confirmMessage") String confirmMessage)
	{
		return GUIToolkit.showConfirmDialog(confirmMessage);
	}
}

 

This web service itself is quite simple and only offers methods to open a confirm dialog containing a meesage that was sent from the connected client. 

Besides the web service itself, a plugin must be created that takes care of hosting the service and publishes the endpoint:

 

@Plugin(alias = "EndpointPlugin", vendor = "Hexagon Geospatial")
public class EndpointPlugin extends AbstractPlugin
{
	private static final String SOAP_ENDPOINT_ADRESS ="http://localhost:8091/MySoapInterface";
	private Endpoint	endpoint;

	@Override
	public void start() throws Exception
	{
		endpoint = Endpoint.publish(SOAP_ENDPOINT_ADRESS, new SoapEndpointSample());
		
		if (endpoint.isPublished())
		{
			Log.getLogger().finest("The soap endpoint is now ready! ( " + SOAP_ENDPOINT_ADRESS + " )");
		}
		else
		{
			Log.getLogger().finest("The soap endpoint isn't ready!");
		}
	}
	
	@Override
	public void stop() throws Exception
	{
		endpoint.stop();
	}
}

 

 To test the javascript interface and the web service, please find a simple have a look at the ThirdPartyIntergrationTest project: https://bitbucket.org/HGDN/hgdn_gmsc/src/5ee4237a7bf2c454e43861470eeaa5786bdae49d/Client/ThirdPartyI...

Comments
by
on ‎11-22-2016 12:24 AM

Am unable to access these shared samples despite having an HGDN subcription. How long does it take to get an invite in Bitbucket?

Overview
Contributors