A plugin for the DMX platform can contain both, a backend part, and/or a frontend part. The frontend part can extend the DMX Webclient or be a custom frontend (which accesses the DMX backend).
In the backend you’ll work with Java. The DMX Webclient is based on Vue components and Vuex (for state management) and uses the Element UI widget library.
What a plugin can do
- Provide a data model; change existing data models
- Implement hooks to react on server-side events
- Provide/consume services (business logic)
- Provide an OSGi service consumable by other plugins
- Consume OSGi services provided by other plugins
- Provide a REST service; you can make an OSGi service method RESTful just by adding
JAX-RSannotations to it.
Extending the DMX Webclient:
- Provide a Vuex store module (for state management)
- Mount Vue components into the Webclient; supply them with data and react to their events
- Provide new detail renderers (for topic/association rendering)
- Provide new topicmap renderers
- Plug in items to the Create menu; provide Options components
Building custom frontends; independent from DMX Webclient:
- Utilize frontend libraries/frameworks of your own choice
- Use the dmx-api library to access the DMX backend.
- Optionally embed particular components from the DMX Webclient, e.g. the Topicmap Panel or the topic/association detail/form renderer. See npm for available components.
Start plugin development
A starter project for developing a DMX plugin is available. It illustrates how to extend the DMX Webclient:
Note that “DeepaMehta 5” (aka “DM5”, “dm5”) and “DMX” is the same; same codebase, same features, same license (GPL 3 or later). While at GitHub and npm the projects are named “dm5”, at our own GitLab the same projects are named “dmx”. The repos at GitHub and GitLab have the same content; GitHub mirrors GitLab.