JIRA Configuration

You need a JIRA server account to set this up

You need to add a field of type workflowField (issue link control) to all categories which should show a list or referenced tickets. Actually ask our support to do this...

You need to add a field of type workflow to all categories which should have one to one mapping between Matrix and JIRA. Actually ask our support to do this...


You can setup the JIRA server plugin using the admin client. You will need the following information which is stored on the server

  • server type: if you use "JIRA server" select it otherwise "JIRA Cloud with Medical add-on" is the correct selection.
  • the url of your JIRA server instance, e.g. 'https://jira.mycompany.com',
  • the rest service of your JIRA server instance, e.g. 'https://jira.mycompany.com/rest/api/2'
  • a user which has access to JIRA,
  • the password of the user

 

The client configuration can be done by an optional JSON object. Please note the text must use double quotes (") around all strings. The following parameters can be set:

 


interface ITaskConfiguration {
    defaultSearches?:ITaskSearch[] // can be used to define default search expressions, (e.g. shortcuts to search task changed in last x hours, server plugin must understand these...)
    one2OneMapping?:IOne2OneMapping // requires one2one capability. defines how external items are shown
    // the first search in the list will be executed automatically when the dialog is opened
    // in order not to run an automatic search define first element in array with name="" 
    allowEmptySearches?:boolean // can be set to true if plugin can handle it 
    searchHelp?:string // can be an url to any website to explain search options (e.g. jql https://..atlassian.. /jql)
    autoSearch?:boolean // can be set to true to start default search (when opening dialog)
    smartLinks?:ISmartTask[] // a set of rules to automatically show hyperlinks to items -> note these are available only in the client, in documents the same rules will not be applied!
    smartUrls?:ISmartUrls[] // a set of rules to automatically detect dropped links
    projectsCreate: ITaksProjects[] // there must be at least one default project in which tasks can be created
    projectFilter: string[] // filter for projects of which items are displayed in workflow control, if not set all tasks are shown -> problem this also needs to be implemented in reports

    useAsDescription?:ITaskTaskDescription // defines if and what to use as default description -> default is empty (an empty description box)
    useEmptyTitle?:boolean // by default the title of new task is the current item title, true leaves it empty
    requireCommitTicket?:boolean // set to true if saving should requires a task id (requires smartLinks to be configured)
    // these can be overwritten by client settings
    pluginName:string  // e.g. JIRA, GitHub, ...
    pluginLongName:string  // e.g. JIRA Server Plugin, GitHub Plugin, ...
    // these can be used to overwrite the plugins's default (if the plugins says they are possible)
    hideCreateTask?:boolean // overwrites canCreate capability
    hideSearchTasks?:boolean // overwrites canFind capability
    //createBacklinks?:boolean // if set to false overwrites the option to canCreateBacklinks capability
    handleAsLink?:boolean // should not be changed - if true links are treated like URLs
    hasMeta?:boolean // should not be changed - if true external items have a descirption and a status
    // server computed settings they can also be overwritten
    nativeCreateUrl?:string // overwrites nativeCreateUrl
    nativeCreateSearch?:string // overwrites nativeCreateSearch
    pluginId?:number 
};

type ITaskTaskDescription = "hide"|"empty"|"text"; // later we could support html editors - not now though |"html"

interface IOne2OneMapping {
    // configures 1-1 mapping
    projectId:string // id communicated to server to indicate in which project to create tickets
    taskTypeId:string // id communicated to server to indicate what type 
    showId?:boolean // shows external item's id in title
    statusOverwrites:IOne2OneMappingStatus[]
}
interface IOne2OneMappingStatus extends ITaskRenderInfo {
    externalStatusName:string // name of external status
    text:string // text to show
}

interface ITaskRenderInfo {
    text:string, // one to one mapping will show this text
    color:string, // in this color
    background:string, // with bg color
    strikethrough?:boolean // optional strikethrough 
}

interface ITaskSearch {
    name:string // name of search to show in UI
    expression:string // expression to be send to server
}
interface ITaksProjects {
    projectId:string // id communicated to server (can be "" if there is no concept of a project in server plugin)
    projectName:string // name communicated to user 
    taskTypes: ITaskType[] // there must be at least one default task type per project
}

interface ITaskType {
    taskTypeId:string // id communicated to server (can be "" if there is no concept of a different task types in server plugin)
    taskTypeName:string // name communicated to user 
    iconUrl?:string // can be an url of an icon to display
    iconClass?:string // can be an class of an icon to display
}

interface ISmartTask {
    regex:string // regex which needs to match, e.g. (github)(-)([0-9]*) would match "github-12" with three groups, "github", "-" and "12" as $0,$1 and $2
    issueProjectId:string  // a template which creates the project information for a matched issue (uses the same replacement as above), eg. $0 for github
    issueId:string  // a template which creates the issue information for a matched issue (uses the same replacement as above) e.g. $2 for 12
    title:string  // url template for a title (can be empty)
    url?:string  // url template which needs to be created for the hyperlink, e.g. "https://myissue.com/myticket/ticke-$2/details" would replace the $2 with the second  group (like "12" above)
}
interface ISmartUrls {
    regex:string // regex which needs to match, e.g. (github-)([0-9]*) would match "github-12" with two groups, "github-" and 12
    issueProjectId:string  // a template which creates the project information for a matched issue (uses the same replacement as above)
    issueId:string  // a template which creates the issue information for a matched issue (uses the same replacement as above)
    title:string  // url template for a title (can be empty)
    priority?:number // if there are several matches the highest priority will win
}
Example
{
  "projectsCreate": [
    {
      "projectId": "MATRIX",
      "projectName": "MATRIX",
      "taskTypes": [
        { "taskTypeId": "Bug", "taskTypeName": "Bug" },
        { "taskTypeId": "New Feature", "taskTypeName": "New Feature" }
      ]
    },
    {
      "projectId": "MATRIX",
      "projectName": "MATRIX",
      "taskTypes": [
        { "taskTypeId": "Task", "taskTypeName": "Task", "iconUrl": "", "iconClass": "" }
      ]
    }
  ],
  "smartLinks": [
    { "regex": "(MATRIX)(-)([0-9]+)", "issueProjectId": "$1", "issueId": "$1$2$3", "title": "title not yet synced", "url": "https://matrixreq.atlassian.net/browse/$0" }
  ],
  "smartUrls": [
    { "regex": "(MATRIX)(-)([0-9]+)", "issueProjectId": "$1", "issueId": "$0", "title": "issue", "priority": 0 }
  ],
  "autoSearch": true,
  "defaultSearches": [
    { "name": "last", "expression": "jql:updated<1w" }
  ]
}