Page Properties |
---|
Status | Status |
---|
| |
---|
colour | Yellow |
---|
title | PROGRESS |
---|
|
|
---|
Priority | 2 |
---|
Note |
|
---|
Assignee | Antje |
---|
RessourcesConcept article linking to the respecive tutorials |
...
Parameters
The following parameters can/have to be defined in are available for the interceptor configuration:
Parameter | Type | Required | Description |
---|
type | String | yes | The type of the interceptor. It defines the position in the process flow where the interceptor can step in. |
predicate | String | yes | The condition that triggers the intervention of the process flow in order to include the project-specific process extension. The string can provide the condition either in Spring Expression Language (SpEL) or Javascript. Thus, the string has to start always with a prefix spel: for SpEL or js: for Javascript. |
url | String | yes | HTTP address of the project-specific process extension. Dynamic components (properties of the processed object) can be included in braces. |
useDiscovery | boolean | no | Decides whether to resolve the url string at the Discovery-Service or not. If not specified, a default value is set. |
Interceptor Types
There are different types of interceptors available, that interrupt the process flow at different positions.
Intercepor Type | Evaluation Target of the Predicate | Description |
---|
getContent | API dms object in JSON format | Manipulation of the binary content of the return statement by a project-specific service |
search | structure of the specific class SearchInterceptorObject | Manipulation of the search query parameter and the search result. |
updateDmsObject | first API dms object in the list in JSON format, that is passed to the corresponding update endpoint | Manipulation of the update properties that will be applied to a dms object. |
Configuration Examples
The interceptor configuration is part of the interceptorConfiguration.json file. It is a JSON list of all interceptors, each of them specified by its type
, predicate
, url
and useDirectory
parameters. If there are two or more interceptors of the same type, all of them will be executed in random order.
The following two code examples show the configuration of a getContent interceptor. In the first case, the predicate contains the condition in JavaScript. In contrast, the second code example makes use of SpEL.
Code Block |
---|
language | js |
---|
title | getContent interceptor with Javascript condition |
---|
linenumbers | true |
---|
|
{
"interceptors" : [
{ "type" : "getContent",
"predicate" : "js:function process(dmsApiObject){return dmsApiObject[\"contentStreams\"][0][\"range\"]!=null && dmsApiObject[\"contentStreams\"][0][\"range\"].startsWith(\"page:\")}",
"url" : "http://<server>:<port>/api/dms/objects/{system:objectId}",
"useDiscovery" : false
}
]
} |
Code Block |
---|
language | yml |
---|
title | getContent interceptor with SpEL condition |
---|
linenumbers | true |
---|
|
{
"interceptors" : [
{ "type" : "getContent",
"predicate" : "spel:contentStreams[0]['range'] != null ? contentStreams[0]['range'] matches '(?i)^page:.*' : false",
"url" : "http://<server>:<port>/api/dms/objects/{system:objectId}",
"useDiscovery" : false
}
]
} |
A search interceptor can have a SpEL or a JavaScript statement in the predicate as well. In the example code below, only the SpEL variant is shown. In addition to the actual search interceptor configuration, the class SearchInterceptionObject has to be defined.
Code Block |
---|
language | yml |
---|
title | search interceptor with SpEL condition |
---|
linenumbers | true |
---|
|
{
"interceptors" : [
{ "type" : "search",
"predicate" : "spel:!grantedAuthorities.contains('ACCESS_FOREIGN_JOURNAL_OBJECTS')",
"url" : "http://<server>:<port>/api/search/dsl",
"useDiscovery" : false
}
]
} |
...
...
...
Summary
This article gave an overview of the interceptor handling interceptors in yuuvis® Momentum. If you want to extend the functionality of your system, also system hooks might be an interesting topic for you.
Info |
---|
|
Read on
Section |
---|
Column |
---|
| Insert excerpt |
---|
| Preprocessing Metadata using Webhooks |
---|
| Preprocessing Metadata using Webhooks |
---|
nopanel | true |
---|
| Keep on reading |
|
|