Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Anchor
pageBegin
pageBegin

Table of Contents

Overview

QCADOO MES system uses Entity.

The Model , which is an in-memory cache of data retrieved from Java Bean or coresonded view, is the major component of the data access architecture. The Model View consists of a collection of Entity objects (related to one another) to specify properities of each field. Entiety can be connected to a method (called hook) started under specified condition e.g. OnSave started after calling save method for an entity. Model is built after reading data to Java Bean. 

You can also enforce data integrity by using validators.

All model entites used by system are defined in XML files. Every plugin has one directory model which contains xml files with definition of entities used by this plugin.

Filter by label (Content by label)
showLabelsfalse
showSpacefalse
sorttitle
excerpttrue
operatorAND
excerptTypesimple
labelsmodule,model
cqllabel = "module" and label = "model"

Structure

Name of defined entity must be unique within the plugin scope.

Code Block
languagexml
themeEclipse
linenumberstrue
<model name="sampleModel"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schema.qcadoo.org/model"
    xsi:schemaLocation="http://schema.qcadoo.org/model http://schema.qcadoo.org/model.xsd">

    <fields>

        // HERE YOU PUT FIELD DEFINITIONS

    </fields>

    <hooks>

        // HERE YOU PUT HOOK DEFINITIONS

    </hooks>

    // HERE YOU PUT IDENTIFIER

</model>

Structure of field definition

Code Block
languagexml
themeEclipse
linenumberstrue
<fieldType options />

or

Code Block
languagexml
themeEclipse
linenumberstrue
<fieldType options>

    // HERE YOU PUT VALIDATORS

</fieldType>

Field types

Insert excerpt
QCDMESDOC:Model Fields
QCDMESDOC:Model Fields
nopaneltrue

Structure of validator definition

Validators are attached to fields.

Code Block
languagexml
themeEclipse
linenumberstrue
<validatorType validatorOptions />

Validator types

Insert excerpt
QCDMESDOC:Model Validators
QCDMESDOC:Model Validators
nopaneltrue

Structure of hook definition

You can create custom event hook and attach it to defined model. To do it first you must create custom method (see this link).

Code Block
languagexml
themeEclipse
linenumberstrue
<hookType hookOptions />

Hook types

Insert excerpt
QCDMESDOC:Model Hooks
QCDMESDOC:Model Hooks
nopaneltrue

Identifier

Role of entity identifier is to convert entity defined in model to a simple text (see expressions overview). It is used for example when showing operation messages. If "expression" is givet it is used to evaluate identifier, otherwise "number" field will be taken.

Code Block
languagexml
themeEclipse
linenumberstrue
<identifier expression="#number + ' - ' + #name"/>

Examples

These examples definies three simple entities.

Code Block
languagexml
themeEclipse
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<model name="product"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://schema.qcadoo.org/model"
   xsi:schemaLocation="http://schema.qcadoo.org/model http://schema.qcadoo.org/model.xsd">

   <fields>
      <string name="number" required="true" unique="true">
         <validatesLength max="40" />
      </string>
      <string name="name" required="true" />
      <enum name="typeOfMaterial" values="01component,02intermediate,03product,04waste" required="true" />
      <string name="ean" />
      <dictionary name="category" dictionary="categories" />
      <dictionary name="unit" dictionary="units" required="true" />
      <string name="batch">
          <validatesLength max="255" />
      </string>
      <string name="lastUsedBatch">
          <validatesLength max="255" />
      </string>
      <boolean name="genealogyBatchReq" />
      <hasMany name="substitutes" model="substitute" joinField="product" cascade="delete" copyable="true" />
      <hasMany name="technologies" model="technology" joinField="product" />
      <hasMany name="orders" model="order" joinField="product" />
      <hasMany name="operationProductInComponents" model="operationProductInComponent" joinField="product" />
      <hasMany name="operationProductOutComponents" model="operationProductOutComponent" joinField="product" />
      <hasMany name="substituteComponents" model="substituteComponent" joinField="product" />
    </fields>

    <hooks />

    <identifier expression="#number + ' - ' + #name"/>

</model>
Code Block
languagexml
themeEclipse
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<model name="substitute"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schema.qcadoo.org/model"
    xsi:schemaLocation="http://schema.qcadoo.org/model http://schema.qcadoo.org/model.xsd">

    <fields>
        <string name="number" required="true" unique="true">
            <validatesLength max="40" />
        </string>
        <string name="name" required="true" />
        <belongsTo name="product" model="product" lazy="false" required="true" />
        <hasMany name="components" model="substituteComponent" joinField="substitute" cascade="delete" copyable="true" />
        <priority name="priority" scope="product" />
    </fields>

    <hooks>
        <validatesWith class="com.qcadoo.mes.products.ProductService" method="checkIfProductIsNotRemoved" />
    </hooks>

    <identifier expression="#number + ' - ' + #name" />

</model>
Code Block
languagexml
themeEclipse
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<model name="substituteComponent"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schema.qcadoo.org/model"
    xsi:schemaLocation="http://schema.qcadoo.org/model http://schema.qcadoo.org/model.xsd">

    <fields>
        <belongsTo name="product" model="product" lookupField="name" required="true" />
        <belongsTo name="substitute" model="substitute" required="true" />
        <decimal name="quantity" required="true">
            <validatesRange from="0" exclusively="true" />
            <validatesPrecision max="7" />
            <validatesScale max="3" />
        </decimal>
    </fields>

    <hooks>
        <validatesWith class="com.qcadoo.mes.products.ProductService" method="checkIfSubstituteIsNotRemoved" />
        <validatesWith class="com.qcadoo.mes.products.ProductService" method="checkSubstituteComponentUniqueness" />
    </hooks>

    <identifier expression="#product['number'] + ' - ' + #product['name']"/>

</model>