Lade...
 

Extern

Extern

Signatur
Extern(name, File(fileName) [, overwrites(overName)] [, triggeredBy(msg1, msg2, ..., msgn)] [, provides(provider_tag) ]) [: inheritName]
Parameter
Parameter Beschreibung
name Modulname
overName Name eines Moduls, das bereits per Extern-Statement deklariert wurde,
und dessen Extern-Statement nun überschrieben werden soll. (s.u.)
fileName Name des nachzuladenden Files
msg1 Message löst Nachladen aus
. . . . . .
msgn Message löst Nachladen aus
provider_tag Modul exportiert Procedures
inheritName Name des Moduls, von dem geerbt wird

Mit Extern wird ein Modul deklariert, dessen vollständige Definition in einer anderen Datei liegt. Diese soll erst dann geladen werden, wenn
- eine der aufgeführten Messages gesendet wurde. Die Message erreicht natürlich auch noch das neu geladen Modul (siehe Beispiel)
- eine exportierte Procedure über ein Provider Tag aufgerufen wird.

Wenn das nachzuladende Modul von einem anderen Modul abgeleitet ist, bestehen folgende Möglichkeiten:

  • Ableitung und Basismodul sind im gleichen Source-File definiert bzw. mit #include-Anweisungen wird dafür gesorgt, dass sie zusammen nachgeladen werden.
  • Auch die Vererbungsrelation wird mit Anweisung Extern beschrieben, sodass InstantView® die benötigten Basismodule automatisch nachladen kann.

Die Extern-Anweisungen für letzteren Fall:

  Extern(name, File(fileName1), triggeredBy(msg1, msg2, ..., msgn)) : baseModName
  Extern(baseModName, File(fileName2))

  oder

  Extern(baseModName, File(fileName2))
  Extern(name, File(fileName1), triggeredBy(msg1, msg2, ..., msgn)) : baseModName

Für einen Basis-Modul muss keine Liste auslösender Messages angegeben werden.

Es gibt keine zwingend vorgegebene Reihenfolge der Extern-Anweisungen: Die externe Deklaration eines Basismoduls darf auch nach der Extern-Anweisung für die abgeleiteten Module erscheinen.

Extern Deklarationen sind das Hilfsmittel, um Anwendungen aus vorgefertigten Modulen des AppsWarehouse® zusammenzustellen!

Was zu einer bestimmten Anwendung A gehört, wird durch eine Folge von Extern-Anweisungen definiert.
Eine kundenspezifische Variante von A = Anwendung A' würde durch eine andere Folge von Extern-Anweisungen beschrieben, die sich nur an wenigen Stellen unterscheidet.
Statt die Extern-Definitionen für die Kunden-Variante A' ganz neu zu schreiben, kann die Definition für A benutzt und ergänzt werden.
Zwei Features unterstützen diese Möglichkeit:

- Die Angabe des Basismoduls in der Extern-Anweisung hat Priorität vor den Angabe des Basismoduls bei der Anweisung Module (d.h. im Sourcecode der Module). Damit kann mittels Extern-Anweisung die Ableitungsfolge modifiziert werden.
- Vorher deklarierte Extern-Statements können mit overwrites umdefiniert werden.
 

Parameter overwrites - detaillierte Beschreibung

Ein typisches Beispiel dafür finden Sie hier: mit Aufruf über Messages bzw. mit Aufruf über Provider Tag.

 Extern(A, ... overwrites(B), ...)

Overwrite Extern

Die Message ALPHA, die bisher A geladen hat, wird jetzt nur Modul B laden, die Extern-Anweisung für A ist unwirksam.

Damit wird das Zusammenstellen größerer Anwendungen erleichtert (siehe Beispiel). Das in der overwrites-Klausel angegebene Modul darf noch nicht geladen sein.

Mehrere Extern-Anweisungen für das gleiche Modul sind erlaubt. Die triggernden Messages werden aufgesammelt (siehe Beispiel).

"Überschreiben" wird auch verwendet, wenn einem Modul von einem anderem Modul abgeleitet werden soll, als es im Standard vorgesehen ist.

InstantView®