@@ -3,52 +3,37 @@ Custom Application Server Services
...
@@ -3,52 +3,37 @@ Custom Application Server Services
## Introduction
## Introduction
On Data Store Server (DSS) aggregation/ingestion services based on
On Data Store Server (DSS) aggregation/ingestion services based on Jython scripts can be used to extend openBIS by custom services. These services have full access on data store and Application Server (AS).
Jython scripts can be used to extend openBIS by custom services. These
services have full access on data store and Application Server (AS).
Often only access on AS is needed. Going over DSS is a detour. For such
Often only access on AS is needed. Going over DSS is a detour. For such cases it is better to write an AS core plugin of type `services`.
cases it is better to write an AS core plugin of type `services`.
## How to write a custom AS service core plugin
## How to write a custom AS service core plugin
Here is the recipe to create an AS core plugin of type `services`:
Here is the recipe to create an AS core plugin of type `services`:
1. The
1. The folder `<core plugin folder>/<module>/<version>/as/services/<core plugin name>` has to be created.
2. In this folder two files have to be created: `plugin.properties`
2. In this folder two files have to be created: `plugin.properties` and `script.py`. The properties file should contain:
and `script.py`. The properties file should contain:
**plugin.properties**
**plugin.properties**
class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
```
script-path = script.py
class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
script-path = script.py
```
3. The script file should have the function `process` with two
3. The script file should have the function `process` with two arguments. The first argument is the context. It contains the methods `getSessionToken()` and `getApplicationService()` which returns an instance of `ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi`. The second argument is a map of key-value pairs. The key is a string and the values is an arbitrary object. Anything returned by the script will be returned to the caller of the service. Here is an example of a script which creates a space:
arguments. The first argument is the context. It contains the
**script.py**
methods `getSessionToken()` and `getApplicationService()` which