# Classification

## Key Features

I18N characters are not supported for values which are used as UI info later on, e.g. Attribute code or Attribute title.
When using select menu to assign attribute values to an object in classification, values using I18N characters are not visualized correctly.

The Classification module contains the functions to specify a class. Attributes / attribute sets have to be created first to be able to fill the classification list of a class with information.

Example:

All necessary attributes (thread diameter, length, etc.) that will be assigned to the individual classes, are defined in the attribute pool.

The classes (such as screw, wood screw, hexagon-socket head screws, etc. ) are created after attributes and attribute values have been created. These classes can be structured to be assigned to each other. They can be arranged in a hierarchy of super- and subclasses (Abstract Classes).

Next, the classes (e.g. screw) have the attributes (such as length and thread diameter) from the attribute pool assigned. The assignment of objects (item: 123456-screw; 234556-screw) to the classes permits the classification list to be filled and created. Furthermore, the actual attribute values (i.e. the actual length and the thread diameter) of the objects are specified.

The validity of the values is checked automatically.

### Creating an Attribute Pool

An attribute describes a property of an object, such as its length or diameter. Irrespective of the class assignment, all attributes are created and managed in the attribute pool. When assigning to classes, the corresponding attribute can be selected from this pool.

An attribute always consists of a name, a code (that is later used as list entry in the classification list) and the attribute type.

Field | Explanation
Validation | A check string can be entered in the Validation field to define the layout of the attribute field in the Class List tab of the Class mask. Data View
Language | This field becomes only active when the String type has been selected. It displays the different languages the attribute can be shown in.
Attribute ID | The Attribute ID is created automatically. The id is needed in combination with a formula for the attribute value.
Field name | Shows the same entry as Code field.

The attribute can also have graphics assigned.

Integrating Graphics

| The number of fields in the classification list is limited to 256. Each language variant counts as an individual field. Thus the maximum number of attributes depends on the number of used languages: e.g. when using 10 languages the maximum number of attributes is limited to 24!

An attribute cannot be edited or deleted in the Released or Inactive status in the class assignment. An attribute can only be deleted

- when it has no more attribute values assigned;
- when it is no longer used in any class.

An attribute defined in the attribute pool usually has a so-called attribute value assigned to it.

| The attribute pool can only be used with the ATT model.

### Assigning and Updating Attribute Values

Irrespective of the defined attribute type, an attribute value can be an exact value specification (multilingual value), a formula, or a range with maximum and minimum values or strings (e.g. adjectives). The attribute values become selective once the respective attribute is assigned to a class.

The Multilingual Value can be entered manually and updated as long as the attribute is still in the status "In Work" or in "In Approval".

Values that can be entered for attribute values depend on the chosen type (e.g. integer, string, etc.) for the attribute. Information on possible values can be found in the Data View documentation.

If the attribute is of type string, minimum or maximum values are not considered for the attribute values.

Logic values do not have to be specifically defined. In the Class List of the Class mask they will be displayed with a checkbox that can be selected or not.

Data View (DTV Object Reference / Field Data Form / Type)

A glossary entry can be created with an exact value assigned to it. When loading the glossary entry in the column Glossary Id, the Multilingual Value will be inserted automatically. If the value has been updated in the glossary entry, it can be updated in different ways in the Attribute Pool mask .

- The glossary entry with the new value assigned to it has to be set to the status "Released"
  In the Attribute values tab of the Attribute Pool mask click the refresh button . The new value will be displayed.
- Open the glossary entry in the Glossary mask and in the context menu click Where Used.
  The Where Used mask is opened. Mark the entry and in the context menu click Update Where Used. In the Attribute Value tab of the Attribute Pool mask click the refresh button . The new value will be displayed.

Text Management

The Multilingual Value can also be updated by marking the line in the Attribute values tab and by opening and closing the select menu of the Glossary Id column.

When assigning an attribute to a class and consequently to the previously defined attribute value, the attribute value can have a class-specific status (Active, Inactive, Prototype).

- Inactive: The attribute value at this class cannot be used for the assigned class.
- Prototype and Active: The attribute value at this class can be used for the assigned class.

In insert and edit mode only values of the "Active" and "Prototype" statuses are displayed. In search mode, however, all inactive values are included in the search.

Verification of Values

Attributes with attribute values assigned to it, can only be deleted from a class when the status is set to Inactive!

Change the Value Status of a Class

Defining a Formula

If the value has to be calculated, a formula can be entered in the Formula column. Logical operators are combined with the Attribute Id, whereas the attribute id has to be set in curly brackets.

Logical Operators | Attribute Id
+ - * / | e.g. {2000000141}

### Assigning Attributes to Attribute Sets

In order to improve the usability of attributes, attribute sets can be defined. Several attributes can be grouped in one attribute set, also, one attribute can be assigned to several attribute sets.
The attribute set cannot be deleted if the attribute set is used as primary attribute set for any attribute of the class. An error message will be displayed and the deletion canceled.

Attribute sets can be copied. The assigned attributes to a set will only be copied into the new attribute set when the Attributes tab of the Attribute set mask is opened! When the General tab is opened, the set will be copied without the assigned attributes!

### Define the Primary Attribute Set for an Attribute

The Attributes tab in the Class form contains the column Set Id which specifies the primary attribute set the attribute can be assigned to. Because each attribute can be assigned to several attribute sets,Set Id lists all sets the current attribute is assigned to. Selecting one set specifies the primary connection between the attribute and the set.

| If a primary set was updated, the previous primary attribute set will NOT be deleted from the class.

### Visibility of Attribute Sets in Classification List

The attributes of an attribute set are visible by default (non-strict mode). The visibility setting can either be changed in the Attribute Set (non-strict mode) tab in the Class form or in the Class List (strict mode ) tab in the Class form. If the non-strict mode will be applied after the strict mode, a new Class form needs to be opened to display the correct visibility settings in the classification list.
If visibility is configured to be in strict mode, the visibility of each attribute is defined by the visibility of the primary attribute set only.
If visibility is configured to be in non-strict mode, the attribute is invisible only if all attribute sets are invisible at the class to which the attribute is assigned to.

| The classification list can contain 255 fields. If the maximum number of fields is exceeded, a warning message is created and an empty classification list will be opened.

### Lifecycle

Any object (attribute or class) is assigned to a so-called lifecycle. This lifecylce enables the definition of any organizational process. An object has a certain "Status". The status consist of the level of maturity of the object (e.g. Development, Prototype, Series) and its status (e.g. in Work, in Review, Released etc.). An object always runs through the whole lifecycle. State changes can have different access rights assigned. A developer for example can put the object into the status In Approval, but only the project manager can release the object.

The following figure shows the different states and the possible states following of the standard lifecycle. The lifecylce can be adapted.

### Creating Classes

When creating classes, the type of the object that is to be classified must directly be selected (documents, items, etc.). The entity can be chosen from a selection menu. In the Category field you can choose a specific class type from a selection menu, e.g. Product, Assembly, Program, Part, etc.

| The Entity field can only be defined during the creation of a class. It is a read-only field in update mode, therefore, it can no longer be changed.

Classes can be structured hierarchically by using sub- and superclasses.

The structure of classes can be displayed in the browser.

It is possible to define a hierarchy (structure) of classes by assigning subclasses. This class hierarchy facilitates the Query for the user considerably.
The user has the possibility to enter this hierarchy path manually in the Hierarchy field.

### Category / Entity

For each entity, specific categories can be chosen. The following look-up table gives an overview of some of the valid combinations between category and entity entries. Only the entries supplied by the selection menu can be chosen for the Entity and Category field.

Entity | Category
EDB-ARTICLE | Product
EDB-ARTICLE | Assembly
EDB-ARTICLE | Program
EDB-DOCUMENT | Contract
EDB-DOCUMENT | Specification
EDB-DOCUMENT | Correspondence

Manager rights are needed to define new entities.

### Releasing Classes

Classes can be released similar to documents and items. A version number will not be supplied for each release state, therefore, all changes of a class definition overwrite the old class definition. Depending on customized settings, the following activities are allowed or disallowed during the change from one release state to another.

Possible activities are for example:

- Adding/Deleting attributes to the class
- Adding/Deleting attribute values to the class
- Classify new data in classification list
- Delete/Modify existing data in classification list

### Assigning Attributes

A class can only have attributes assigned that have been created in the attribute pool. Changes to the attributes are made in the attribute pool. They have an effect on all classes (but not on previously assigned objects such as items).

Field | Explanation
Menu | A special menu can be defined for each attribute. This menu is then displayed in the Classification List.
Type | Opens a select menu to define the menu type (e.g. Choicebox, Wiedget, etc.)
Access | Data View
Pre- / Post-field | Userexits
Color | Defines the color of the attribute field in the Class List tab.
Length | Defines the maximum number of characters that can be shown in the attribute field.
Virtual Length | Defines the visible number of characters that are shown of the maximum number of characters in the attribute field.

When assigning attributes to the classes, the values assigned to the attributes will also be taken for the classes. For each class, they can have class-specific states assigned:

- Inactive: The attribute value at this class cannot be used for the assigned class.
- Prototype and Active: The attribute value at this class can be used for the assigned class.

In insert and edit mode, only values of the status "Active" and "Prototype" are displayed. In search mode, however, all inactive values are included in the search.

| When you use the ATT model, the attribute pool can be maintained in several languages, and the value range can be verified. These functions are not available when you use the Type model.

### Define Presentation of Attribute Titles

The attribute title, displayed in the classification list, is set to the default value "Title" (S = letter only).

The settings can be modified in the configuration parameter "EDB-GTM-TIT".

### Verification of Values

When you save the class-attribute assignment, the system checks whether the entered values correspond with the defined values. The verification of the values depends on the check type (CHK):

- CHK = M: The field must contain a value from the attribute menu in the classification list, or has to be empty. The data record cannot be saved if this is not the case.
- CHK = W: The field may contain a value that is not entered in the attribute menu in the classification list, or has to be empty. A warning is shown during saving.
- CHK = N: The field may contain a value that is not entered in the menu in the classification list. No warning is shown during saving.

| When assigning an attribute to a class and adding a menu in the Menu field, the check type "M" cannot be used.
| Mulitlingual string values are considered automatically when value is selected by chosing from value menu for the attributes. If values are entered manually, the multilingual string values are not stored.

### Assign Attributes

An attribute can only be assigned once in a class structure (with child and parent classes): The unambiguity of the attributes within the structure is not checked when you hook a complete class with assigned attributes underneath another class with attributes. Unambiguity check is performed only if an attribute is newly added to a class.

An attribute in this class can only be deleted if it does not have any more attribute values assigned.

### Abstract Classes

In the structure of a class hierarchy, only the classes of the lowest hierarchy level possess a classification list. The classes above are so-called abstract classes. When creating these superior classes the Container checkbox needs to be activated in the form header. This checkbox represents an abstract class which can be used as a superior group in a class hierarchy.

It is not possible to (de)activate the Container checkbox after having created the class.

### Inherited Attributes

Subclasses "inherit" the attributes of the superclass and of all classes of higher hierarchy levels. That means that the subclass has the same attributes as the higher class, too (except an inherited attribute is explicitly suppressed). This setting is a default setting. It can also be changed in the configuration parameter EDB-GTM-INH-RLS. If the value = 1 then the attribute inheritance will not happen by assigning an attribute to a class, but by releasing a class with the ‘release management’. In this case the LGV procedure EP_GRP_INHERIT/InheritClassAttributes must be inserted in the lifecycle STD-GRP as pre-action for the release transition
(e.g. 120 -> 230 and 240 -> 230).

Since objects of the same kind are classified, we assume that an attribute of a higher class also describes all subclasses. If, for example, you want to classify screws, you can create a Screw class with a Length attribute (since all screws shall have the Length attribute assigned). As a subclass, you can create a Machine screws class that has also a Head form attribute assigned. The classification list of this class contains both attributes - Length and Head form.

The Sequence field determines the position of the attribute in the list. The position of the attribute can be different in the local and inherited attribute list.

An error message will be displayed when the inserted attribute is already used for a different class.

Deleting inherited attributes from a subclass is handled like suppresing the inherit attribute in the upper class.

### Suppressing the Inheritance of Attributes

A class can have a subclass assigned without inheriting all attributes of the superclasses. The attributes of the subclass that are not inherited must be suppressed for this purpose.

### Change Order of Assigned Attributes

The order of attributes assigned to the class determines the access to an attribute which is used when assigning items in the classification list. It is recommended to change the order of the attributes in such a way that the attributes used more often are displayed first. Assigned or inherited attributes can also be positioned in the attribute order.

### Multiple Classification

An item is usually assigned to one class only. Several references are possible if there are different classification structures (such as a technical structure and a commercial structure). (Parallel assignment to several classes.)

### Classification List

In the classification list, the created classes are filled with objects (items, documents, etc.), and the associated precise attributes are entered.

The attribute columns only display attribute values that are released for the current class. Class structures are taken into consideration here. The insert and update modes solely show attribute values that feature the Active or Prototype statuses on this class. In Search mode, all inactive attribute values of the attribute are additionally displayed. When selecting an attribute value, a reference of that value is stored in the classification list.

The classification list can also be accessed from the object (Item or Project) form by opening the Survey class attributes tab. The current object is preselected and is opened in a non-modal window.

### Integrating Graphics

Graphics can be integrated into the forms for classes, attributes, and list of attribute values. The benefit of integrated graphics is the possibility to display an image of an item with the set attributes.