| Application module: Specification document | ISO/TS 10303-1747:2018-11(E)  © ISO  | 
         
         (*
ISO/TC 184/SC 4/WG 12 N9558 - ISO/TS 10303-1747 Specification document - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N6935
*)
         
SCHEMA Specification_document_arm;
         USE FROM
         Characteristic_arm;
            -- ISO/TS 10303-1654
         USE FROM
         Configuration_item_arm;
            -- ISO/TS 10303-1056
         USE FROM
         Tagged_text_representation_arm;
            -- ISO/TS 10303-1366
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE sd_documented_element_select =
         
         
         SELECT
         BASED_ON
         documented_element_select
         WITH 
         
            (Product_configuration, 
    Product_view_definition, 
    Product_version, 
    Product);
         END_TYPE; 
         
TYPE sd_organization_or_person_in_organization_item =
         
         
         SELECT
         BASED_ON
         organization_or_person_in_organization_item
         WITH 
         
            (Specification_definition);
         END_TYPE; 
         
ENTITY Design_specification
           SUPERTYPE OF 
         (Interface_specification_document_definition)
           SUBTYPE OF (Specification_definition);
WHERE
           WR1: NOT EXISTS(SELF\Product_view_definition.additional_characterization);
         
         END_ENTITY;
ENTITY Fabrication_technology_specification
           SUBTYPE OF (Process_specification);
         
         END_ENTITY;
ENTITY Interface_specification_document_definition
           SUBTYPE OF (Design_specification);
         
         END_ENTITY;
ENTITY Language_reference_manual
           SUBTYPE OF (Specification_definition);
WHERE
           WR1: NOT EXISTS(SELF\Product_view_definition.additional_characterization);
         
         END_ENTITY;
ENTITY Material_specification
           SUBTYPE OF (Specification_definition);
WHERE
           WR1: NOT EXISTS(SELF\Product_view_definition.additional_characterization);
         
         END_ENTITY;
ENTITY Partial_document_with_structured_text_representation_assignment
           SUBTYPE OF (Partial_document_assignment);
           structured_portion : string_representation_item_select;
UNIQUE
           UR1: SELF\Partial_document_assignment.document_portion, SELF\Document_assignment.assigned_document;
         
         END_ENTITY;
ENTITY Process_specification
           SUBTYPE OF (Specification_definition);
WHERE
           WR1: NOT EXISTS(SELF\Product_view_definition.additional_characterization);
         
         END_ENTITY;
ENTITY Specification_allocation
           SUBTYPE OF (Document_assignment);
           SELF\Document_assignment.assigned_document RENAMED allocated_specification : Specification_definition;
         
         END_ENTITY;
ENTITY Specification_definition
           SUPERTYPE OF 
         (ONEOF (Design_specification,
                       Process_specification,
                       Material_specification,
                       Test_specification,
                       Language_reference_manual))
           SUBTYPE OF (Document_definition);
DERIVE
           source : SET[0:?] OF Organization_or_person_in_organization_assignment := bag_to_set(QUERY(temp <* USEDIN(SELF,'PERSON_ORGANIZATION_ASSIGNMENT_ARM.'+
         'ORGANIZATION_OR_PERSON_IN_ORGANIZATION_ASSIGNMENT.ITEMS') |
         (temp.role = 'document source') ));
WHERE
           WR1: EXISTS (source) AND (SIZEOF(source) = 1);
         
         END_ENTITY;
ENTITY Surface_finish_specification
           SUBTYPE OF (Material_specification);
         
         END_ENTITY;
ENTITY Test_specification
           SUBTYPE OF (Specification_definition);
WHERE
           WR1: NOT EXISTS(SELF\Product_view_definition.additional_characterization);
         
         END_ENTITY;
FUNCTION get_document_definition
 (input : documented_element_select; role : STRING; type_name : STRING) : SET[0:?] OF Document_definition;
         LOCAL
      dd : SET[0:?] OF Document_definition := [];  --this gives us access to the information base
      da : SET[0:?] OF Document_assignment :=[];
    END_LOCAL;
    da := bag_to_set(QUERY(dr <* USEDIN (input, 'DOCUMENT_ASSIGNMENT_ARM.'+
	  'DOCUMENT_ASSIGNMENT.IS_ASSIGNED_TO') | (dr.role = role)));
    -- iterate over da
    REPEAT i := 1 to SIZEOF(da) by 1;
      IF(type_name IN TYPEOF (da[i].assigned_document))THEN
        dd := dd + da[i].assigned_document;
      END_IF;
    END_REPEAT;
    RETURN(dd);
         END_FUNCTION;
         
         END_SCHEMA;  -- Specification_document_arm
© ISO 2018 — All rights reserved