Table of Contents
Last updated: 2024-06-26

Extensibility


This section of the documentation gives an overview of extension capabilities of ShareAspace. The intention of the article is to give an overview on how to:

  • Integrate ShareAspace with other systems
  • Integrate and/or extend ShareAspace with custom business processes
  • Convert (map) information sets to and from the ShareAspace data models
  • Extend ShareAspace with automated processes
  • Extend ShareAspace with new user interfaces to support custom scenarios

The article is intended for business analysts, solution architects and application developers working with ShareAspace.

Service Based Architecture


The basic design idea for extending ShareAspace with custom functionality is using a service based architecture. This means that custom code implemented to support custom business processes is separated from the core of ShareAspace. Some of the benefits of this are:

  • Extension components can be designed and implemented as separate modules with well defined contracts
    • This simplifies and reduces the maintenance costs of these modules
    • The modules can be kept independent of the ShareAspace installation (*)
    • The modules can be implemented platform independently from the implementation platform of ShareAspace
  • The ShareAspace installation can be kept "Vanilla" making it easier to upgrade a ShareAspace installation
  • The custom code is not executed by or with core components of ShareApace.
    • This makes it easier identifying issues and finding the source of issues (i.e. separating possible ShareAspace Core issues from issues in custom modules)
    • Custom code will be less likely to interfere with the ShareAspace server
  • Extension components can be designed and built using well known platforms and frameworks and requires no ShareAspace specific training other than the understanding of the interfaces and the ShareAspace REST APIs
Note

(*) The developed modules might still have dependencies to the defined interfaces, the configuration used by a ShareAspace Space, and to the REST API version of ShareAspace.

Many of the integration and extension possibilities of ShareAspace described in this article are heavily dependent on the open and documented REST API of ShareAspace.

Extension points

ShareAspace can be extended in a number of different ways. These are described in more detail further on in this article.

Extending ShareAspace

The extension framework allows you to connect to other external systems. These could be:

  • Host your own ShareAspace Modules while relying on the Web user interface configuration framework for integrating them into your installation
  • If you just miss that last custom view of the data inside the info-box the external view control allows you to create and host this extension
  • External services for handling of events that are triggered, this could be custom services but also WebHooks into other software, like a Microsoft Teams connector or a Microsoft Logic App
  • ShareAspace specific extensions with a defined interface for managing external validations (for SharePack and Maturity Systems)
  • ShareAspace specific extensions for managing events
  • ShareAspace specific extension for executing custom mapper implementations within a DataExchange Job

Many of these extensions also allows for impersonation. i.e. the possibility for an extension to act as a user within ShareAspace.

Tip

Recommended to run the custom components on completely separate servers to really keep it all vanilla. only applicable to on-premise installations.

Security

When building integrations and extensions using the ShareAspace REST APIs, these are secured using TLS in combination with OAuth 2.0 for authorization/authentication.

Many of the extension points that can be called by ShareAspace or sent to from ShareAspace supports the ability to pass on a JWT (JSON Web Token) that can impersonate the user that triggered the need for an extension. These extensions are configured and managed in a secure way. Read More.

Extension possibilities


REST

All operations against ShareAspace are done using the ShareAspace REST API. The ShareAspace User Interface is only using these APIs when reading and altering data in ShareAspace.

It is possible to build extensions on top of ShareAspace using these REST APIs. Many of the other extensions listed below would typically leverage the REST APIs after being triggered by ShareAspace.

Read more.

Custom User Interfaces

The different applications running on the ShareAspace Web Framework comes predefined with a set of Web UI Modules. Some of these modules are shared between different applications while others are specific for a certain application domain. The Modules are installed and maintained on the Collection level of a ShareAspace setup.

Many of the OOTB modules are widely configurable and most of them are also dependent on other configurations like the configurable SoftTypes and the configurable queries.

It is also possible to link to an external web site hosted else where and make this be presented within ShareAspace. This web site could be something existing but it could also be something that is custom implemented for doing performing specific tasks and/or presenting ShareAspace information.

When building a custom site for this it is possible to integrate with the ShareAspace user interface. It is also possible to configure it to impersonate the current user when doing REST API calls back to ShareAspace. Read more.

Event Handlers

Extension for taking custom actions based on a configured event being triggered in ShareAspace.

An example could be an implementation of custom business logic that is triggered by an event. The external service handling the event could use the REST APIs when automating work based on said event.

External Validations

Extension for doing external validation of entering a Maturity System state or validating whether a SharePackage can be shared or not.

External DataExchange Tasks

Extension that can be called from an External DataExchange Task within a configured DataExchange job. This type is typically used for data mappers in import/export scenarios. e.g. a configured DataExchange job for an import that takes a proprietary input format can be configured to call an external service to translate the proprietary format to something readable by a ShareAspace OOTB task or the ShareAspace importer.

Mappers

In addition to the OOTB mappers provided with a ShareAspace application it is possible to implement custom mappers either by starting from scratch or by making overrides to OOTB mappers using the ShareAspace Mapping Framework.

A mapper implemented using the Mapping Framework consists of a set of Mappings, translating entities from one domain into entities in another domain.

When reusing an existing mapper one has the ability to extend it by adding completely new mappings and the ability to override existing mappings.

Mapper Example

There is a set of dev-kits for implementing mappers (using C#).

  • Mapping Framework: Dev-kit for implementing a mapper using the Mapping Framework
  • EXPRESS Toolbox Generator: Dev-kit for generating model and repositories for EXPRESS schemas to be used by the Mapping Framework
Note

Mappers can be implemented in any way possible. In any language possible (as long it is hosted within the ExternalTask interface). It is however recommended to use the Mapping Framework.

Read more.