Attributes - Processes


  1. Why attributes?
  2. Description
    2.1 Preset attributes
    2.2 Formula attributes
    2.3 Conditional attributes
  3. Creating/using attributes
    3.1 Preset attributes
    3.2 Formula attributes
    3.3 Conditional attributes
    3.4 Characteristics tables
  4. Assigning attributes
  5. Structuring of attributes
  6. Gradual and conditional expression of attributes
  7. Editing of attributes in master and transaction data
  8. Use of comparison operators
  9. Attributes with control functions

1. why attributes?

Attributes are of central importance in ClassiX®, as they allow to describe an object (object, person object or similar) in all its characteristics without having to make changes to the source code.

Example: The aim is to describe a sales item by its colour.

  • The solution of conventional software is to add a further data field for the colour in a relational database and to extend the editing mask 'sales parts' by an input option for colours. This can only be realised by making changes both in the source code and in the database. To avoid redundancy you would even have to create a new master data table (1st normal form) with all possible colours.

  • The ClassiX® solution consists of the so-called attributes. For example, every real object (parts, installations, etc.) has an attribute set, into which attributes, i.e. characteristics, can be inserted/created. Any user can create/insert these attribute objects in the database and assign them to an object. Another advantage is that no changes have to be made to the user interface. For example, if a sales part is to be distinguished by its colour and a spare part by its size, the same editing window can be used. Attributes can also contain a table in ClassiX®, so that the data is automatically brought into the first normal form without much effort.

2. description

2.1 Preset attribute

A preset attribute allows a dynamic data field to be given a descriptive name, further explanatory data or a default setting.

Example: A carpet seller with a ClassiX® software wants to describe his carpets by different characteristics. For example, all carpets should be described by their price. So he adds a characteristic to all master data, in which he can then specify the price. If individual carpets are to be described by their colour (no free input, only colours from a colour table should be available), he can do this by means of an attribute, which for example describes a data field of type 'String'. This attribute is then provided with a table with the different colours.

Attribute values are only supported in the formulas up to a maximum of 100 characters!

2.2 Formula attributes

As the name suggests, formula attributes are used to fill a data field with a formula, or with the value that the formula calculates. Constants can be entered directly into the formula while the variable values are slot attributes.

Example: The carpet seller now wants to describe his carpets also by size, whereby the carpets have the characteristic that all carpets have the same width (4m) and differ only in length. Here the carpet seller benefits from the formula attributes. So he creates an attribute with the formula '4m * length'. The length is again a preset attribute, whereby the value or the result of the formula attribute changes automatically when the value is changed.

2.3 Conditional attributes

Conditional attributes can contain a table that describes an "if - then" relationship.

Example: The carpets of the carpet seller are to have their own price per colour. We now create a conditional attribute and fill the table with the data we need for the price calculation. (e.g.: red -> 10 € ; blue -> 20 € ; yellow -> 30€ ) In addition, we set our just created attribute in dependence of the attribute for the colour.(see example Preset attribute) If the attribute for the colour is changed, the corresponding value of the condition table is now automatically returned.

3. creating/using attributes

Slotattributes En
The first step in creating an attribute is very general, i.e. regardless of whether I want to create a preset, a conditional or a formula attribute, I will always have to select a data field first. At this point, at the latest, you should consider what you want to use the attribute for, as there are different data fields with different types. These different types have a great influence on how, for example, comparison operators can be used later. For example, if I want to use the attribute to describe an object with a text (e.g. comments or similar), then I should choose a data field of the type CX_STRING. If I want to specify a value, one will normally choose a CX_VALUE data field and so on. Then you can specify an editor and the date when the attribute was created or last edited. The data fields 'Description' and 'Internal text' can be used to know later what purpose the attribute serves.
Via the checkbox 'Value check' it is possible to activate conditions for the attribute value and to define them in the appearing field. In the example image, it was specified that the value of our attribute (DIAMETER) must not be smaller than 10 mm. If the value entered does not meet the restrictions set in the value check, a corresponding dialogue box appears informing the user of his input error.

3.1 Preset attribute

In the case of preset attributes, the value can now be entered in the field Preset, or a table can be created via [[Edit - Preset - Create own table]], which can be edited using the Edit button. If you now insert the attribute in an object, it takes over the preset value or you can select a value from the table if necessary. If you set the checkbox 'Exclusively', you can later only adopt the values from the table.

3.2 Formula attributes

When creating formula attributes you start as before until you reach the input window of formulas.

Formulaattributes En

The fixed values of the formula can be specified directly, while for the variable values the name of a slot attribute containing the desired value is specified.
The following operands are available to the user:

Arithmetic operators: * / + - 
Comparison operators: < > <= >= !=
Logical operators: & |
Assignment: :=
Separator: ;
Conditional expression: if ... else

With the menu item Edit you can choose between the formula types 'Individual' and 'General'. With 'Individual' (standard setting) an individual formula is stored in the calculated characteristic, with 'General' reference is made to a calculation formula already stored in the system. The latter case can be useful if some calculated characteristics should have different names, controls or validities, but the formula should always be the same.

3.3 Conditional attributes

When creating conditional attributes you start as before, under 'Value check' new options and a conditional table are available.

Conditionedattributes En

Result required The conditional table must give a result
Abort if no result is found If none of the conditions in the table apply, an error message is displayed. Setting this selection automatically also sets the field "Result required".
Ignore non-determinable/calculable condition If variables in a condition are not automatically found in the machine, no message is displayed and the condition is skipped. This also means that such variables are not interactively queried.

The individual lines can be edited using the buttons ('Insert', 'Duplicate', 'Delete') above the table.
The columns are edited via the context menu (right-click) within the table. In order not to have to write determining values (variables) in the conditions of the entries of the table again and again, these can be extracted as independent columns of the table. With "Insert columns" you get a selection window of preset characteristics, with "Edit columns" you can directly enter the names of the variables of the desired columns.

3.4 Tables of characteristics

Feature tables make it easier to work with attributes if you have to assign the same 'groups' of attributes to an attribute set again and again. Thus, any attributes can be listed in a characteristics table, so that you only need to insert the characteristics table.

Setattributes En

The individual attributes can be inserted, created, edited and deleted via the menu item [Edit - Attributes] or via the context menu.

4. assigning attributes

You can create global  global.png Insert, change or delete attributes. Additionally you have the possibility to create new local  local.png attributes, which are then only valid in this object.

Editattributes En

The attribute data can be edited by double-clicking.
A right-click on a locally created attribute calls up the input mask.

5. structuring of attributes

In some documents and master data the list of attributes can often be very extensive. This makes it difficult to keep track of the data and thus to maintain it. For this reason, attributes can be structured by grouping attributes with similar content into blocks. For example, sales and technical attributes can be divided in the order.

Setattributes En

The structuring of the attributes starts in the master data through the attribute tables. Attributes that belong together are organised here in a table of characteristics. In this example the attributes length, width and height are assigned to the node volume. The table of characteristics also determines the structure in which the attributes are to be used. There are three options here: expanded, compressed or structured insertion.

Expanded Insert means that the attributes of the characteristics table are inserted directly into the document or master data. The characteristics table as the header of the attributes is lost. With compressed insertion only the characteristics table is inserted. The attributes of the characteristics table are then known in the document, for example, but cannot be edited. Therefore, this type of use in documents only makes sense if constants are required for calculations. Structured insertion means that the structure, which is formed using the characteristics tables in the master data, is retained when used in documents or in the master data. In this way the characteristics table is also transferred as a node. Only the nodes are displayed in the attribute list of the respective editing masks, which makes the lists clearer. By double-clicking on the node, the attributes belonging to the node are also listed and can be edited. Another double click will collapse the node again.

The specification of how the characteristics tables are to be inserted can already be determined in the master data by means of the checkboxes. If only one checkbox is selected here, this rule applies directly when inserting the table of characteristics. If several or no defaults are defined, the user can choose one of the allowed options when inserting. No set option is treated as if all options are set.

Tables of characteristics can also contain other tables of characteristics. In this way not only one but several hierarchies are created. If this is the case, the type of insertion should be specified for each node, as otherwise the user will have to go through numerous queries when using them.

6. gradual and conditional expression of attributes

Attribute nodes allow the gradual and conditional expression of attributes. This is particularly useful in product configuration (the specification of variant parts), but can also be useful when entering any form (document) or master data.

Application example for the gradual development

An application example for the gradual development of attributes is the division of a complex table of values of an attribute. Let us assume there is an attribute "MATERIAL". Behind this attribute there is a very large selection of different materials (various types of steel, aluminium and plastic as well as numerous alloys). This table can become very long, so it could take longer to select the right material.

As a solution to this problem, the attribute "MATERIAL" can be created several times and the result table can be restricted in each case. So mine could create an attribute for steel, aluminium etc. and offer only the corresponding selection options as a result table. In addition you would have to create a new attribute "MATERIAL_ART" with the selection table: steel, aluminium, plastic and alloys. Behind this attribute, an attribute node is stored, which refers to the corresponding attribute "MATERIAL" depending on the set value.

For example, in the sales item the attribute "MATERIAL_ART" is then inserted instead of the complex table "MATERIAL". In the order, you then first select "MATERIAL_ART". The corresponding attribute "MATERIAL" is then automatically added and in the second step this value can then be set.

Application example for the conditional gradual characteristic

The conditional characteristic behaves similarly to the application example mentioned above, but is a little more complex. In the first example, the expression of one attribute led to other attributes with the same name with filtered result tables. However, an extensive product configuration can also be carried out via the attribute nodes.

Let us imagine the configuration of a car. A car can be defined by many parameters. However, these parameters can be strongly interdependent. For example, after selecting 2- or 4-door, the question of rear electric windows may be obsolete. The same applies if one of the parameters is selected as the series and various extras are then already included.

This type of multi-level conditional configuration is also possible via the attribute nodes.

7. editing of attributes in master and transaction data

The group for editing attributes on master data and transaction data is usually as follows.

Editattributes En

Global attributes are represented by the globe, local attributes are marked with the box. The values can be maintained by double-clicking on one of the attributes.

Behind the purple lines there are visible attributes which have been inserted in a structured way. This means that various attributes have been combined into an attribute node (see Structuring of Attributes). By double-clicking on the purple line, the node is expanded and the attributes of this node are displayed. Another double-click collapses the node again.

The button "Edit" leads to a selected ...
... global attribute to edit the attribute value in the list.
... local attribute for editing the attribute in the edit mask
... purple attribute node for editing the node designation in the list

The list of attributes can be extended by clicking the "Insert" button. The normal case is that a root attribute is selected and inserted. Here there are the options "At end", "Before selected position" and "Behind selected position". In addition, a local attribute can also be created. Here the type of the attribute ("Presettable", "Calculated", "Conditional") must be determined via the menu. Via the menu "Insert new structural level" an attribute node can be created manually. Attributes can then be moved up and down in this node using the arrows.

The arrow keys take over the function to determine the order of the attributes. You can also move an attribute into an attribute node or retrieve it again.

An attribute can be moved to a node, ...
... if the line before the selected attribute is a node and the up arrow key is pressed.
... if the line behind the selected attribute is a node and the down arrow key is pressed.

An attribute can be moved from a node to the upper level, ...
... if the selected line is the first in the structure and the up arrow key is pressed.
... if the selected line is the last one in the structure and the down arrow key is pressed.

Before attributes are moved to a level from within it, the user is asked if he really wants to perform this action.

8. use of comparison operators

Even before creating a new attribute with an attached table, it is important to know how to work with it later. You must also be aware that the attributes can have different types internally, e.g. STRING, ENUMCHAR, etc.

In the case of characteristics created as type STRING or with a data field of type STRING, the value (text) entered by the user is retained internally and is therefore also used for comparisons.

If, however, you create a characteristic with the type ENUMCHAR, for example, the internal structure of the attached table is different. There is no longer the value directly (e.g. text in the case of the type STRING), but in the internal table there is a numbering given by the feeder and for each of the entries the value to be shown externally, e.g. 1 -> apples, 2 -> pears and 3 -> bananas.

For comparison operations, the internal value is always used in all cases of e.g. ENUMCHAR, because you cannot compare apples with pears over "bigger" or "smaller", so to speak. But of course you can test for "equal" without any problems, but you have to be very careful with "not equal" comparisons.

This is especially true in cases where one has created, for example, the following table: 1 -> "100", 2 -> "200" and 3 -> "150". There you cannot simply make the comparison "less than or equal to 200", because the "200" is first converted into the internal value 2, and with the internal values only 1 and 2 are "less than or equal to 2", so that the entry 3 -> "150" is not output.

9. attributes with control functions

The following attributes are interpreted internally in the ClassiX system and control certain functionalities in the system

Attribute Function in ClassiX
suppliedID If the material characteristic suppliedID in an order is filled with a valid supplier number and the order part has no A-supplier, a supplier with this number is drawn on the requirement request and on the order. In this case, the cost price entered on the order item is also used as the order price
wages.primeOverheadRate Centrally filed overhead surcharge (GMK) for wages in percent
material.primeOverheadRate Centrally stored overhead surcharge (GMK) for material in percent
lockEditing Processing of the object (part/company) is blocked
lockForLink Part is locked for new transaction data to be created (BOM explosion aborts if it encounters a part with a part status that has this attribute with the value 1)
passed.lockForLink Part is warned for new transaction data to be created (BOM explosion warns when it encounters a part with a part status that has this attribute with the value 1)
suppressInList This attribute is used to hide objects. Parts assigned to a status with this attribute and the value 1 are not shown in the parts master list.
lockForSiblings Part can no longer be used as a replacement object
length Length (calculation for packaging)
width Width (calculation for packaging)
height Height (calculation for packaging)
weight Weight

Operational business