Skip to content

NewAttributes

Giovanni Organtini edited this page Jan 13, 2023 · 3 revisions

An attribute is a value attached to a part. The actual possible values of an attribute are finite, and predefined. Examples are: the relative position of a part with respect to another, the status of a part, etc.

Defining a new attribute

  1. Choose a name (e.g. 'Global status'), then INSERT INTO CMS-MTD_CORE_ATTRIBUTE.ATTR_CATALOGS (IS_RECORD_DELETED, DISPLAY_NAME) VALUES ('F', 'Global Status');

  2. Get its primary key

SELECT ATTR_CATALOG_ID, DISPLAY_NAME FROM CMS_MTD_CORE_ATTRIBUTE.ATTR_CATALOGS;
ATTR_CATALOG_ID DISPLAY_NAME
--------------- ----------------------------------------
	   1000 Global Status
  1. Get the primary keys of the parts to associate to this attribute (LYSO matrices and single crystals)
SELECT KIND_OF_PART_ID, DISPLAY_NAME FROM CMS_MTD_CORE_CONSTRUCT.KINDS_OF_PARTS WHERE DISPLAY_NAME LIKE 'LYSOMatrix%';

KIND_OF_PART_ID DISPLAY_NAME
--------------- ----------------------------------------
	      4 LYSOMatrix #1
	      5 LYSOMatrix #2
	      6 LYSOMatrix #3

SELECT KIND_OF_PART_ID, DISPLAY_NAME FROM CMS_MTD_CORE_CONSTRUCT.KINDS_OF_PARTS WHERE DISPLAY_NAME LIKE 'singleCrystal%';

KIND_OF_PART_ID DISPLAY_NAME
--------------- ----------------------------------------
	   3020 singleCrystal #1
	   3040 singleCrystal #2
	   3060 singleCrystal #3
  1. Attach the attribute to the relevant part types:
INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 4, 'F', 'Global Status', 'The global status represent the overall status of the part');

INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 5, 'F', 'Global Status', 'The global status represent the overall status of the part');

INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 6, 'F', 'Global Status', 'The global status represent the overall status of the part');

INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 3020, 'F', 'Global Status', 'The global status represent the overall status of the part');

INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 3040, 'F', 'Global Status', 'The global status represent the overall status of the part');

INSERT INTO CMS_MTD_CORE_CONSTRUCT.PART_TO_ATTR_RLTNSHPS (ATTR_CATALOG_ID, KIND_OF_PART_ID, IS_RECORD_DELETED, DISPLAY_NAME, COMMENT_DESCRIPTION) VALUES (1000, 3060, 'F', 'Global Status', 'The global status represent the overall status of the part');
  1. Create the connection between the attribute (key = 1000) and the table containing its values (POSITION_SCHEMAS). In this case we have two possible values for the status: 'Rejected' and 'Skipped'. So, we need to create two hooks.
INSERT INTO CMS_MTD_CORE_ATTRIBUTE.ATTR_BASES (ATTR_CATALOG_ID, IS_RECORD_DELETED, EXTENSION_TABLE_NAME) VALUES (1000, 'F', 'POSITION_SCHEMAS');
INSERT INTO CMS_MTD_CORE_ATTRIBUTE.ATTR_BASES (ATTR_CATALOG_ID, IS_RECORD_DELETED, EXTENSION_TABLE_NAME) VALUES (1000, 'F', 'POSITION_SCHEMAS');
  1. Get the attribute identifier:
select ATTRIBUTE_ID, EXTENSION_TABLE_NAME from CMS_MTD_CORE_ATTRIBUTE.ATTR_BASES WHERE ATTR_CATALOG_ID = 1000;

ATTRIBUTE_ID EXTENSION_TABLE_NAME
------------ ------------------------------
	1000 POSITION_SCHEMAS
	1020 POSITION_SCHEMAS
  1. List the possible values of the attributes, and associate them to the latter:
INSERT INTO CMS_MTD_CORE_ATTRIBUTE.POSITION_SCHEMAS (ATTRIBUTE_ID, NAME, IS_RECORD_DELETED) VALUES (1000, 'Skipped', 'F');
INSERT INTO CMS_MTD_CORE_ATTRIBUTE.POSITION_SCHEMAS (ATTRIBUTE_ID, NAME, IS_RECORD_DELETED) VALUES (1020, 'Rejected', 'F');

Setting a new attribute

In order to attach an attribute to (multiple) part(s), use the following XML: in the example we assign the status Good to part PRE0000000782, after the measurement of its size (the name of the attribute is Dimensions Test Status).

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<PARTS>
  <PART>
    <RECORD_INSERTION_USER>organtin</RECORD_INSERTION_USER>
    <BARCODE>PRE0000000782</BARCODE>
    <PREDEFINED_ATTRIBUTES>
      <ATTRIBUTE>
	<NAME>Dimensions Test Status</NAME>
	<VALUE>Good</VALUE>
      </ATTRIBUTE>
    </PREDEFINED_ATTRIBUTES>
  </PART>
  <PART>
    <RECORD_INSERTION_USER>organtin</RECORD_INSERTION_USER>
    <BARCODE>PRE0000000828</BARCODE>
     <PREDEFINED_ATTRIBUTES>
      <ATTRIBUTE>
	<NAME>Dimensions Test Status</NAME>
	<VALUE>Bad</VALUE>
      </ATTRIBUTE>
    </PREDEFINED_ATTRIBUTES>
  </PART>
</PARTS>
</ROOT>
</pre>
Clone this wiki locally