Introduced in version 23.1
Added the method F
in version 24.3
Introduction
From version 23.1
you can create a batch offering rich metadata expressions where the new metadata of the item can be determined by
The (previous) metadata of the item
Combinations of fields
Conditions
Textual operations
Batch with metadata expressions
...
Introduction
Using Metadata Expressions a new batch task is available and named BatchExpressionTemplatesTask
. It takes as an argument a list of metadata sidecar-like arguments. An example of such metadata sidecar is
Code Block |
---|
{ "Descriptive": { "Title": "#{R('Descriptive.Title').toUpperCase()}", "Description": "#{R('Descriptive.Title') + ': ' + R('Dynamic.CustomDescription')}", "Keywords": {"Keyword": "#{R('Dynamic.CustomTag')}"} }, "Dynamic": { "Orientation": "#{(R('Technical.Width') > R('Technical.Height')) ? 'Horizontal' : 'Vertical'}", "AdditionalInformation": "My custom field" } } |
Methods
When putting a string in metadata sidecar with pattern #{...}
it will be evaluated using the Spring Expression Language. Inside an expression, you can reference the metadata using R(<Dotted key>)
or record(<Dotted key>)
for example R('Descriptive.Title')
or record('Descriptive.Title')
.
Only dotted keys referring to a field definition present in the system are allowed
...
Method
...
Effect
...
Since
...
R(String dottedKey)
...
Outputs the value of the metadata field as defined in the table below: https://mediahaven.atlassian.net/wiki/spaces/CS/pages/edit-v2/3829858305#The-output-of-the-metadata-accessor
...
23.1
...
R(String dottedKey, Object defaultValue)
...
field |
...
23.1
...
F(String dottedKey)
...
Similar to R
but with the exception that lists are flattened into a string using the separator -
...
24.3
...
F(String dottedKey, String joinSeparator)
...
Similar to R
but with the exception that lists are flattened into a string using the provided separator
...
24.3
The output of the metadata accessor
The output of the metadata accessor R
or record
is the following depending on which field type the dotted key refers to:
...
Level
...
Case
...
Effect
...
Accessor R
...
Accessor R Output
...
Accessor F
...
Accessor F Output
...
Top
...
SimpleField
...
String
...
R('Descriptive.Title')
...
My title
...
F('Descriptive.Title')
...
My title
...
Top
...
ListField
...
List of Strings
...
R('Descriptive.Keywords')
...
["A", "B", "C"]
...
F('Descriptive.Keywords')
...
A-B-C
...
Top
...
MapField
...
Map of Strings
...
R('Structural.Versioning')
...
" |
...
F('Structural.Versioning')
...
Not allowed
...
Top
...
MultiItemField
...
Map of List of Strings
...
R('Descriptive.Authors')
...
{"Authors": ["Cedric"], "Director": ["Alice", "Bob"]}
...
F('Descriptive.Authors')
...
Not allowed
...
Top
Others
...
Not allowed
...
Sub
...
Child of ListField
...
List of Strings
...
R('Descriptive.Keywords.Keyword')
...
["A", "B", "C"]
...
F('Descriptive.Keywords.Keyword')
...
A-B-C
...
Sub
...
Child of MultiItemField
...
List of Strings
...
R('Descriptive.Authors.Director')
...
["Alice", "Bob"]
...
F('Descriptive.Authors.Director', ' ,')
...
Alice, Bob
...
Sub
...
Child of MapField
...
String
...
R('Structural.Versioning.Status')
...
HEAD
...
F('Structural.Versioning.Status')
...
HEAD
...
Sub
...
Other
...
Not allowed
Variants
The expression can formulated in two manners
Multiple Spel expressions with textual information in between
text A #{...} text B #{...}
A single Spel expression using
#{...}
where extra text needs to be concatenated using+
Code Block |
---|
Multiple Spel = #{R('Descriptive.Title')} - #{R('Descriptive.Description')} Single Spel = #{R('Descriptive.Title') + ' - ' + R('Descriptive.Description')} |
Restrictions
The available features of SPel are for security reasons restricted to the following patterns
...
Literal expressions
...
Boolean and relational operators
...
Inline lists, maps, etc
...
Ternary operator
...
Merging
When the templated sidecar is evaluated against a record it will result for example in the following metadata sidecar
...