Application module: Specification control | ISO/TS 10303-1112:2019(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N8054 - ISO/TS 10303-1112 Specification control - EXPRESS MIM
Supersedes
ISO/TC 184/SC 4/WG 12 N6674
*)
SCHEMA Specification_control_mim;
USE FROM
Alternative_solution_mim;
-- ISO/TS 10303-1109
USE FROM
Part_collection_mim;
-- ISO/TS 10303-1115
USE FROM
Product_placement_mim;
-- ISO/TS 10303-1343
USE FROM
Requirement_view_definition_mim;
-- ISO/TS 10303-1141
USE FROM
Specification_based_configuration_mim;
-- ISO/TS 10303-1108
USE FROM
product_definition_schema -- ISO 10303-41
(product_definition_substitute);
TYPE class_usage_effectivity_context_item =
SELECT
(product_definition);
END_TYPE;
TYPE effectivity_specification_for_replacement =
SELECT
BASED_ON
effectivity_item
WITH
(product_definition_substitute);
END_TYPE;
TYPE instance_usage_context_select =
EXTENSIBLE
GENERIC_ENTITY
SELECT
(product_definition_relationship,
product_definition_usage);
END_TYPE;
ENTITY class_usage_effectivity_context_assignment
SUBTYPE OF (effectivity_context_assignment);
items : SET[1:?] OF class_usage_effectivity_context_item;
WHERE
WR1: SELF.role.name = 'class usage influence';
WR2: SIZEOF( QUERY( i <* SELF.items | NOT ('PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0;
WR3: ('EFFECTIVITY_APPLICATION_MIM.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND
(SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND
(SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND
(SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items |
NOT('PRODUCT_CLASS_MIM.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0);
END_ENTITY;
ENTITY instance_usage_context_assignment
SUBTYPE OF (product_definition_context);
items : SET[1:?] OF instance_usage_context_select;
END_ENTITY;
RULE breakdown_element_requires_product_definition FOR
(product_definition_formation);
WHERE
WR1: SIZEOF ( QUERY ( pdf <* product_definition_formation |
( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
prpc.name = 'functionality' ) ) = 1 ) AND
( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION.FORMATION') |
pd.frame_of_reference.name = 'functional definition' ) ) <1 ) ) ) = 0;
WR2: SIZEOF ( QUERY ( pdf <* product_definition_formation |
( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
prpc.name = 'conceptual design' ) ) = 1 ) AND
( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION.FORMATION' ) |
pd.frame_of_reference.name = 'conceptual definition' ) ) <1) ) ) = 0;
END_RULE;
RULE constraint_definition_requires_constraint_category FOR
(product_definition);
LOCAL constraint_definitions: SET OF product_definition := []; END_LOCAL; constraint_definitions := QUERY( pd <* product_definition | (pd.frame_of_reference.name = 'design constraint definition'));
WHERE
WR1: SIZEOF ( QUERY ( pd <* constraint_definitions |
( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product ,
'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
prpc. name ='requirement' ) ) =0 ) ) ) =0;
END_RULE;
RULE design_constraint_requires_product_definition FOR
(product_definition_formation);
WHERE
WR1: SIZEOF ( QUERY ( pdf <* product_definition_formation | (
SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product ,
'PRODUCT_DEFINITION_SCHEMA.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) |
prpc.name = 'requirement' ) ) >0 ) AND
( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION.FORMATION') |
pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) = 0;
END_RULE;
RULE restrict_configuration_design_for_class_breakdown_association FOR
(configuration_design);
WHERE
WR1: SIZEOF ( QUERY ( cd <* configuration_design |
( cd.name ='functionality' ) AND
( NOT ( 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR
( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) )
) ) =0;
WR2: SIZEOF ( QUERY ( cd <* configuration_design |
( cd.name='realization' ) AND
( NOT ( 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR
( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) )
) ) =0;
WR3: SIZEOF ( QUERY ( cd <* configuration_design |
( cd.name IN ['functionality' , 'realization'] ) AND
( NOT ('PRODUCT_CLASS_MIM.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) )
) ) =0;
END_RULE;
RULE restrict_configuration_design_for_design_constraint FOR
(configuration_design);
WHERE
WR1: SIZEOF ( QUERY (cd <* configuration_design |
(cd.name = 'design constraint usage') AND
(NOT('PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR
(cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0;
END_RULE;
RULE restrict_product_definitions_for_design_constraint_association FOR
(product_definition_relationship);
WHERE
WR1: SIZEOF ( QUERY ( pdr <* product_definition_relationship |
( pdr. name = 'design constraint association' ) AND
( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR
NOT ( pdr.related_product_definition.frame_of_reference.name IN
['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0;
END_RULE;
END_SCHEMA; -- Specification_control_mim
© ISO 2019 — All rights reserved