From 47fe6ad28ae3c80577db21b1822a31f18d6e0ff3 Mon Sep 17 00:00:00 2001 From: Marco Del Tufo <marco.deltufo@exact-lab.it> Date: Tue, 8 Aug 2023 08:26:18 +0000 Subject: [PATCH] Update as-services.md --- .../server-side-extensions/as-services.md | 68 +++++++------------ 1 file changed, 24 insertions(+), 44 deletions(-) diff --git a/docs/software-developer-documentation/server-side-extensions/as-services.md b/docs/software-developer-documentation/server-side-extensions/as-services.md index 2017588c25c..3f9710c141c 100644 --- a/docs/software-developer-documentation/server-side-extensions/as-services.md +++ b/docs/software-developer-documentation/server-side-extensions/as-services.md @@ -3,52 +3,37 @@ Custom Application Server Services ## Introduction -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). +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). -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`. +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`. ## How to write a custom AS service core plugin Here is the recipe to create an AS core plugin of type `services`: -1. The - folder `<core plugin folder>/<module>/<version>/as/services/<core plugin name>` - has to be created. +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` - and `script.py`. The properties file should contain: +2. In this folder two files have to be created: `plugin.properties` and `script.py`. The properties file should contain: **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 - 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. +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: +**script.py** +```py +from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create import SpaceCreation - 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: - - **script.py** - - from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create import SpaceCreation - - def process(context, parameters): - space_creation = SpaceCreation() - space_creation.code = parameters.get('space_code'); - result = context.applicationService.createSpaces(context.sessionToken, [space_creation]); - return "Space created: %s" % result - - Note, that all changes on the AS database will be done in one - transaction. +def process(context, parameters): + space_creation = SpaceCreation() + space_creation.code = parameters.get('space_code'); + result = context.applicationService.createSpaces(context.sessionToken, [space_creation]); + return "Space created: %s" % result +``` +Note, that all changes on the AS database will be done in one transaction. ## How to use a custom AS service @@ -81,14 +66,9 @@ the method `withParameter()`. Here is a code example: - CustomASServiceExecutionOptions options = new CustomASServiceExecutionOptions().withParameter("space_code", "my-space"); - Object result = service.executeCustomASService(sessionToken, new CustomASServiceCode("space-creator"), options); - System.out.println(result); - +```py +CustomASServiceExecutionOptions options = new CustomASServiceExecutionOptions().withParameter("space_code", "my-space"); +Object result = service.executeCustomASService(sessionToken, new CustomASServiceCode("space-creator"), options); +System.out.println(result); +```  - - - - - - \ No newline at end of file -- GitLab