Skip to main content
RSS feed Subscribe to feed

 

Skip Navigation LinksHome  Extending the Spotfire Platform  Creating Extensions to the Spotfire Platform  Creating an Automation Interface

©Spotfire 2011

Creating an Automation Interface

Spotfire can be controlled from another client. The inter-process communication is established via COM, making the desired functionality of the automation interface in Spotfire available to the remote client.

Overview

When Spotfire is installed, it is registered as an ActiveX object with the ProgId Spotfire.Dxp. A client can use this ProgID to launch Spotfire via COM, and receives a reference to a Spotfire controller object. The controller handles the starting and stopping of intercommunication in Spotfire.

The client creates a callback object internally and calls Spotfire to set up the intercommunication. When Spotfire has finished its startup sequence, the client is notified and allowed to load its automation view. From now on the view is used for the communication.

Note: All method calls made between the client and Spotfire use late binding and are therefore basically untyped.

Tutorial

  • How to Create an Automation Interface
    An Automation Interface is a class designed to be loaded in Spotfire to enable remote control. The public methods of this class will be COM visible and can thus be called by an automation client.

Start-up sequence

The following sequence diagram details the interconnection procedure up to the point where the client can control Spotfire via the automation interface:

Sequence diagram for the start-up and control of Spotfire
  1. The client instantiates Spotfire via COM by creating it as an ActiveXObject.
  2. COM launches Spotfire in automation mode by the Spotfire.Dxp.exe /Automation command.
  3. Spotfire creates a Spotfire controller object that implements the IAnalysisApplicationController interface and makes it COM visible by a CoRegisterClassObject() function call.
  4. COM returns a Controller object reference to the client.
  5. Spotfire waits for the client to call Start().
  6. The client creates an object implementing the IAnalysisApplicationControllerCallback interface.
  7. The client calls Start() on Spotfire.
  8. Spotfire starts.
  9. Spotfire calls LoadViews() on the callback object to indicate that the automation interface can be loaded into Spotfire.
  10. The client calls CreateObjectFrom() to load the automation interface into Spotfire.
  11. Spotfire loads the assembly, instantiates the requested type, and returns a COM handle to the instance of the requested type.
  12. Spotfire calls Started() on the callback object, signifying that inter-process communication is established.
    The client now uses the instance of the requested type to control Spotfire.