Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduced in version 23.1

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

The new 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"
    }
}

...

}

...

info

The R takes an optional second argument, which is the default value when the metadata field is not present.

Merging

When the templated sidecar is evaluated against a record it will result for example in the following metadata sidecar

...

This metadata sidecar will then be merged against the record using the same rules as when MediaHaven Rest API - Updating a record.

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

...

Example Expression

...

Example Output

...

Top

...

SimpleField

...

String

...

R('Descriptive.Title')

...

My title

...

Top

...

ListField

...

List of Strings

...

R('Descriptive.Keywords')

...

["A", "B", "C"]

...

Top

...

MapField

...

Map of Strings

...

R('Structural.Versioning')

...

{"Status": "HEAD", "Version": "2"}

...

Top

...

MultiItemField

...

Map of List of Strings

...

R('Descriptive.Authors')

...

{"Authors": ["Cedric"], "Director": ["Alice", "Bob"]}

...

Top

Others

...

Not allowed

...

Sub

...

Child of ListField

...

List of Strings

...

R('Descriptive.Keywords.Keyword')

...

["A", "B", "C"]

...

Sub

...

Child of MultiItemField

...

List of Strings

...

R('Descriptive.Authors.Director')

...

["Alice", "Bob"]

...

Sub

...

Child of MapField

...

String

...

.

...

HEAD

...

Sub

...

Other

...

Output after evaluating the expression

...

Notice how the string "#{R('Dynamic.CustomTag')}" is evaluated into an array ["My custom tag"]. The end result is a valid metadata sidecar for “Keywords” namely "Keywords": {"Keyword": ["My custom tag"]} whereas before evaluating the expression "Keywords": {"Keyword": "#{...}"} is not a strictly valid metadata sidecar because the value of "Keyword" must be an array and not a string.

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

...