External Task Providers
Kanboard can be used to manage tasks stored in another system. For example, an external system can be a bug tracker or any kind of ticketing software. In this way, you can use Kanboard to manage external tasks in the same way as native tasks.
Workflow
Creation:
- The end-user select an alternative task provider during the task creation
- The external task provider expose a form to the user to be able to fetch the external task
- The external task is retrieved from the other system
- A customized form is shown to the user
Visualization:
When the task detail page is opened, Kanboard will load asynchronously the remote task. This information might be cached by the plugin to improve the loading time.
Modification:
Optionally, the plugin can offer a custom form to save extra information to the external system.
Interfaces
External task providers must implements at least two interfaces:
Kanboard\Core\ExternalTask\ExternalTaskProviderInterface
Kanboard\Core\ExternalTask\ExternalTaskInterface
ExternalTaskProviderInterface
Method | Usage |
---|---|
getName() | Get provider name (label) |
fetch() | Retrieve task from external system or cache |
save($uri, array $formValues, array &$formErrors) | Save external task to another system |
getImportFormTemplate() | Get task import template name |
getCreationFormTemplate() | Get creation form template |
getModificationFormTemplate() | Get modification form template |
getViewTemplate() | Get task view template name |
buildTaskUri(array $formValues) | Build external task URI based on import form values |
ExternalTaskInterface
Method | Usage |
---|---|
getUri() | Return Uniform Resource Identifier for the task |
getFormValues() | Return a dict to populate the task form |
Exceptions
The plugin may raise an exception if something goes wrong:
Kanboard\Core\ExternalTask\ExternalTaskException
: Generic error related to the external systemKanboard\Core\ExternalTask\AccessForbiddenException
: Access not allowed by the external systemKanboard\Core\ExternalTask\NotFoundException
: External task not found
Provider Registration
class Plugin extends Base
{
public function initialize()
{
$this->externalTaskManager->register(new MyExternalTaskProvider());
}
}