Programmer's Interface Changes
New interfaces for MetadataBinding, QueryEnhance and TranslationManagement. Interfaces ICustomerFunction and IOnDocStore are replaced by IWrite*-plugins and IEventHandler by IBackgroundTaskHandler
All interfaces
All programmer's interfaces are now fully natively .NET. In 11.0.0 we introduced IWrite* plugins as replacement for IOnDocStore and ICustomerFunction. In 11.0.1 we introduced IBackgroundTaskHandler to replace IEventHandler.
Introducing MetadataBinding Extensions
Every MetadataBinding connector should implement Trisoft.InfoShare.Plugins.SDK.Extensions.MetadataBinding interfaces. The connector is read-only. Configuration is stored as part of <infoShareExtensionConfig> under <metadatabindings>, located in FISHEXTENSIONCONFIG field available through Settings25 API.
| Interface | Short Description |
|---|---|
IHandler | Interface to retrieve information from an external system |
IHandlerConfiguration | Interface is implemented by the object passed to .NET handler Initialize method. It provides a handler with the parameters configured in the XML Extension Settings |
IFieldsFilter | Interface for passing metadata that can be used to further filter the results to the RetrieveTags and RetrieveTagStructure methods |
IMessage | The message and all information necessary to translate the message |
IMessageParam | One parameter for the (error)message |
IResolveIdsContext | Implement this interface in order to pass it to the metadata binding ResolveIds method |
IResolveIdsResult | An object implementing this interface is returned from the metadata binding ResolveIds method |
IRetrieveTagsContext | Implement this interface in order to pass it to the metadata binding RetrieveTags method |
IRetrieveTagsResult | An object implementing this interface is returned from the metadata binding RetrieveTags method. |
IRetrieveTagStructureContext | Implement this interface in order to pass it to the metadata binding RetrieveTagStructure method |
IRetrieveTagStructureResult | An object implementing this interface is returned from the metadata binding RetrieveTagStructure method |
IStructureTag | Container for the minimal metadata of the object in the external system and of the propriety that defines if the object can be selected or not. It is used when returning results from the RetrieveTagStructure method. |
ITag | Container for the minimal metadata of the object in the external system. It is used when returning results from the ResolveIds and RetrieveTags methods |
ITagRelation | Container for the relationship between 2 Tag objects. It is used when returning results from the RetrieveTagStructure method |
IValidateContext | Implement this interface in order to pass it to the metadata binding Validate method |
IValidateResult | An object implementing this interface is returned from the metadata binding Validate method |
Introducing QueryEnhance Extensions
The Web Client and Client Tools full-text index search actions are all routed over Search25 API. All the API consumers don't and shouldn't know if a field is metadata bounded or not. So there are no API changes for this. This extension point can enhance the incoming XML query before submitting to the full-text index. The examples are adding extra search criteria.
The configuration is stored as part of <infoShareExtensionConfig> under <search> stored in FISHEXTENSIONCONFIG field available through Settings25 API. The <queryenhance> entries are executed in the configured order.
| Interface | Short Description |
|---|---|
IEnhanceQueryContext | Uses the IEnhanceQueryContext instance properties to access the input data passed to the EnhanceQuery method of IQueryEnhanceHandler class |
IEnhanceQueryResult | Returns IEnhanceQueryResult instance from the EnhanceQuery method of IQueryEnhanceHandler class |
IQueryEnhanceHandler | Interface for dynamically enhancing the search query |
IQueryEnhanceHandlerConfiguration | Contains the objects required for the query enhance handler initialization |
Introducing Target XML File Extensions
It is now possible to configure a list of processing actions performed on to-be-translated XML files before they are sent to translation. You can do so using interfaces described in the documentation as Translation management plugin interfaces.
This set of interfaces is also responsible for purging any of the generated target file markup. For example going from a mixed language file back to a single language file.
Trisoft.InfoShare.Plugins.SDK.Extensions.TranslationManagement.
| Interface | Short Description |
|---|---|
ITargetXmlFileHandler | Custom handler for generating a target file based upon the current source file and the previous released translation |
ITargetXmlFileGenerateContext | Implemented by the object passed to the handler Generate method. It provides the handler with the necessary input data |
ITargetXmlFileHandlerConfiguration | Implemented by the object passed to the Initialize method of the handler implementing the ITargetXmlFileHandler interface. It provides the handler with all parameters configured in the XML Extension Settings. |
ITargetXmlFileGenerateResult | The Generate method of the ITargetXmlFileHandler class return an ITargetXmlFileGenerateResult instance |
ITargetXmlFilePurgeContext | Implemented by the object passed to the handler Purge method. It provides the handler with the necessary input data |
ITargetXmlFilePurgeResult | Needs to be implemented in order to return the result of the Purge method from the ITargetXmlFileHandler class |
IBackgroundTaskHandler replaces IEventHandler
Background Tasks can now be handled by a full stack .NET implementation. The following interfaces are provided and documented: IBackgroundTaskHandler, IBackgroundTaskHandlerContext and IBackgroundTaskHandlerConfiguration.
IBackgroundTaskHandler alternative implementation of the following plugins.
| Name | IEventHandler (COM+) | IBackgroundTaskHandler (.NET) |
|---|---|---|
| THUMBNAILSUBMIT | ISHPluginsIso.CDocSetThumbnail | SetThumbnail |
| INBOXEXPORT, REPORTEXPORT, SEARCHEXPORT, PUBLICATIONEXPORT | IshPluginsIso.cOut | ExportObjects |
| PUBLISHINGSERVICEPROCESS, ZIPFILES, SYNCHRONIZETOLIVECONTENT | IshPluginsIso.cIshShell | IshShell |
API References documentation is available for the interfaces or on how to Create a background task handler.
IWrite* plugins Improvements
- Execution during translation creation
-
It is now possible to configure a list of write plugins which will be executed during the creation of the target language objects. When a translation is created, all Write plugins that have value
CreateTranslationasCurrentActionconfigured in the@ishconditionin the IWrite* configuration are executed. - Execution when objects are sent to publish
-
During
PublicationOutput, when an object is sent to publish on a specified output, IWrite plugins can be executed. It can only be plugins that act on metadata (so, noIWriteMetadataAndBlob...is applicable) because the blob cannot be modified at this point. These plugins can add additional actions during a status transition, such as changing a date or starting a messaging background task. CopyFieldplugin-
A
IWriteMetadata - CopyFieldplugin is introduced. This plugin copies values from one field to another. It is used byCreateTranslationduring Translation Management to make sure that mandatory or unchanged fields (e.g translation word count) are available. LoggerName-
A specific
LoggerNamefor thePluginLogServiceis available and can be configured from now on. [TS-8913] - Context based on element names
-
The IWrite* plugins that will be executed on your objects are selected by conditional publishing of the IWrite* configuration ( or Admin.XMLWriteObjPluginConfig.xml). Your incoming object will drive the context used for conditional publishing. Configuration can now be done by element names besides the more volatile labels. An @ishcondition entry such as
DOC-LANGUAGE='en' AND ishoutputformat='PDF a4'- which breaks if somebody renames the language to en-US - should now be configured using the stable element names likeDOC-LANGUAGE='VLANGUAGEEN' AND ishoutputformat='VOUTPUTFORMATPDFA4'.Language, resolution and output format are extended. The documentation describes the possible condition names and values that define a context for content objects and publication outputs. So an example context, also called product definition, looks like this:CurrentAction = SetMetadata IshType = ISHIllustration FMAPID = GUID-BC80B446-62BB-4583-9AF5-1C94D0C236E2 VERSION = 1 DOC-LANGUAGE = en, VLANGUAGEEN FRESOLUTION = Thumbnail, VRESOLUTIONTHUMBNAIL EDT = EDTJPG ISHUserGroup = VUSERGROUPDEFAULTDEPARTMENT ISHLevel = logical, version, lng
IWrite* plugin BlobExtractMetadata finetuned
A configuration like <Parameter name="ExtractXPath">//*[contains(@class,' topic/shortdesc ')] that returned an element was not possible anymore. When multiple values were returned from the XPath and stored in a single value field, we returned a TooManyValues error, instead of concatenating the values with a comma space.
FSHORTDESC is a single value string field, and the XML file contains:
<shortdesc>The
<b>Title</b>
provides information about configuring networking for
<i>SDL</i>
Architect, such as iSCSI, Fibre Channel, and so on.
</shortdesc>
| For an ExtractXPath = "//*[contains(@class,' topic/shortdesc ')]" the result in FSHORTDESC would be: | The Title provides information about configuring networking for SDL Architect such as iSCSI, Fibre Channel, and so on. |
| For an ExtractXPath = "//*[contains(@class,' topic/shortdesc ')]/text()" the result in FSHORTDESC would be: | The , provides information about configuring networking for, Architect such as iSCSI, Fibre Channel, and so on. |
| For an ExtractXPath = "//*[contains(@class,' topic/shortdesc ')]//text()" the result in FSHORTDESC would be: | The , Title, provides information about configuring networking for , SDL, Architect such as iSCSI, Fibre Channel, and so on. |
- For an ExtractXPath =
"//*[contains(@class,' topic/shortdesc ')]"the result inFSHORTDESCwould be The Title provides information about configuring networking for SDL Architect such as iSCSI, Fibre Channel, and so on. - For an ExtractXPath =
"//*[contains(@class,' topic/shortdesc ')]/text()"the result inFSHORTDESCwould be The , provides information about configuring networking for, Architect such as iSCSI, Fibre Channel, and so on. - For an ExtractXPath =
"//*[contains(@class,' topic/shortdesc ')]//text()"the result inFSHORTDESCwould be The , Title, provides information about configuring networking for , SDL, Architect such as iSCSI, Fibre Channel, and so on.