Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

 

DigiMonitor: ItemWatcher

ItemWatcher logic has been rewritten for these purposes:

1) To provide unittestable code and in turn make sure functionality is tested thoroughly before release.

2) To provide better logging.

3) To fix specific issues with integer parsing which resulted in events not being handled and not correctly marked as failed either.

Nothing has changed regarding the configuration of ItemWatchers except an old bug which reversed 'greater than' and 'less than' when comparing values has finally been fixed.

In a users perspective the one and only major change from before to now is all ItemWatcher configurations are validated when starting up - even if they are not active. Any invalid configuration will result in an exception written to the digimonitor log in order to catch this at the earliest possible time.

Search2 security type ItemSecurityReadAccessOnlyPublic implemented for Solr

Not only that: it is now also the recommended security type to use with any Solr enabled search.

How to access/use the new implementation?

DigiMonitor: ItemWatcher

As before access ItemWatcher configuration via System Tools → Workflow → ItemWatcher.

 

How the new implementation works?

DigiMonitor: ItemWatcher

Logging has been overhauled. Messages are all in english and have been tightened up in wording and debug data.

Almost all parts of the configuration and certainly all of the common parts are now validated upon startup. As always it is important to check digimonitor logs. When an ItemWatcher is rejected due to error in configuration a clear exception message is written about this in the log for DigiMonitorPluginExecutor.

'Process only for this language ID' may now be omitted in which case a lookup is performed for digizuite constant 'LANGUAGE_DEFAULT_METADATA_ID'.

Some situations where events were marked as handled even though they failed they are now marked as failed instead. These situations are generally about when exceptions are thrown. Be aware that an event is marked as failed if 1 ItemWatchers fails in its "event matchmaking". So other ItemWatchers might have succesfully worked the event. This is as before.

Regarding configuration everything works as before. It should not be necessary to do anything differently. The exception is if any of the operators 'greater than' or 'less than' are used. See section below for details.

Security type 'ItemSecurityReadAccessOnlyPublic'

Works as before but now also works with Solr. With 'ItemSecurityReadAccessOnlyPublic' these 4 filters are applied in addition to the standard readaccess check:

1) deleted = 0: deleted assets are filtered out.

2) is_public = 1: non public assets are filtered out.

3) expiration: an unused feature but nonetheless expired assets are filtered out.

4) published: an asset needs to have been fully through a publish otherwise it is also filtered out.

How to configure the new implementation?

DigiMonitor: ItemWatcher

SpecialValidator: Isnumeric

This option did not work properly and has been fixed. Simply specify 'Isnumeric' (case insensitive) within an xml tag to validate that a value is numeric. Example: <AssetType>Isnumeric</AssetType>.

SpecialValidator: Len

This option did not work properly and has been fixed. Simply specify 'Len [operator] [value]'. Supported operators are '=', '>', '<' and '!' and obviously value needs to be an integer. Spaces between 'Len' and 'operator' or between 'operator' and 'value' are ignored. An error in this configuration is an exception to the general rule of validating all configuration at startup and will still be validated upon handling an event.

Example: <Description>Len!0</Description>

Example: <Description>Len &gt; 0</Description> (notice that greater than and less than must be escaped as per xml standards)

ItemIdRequired

Working as before but important enough to reiterate. When set to true only events with a present and valid (>0) ItemId will be handled. It is not necessary to specify configuration for a value check ('Process only for changes to this item metadata field ID' and related configuration) but if this configuration is done it will only be performed when ItemIdRequired is true as looking up non-item metadata values is not supported.

Operator: Less than, Greater than

Now works as they should. In case this is used and has been reversed to do what is needed they will need to be set correctly.

Everything else

No changes except validation is done at startup.

How to manually change Digizuite_system_framework_search to use ItemSecurityReadAccessOnlyPublic

Delete these 3 sections (if present) as they are now obsolete:

Sections to delete
<searchField id="isPublic" fieldName="asset.is_public" valueHandler="Equals" operator="AND">
    <values valueType="String">
        <value>1</value>
    </values>
</searchField>
<searchField id="sIsNotDeleted" fieldName="asset.deleted" valueHandler="Equals" operator="AND">
    <values valueType="String">
        <value>0</value>
    </values>
</searchField>
<searchField id="sFirstPublished" fieldName="asset_layoutfolder.FirstPublished" operator="AND" valueHandler="NotEmpty" visible="false" />

Then change security to ItemSecurityReadAccessOnlyPublic

Edit security type
<searchField id="security" securityType="ItemSecurityReadAccessOnlyPublic" visible="false" operator="AND" />

 

DOs

DON'Ts

Tips & Tricks

What has been released?

What is in the next release?

 

  • No labels