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());
}
}