Service infrastructure

From Bioclipse
Jump to: navigation, search
Development tutorial
Responsible author:Ola
Bioclipse version:N/A
"N/A" is not a number.
Last updated:2009-10-10
Tags:


Introduction

We aim to make it possible to use local and remote services from within Bioclipse2. Local services can be functionality from a library or framework, and remote services could for example be a Web service over SOAP/REST/BioMoby. It should also, in the future, be possible to run workflows as a service, remote and locally.

ServiceView

ServiceView2.png

There is a ServiceViewer (displayed name: Installed Services) that displays all installed services, categorized in a TreeViewer.


Extension points

Services should be registered in Bioclipse using extension points:

ServiceCategory

ServiceCategories are used to order serviceTypes and other serviceCategories hierarchically. They are displayed in the ServiceView.

  • id - the ID of the serviceCategory
  • name - a name
  • icon - an icon for the category
  • parent - The parent serviceCategory for subcategories. If no parent is given it will be treated as a root *category.
  • context - an optional context for workbench filtering


ServiceType

A serviceType is actually a service, and may have one or many implementations.

  • id - the ID of the serviceType
  • name - a name
  • icon - an optional icon
  • category - The category in which the serviceType is located in. Not required but needed if service is to appear *in the ServiceView.
  • context - an optional context for workbench filtering
  • description - A brief description of the service.


ServiceImpl

An implementation of a serviceType. Must implement IServiceImpl and be linked to a serviceImplType for categorization.

  • id - the ID of the serviceImpl
  • name - a name
  • class - The class for executing the service code. Must implement net.bioclipse.services.views.model.IServiceImpl and may extend net.bioclipse.services.views.model.AbstractServiceImpl for convenience.
  • icon - an optional icon. If none provided then the icon of the serviceImplType will be used.
  • serviceType - The serviceType for which this is an implementation
  • implType - The ImplementationType to categorize similar implementations
  • provider - In case of remote implementations (e.g. Web services), this is the service provider.
  • description - A brief description of the service.


ServiceImplType

A serviceImplType is used to categorize ServiceImplementaions (ServiceImpl). Examples are: SOAP Web Service, Taverna Workflow, and BioMoby Service.

  • id - the ID of the serviceType
  • name - the name of the serviceImplType
  • icon - an optional icon
  • context - an optional context for workbench filtering
  • description - A brief description of the serviceImplementationType


Examples

Add nested categories:

     <serviceCategory
           id="net.bioclipse.services.bioinformatics"
           name="Bioinformatics"
           icon="icons/sequence4.gif">
     </serviceCategory>
     <serviceCategory
           id="net.bioclipse.services.bioinformatics.alignment"
           name="Alignment"
           icon="icons/sequence4.gif"
           parent="net.bioclipse.services.bioinformatics">
     </serviceCategory>

Add a serviceType:

     <serviceType
           id="net.bioclipse.services.bioinformatics.clustalw"
           name="ClustalW"
           icon="icons/sequence4.gif"
           category="net.bioclipse.services.bioinformatics.alignment"
           context="net.bioclipse.ui.contexts.bioinformatics"
           description="Multiple alignment of protein sequences using the tool ClustalW">
     </serviceType>

Add a serviceImplType:

     <serviceImplType
           id="net.bioclipse.services.impl.webservice"
           icon="icons/world_16.png"
           name="Web Service">
     </serviceImplType>

Add a ServiceImplementation:

     <serviceImpl
           class="net.bioclipse.services.impl.ClustalwAtEBI"
           id="net.bioclipse.services.impl.ClustalwAtEBI"
           name="ClustalW"
           provider="EBI"
           serviceType="net.bioclipse.services.bioinformatics.clustalw"
           implType="net.bioclipse.services.impl.webservice">
     </serviceImpl>


The class should implement IserviceImpl (or ILocalServieImpl, IRemoteServiceImpl) and might extend AbstractServiceImpl.


Advanced topics

Workflows

We might need extra information regarding workflows. TBC.

BioMoby services

We might re-use the service types in BioMoby, IMO we need a simpler interface though. Maybe we should register stable and supported BioMoby services via the EP's to be able to show them in the top menu, and require users to select other BioMoby services in the BioMoby Service View (which displays them all).


Use cases

It should be possible to:

Population

  • Add a service via an extension point
    • Optionally use base asbtract classes
      • Command Line Service
      • SOAP service
      • XWS service
      • Taverna Workflow
      • REST service
      • BioMoby Service
    • Optionally extend base classes with more business and/or UI code
  • Add a service via a preference
    • Add a SOAP service by typing in the WSDL
    • Add a command line service by typing in the path + parameters
    • Add a REST service by typing in the URL
    • Add an XWS service by typing in the service ID (JID?)
  • Add service discovery root via extension point
    • BioMoby
    • XWS
    • SoapLab

The proposal is to use the Common Navigator Framework (CNF) and add the following top

Filtering

  • Filter ServiceView based on
    • Keyword in search box
    • Current perspective
    • Context (Bioinformatics)
    • Domain Object Type (only display services that accept this type)
    • Custom filtering (Users wants to specifically hide/show certain folders/services)

Invocation

  • Drop a file on a service to run it
  • Drop an IBioObject on a service to run it
  • Services should run in Jobs
  • If serviceJob run in background, report results to progress view
  • Upon service completion, let service implementation open a UI component (Default: Editor in Bioclipse)


Protein alignment using ClustalW

  • User selects 2+ sequences
  • Context menu, select Services > shows 2 implementations: ClustalW <local> and ClustalW <remote>