Collaboration Backend

The Purpose

The extension point CollaborationBackend allows for connecting Semantic Turkey to different collaboration platforms, enabling a smooth integration with these external services for issue and discussion management.

The Model

A CollaborationBackend (it.uniroma2.art.semanticturkey.extension.extpts.collaboration.CollaborationBackend) defines a number of operations 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 table below summarizes the details of the extension point CollaborationBackend.

Name Collaboration Backend
Description This extension point allows for connecting Semantic Turkey to a collaboration management 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.


/**
* This extension point allows for connecting Semantic Turkey to a collaboration management platform.
*/
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(int pageOffset)
			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 it 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
Token (password)
Token
java.lang.String
Required