(* Genenerated from: ../../irs/10303-049.exp *)

SCHEMA method_definition_schema;

REFERENCE FROM action_schema
    (action_method, 
     action_method_relationship, 
     action_relationship);

REFERENCE FROM document_schema
    (document, 
     document_usage_constraint);

REFERENCE FROM effectivity_schema
    (effectivity);

REFERENCE FROM measure_schema
    (count_measure);

REFERENCE FROM support_resource_schema
    (label, 
     text);

REFERENCE FROM process_property_schema
    (product_definition_process,
     property_process);

TYPE relationship_with_condition = SELECT
  (action_method_relationship,
   action_relationship,
   context_dependent_action_method_relationship,
   context_dependent_action_relationship);
END_TYPE;

TYPE process_or_process_relationship = SELECT
  (product_definition_process,
   property_process,
   relationship_with_condition);
END_TYPE;

ENTITY action_method_with_associated_documents
  SUBTYPE OF (action_method);
  documents : SET [1:?] of document;
END_ENTITY;

ENTITY action_method_with_associated_documents_constrained
  SUBTYPE OF (action_method_with_associated_documents);
  usage_constraints : SET [1:?] OF document_usage_constraint;
WHERE
  WR1: SIZEOF (QUERY (item <* usage_constraints | 
       NOT (item.source 
       IN SELF\action_method_with_associated_documents.documents))) = 0;
END_ENTITY;

ENTITY action_method_to_select_from
  SUBTYPE OF (action_method);
  number_of_elements : count_measure;
WHERE
  WR1: number_of_elements >=1;
  WR2: SIZEOF (USEDIN (SELF, 
       'ACTION_SCHEMA.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD')) >= 
       number_of_elements;
END_ENTITY;

ENTITY process_or_process_relationship_effectivity
  SUBTYPE OF (effectivity);
  effective_process_or_process_relationship : process_or_process_relationship;
END_ENTITY;

ENTITY serial_action_method
  SUBTYPE OF (action_method_relationship);
END_ENTITY;

ENTITY sequential_method
  SUBTYPE OF (serial_action_method);
  sequence_position : count_measure;
END_ENTITY;

ENTITY concurrent_action_method
  SUBTYPE OF (action_method_relationship);
END_ENTITY;

ENTITY context_dependent_action_method_relationship;
  name                  : label;
  relating_relationship : action_method_relationship;
  related_relationship  : action_method_relationship;
UNIQUE
  UR1: relating_relationship, related_relationship;
WHERE
  WR1: relating_relationship.relating_method :=:
       related_relationship.relating_method;
END_ENTITY;

ENTITY context_dependent_action_relationship;
  name                  : label;
  relating_relationship : action_relationship;
  related_relationship  : action_relationship;
UNIQUE
  UR1: relating_relationship, related_relationship;
WHERE
  WR1: relating_relationship.relating_action :=:
       related_relationship.relating_action;
END_ENTITY;

ENTITY relationship_condition;
  name                     : label;
  applicable_relationships : SET [1:?] OF relationship_with_condition;
  condition_description    : text;
END_ENTITY;

END_SCHEMA;  -- method_definition_schema
