Suchen und Finden 3: Finden von verwaisten Elementen (Find Orphans)

Der EA stellt eine Standardsuche zur Verfügung um verwaiste Elemente zu finden:

Build In Search um verwaiste Elemente zu finden

Diese Suche findet alle Elemente, die Im Modell (Project Browser) vorhanden sind, aber in keinem Diagramm verwendet (referenziert) werden!
Ist das Element durch Links mit anderen Elementen verbunden,
ist das Element der Typ eines Attributes, Parameters oder ein Return-Typ einer Operation,
ist das Element der Typ einer Instanz, eines Ports, etc., wird es ebenfalls als „orphan“ (verwaist) ausgegeben.

Will man nun wirklich nur jene Elemente, die vollkommen verwaist sind, ist dies mit dem Query-Builder nicht möglich.
Eine SQL-Suche bringt Abhilfe.

Die Suche für oben angeführtes Problem sieht folgendermaßen aus:

Durch mehr Einschränkungen kann diese Abfrage performanter gestaltet werden

Die oben dargestellte Such wurde erweitert und sucht nun auch ob ein Element mit einer Operation, Informationsfluss, Trigger, etc verlinkt ist. Durch eine stärkere Einschränkung in den Sub-Selects wir auch die Performanz verbessert.

Find Orphans in Enterprise Architect (Extended)

Die Suche für .EAP-Files (MSJet Datenbanken) kann hier als .txt heruntergeladen werden. Eine Version für MSSQL ist hier erhältlich.

Die Tabellen t_attribute, t_operation, t_operationparams speichern das Attribut Classifier als Text und nicht als Zahl, daher muss die Classifier ID, z.B. „12“ .

 

Für diese Abfrage wurden DB spezifische Umformungen verwendet. Für die MSJet DB sind es folgende:

CInt ( t_attribute.Classifier) … konvertiert einen String in einen Integer!
CInt ( „0“ & t_attribute.Classifier) … stellt sicher, dass eine Zahl und nicht NULL konvertiert wird! Wenn in der Tabelle t_attribute.Classifier kein Wert eingetragen ist, wird NULL zurück geliefert. Dies führt zu einem Fehler!

Durch Hinzufügen folgender Zeile kann die Suche auf bestimmte Elementtypen eingeschränkt werden:

Für MSJet DB: AND t_object.Object_Type LIKE ‚*‘ & ‚<SearchTerm>‘ & ‚*‘

Für MSSQL DB: AND t_object.Object_Type LIKE ‚%’+'<SearchTerm>‘ +’%‘

Veröffentlicht unter Modell-Suche
Schlagworte: , , , ,
5 comments on “Suchen und Finden 3: Finden von verwaisten Elementen (Find Orphans)
  1. Rainer Queck sagt:

    Wenn ich diese SQL-Query ausführen möchte, erhalte ich die Fehlermeldung:

    DAO.QueryDef[3141]
    The SELECT statemet includes a reserved word or an argument name that is
    misspelled or missing, or th punctuation is incorrect.

    (Ausgeführt in EA 9.0 Beta)

  2. aStreitberger sagt:

    Wenn dieser Fehler auftritt haben sie die falschen Anführungszeichen im SQL-Statement verwendet. Passiert beim kopieren des SQL-Statements aus dem Artikel (hier sind das typografische Anführungszeichen)

  3. HKA sagt:

    Die SQL Suche wurde überarbeitet und kann als .txt heruntergeladen werden.

  4. arphex sagt:

    I got this failure:

    Microsoft OLE DB Provider for SQL server [-2147217900]

    ‚cLng‘ is not recognized built-in function name.

    what can i do?

  5. HKA sagt:

    Hi, I am sorry, but the provided query is dedicated to MS-Jet DBs it doesn’t work with other DBMS.
    However, to cope with this you have to change the DB specific calls like „cLng“ with that one your DB provides.

    I will try to provide further DB specific queries.