Collaboration Backend

The Purpose

Semantic Turkey relies on an instance of the extension point CollaborationBackend to support a variety of collaboration backends.

The Model

A CollaborationBackend (it.uniroma2.art.semanticturkey.extension.extpts.collaboration.CollaborationBackend) defines a number of operations that allows to (optionally) create a project on the collaboration platform and bind it (or an existing one) to a Semantic Turkey project. Interestingly, the input to some operations is defined as an opaque object, which is instantiated from a form that is returned by other operations of the extension point.

Extension Point Details

The tables below summarizes the details of the CollaborationBackend extension point.

Name Collaboration Backend
Description A CollaborationBackend is used to connect a Semantic Turkey project to a collaboration platform
Identifier it.uniroma2.art.semanticturkey.extension.extpts.collaboration.CollaborationBackend
Configuration n/a
Settings n/a

Interfaces

The following interface defines the contract for the CollaborationBackend extension point.


/**
* Extension point for the collaboration subsystem. An implementation of this extension point is required to
* support a specific collaboration management system (e.g. JIRA).
*/
public interface CollaborationBackend extends Extension {

   public void checkPrjConfiguration() throws STPropertyAccessException, IOException, CollaborationBackendException ;
   
   public STProperties getCreateIssueForm();
   
   public void createIssue(String resource, ObjectNode issueCreationForm) 
		   throws STPropertyAccessException, IOException, CollaborationBackendException;

   public void assignProject(ObjectNode projectJson)
		   throws STPropertyAccessException, IOException, CollaborationBackendException, STPropertyUpdateException;

   public void createProject(ObjectNode projectJson)
		   throws STPropertyAccessException, IOException, JsonProcessingException, CollaborationBackendException,
		   STPropertyUpdateException;

   public void assignResourceToIssue(String issue, IRI resource)
		   throws STPropertyAccessException, IOException, CollaborationBackendException;

   void bind2project(Project project);

   public JsonNode listIssuesAssignedToResource(IRI resource)
		   throws STPropertyAccessException, IOException, CollaborationBackendException;

   public JsonNode listIssues()
		   throws STPropertyAccessException, IOException, CollaborationBackendException;
   
   public JsonNode listUsers()
		   throws STPropertyAccessException, IOException, CollaborationBackendException;
   
   public JsonNode listProjects()
		   throws STPropertyAccessException, IOException, CollaborationBackendException;
   
   /**
	* Tells if a Collaboration project is linked to the VB project
	* @return
	* @throws STPropertyAccessException
	*/
   public boolean isProjectLinked() throws STPropertyAccessException;
}

Choosing and Configuring a Collaboration Backend

A CollaborationBackend can be associated with a Semantic Turkey project after is has been created, in order to enable certain collaboration features (e.g. issue management). The chosen backend is stored in the file project.info using the property plugins.optional.collaboration.factoryID. However, the collaboration backend is considered not initialized, as long as its settings are not configured correctly. Currently, Semantic Turkey assumes that the backend does not require any configuration upon instantiation, while actual configuration is stored in project and project-user settings. These settings are stored according to the standard configuration/settings mechanism.

Collaboration Backend Implementations

Jira Backend

Name Jira Backend
Description Use Atlassian Jira as a collaboration backend
Identifier it.uniroma2.art.semanticturkey.extension.impl.collaboration.jira.JiraBackend
Configuration n/a
Settings
Jira Project Settings (it.uniroma2.art.semanticturkey.extension.impl.collaboration.jira.JiraBackendProjectSettings)
Scope: PROJECT
The manual configuration for JIRA requires that all of the following fields (including the non-mandatory ones) are filled up. Alternatively, insert only the mandatory field and, once the connection credentials have been provided, it will be possible to browse the list of JIRA projects and select one of them.
Server URL (serverURL)
Server URL
java.lang.String
Required
Jira Project Key (jiraPrjKey)
Jira Project Key
java.lang.String
Optional
Jira Project Id (jiraPrjId)
Jira Project Id
java.lang.String
Optional

JIRA User Information (it.uniroma2.art.semanticturkey.extension.impl.collaboration.jira.JiraBackendPUSettings)
Scope: PROJECT_USER)
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see them.
Username (username)
Username
java.lang.String
Required
Password (password)
Password
java.lang.String
Required