Main Content

systemcomposer.query.Constraint

Class that represents query constraint

    Description

    The Constraint class is the base class for all System Composer™ query constraints.

    Object Functions

    AnyComponentCreate query to select all components in model
    IsStereotypeDerivedFromCreate query to select stereotype derived from qualified name
    HasStereotypeCreate query to select architecture elements with stereotype based on specified sub-constraint
    HasPortCreate query to select architecture elements with port on component based on specified sub-constraint
    HasInterfaceCreate query to select architecture elements with interface on port based on specified sub-constraint
    HasInterfaceElementCreate query to select architecture elements with interface element on interface based on specified sub-constraint
    IsInRangeCreate query to select range of property values
    PropertyCreate query to select non-evaluated values for object properties or stereotype properties for elements
    PropertyValueCreate query to select property from object or stereotype property and then evaluate property value

    Examples

    collapse all

    This example shows how to find components in a System Composer model using queries.

    Open the model.

    import systemcomposer.query.*;
    
    scKeylessEntrySystem
    zcModel = systemcomposer.loadModel('KeylessEntryArchitecture');

    Find all the software components in the system.

    con1 = HasStereotype(Property("Name") == "SoftwareComponent");
    [compPaths, compObjs] = zcModel.find(con1)
    compPaths = 5x1 cell
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'}
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'           }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'                 }
        {'KeylessEntryArchitecture/FOB Locator System/FOB Locator Module'         }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller' }
    
    
    compObjs=1×5 object
      1x5 Component array with properties:
    
        IsAdapterComponent
        Architecture
        ReferenceName
        Name
        Parent
        Ports
        OwnedPorts
        OwnedArchitecture
        Position
        Model
        SimulinkHandle
        SimulinkModelHandle
        UUID
        ExternalUID
    
    
    % Include reference models in the search
    softwareComps = zcModel.find(con1, 'IncludeReferenceModels', true)
    softwareComps = 9x1 cell
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'                                }
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'                                           }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'                                                 }
        {'KeylessEntryArchitecture/FOB Locator System/FOB Locator Module'                                         }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller'                                 }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Pass Door Lock Sensor/Detect Door Lock Status'   }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Driver Door Lock Sensor/Detect Door Lock Status' }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Pass Door Lock Sensor/Detect Door Lock Status'  }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Driver Door Lock Sensor/Detect Door Lock Status'}
    
    

    Find all the base components in the system.

    con2 = HasStereotype(IsStereotypeDerivedFrom("AutoProfile.BaseComponent"));
    baseComps = zcModel.find(con2)
    baseComps = 18x1 cell
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'          }
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'                     }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'                           }
        {'KeylessEntryArchitecture/FOB Locator System/FOB Locator Module'                   }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller'           }
        {'KeylessEntryArchitecture/Sound System/Dashboard Speaker'                          }
        {'KeylessEntryArchitecture/Engine Control System/Start//Stop Button'                }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Driver Door Lock Sensor'  }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Pass Door Lock Sensor'    }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Driver Door Lock Sensor'   }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Pass Door Lock Sensor'     }
        {'KeylessEntryArchitecture/FOB Locator System/Center Receiver'                      }
        {'KeylessEntryArchitecture/FOB Locator System/Front Receiver'                       }
        {'KeylessEntryArchitecture/FOB Locator System/Rear Receiver'                        }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Driver Door Lock Actuator'}
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Front Pass Door Lock Actuator'  }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Driver Door Lock Actuator' }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Rear Pass Door Lock Actuator'   }
    
    

    Find all components using the interface KeyFOBPosition.

    con3 = HasPort(HasInterface(Property("Name") == "KeyFOBPosition"));
    con3_a = HasPort(Property("InterfaceName") == "KeyFOBPosition");
    keyFOBPosComps = zcModel.find(con3)
    keyFOBPosComps = 10x1 cell
        {'KeylessEntryArchitecture/Door Lock//Unlock System'                      }
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller' }
        {'KeylessEntryArchitecture/Engine Control System'                         }
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'}
        {'KeylessEntryArchitecture/FOB Locator System'                            }
        {'KeylessEntryArchitecture/FOB Locator System/FOB Locator Module'         }
        {'KeylessEntryArchitecture/Lighting System'                               }
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'           }
        {'KeylessEntryArchitecture/Sound System'                                  }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'                 }
    
    

    Find all components whose WCET is less than or equal to 5ms.

    con4 = PropertyValue("AutoProfile.SoftwareComponent.WCET") <= 5;
    zcModel.find(con4)
    ans = 1x1 cell array
        {'KeylessEntryArchitecture/Sound System/Sound Controller'}
    
    
    % You can specify units and it will do the conversions for you
    con5 = PropertyValue("AutoProfile.SoftwareComponent.WCET") <= Value(5, 'ms');
    query1Comps = zcModel.find(con5)
    query1Comps = 3x1 cell
        {'KeylessEntryArchitecture/Lighting System/Lighting Controller'  }
        {'KeylessEntryArchitecture/Sound System/Sound Controller'        }
        {'KeylessEntryArchitecture/FOB Locator System/FOB Locator Module'}
    
    

    Find all components whose WCET is greater than 1 ms OR has a cost greater than 10 USD.

    con6 = PropertyValue("AutoProfile.SoftwareComponent.WCET") > Value(1, 'ms') | PropertyValue("AutoProfile.Base.Cost") > Value(10, 'USD');
    query2Comps = zcModel.find(con6)
    query2Comps = 2x1 cell
        {'KeylessEntryArchitecture/Door Lock//Unlock System/Door Lock Controller' }
        {'KeylessEntryArchitecture/Engine Control System/Keyless Start Controller'}
    
    

    Close the model.

    zcModel.close;

    More About

    expand all

    Introduced in R2019b