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 ( 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
Configuration n/a
Settings n/a


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,

   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 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
Configuration n/a
Jira Project Settings (
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
Jira Project Key (jiraPrjKey)
Jira Project Key
Jira Project Id (jiraPrjId)
Jira Project Id

JIRA User Information (
The credentials are stored without encryption on the server. Be aware that the system administration could be able to see them.
Username (username)
Password (password)