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 »

Use the same property in different object types. In some of them, the property is required and in others it is not. This tutorial explains the possibilities by means of a document import example.

Table of Contents

Introduction

The metadata structure of object types has to be defined in the schema. In this definition, properties are selected that should be connected to the object type. Each property itself is defined in the schema as well by the specification of its attributes. The properties can be selected or not selected in object type definitions, but their attributes are fixed and can not be modified. There is only one exception for the required attribute, that can actually be overwritten by a propertyReference in object type definitions and secondary object type definitions. This provides the possibility to decide for each property if it is required or not in each single object type. Since schema structures can even be changed at runtime, yuuvis® Momentum offers a high flexibility in terms of document lifecycle management. In this tutorial, a simple document import will be considered as an example for the need of changing the requirement of properties.

Requirements

To work through this tutorial, the following is required:

Overwriting the 'required' Attribute of properties

Any property definition in the schema needs the specification of the required attribute. Its boolean value decides if the corresponding property is mandatory (true) or optional (false) for an object.  However, the value of the required attribute can be overwritten by a propertyReference in object type definitions or secondary object type definitions.

Property Definition

In an import management system, documents might be imported with less properties than they will have later in their lifecycle. A fresh imported object for example, does not necessarily have an editor. Later in the document lifecycle, this information might be required. By overwriting the required attribute of the property editor, it is possible to use the same property throughout the whole lifecycle.

In the example code below, the property editor is defined. The required attribute of the property editor is set to true.  If not overwritten by a propertyReference, the property editor will be mandatory for any object of a type including the editor property in its definition.

Property definition
<propertyStringDefinition>
    <id>editor</id>
    <propertyType>string</propertyType>
    <cardinality>single</cardinality>
    <required>true</required>
</propertyStringDefinition>

Overwriting by Object Type Definitions

In an object type definition, a propertyReference can be used to set a value for the required attribute for a property. This value can be different from the value specified in the property definition. In this case, the required attribute will have the value from the object type definition.

Since for an imported1 document the editor property should be optional, the required attribute is set to false by means of a propertyReference.

Overwriting of the required attribute by object type definition
<typeDocumentDefinition>
    <id>imported1</id>
    <baseId>system:document</baseId>
    <propertyReference required="false">editor</propertyReference>
    <contentStreamAllowed>allowed</contentStreamAllowed>
</typeDocumentDefinition>

Overwriting by Secondary Object Type Definitions

An alternative possibility is the usage of a secondary object type on which the object type definition can be based. Also in the definition of the secondary object type, a propertyReference can be used to set a value for the required attribute for a property. The required attribute value specified in the original property definition is again overwritten.

In the example code below, the property editor is not included directly in the imported2 document type definition. But it is based on the non-static secondary object type noeditor. The definition of noeditor uses the property editor and sets its required attribute to false by means of a propertyReference. Thus, for objects of the type imported2, the property editor will be available and optional.

Overwriting of the required attribute by secondary object type definition
<typeDocumentDefinition>
    <id>imported2</id>
    <baseId>system:document</baseId>
    <contentStreamAllowed>allowed</contentStreamAllowed>
    <secondaryObjectTypeId static="false">invoice</secondaryObjectTypeId>
</typeDocumentDefinition>
 
<typeSecondaryDefinition>
    <id>noeditor</id>
    <baseId>system:secondary</baseId>
    <propertyReference required="false">editor</propertyReference>
</typeSecondaryDefinition>

Handling of Multiple Property References

In an object type definition, it is possible to set a value for the required attribute, and additionally include multiple secondary object types specifying the required attribute as well. If at least in one definition among the others implies required=true, it will be true for every object of the corresponding type. The value true dominates over false independently on the location of the propertyReference.

In the example code below, an object type imported3 is defined. The property editor is included, but the required attribute is overwritten to false. Thus, the property editor would be optional. But there are two secondary object types included noeditor and witheditor, that might have specified different values for the required attribute of the property editor.

Object type definition
<typeDocumentDefinition>
    <id>imported3</id>
    <baseId>system:document</baseId>
    <propertyReference required="false">name</propertyReference>
    <contentStreamAllowed>allowed</contentStreamAllowed>
    <secondaryObjectTypeId static="false">invoice</secondaryObjectTypeId>
    <secondaryObjectTypeId static="false">deliverySlip</secondaryObjectTypeId>
</typeDocumentDefinition>

The definition of the secondary object type noeditor overwrites the required attribute of the property editor to false. This value equals the specification in the imported3 object type. In contrast, the definition of witheditor includes the property editor by means of a propertyReference but does not explicitly specify a value for the required attribute. This means, that the value true from the property definition will be used for witheditor. Since the object type imported3 includes noeditor and witheditor at the same time, the dominating value of the required attribute for editor will be taken into account. Since true dominates over false, for the objects of type imported3, the property editor will be mandatory.

Different secondary object type definitions
<typeSecondaryDefinition>
    <id>invoice</id>
    <baseId>system:secondary</baseId>
    <propertyReference required="false">name</propertyReference>
</typeSecondaryDefinition>
 
<typeSecondaryDefinition>
    <id>deliverySlip</id>
    <baseId>system:secondary</baseId>
    <propertyReference>name</propertyReference>
</typeSecondaryDefinition>

Summary

This tutorial gave an introduction into the possibilities provided by the option of overwriting the required attribute of properties. Since this topic plays a role in the handling of the schema, also the following pages might be interesting for you.

Read on

Managing the Schema

This tutorial shows how to use the Core API to get the tenant-specific schema of the system, how to validate a schema, and how to bring in a new schema. Keep reading

Schema - Defining Object Types

Define properties and reference them in object type definitions for the entire system, for individual tenants or for a specific app. Keep reading

DMS Endpoints

To update the instance of an object type with the property group of a floating secondary object type as well as specific values use one of the two endpoints for updating metadata. Keep reading


  • No labels