| 571 | |
| 572 | == The server side == |
| 573 | |
| 574 | What a DeepaMehta plugin can do at the server side: |
| 575 | |
| 576 | * **Listen to DeepaMehta Core events**. In particular situations the DeepaMehta Core fires events, e.g. before and after it creates a new topic in the database. Your plugin can listen to these events and react in its own way. Thus, the //DeepaMehta 4 Workspaces// plugin e.g. ensures that each new topic is assigned to a workspace. |
| 577 | |
| 578 | * **Providing a service**. Your plugin can make its business logic, that is its service methods, accessible by other plugins (via OSGi) and/or by external applications (via HTTP/REST). Example: the service provided by the //DeepaMehta 4 Topicmaps// plugin includes methods to add a topic to a topicmap or to change the topic's coordinates within a topicmap. |
| 579 | |
| 580 | * **Consuming services provided by other plugins**. Example: in order to investigate a topic's workspace assignments and the current user's memberships the //DeepaMehta 4 Access Control// plugin consumes the service provided by the //DeepaMehta 4 Workspaces// plugin. |
| 581 | |
| 582 | * **Access the DeepaMehta Core Service**. The DeepaMehta Core Service provides the basic database operations (create, retrieve, update, delete) to deal with the DeepaMehta Core objects: Topics, Associations, Topic Types, Association Types. |
| 583 | |
| 584 | Weather a DeepaMehta plugin has a server side part at all depends on the nature of the plugin. Plugins without a server side part include those which e.g. just define a data model or just provide a custom (JavaScript) renderer. |