Import Table Schema
You need to import a structure to a Product-Live table.
Json
Example
json
{
"name": "table-import-schema",
"taskReferenceName": "import_table_schema",
"description": "The business description of the task",
"type": "SUB_WORKFLOW",
"optional": false,
"inputParameters": {
"request": "${previous_taskReferenceName.output.file}",
"mode": "EXHAUSTIVE"
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Definition
Property | Type | Required | Description |
---|---|---|---|
The name (or type) of the task | |||
The unique name of the task in your job. It is used to reference this task in the workflow. | |||
The functional description of this task in your job. | |||
The type of the task. It must be SUB_WORKFLOW . | |||
true : the job continues if there is an error on this task. false : the job fails. | |||
Input parameters of the task. See below |
Inputs
Property | Description |
---|---|
request | A valid input. See the complete definition below. |
mode | optional INCREMENTAL | EXHAUSTIVE . INCREMENTAL The import in incremental mode allows the partial update of the table, EXHAUSTIVE This mode allows the exhaustive update of the table, any element not present in the request document will be archived. Default: INCREMENTAL . |
Input request
The basic structure of the file
xml
<Table key="PRODUCTS">
<Title>Products</Title>
<Title-Local lang="fra">Produits</Title-Local>
<Description>Products' table</Description>
<Description-Local lang="fra">La table produits</Description-Local>
<Color>BLUE</Color>
<Position>1</Position>
<Schema>
<Levels />
<Partitions />
<Identifiers />
<Classifications />
<Fields />
<Matrix />
<Formulas />
<Conditional-Formattings />
<Sections />
<Screens />
</Schema>
</Table>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
XPath | Description | Occurs |
---|---|---|
Table | Root of the document. | 1 |
./@key | The key of the table, must be unique in your account. | 1 |
./Title | The title of the table. Best practice: Use plural, and be as short as possible, one word is the best. This the default value displayed. | 1 |
./Title-Local | The title of the table in different languagues. | 0..* |
./Description | The description of the table. This the default value displayed. | 0..1 |
./Description-Local | The description of the table in different languagues. | 0..* |
./Color | The color of the tab. Enum : NONE | RED | GREEN | BLUE | ORANGE | YELLOW | PURPLE | BLACK | BROWN | 1 |
./Position | The position of the table. Positive integer starting at 1. | 1 |
./Schema | The schema of the table that describe how the table is structured. | 1 |
./Schema/Levels | Levels allow to create one to many relations between items. A table must have at least one level. | 0..1 |
./Schema/Partitions | Partitions allow to isolate items within a table. A table must have at least one partition. | 0..1 |
./Schema/Identifiers | An identifier allow to model a unicity constraint, it defines how each lines are uniquely identified. | 0..1 |
./Schema/Classifications | A classification allow to model a hierachical tree of categories. This allow to create fields specific to categories. | 0..1 |
./Schema/Fields | A field is a simple property on a item. Each field a data type which defines how data are rendered. | 0..1 |
./Schema/Matrix | Defines which fields are common to all items, and which fields are specific to categories. | 0..1 |
./Schema/Formulas | Defines formulas to automatically calculate fields, or limit options depending on criteria. | 0..1 |
./Schema/Conditional-Formattings | Conditional formattings and rules. | 0..1 |
./Schema/Sections | A section allow to group visually fields when they are displayed in the grid view. They are used in screens below. | 0..1 |
./Schema/Screens | A screen defines how columns are accessible, displayed and ordered. | 0..1 |
Levels
A level is the answer to the question "What does each rows in the table represent?". For example in a table named "Products" each line of the first level represent a "Product". So in this example there is one level named product (best practice: always use singular).
You can create up to 5 levels. Multiple levels allow to model one to many relation between items. If you work in the clothing sector, you know that the products are represented by a model, each model being declined in several color models, each of the color models being declined in size color model. Another example would be to model orders and order details. Then you can create a table order, with a level 1 : order and the level 2: order detail. This way an order can be associated with one or many order detail.
A table must have at least one level at index 1.
xml
<Level key="PRODUCT" index="1">
<Title>Product</Title>
</Level>
1
2
3
2
3
xml
<Level key="PRODUCT" index="1">
<Title>Product</Title>
<Title-Local lang="fra">Produit</Title-Local>
</Level>
1
2
3
4
2
3
4
XPath | Description | Occurs |
---|---|---|
@key | The key of the level. Must be unique in the table. Best practice: use english in upper case separated by underscore, ie: MY_KEY. | 1 |
@index | The index, between 1 and 5. An index cannot be updated. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. |
Partitions
A partition allow to isolate items (lines). For example, it can be used to model active and archived items, or if you want to model a head quarter with several brands, it can be used to isolate several brands which share the same table structure.
Be aware that the number of total items per table has an inpact on the performances of the filter and sort options. Best practice: limit your partitions to 100 000 items.
xml
<Partition key="ACTIVES">
<Title>Actives</Title>
</Partition>
1
2
3
2
3
xml
<Partition key="ACTIVES">
<Title>Actives</Title>
<Title-Local lang="fra">Actifs</Title-Local>
<Description>Active products</Description>
<Description-Local lang="fra">Les produits actifs</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
<Position>1</Position>
</Partition>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
XPath | Description | Occurs |
---|---|---|
@key | The key of the level. Must be unique in the table. Best practice: use english in upper case separated by underscore, ie: MY_KEY. | 1 |
Title | The title of the partition. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the partition. You can translate the description by duplicating the description with another lang. | 0..1 |
Description-Local/@lang | When a description is set, the default lang is required. See the enum of lang for other languages available. | 0..* |
Metadata | You can add metadata to your partitions. A metadata is a key and a value, it can be used when exporting matrix. | 0..* |
Metadata/@key | The metadata key must be unique in the partition but can be reused in other partitions or sections. | 0.. |
Position | The position of the partition in the frontend. | 0.. |
Identifiers
Identifiers are used for the unicity of items. When an item is created at least one of the identifiers must be filled. You can create up to 5 identifiers by table.
xml
<Identifier key="EAN_13" index="1" level="PRODUCT">
<Title>EAN 13</Title>
</Identifier>
1
2
3
2
3
xml
<Identifier key="EAN_13" index="1" level="PRODUCT">
<Title>EAN 13</Title>
<Title-Local lang="fra">EAN 13</Title-Local>
<Description>The product’s EAN 13</Description>
<Description-Local lang="fra">Le code EAN 13 du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Identifier>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. Best practice: use english in upper case separated by underscore, ie: MY_KEY. | 1 |
@index | The index, between 1 and 5. An index cannot be updated. | 1 |
@level | An identifier must be associated with a level, this is the level key. | 0..1 |
Title | The title of the identifier. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the identifier. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value, it can be used when exporting matrix. | 0..* |
Metadata/@key | The metadata key must be unique in the identifier but can be reused in other fields or sections. | 0..* |
Important
Remember that each values of an Identifier must be unique in the table. If you have codes that are not unique, use a Field with type SINGLE-LINE-TEXT
instead.
Classifications
Classify your items in categories. An items can be classified in only one category of a classification field. A field can be specific to a category. Cyclic categories are imported with warning and without reference to the other category.
You can create up to 5 classifications. The maximum depth of the classification tree is 5.
xml
<Classification key="TYPOLOGY">
<Title>Typology</Title>
<Categories>
<Category key="HOME_APPLIANCE">
<Title>Home appliance</Title>
</Category>
<Category key="FOOD">
<Title>Food</Title>
</Category>
<Category key="PHONES" parent="HOME_APPLIANCE">
<Title>Phones</Title>
</Category>
<Category key="LAPTOPS" parent="HOME_APPLIANCE">
<Title>Laptops</Title>
</Category>
<Category key="COFFEE" parent="FOOD">
<Title>Coffee</Title>
</Category>
</Categories>
</Classification>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
xml
<Classification key="TYPOLOGY">
<Title>Typology</Title>
<Title-Local lang="fra">Typologie</Title-Local>
<Description>The product’s taxonomy</Description>
<Description-Local lang="fra">La classification du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
<Categories>
<Category key="HOME_APPLIANCE">
<Title>Home appliance</Title>
<Title-Local lang="fra">Eléctroménager</Title-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Category>
<Category key="FOOD">
<Title>Food</Title>
<Title-Local lang="fra">Alimentaire</Title-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Category>
<Category key="PHONES" parent="HOME_APPLIANCE">
<Title>Phones</Title>
<Title-Local lang="fra">Téléphones</Title-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Category>
<Category key="LAPTOPS" parent="HOME_APPLIANCE">
<Title>Laptops</Title>
<Title-Local lang="fra">Ordinateurs portables</Title-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
</Category>
<Category key="COFFEE" parent="FOOD">
<Title>Coffee</Title>
<Title-Local lang="fra">Café</Title-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Category>
</Categories>
</Classification>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
XPath | Description | Occurs |
---|---|---|
Classification | A field with the data type classification. | 1 |
@key | The key of the field. Must be unique in the table. Best practice: use english in upper case separated by underscore to name your keys. | 1 |
Title | The display name of the field. You can translate the display name by duplicating the display name with another lang. | 1 |
Title-Local/@lang | See the enum of lang for other languages available. | 0..* |
Description | The description of the field. You can translate the description by duplicating the description with another lang. | 0..1 |
Description-Local/@lang | When a description is set, the default lang is required. See the enum of lang for other languages available. | 0..* |
Metadata | You can add metadata to your fields. A metadata is a key and a value, it can be used when exporting matrix. | 0..* |
Metadata/@key | The metadata key must be unique in the field but can be reused in other fields or sections. | 0..* |
Categories | The categories. | 1 |
Categories/Category | A category. | 0..* |
./Category/@key | The key of the category. Must be unique in the category list. | 1 |
./Category/@parent | The key of the parent category. | 0..1 |
./Category/Title | The display name of the category. | 1 |
./Category/Title-Local | The lang of the display name. | 0..* |
./Category/Title-Local/@lang | See the enum of lang for other languages available. | 1 |
./Category/Description | The description of the category. | 0..* |
./Category/Description-Local/@lang | See the enum of lang for other languages available. | 1 |
./Category/Metadata | You can save metadata with key/value. | 0..* |
./Category/Metadata/@key | The key of metadata. Must unique in the element. | 1 |
Fields
Fields represents properties on items. A field must have a data type, a data type define how the property is edited and also define how the data are represented in the Items xml file. A field is uniquely identified by its key. The key is used in Items xml file. The best practice is to use english, formatting in upper case separated by underscore and shorter as possible.
Be careful a data type cannot be changed. Trying to create two fields with the same data type will generate a warning, and the seconde field will be ignored. The order of the fields here as no effect on the position of fields. The position of the fields is not defined here, it is defined in screens.
Fields can have these data types:
Single line text
A single line of text.
xml
<Field key="TITLE_EN" type="SINGLE-LINE-TEXT" level="PRODUCT">
<Title>Title EN</Title>
</Field>
1
2
3
2
3
xml
<Field key="TITLE_EN" type="SINGLE-LINE-TEXT" level="PRODUCT">
<Title>Title EN</Title>
<Title-Local lang="fra">Titre EN</Title-Local>
<Description>The product’s title in english</Description>
<Description-Local lang="fra">Le titre du produit en anglais</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Field>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here SINGLE-LINE-TEXT. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Best pratice
If you want to handle translations, for the fields of data type single line text, long text, html text, create as many fields as you have languages and set a suffix with the language code, for example: TITLE_EN, TITLE_FR, TITLE_ES...
Long text
A long text field that can span multiple lines.
xml
<Field key="DESCRIPTION_EN" type="LONG-TEXT" level="PRODUCT">
<Title>Description EN</Title>
</Field>
1
2
3
2
3
xml
<Long-Text key="DESCRIPTION_EN" type="LONG-TEXT" level="PRODUCT">
<Title>Description EN</Title>
<Title-Local lang="fra">Description EN</Title-Local>
<Description>The product’s description in english</Description>
<Description-Local lang="fra">La description du produit en anglais</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Field>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here LONG-TEXT. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
HTML text
A long text field that can be formatted with html (bold, bullet points...).
xml
<Field key="KEY_POINTS_EN" type="HTML-TEXT" level="PRODUCT">
<Title>Key points EN</Title>
</Field>
1
2
3
2
3
xml
<Field key="KEY_POINTS_EN" type="HTML-TEXT" level="PRODUCT">
<Title>Key points EN</Title>
<Title-Local lang="fra">Points clés EN</Title-Local>
<Description>The product’s key points in english</Description>
<Description-Local lang="fra">Les points clés du produit en anglais</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Field>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here HTML-TEXT. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Number
xml
<Field key="PRICE_EURO" type="NUMBER" level="PRODUCT">
<Title>Price €</Title>
</Field>
1
2
3
2
3
xml
<Field key="PRICE_EURO" type="NUMBER" level="PRODUCT">
<Title>Price €</Title>
<Title-Local lang="fra">Prix €</Title-Local>
<Description>The product’s price in €</Description>
<Description-Local lang="fra">Le prix du produit en €</Description-Local>
<Metadata key="VISIBLE_WEBSITE">TRUE</Metadata>
<Suffix>€</Suffix>
<Precision>2</Precision>
</Field>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
xml
<Field key="CAMERA_RESOLUTION" type="NUMBER" level="product">
<Title>Camera resolution</Title>
<Description>The resolution of an image is the number of pixels contained in the image per unit length.</Description>
<Suffixes>
<Suffix key="PIXEL" default="true">
<Title>Pixel</Title>
<Description>A unit of count defining the number of pixels</Description>
</Suffix>
<Suffix key="MEGAPIXEL">
<Title>Megapixel</Title>
<Description>A unit of count equal to 10⁶ (1000000) pixels (picture elements).</Description>
</Suffix>
</Suffixes>
</Field>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here NUMBER. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..1 |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Suffix | The suffix displayed to the user. Use it for units or currency. | 0..1 |
Prefix | The prefix displayed to the user. Use it for units or currency. | 0..1 |
Precision | The precision of the decimal places. Integer between 0 and 5. | 0..1 |
Suffixes | The list of units available on the field. | 0..1 |
Suffixes/Suffix | A unit available on the field. | 0..* |
./Suffix/@key | The unit key. Must be unique within the field. Cannot be updated. | 1 |
./Suffix/@default | true or false, designates a unit as the default unit at edit time. Only the first unit set as default is imported as default. | 0..1 |
./Suffix/@status | Used to archive a unit. The only possible value is ARCHIVED. If this tag is not filled in then the status will be ACTIVE. | 0..1 |
./Suffix/Title | The unit title. | 1 |
./Suffix/Title-Local | The localized unit title in a particular language. | 0..* |
./Suffix/Title-Local/@lang | The localization language. | 1 |
Warning
It is not a best practice to store units like this because if you allow multiple units on the same field then filtering on this field is irrelevant. You should better fix the unit for each number fields. So we recommend to us it only if you have to mirror an old system with this type of constraints.
Best practice
If you deals with unit fields or currency fields, use Suffix
| Prefix
and Precision
elements (see all properties). You must also use the unit/currency as a suffix of the key.
Single select
Single select allows you to select a single option from predefined options in a dropdown. Colors can be set by option.
xml
<Field key="LIFE_CYCLE" type="SINGLE-SELECT" level="PRODUCT">
<Title>Life cycle</Title>
<Options>
<Option key="ACTIVE">
<Title>Active</Title>
</Option>
<Option key="INACTIVE">
<Title>Inactive</Title>
</Option>
</Options>
</Field>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
xml
<Field key="LIFE_CYCLE" type="SINGLE-SELECT" level="PRODUCT">
<Title>Life cycle</Title>
<Title-Local lang="fra">Cycle de vie</Title-Local>
<Description>The product’s life cycle</Description>
<Description-Local lang="fra">Le cycle de vie du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
<Options>
<Option key="ACTIVE" color="GREEN">
<Title>Active</Title>
<Description>The product is active</Description>
<Metadata key="CODE">104</Metadata>
</Option>
<Option key="INACTIVE" color="BLACK">
<Title>Inactive</Title>
<Description>The product is inactive</Description>
<Metadata key="CODE">105</Metadata>
</Option>
</Options>
</Field>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here SINGLE-SELECT. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Options | The possible options. | 1 |
Options/Option | An option. | 0..* |
./Option/@key | The key of the option. Must be unique in the option list. | 1 |
./Option/@color | The color of the text when this option is selected. Possible values: NONE | RED | GREEN | BLUE | ORANGE | YELLOW | PURPLE | BLACK | BROWN | CYAN | MAGENTA. | 1 |
./Option/Title | The display name of the option. | 1 |
./Option/Title-Local | You can translate the display name of the option with this element. | 0..* |
./Option/Title-Local/@lang | The lang of the display name. | 1 |
./Option/Description | The description of the option. | 0..* |
./Option/Description-Local | You can translate the description of the option with this element. | 0..* |
./Option/Description-Local/@lang | The lang of the description. | 1 |
./Option/Metadata | You can save metadata associated with the option. | 0..* |
./Option/Metadata/@key | The key of metadata. Must unique in the element. | 1 |
Multiple select
Multiple select allows you to select multiples option from predefined options in a dropdown. Colors can be set by option.
xml
<Field key="CONNECTORS" type="MULTIPLE-SELECT" level="PRODUCT">
<Title>Connectors</Title>
<Options>
<Option key="USB">
<Title>USB</Title>
</Option>
<Option key="HDMI">
<Title>HDMI</Title>
</Option>
</Options>
</Field>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
xml
<Field key="CONNECTORS" type="MULTIPLE-SELECT" level="PRODUCT">
<Title>Connectors</Title>
<Title-Local lang="fra">Connectique</Title-Local>
<Description>The product’s connectors</Description>
<Description-Local lang="fra">Les connectiques du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
<Options>
<Option key="USB">
<Title>USB</Title>
<Description>The product has at least one USB port.</Description>
<Metadata key="CODE">104</Metadata>
</Option>
<Option key="HDMI">
<Title>HDMI</Title>
<Description>The product has at least one HDMI port.</Description>
<Metadata key="CODE">105</Metadata>
</Option>
</Options>
</Field>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here MULTIPLE-SELECT. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Options | The possible options. | 1 |
Options/Option | An option. | 0..* |
./Option/@key | The key of the option. Must be unique in the option list. | 1 |
./Option/Title | The display name of the option. | 1 |
./Option/Title-Local | You can translate the display name of the option with this element. | 0..* |
./Option/Title-Local/@lang | The lang of the display name. | 1 |
./Option/Description | The description of the option. | 0..* |
./Option/Description-Local | You can translate the description of the option with this element. | 0..* |
./Option/Description-Local/@lang | The lang of the description. | 1 |
./Option/Metadata | You can save metadata associated with the option. | 0..* |
./Option/Metadata/@key | The key of metadata. Must unique in the element. | 1 |
Multiple select quantified
The same configuration as a multiple select field, except the type is MULTIPLE-SELECT-QUANTIFIED. This field allows to give a quantity for each of the selected options. For example: 2 USB and 3 HDMI.
Multiple select quantified with comments
The same configuration as a multiple select field, except the type is MULTIPLE-SELECT-QUANTIFIED-WITH-COMMENTS. This field allows to give a quantity and a comment for each of the selected options. For example: 2 USB 1 USB-C 1 USB-2.1 and 3 HDMI 3 HDMI-3.1.
Date
Enter a date or pick one from a calendar.
xml
<Field key="ON_LINE" type="DATE" level="PRODUCT">
<Title>On-line</Title>
</Field>
1
2
3
2
3
xml
<Field key="ON_LINE" type="DATE" level="PRODUCT">
<Title>On-line</Title>
<Title-Local lang="fra">Mise en ligne</Title-Local>
<Description>The date of posting</Description>
<Description-Local lang="fra">La date de mise en ligne du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
</Field>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here DATE. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Info
Dates are stored and exported in UTC format. In the frontend they are formatted depending the localisation of their web browser.
Date time
The same configuration as a Date field, except the type is DATE-TIME. Use it to store date and time.
Image
Store an image. You can store only one image in en Image field.
xml
<Field key="MAIN_IMAGE" type="IMAGE" level="PRODUCT">
<Title>Main image</Title>
</Field>
1
2
3
2
3
xml
<Field key="MAIN_IMAGE" type="IMAGE" level="PRODUCT">
<Title>Main image</Title>
<Title-Local lang="fra">Image principale</Title-Local>
<Description>The product's main image</Description>
<Description-Local lang="fra">L'image principale du produit</Description-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
</Field>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@type | The type of the field. Here IMAGE. | 1 |
@level | A field must be associated with a level, this is the level key. | 1 |
Title | The title of the field. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the field. | 0..* |
Attachment
Store other files (pdf...). You can store only one file in en Attachment field. The same configuration as an Image field, except the type is ATTACHMENT.
Matrix
The matrix element defines:
- Which fields are common to all items.
- Which fields are specfic to categories.
Fields are only referenced by their key because the key of the field is unique in the table.
Do not reference the identifiers or the classifications or the conditional formatting here because they can only be common properties.
The order of the fields in the Matrix
element doesn't matter.
Example
xml
<Matrix>
<Common>
<Field key="TITLE_EN" />
<Field key="DESCRIPTION_EN" />
<Field key="PRICE_EURO" />
<Field key="MAIN_IMAGE" />
</Common>
<Specific classification="TYPOLOGY" category="HOME_APPLIANCE">
<Field key="INSTRUCTIONS" />
</Specific>
<Specific classification="TYPOLOGY" category="PHONES">
<Field key="INSTRUCTIONS" />
<Field key="SCREEN_RESOLUTION" />
</Specific>
<Specific classification="TYPOLOGY" category="COFFEE">
<Field key="COFFEE_FLAVOR" />
</Specific>
</Matrix>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Common fields
Here you define all fields that are common to all items.
XPath | Description | Occurs |
---|---|---|
Common | Defines all fields that are common to all items in this table. | 0..1 |
Common/Field | A field | 0..* |
Common/Field/@key | The key of the field. | 1 |
Specific fields
Here you define the link between categories and fields.
There is no inheritance between categories, therefore if your parent category has some fields associated with and you want these fields also be associated with the child categories then you must also add these fields in each child categories.
XPath | Description | Occurs |
---|---|---|
Specific | Defines all fields that are specific to a category within a classification. | 0..* |
Specific/@classification | The classification key. | 1 |
Specific/@category | The category key. | 1 |
Specific/Field | A field. The order has no importance. | 0..* |
Specific/Field/@key | The key of the field. | 1 |
Formulas
Formulas can be used to:
- Create composite identifiers
- Automatically calculate a volume field depending on width, height, depth fields
- Create dependant dynamic lists
- Limit options on single select fields depending on the category
- Calculate a status based on criteria on other fields
Create composite identifiers
Let's say that you want to model that on a Products table, each product is uniquely identified by the composition of the fields: "Supplier" (Single select) and "Supplier ref" (Single line text).
For this you have to create an Identifier that will support the uniqueness constraint:
xml
<Identifiers>
<Identifier key="SUPPLIER-SUPPLIER_REF" index="1" level="PRODUCT">
<Title>Supplier - supplier ref</Title>
</Identifier>
</Identifiers>
1
2
3
4
5
2
3
4
5
Then you have to create two fields:
xml
<Fields>
<Field key="SUPPLIER" type="SINGLE-SELECT" level="PRODUCT">
<Title>Supplier</Title>
<Options>
<Option key="SUPPLIER-1">
<Title>Supplier 1</Title>
</Option>
<Option key="SUPPLIER-2">
<Title>Supplier 2</Title>
</Option>
</Options>
</Field>
<Field key="SUPPLIER_REF" type="SINGLE-LINE-TEXT" level="PRODUCT">
<Title>Supplier reference</Title>
</Field>
</Fields>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
And then create the formula:
xml
<Formulas>
<Identifier key="SUPPLIER-SUPPLIER_REF">
<Rule priority="1">
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER" operator="NOT_EMPTY" />
<Condition source="SUPPLIER_REF" operator="NOT_EMPTY" />
</Condition-Group>
</Conditions>
<Action type="SET_TEXT">
<Template trim-spaces="true"><![CDATA[{{source("SUPPLIER","key")}}-{{source("SUPPLIER_REF")}}]]></Template>
</Action>
</Rule>
</Identifier>
</Formulas>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
In this particular example:
- You must set a condition on both SUPPLIER and SUPPLIER_REF to not be empty
- The order of the concatenation matters.
Automatically calculate a volume field depending on three other fields
Create these fields:
xml
<Fields>
<Field key="WIDTH_CM" type="NUMBER" level="PRODUCT">
<Title>Width</Title>
<Suffix>cm</Suffix>
<Precision>0</Precision>
</Field>
<Field key="HEIGHT_CM" type="NUMBER" level="PRODUCT">
<Title>Height</Title>
<Suffix>cm</Suffix>
<Precision>0</Precision>
</Field>
<Field key="DEPTH_CM" type="NUMBER" level="PRODUCT">
<Title>Depth</Title>
<Suffix>cm</Suffix>
<Precision>0</Precision>
</Field>
<Field key="VOLUME_CM_3" type="NUMBER" level="PRODUCT">
<Title>Volume</Title>
<Suffix>cm3</Suffix>
<Precision>0</Precision>
</Field>
</Fields>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
And then create the formula:
xml
<Formulas>
<Field key="VOLUME_CM_3">
<Rule priority="1">
<Conditions>
<Condition-Group>
<Condition source="WIDTH_CM" operator="NOT_EMPTY" />
<Condition source="HEIGHT_CM" operator="NOT_EMPTY" />
<Condition source="DEPTH_CM" operator="NOT_EMPTY" />
</Condition-Group>
</Conditions>
<Action type="SET_NUMBER">
<Template precision="0" round="CEILING"><![CDATA[{{source("WIDTH_CM")}} * {{source("HEIGHT_CM")}} * {{source("DEPTH_CM")}}]]></Template>
</Action>
</Rule>
</Field>
</Formulas>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Create dependant dynamic lists
You want to model that the value that can be selected on a field with type Single Select depends on the value selected on another field.
For example if you have a Products table with fields: Supplier and DEEE scale, which are both single select, you want to model that value that can be selected in DEEE scale depends on the value selected in Supplier.
For this, first create fields:
xml
<Fields>
<Field key="SUPPLIER" type="SINGLE-SELECT" level="PRODUCT">
<Title>Supplier</Title>
<Options>
<Option key="SUPPLIER-1">
<Title>Supplier 1</Title>
</Option>
<Option key="SUPPLIER-2">
<Title>Supplier 2</Title>
</Option>
<Option key="SUPPLIER-3">
<Title>Supplier 3</Title>
</Option>
</Options>
</Field>
<Field key="DEEE_SCALE" type="SINGLE-SELECT" level="PRODUCT">
<Title>DEEE scale</Title>
<Options>
<Option key="DEEE-1">
<Title>DEEE 1</Title>
</Option>
<Option key="DEEE-2">
<Title>DEEE 2</Title>
</Option>
<Option key="DEEE-3">
<Title>DEEE 3</Title>
</Option>
</Options>
</Field>
</Fields>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
And then add this formula:
xml
<Formulas>
<Field key="DEEE_SCALE">
<Rule priority="1">
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER" operator="IN">
<Value>SUPPLIER-1</Value>
<Value>SUPPLIER-2</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>DEEE-1</Value>
<Value>DEEE-2</Value>
</Action>
</Rule>
<Rule priority="2">
<Conditions>
<Condition-Group>
<Condition source="SUPPLIER" operator="IN">
<Value>SUPPLIER-3</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>DEEE-1</Value>
<Value>DEEE-3</Value>
</Action>
</Rule>
</Field>
</Formulas>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Best practice
As you can see above you can group conditions and use rule @priority to model the "If", "else if", "else if"...
You can use this to optimise your conditions, for example if multiple SUPPLIER share the same limitation, then do not create as many rules as you have SUPPLIER values, instead group SUPPLIER values that shares the same limitation in a single rule.
Limit options on single select fields depending on the category
It is a variation of the previous case. The difference is that condition is on a Classification not a Field, but the logic is exactly the same.
First you must have a Classification:
xml
<Classifications>
<Classification key="TYPOLOGY">
<Title>Typology</Title>
<Categories>
<Category key="SHOES">
<Title>Shoes</Category>
<Category>
<Category key="T-SHIRT">
<Title>T-shirt</Category>
<Category>
<Category key="SHIRT">
<Title>Shirt</Category>
<Category>
</Categories>
</Classification>
</Classifications>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Then create Fields, for example:
xml
<Fields>
<Field key="SIZE" type="SINGLE-SELECT" level="PRODUCT">
<Title>Size</Title>
<Options>
<Option key="39">
<Title>39</Title>
</Option>
<Option key="40">
<Title>40</Title>
</Option>
<Option key="41">
<Title>41</Title>
</Option>
<Option key="42">
<Title>42</Title>
</Option>
<Option key="S">
<Title>S</Title>
</Option>
<Option key="M">
<Title>M</Title>
</Option>
<Option key="L">
<Title>L</Title>
</Option>
<Option key="XL">
<Title>XL</Title>
</Option>
</Options>
</Field>
</Fields>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
And then create this formula:
xml
<Formulas>
<Field key="SIZE">
<Rule priority="1">
<Conditions>
<Condition-Group>
<Condition source="TYPOLOGY" operator="EQUALS">
<Value>SHOES</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>39</Value>
<Value>40</Value>
<Value>41</Value>
<Value>42</Value>
</Action>
</Rule>
<Rule priority="2">
<Conditions>
<Condition-Group>
<Condition source="TYPOLOGY" operator="IN">
<Value>T-SHIRT</Value>
<Value>SHIRT</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_SELECTABLE_OPTIONS">
<Value>S</Value>
<Value>M</Value>
<Value>L</Value>
<Value>XL</Value>
</Action>
</Rule>
</Field>
</Formulas>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Here we have limited the size that can be selected depending the category.
Best practice
It is a best practice to limit options by categories instead of creating one field by category.
Calculate a status based on criteria on other fields
This can be very useful when you want to model a process. For example you will create a single select Field that represents the current step of the publication of a product on a website:
xml
<Fields>
<Field key="WEB_STATUS" type="SINGLE-SELECT" level="PRODUCT">
<Title>Web status</Title>
<Options>
<Option key="PUBLISHED" color="GREEN">
<Title>Published</Title>
</Option>
<Option key="READY_FOR_WEB" color="BLUE">
<Title>Ready for web</Title>
</Option>
<Option key="TODO" color="ORANGE">
<Title>To do</Title>
</Option>
</Options>
</Field>
</Fields>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
And then add formulas to automatically set the current step of the product:
xml
<Formulas>
<Field key="WEB_STATUS">
<Rule priority="1">
<Conditions>
<Condition-Group>
<!-- Assuming that you have a WEB_PUBLICATION_DATE Field that is updated when the product is sent to the web -->
<Condition source="WEB_PUBLICATION_DATE" operator="NOT_EMPTY" />
</Condition-Group>
</Conditions>
<Action type="SET_OPTION">
<Value>PUBLISHED</Value>
</Action>
</Rule>
<Rule priority="2">
<Conditions>
<Condition-Group>
<!-- Assuming that you have a conditional formatting that defines what left to be done -->
<Condition source="WEB_COMPLIANCE" operator="EQUALS">
<Value>VALID</Value>
</Condition>
</Condition-Group>
</Conditions>
<Action type="SET_OPTION">
<Value>READY_FOR_WEB</Value>
</Action>
</Rule>
<Rule priority="3">
<Action type="SET_OPTION">
<Value>TO_DO</Value>
</Action>
</Rule>
</Field>
</Formulas>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Best practice
The rule with priority 1 must be the last step of your process. Therefore the last rule can be used to model a default value when none of the conditions above are met.
More use cases
As you may have seen, the format of the rules is the same that the one defined in the Rules Engine. You can read more about what can be done for each data type in the documentation of the Import Rules task of the Rules engine.
Conditional formatting
Defines the conditional formatting and the rules which activates the conditional formatting.
If a field is associated with multiple categories, then you can define that the field has rule that apply only to the first category for example. You can create different types of rules:
- Rule on a field that apply to a field itself example: the field title is required.
- Rule that imply multiple fields example: the field description is required if the field title is not empty.
You can create up to 5 conditional formatting fields by table. And you can create up to 10 statuses per conditional formatting field.
xml
<Conditional-Formatting key="COMPLIANCE" level="PRODUCT">
<Title>Compliance</Title>
<Default-Status key="VALID">
<Title>Valid</Title>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="INVALID">
<Title>Invalid</Title>
<Color>RED</Color>
<Priority>1</Priority>
<Rules />
</Status>
<Status key="RECOMMENDED">
<Title>Recommended</Title>
<Color>ORANGE</Color>
<Priority>2</Priority>
<Rules />
</Status>
</Statuses>
</Conditional-Formatting>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
xml
<Conditional-Formatting key="COMPLIANCE" level="PRODUCT">
<Title>Compliance</Title>
<Default-Status key="VALID">
<Title>Valid</Title>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="INVALID">
<Title>Invalid</Title>
<Color>RED</Color>
<Priority>1</Priority>
<Rules>
<Common>
<Identifier key="EAN_13">
<Rule-Barcode type="EAN13"/>
<Rule-Required/>
</Identifier>
<Field key="TITLE_EN">
<Rule-Required />
<Rule-Min-Length min="3" />
<Rule-Max-Length max="27" />
</Field>
</Common>
<Specific classification="TYPOLOGY" category="LAPTOP">
<Field key="WEIGHT_KG">
<Rule-Required />
<Rule-Less-Than value="30" />
</Field>
</Specific>
<Specific classification="TYPOLOGY" category="PHONE">
<Field key="COLOR">
<Rule-Required />
</Field>
</Specific>
</Rules>
</Status>
<Status key="RECOMMENDED">
<Title>Recommended</Title>
<Color>ORANGE</Color>
<Priority>2</Priority>
<Rules>
<Common>
<Field key="DESCRIPTION_EN">
<Rule-Required />
<Rule-Min-Length min="10" />
<Rule-Max-Length max="300" />
</Field>
</Common>
</Rules>
</Status>
</Statuses>
</Conditional-Formatting>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
xml
<Conditional-Formatting key="COMPLIANCE" level="PRODUCT">
<Title>Compliance</Title>
<Title-Local lang="fra">Conformité</Title-Local>
<Description>Compliance rules</Description>
<Description-Local lang="fra">Les règles de conformités</Description-Local>
<Metadata key="VISIBLE-WEBSITE">FALSE</Metadata>
<Default-Status key="VALID">
<Title>Valid</Title>
<Title-Local lang="fra">Valide</Title-Local>
<Color>GREEN</Color>
</Default-Status>
<Statuses>
<Status key="Invalid">
<Title>Invalid</Title>
<Title-Local lang="fra">Non valide</Title-Local>
<Color>RED</Color>
<Priority>1</Priority>
<Rules />
</Status>
<Status key="RECOMMENDED">
<Title>Recommended</Title>
<Title-Local lang="fra">Recommandé</Title-Local>
<Color>ORANGE</Color>
<Priority>2</Priority>
<Rules />
</Status>
</Statuses>
</Conditional-Formatting>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
xml
<!-- Identifiers -->
<Identifier key="EAN_13">
<Rule-Required />
<Rule-Min-Length min="3" />
<Rule-Max-Length max="27" />
<Rule-Regex regex="^[0-9]{13}$" />
<Rule-Barcode type="EAN13" />
</Identifier>
<!-- Classification -->
<Classification key="TYPLOGY">
<Rule-Required />
<Rule-Is-Leaf />
</Classification>
<!-- Field with type SINGLE_LINE_TEXT | LONG_TEXT -->
<Field key="TITLE_EN">
<Rule-Required />
<Rule-Min-Length min="3" />
<Rule-Max-Length max="27" />
<Rule-Regex regex="^hello$" />
</Field>
<!-- Field with type HTML_TEXT -->
<Field key="DESCRIPTION_EN">
<Rule-Required />
</Field>
<!-- Field with type NUMBER -->
<Field key="PRICE_EURO">
<Rule-Required />
<Rule-Less-Than value="3" />
<Rule-Greater-Than value="27" />
<Rule-Less-Than-Or-Equal value="3" />
<Rule-Greater-Than-Or-Equal value="27" />
<Rule-Decimal-Places precision="2" />
</Field>
<!-- Field with type IMAGE -->
<Field key="MAIN_IMAGE">
<Rule-Required />
<Rule-Min-Width-Px min="200" />
<Rule-Max-Width-Px max="1500" />
<Rule-Min-Height-Px min="27" />
<Rule-Max-Height-Px max="27" />
<Rule-Max-Size-Kb max="300" />
<Rule-Extension extension="jpg,png" />
<Rule-Color-Space name="RGB" />
<Rule-Color-Profile name="sRGB" />
</Field>
<!-- Field with type ATTACHMENT -->
<Field key="INSTRUCTIONS">
<Rule-Required />
<Rule-Max-Size-Kb max="300" />
<Rule-Extension extension="pdf" />
</Field>
<!-- Field with type DATE | DATE_TIME -->
<Field key="PUBLICATION">
<Rule-Required />
</Field>
<!-- Field with type MULTIPLE-SELECT, MULTIPLE-SELECT-QUANTIFIED MULTIPLE-SELECT-QUANTIFIED-WITH-COMMENTS -->
<Field key="CONNECTORS">
<Rule-Required />
<Rule-Min-Values min="2" />
<Rule-Max-Values max="15" />
</Field>
<!-- Field with type SINGLE-SELECT -->
<Field key="MAIN_COLOR">
<Rule-Required />
</Field>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
xml
<!-- Compare two fields with type NUMBER | DATE | DATE_TIME, source and target field must have the same type -->
<Field key="PRICE_TTC_EURO">
<Rule-Must-Be-Greater-Than-Another-Field field="PRICE_HT_EURO" />
</Field>
<Field key="END_DATE">
<Rule-Must-Be-Greater-Than-Or-Equal-Another-Field field="START_DATE" />
</Field>
<Field key="PRICE_HT_EURO">
<Rule-Must-Be-Less-Than-Another-Field field="PRICE_TTC_EURO" />
</Field>
<Field key="START_DATE">
<Rule-Must-Be-Less-Than-Or-Equal-Another-Field field="END_DATE" />
</Field>
<!-- Target field is mandatory if source field is not empty. Only for Fields -->
<Field key="QUANTITY_TO_ORDER">
<Rule-Required-If-Another-Field-Is-Not-Empty field="SOUTHERN_DEPOT" />
</Field>
<!-- Target field is mandatory if one of the values ... is selected in source field -->
<Field key="NUMBER_OF_BATERIES_SUPPLIED">
<Rule-Required-If-Another-Field-Has-Options field="BATTERY">
<Option key="BATTERY_INCLUDED" />
</Rule>
</Field>
<!-- Target field is mandatory if source field is greater/less/equal... than value -->
<Field key="DELIVERY_DATE">
<Rule-Required-If-Another-Field-Is-Greater-Than field="QUANTITY" value="0" />
</Field>
<Field key="DELIVERY_DATE">
<Rule-Required-If-Another-Field-Is-Greater-Than-Or-Equal field="QUANTITY" value="0" />
</Field>
<Field key="DELIVERY_DATE">
<Rule-Required-If-Another-Field-Is-Less-Than field="QUANTITY" value="0" />
</Field>
<Field key="DELIVERY_DATE">
<Rule-Required-If-Another-Field-Is-Less-Than-Or-Equal field="QUANTITY" value="0" />
</Field>
<Field key="DELIVERY_DATE">
<Rule-Required-If-Another-Field-Is-Equal-To field="QUANTITY" value="0" />
</Field>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
xml
<Field key="TITLE">
<Rule-Condition key="TITLE_IS_MANDATORY">
<Conditions>
<Condition-Group>
<Condition source="TITLE" operator="EMPTY" />
</Condition-Group>
</Conditions>
<Title>Field Title is mandatory</Title>
<Title-Local lang="fra">Le champ titre est requis</Title-Local>
</Rule-Condition>
</Field>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
XPath | Definition | Occurrence |
---|---|---|
@key | The key of the field. Must be unique in the table. | 1 |
@level | The level of the conditional formatting. | 1 |
Title | The title of the section. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the field. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your fields. A metadata is a key and a value, it can be used when exporting matrix. | 0..* |
Metadata/@key | The metadata key must be unique in the field but can be reused in other fields or sections. | 0..* |
Default-Status | The default value when no rules match conditional status. | 1 |
Default-Status/@key | The key of the option. Must be unique in the option list. | 1 |
Default-Status/Title | The default status title | 1 |
Default-Status/Title-Local | You can translate the default status with this element. | 0..* |
Default-Status/Title-Local/@lang | See the enum of lang for other languages available. | 0..* |
Default-Status/Color | The background color of the default status. Possible values: NONE | RED | GREEN | BLUE | ORANGE | YELLOW | PURPLE | BLACK | BROWN | CYAN | MAGENTA. | 1 |
Statuses | Possible statuses. | 1 |
Statuses/Status | A status = the value displayed in the column. | 0..10 |
./Status/@key | The key of the option. Must be unique in the option list. | 1 |
./Status/Priority | Defines the priority when two rules match. Possible values: Integer. Priority = 0 is the default value when no rules match. | 1 |
./Status/Color | The background color when this option is selected. Possible values: NONE | RED | GREEN | BLUE | ORANGE | YELLOW | PURPLE | BLACK | BROWN | CYAN | MAGENTA. | 1 |
./Status/Title | The display name of the option. | 1 |
./Status/Title-Local | You can translate the display name of the status with this element. | 0..* |
./Status/Title-Local/@lang | See the enum of lang for other languages available. | 1 |
./Status/Metadata | You can save metadata associated with the option. | 0..* |
./Status/Metadata/@key | The key of metadata. Must unique in the element. | 1 |
./Status/Rules | The rules to activate the status. | 1 |
./Status/Rules/Rule-Condition | A rule condition added to the above Field | 0..1 |
@key | Each rule condition must be uniquely identified by a key. | 1 |
Conditions | The conditions when the rule mus apply. | 1 |
Title | The message that will be displayed to users when the condition match. | 1 |
Title-Local | The localization of the message for each language. | 0..N |
The Rule-Condition
rule is a more generic rule, allowing to define the condition that triggers it, as well as the message to display to the user.
The engine used below is the same engine than the Rules Engine, then to learn more about conditions available, you can read it here.
Sections
A section allow to group fields. A section is uniquely identified by its key.
The order of the sections here doesn't matter.
xml
<Section key="MARKETING">
<Title>Marketing</Title>
</Section>
1
2
3
2
3
xml
<Section key="MARKETING">
<Title>Marketing</Title>
<Title-Local lang="fra">Informations marketing</Title-Local>
<Description>A section for marketing fields</Description>
<Description-Local lang="fra">Une section pour les attributs marketing</Description-Local>
<Metadata key="VISIBLE-WEBSITE">TRUE</Metadata>
</Section>
1
2
3
4
5
6
7
2
3
4
5
6
7
XPath | Description | Occurs |
---|---|---|
@key | The key of the section. Must be unique in the table. | 1 |
Title | The title of the section. | 1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the section. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your sections. A metadata is a key and a value. | 0..* |
Metadata/@key | The metadata key must be unique in the section. | 0..* |
Screens
A screen defines how columns are displayed. For each column you can define:
- The order of sections
- The order of columns relative to sections
- The size of columns
- If the column is editable or not.
- If the column is fixed.
You can also define the height of the lines.
The links defined in Common
and Specific
must be valid links that have already be declared in the Matrix
element.
xml
<Screen key="ALL_PROPERTIES" level="PRODUCT">
<Title>All properties</Title>
<Position>1</Position>
<Grid>
<Line-Height>SHORT</Line-Height>
<Common>
<Section key="INFORMATIONS" position="1">
<Column-Identifier key="EAN_13" position="1" />
<Column-Field key="MAIN_IMAGE" position="2" />
<Column-Classification key="TYPOLOGY" position="3" />
<Column-Conditional-Formatting key="COMPLIANCE" position="4" />
<Column-Field key="TITLE_EN" position="5" />
<Column-Field key="DESCRIPTION_EN" position="6" />
<Column-Field key="PRICE_EURO" position="7" />
</Section>
</Common>
<Specific classification="TYPOLOGY" category="HOME_APPLIANCE">
<Section key="INFORMATIONS" position="1">
<Column-Field key="INSTRUCTIONS" position="1" />
</Section>
</Specific>
</Grid>
</Screen>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
xml
<Screen key="ALL_PROPERTIES" level="PRODUCT">
<Title>All properties</Title>
<Title-Local lang="fra">View all columns</Title-Local>
<Description lang="fra">View all columns</Description>
<Description-Local lang="fra">View all columns</Description-Local>
<Position>1</Position>
<Grid>
<Line-Height>SHORT</Line-Height>
<Common>
<Section key="INFORMATIONS" position="1">
<Column-Identifier key="EAN_13" position="1" />
<Column-Field key="MAIN_IMAGE" position="2" />
<Column-Classification key="TYPOLOGY" position="3" />
<Column-Conditional-Formatting key="COMPLIANCE" position="4" />
<Column-Field key="TITLE_EN" position="5" />
<Column-Field key="DESCRIPTION_EN" position="6" />
<Column-Field key="PRICE_EURO" position="7" />
</Section>
</Common>
<Specific classification="TYPOLOGY" category="HOME_APPLIANCE">
<Section key="INFORMATIONS" position="1">
<Column-Field key="INSTRUCTIONS" position="1" />
</Section>
</Specific>
</Grid>
</Screen>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
XPath | Description | Occurs |
---|---|---|
@key | The key of the screen. Must be unique in the table. | 1 |
@level | The level key of the screen. The level defines which items are edited. | 1 |
Title | The title of the screen. | 0..1 |
Title-Local | You can translate the title with this element. | 0..* |
Title-Local/@lang | See the enum of lang for other languages available. | 1 |
Description | The description of the screen. | 0..* |
Description-Local | You can translate the description with this element. | 0..* |
Description-Local/@lang | See the enum of lang for other languages available. | 1 |
Metadata | You can add metadata to your screens. A metadata is a key and a value, it can be used when exporting matrix. | 0..* |
Metadata/@key | The metadata key must be unique in the screen but can be reused in other screens or fields. | 0..* |
Position | The position of the screen in the list. | 0..1 |
Grid | The grid in the data view. | 0..1 |
Grid/Line-Height | The line height for lines. ENUM: SHORT | MEDIUM | TALL | EXTRA_TALL | 1 |
Grid/Common | The common columns to all items. | 1 |
Grid/Common/Section | Each columns are grouped by section. | 0..* |
Grid/Common/@key | The key of the section. The must section must exist. | 1 |
Grid/Common/@position | The position of the section. First section is 1. | 1 |
Grid/Common/Column-Identifier | A column of type identifier | 1 |
./Column-Identifier/@key | The key of the identifier | 1 |
./Column-Identifier/@position | The position of the column relative to the section. First column is 1. | 1 |
./Column-Classification/@key | The key of a classification | 1 |
./Column-Classification/@position | The position of the column relative to the section. First column is 1. | 1 |
./Column-Conditional-Formatting/@key | The key of a conditional formatting. | 1 |
./Column-Conditional-Formatting/@position | The position of the column relative to the section. First column is 1. | 1 |
./Column-Field/@key | The key of a field | 1 |
./Column-Field/@key | The key of a field | 1 |
./Column-Field/@position | The position of the column relative to the section. First column is 1. | 1 |
./Column-Field/@read-only | true: the column is visible but not editable. default false. | 0..1 |
./Column-Field/@fixed | true: all columns before this column and this column will be fixed. default false. | 0..1 |
./Column-Field/@width | The width of the column. Enum: SMALL | MEDIUM | LARGE | EXTRA_LARGE, default: MEDIUM | 0..1 |
./Column-Field/@key | The key of a field | 1 |
Grid/Specific | The specific columns to the classification and the category. | 0..* |
Grid/Specific/@classification | The classification key. | 1 |
Grid/Specific/@category | The cateogry key. | 1 |
Grid/Specific/Section | Each columns are grouped by section. | 0..* |
Grid/Specific/@key | The key of the section. The must section must exist. | 1 |
Grid/Specific/@position | The position of the section. First section is 1. | 1 |
./Column-Field/@key | The key of a field | 1 |
Multilingual
Available languages:
Code | ISO language name |
---|---|
ara | Arabic |
zho | Chinese |
eng | English |
fra | French |
deu | German |
hin | Hindi |
ita | Italian |
jpn | Japanese |
kor | Korean |
nld | Dutch |
por | Portuguese |
rus | Russian |
spa | Spanish |
If you need more languages we can add it on demand
Outputs
This task does not have outputs.
Limits and additional notes
- The limitation of the input file size is 900 Mb.
- You can create up to 50 000 sections by table.
- You can create up to 500 000 fields by table.
- You can create up to 5 identifier fields.
- You can create up to 8 conditional formatting fields.
- You can create up to 5 000 values withing a condition in a Rule-Condition and a Formula
- You can create up to 5 classification fields.
- You can create up to 30 000 options by field.
- You can create up to 2 000 rules within a formula field
- The limitation of categories depth within a classification is 5.
In addition to these limitations, we encourage you to apply these best practices:
- Limit fields with options with a maximum of 500 options.
FAQ
How to change the data type of a field?
You can't, you must create a new field with the new data type and a new key.
How to change the key of a field?
You can't, you must create a new field with the new data type and a new key.
Does the order of the fields or sections matter?
No, the display order is defined by screens.