| Application module: Alternative solution | ISO/TS 10303-1109:2019(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N10274 - ISO/TS 10303-1109 Alternative solution - EXPRESS MIM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N7727
*)
         
SCHEMA Alternative_solution_mim;
         USE FROM
         Functional_breakdown_mim;
            -- ISO/TS 10303-1216
         USE FROM
         measure_schema   -- ISO 10303-41
  (ratio_measure_with_unit);
         
         USE FROM
         Part_view_definition_mim;
            -- ISO/TS 10303-1023
         USE FROM
         Person_organization_assignment_mim;
            -- ISO/TS 10303-1013
         USE FROM
         Physical_breakdown_mim;
            -- ISO/TS 10303-1215
         USE FROM
         Product_as_individual_mim;
            -- ISO/TS 10303-1164
         USE FROM
         product_definition_schema   -- ISO 10303-41
  (final_solution);
         
         USE FROM
         Product_occurrence_mim;
            -- ISO/TS 10303-1063
         USE FROM
         qualified_measure_schema   -- ISO 10303-45
  (measure_representation_item);
         
         USE FROM
         Requirement_view_definition_mim;
            -- ISO/TS 10303-1141
TYPE organization_item_solution =
         
         
         SELECT
         BASED_ON
         organization_item
         WITH 
         
            (product_definition_formation);
         END_TYPE; 
         
RULE alternative_solution_requires_solution_definition FOR 
         (product_definition_formation);
    LOCAL
  solution_versions : SET OF product_definition_formation := [];
    END_LOCAL;
  solution_versions := QUERY(pdf
                             <* product_definition_formation
                             | SIZEOF(QUERY(prpc
                                            <* USEDIN(pdf.of_product, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')
                                            | prpc.name = 'alternative solution')) =
                               1);WHERE
           WR1: SIZEOF(QUERY(pdf                <* solution_versions                | SIZEOF(QUERY(pd                               <*
            USEDIN(pdf, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION.FORMATION')                               | pd.frame_of_reference.name
            = 'alternative definition')) <>                  1)) =   0;
         END_RULE;
         
RULE restrict_alternative_definition FOR 
         (product_definition);
    LOCAL
  solution_definitions : SET OF product_definition := [];
    END_LOCAL;
  solution_definitions := QUERY(pd
                                <* product_definition
                                | (pd.frame_of_reference.name = 'alternative definition'));WHERE
           WR1: SIZEOF(QUERY(pd                <* solution_definitions                | (SIZEOF(QUERY(pdr                           
            <* USEDIN(pd, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')                    
            | pdr.name = 'solution alternative definition')) <>                   1))) =   0;
           WR2: SIZEOF(QUERY(pd <* solution_definitions | NOT (pd.name IN ['technical','supplier','technical supplier','']))) = 0;
           WR3: SIZEOF(QUERY(pd                <* solution_definitions                | (pd.name IN ['supplier','technical supplier'])
            AND                  (SIZEOF(QUERY(aoa                                <* USEDIN(pd.formation, 'PERSON_ORGANIZATION_ASSIGNMENT_MIM.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS')
            | aoa.role.name = 'supplier')) <>                   1))) =   0;
         END_RULE;
         
RULE restrict_product_definitions_for_base_element FOR 
         (product_definition_relationship);
WHERE
           WR1: SIZEOF(QUERY(pdr                <* product_definition_relationship                | (pdr.name = 'solution alternative
            definition') AND                  (NOT (pdr.relating_product_definition.frame_of_reference.name IN                       
            ['alternative definition','functional definition','conceptual definition']) OR                       (pdr.related_product_definition.frame_of_reference.name
            <> 'alternative definition')))) =   0;
         END_RULE;
         
RULE solution_definition_requires_solution_category FOR 
         (product_definition);
    LOCAL
  solution_definitions : SET OF product_definition := [];
    END_LOCAL;
  solution_definitions := QUERY(pd
                                <* product_definition
                                | (pd.frame_of_reference.name = 'alternative definition'));WHERE
           WR1: SIZEOF(QUERY(pd                <* solution_definitions                | (SIZEOF(QUERY(prpc                          
            <* USEDIN(pd.formation.of_product, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS')                
            | prpc.name = 'alternative solution')) =                   0))) =   0;
         END_RULE;
         
         END_SCHEMA;  -- Alternative_solution_mim
© ISO 2019 — All rights reserved