Bei der Gründung einer Assoziation im ECO Sie können nicht garantiert werden, in welcher Reihenfolge die Objekte am Ende des Vereins werden vorgestellt. Aus diesem Grund ECO eine Boolean "bestellt" Eigentum am Verein endet.
Wenn Sie Ordered = True in Ihr Modell und dann die Datenbank, ECO wird eine zusätzliche Spalte in Ihrer Datenbank die Ermittlung der Reihenfolge der Objekte.
Ich habe gerade die Schaffung SalesInvoice / SalesInvoiceLine Klassen und entschied sich zu einer Vereinigung bestellt, weil es im Grunde Standard-Industrie-Praxis, um jede Zeile der Rechnung / Bestellung mit einem sequencial Zahl, so dass es leicht identifyable bei der Diskussion darüber.
Es wäre schön, wenn ich haben einen OCL abgeleitete Attribut mit einem Ausdruck wie diese:
this.SalesInvoice.lines-> indexOf (Selbst-)
OCL, aber leider nicht zu haben scheinen einen Weg zu finden, der Index der ein Objekt in eine Sammlung, so dass ich hatte, zu schreiben einen Code-Attribut aus.
Zuerst habe ich markiert das Attribut als abgeleitet, und nicht alle DerivationOCL für sie. Dann habe ich eine öffentliche Methode, um die Klasse mit der nach der Unterzeichnung
öffentlichen Int32 LineNumberDeriveAndSubscribe (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
Schließlich ist der Code für das Attribut zu tun hatten die folgenden
- Abonnieren Sie den SalesInvoice Eigentum
- Das Objekt hat keine SalesInvoice, return -1
- Abonnieren Sie SalesInvoice.Lines
- Zurück Index des Objekts in SalesInvoice.Lines
öffentlichen Int32 LineNumberDeriveAndSubscribe (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
(
AsIObject (). Eigenschaften [ "SalesInvoice"]. SubscribeToValue (resubscribeSubscriber);
if (this.SalesInvoice == null)
return -1;
sonst
(
SalesInvoice.AsIObject (). Immobilien [ "Lines"]. SubscribeToValue (resubscribeSubscriber);
Rückkehr this.SalesInvoice.Lines.IndexOf (this) + 1;
)
)
Für eine Erklärung der Differenz zwischen ReEvaluate und ReSubscribe, werfen Sie einen Blick auf diesen Artikel.

Delicious
Digg
Google
Yahoo