Abhängigkeiten zwischen Schriftgutaufrufen

In KnowlEdge und CTVDialog wird die Definition von Abhängigkeiten zwischen Bausteinaufrufen unterstützt.

Zunächst beschreiben wir hier die Funktionalität anhand eines Beispiels.

Beschreibung der Funktionalität

Dieses Beispiel soll die Definition und Wirkung abhängiger Schriftgutraufrufe verdeutlichen. Ausgangspunkt ist der Schriftsatz PG-SZ-DEPENDENCY; dieser besteht aus zwei Schriftstücken, die sich gegenseitig ausschließen sollen:

Beispiel: Definition in KnowlEdge

Beispiel KnowlEdge - 1

In der Entscheidungstabelle ist ein Schriftstück selektiert, das andere nicht. Ob Schriftgut selektiert, nicht selektiert oder hinzuwählbar ist, ist in der Spalte „Selektion“ ersichtlich.

Spalte "Selektion" in Beispiel-Schriftsatz

Hier ist PG-SK-DEPENDENCY selektiert, und vom Sachbearbeiter abwählbar. PG-SK-DEPENDENCY-ITER ist hinzuwählbar. Für beide sind abhängige Schriftgutaufrufe definiert.

Beispiel KnowlEdge - 2

Wenn Sie in die Spalte „Selektion“ doppelklicken, wird zu dem jeweiligen Schriftgut der Selektions-Dialog angezeigt:

Dialog "Selektion anpassen"

Da sich die beiden Module ausschließen sollen, wird hier definiert, dass für den Fall, dass der Sachbearbeiter PG-SK-DEPENDENCY dazuwählt, PG-SK-DEPENDENCY-ITER abgewählt werden soll. Für das andere Modul ist genau das Gegenteil definiert. So kann sichergestellt werden, dass immer nur eines der beiden Schriftstücke selektiert sein kann.

Beispiel KnowlEdge - 3

In dem Schriftstück PG-SK-DEPENDENCY sind einige Bausteine sowie ein freier Baustein enthalten. Für fast alle sind abhängige Schriftgutaufrufe definiert.

In diesem Modul sind auch alle Symbole, die in der Spalte „Selektion“ auftauchen können, enthalten. Die Bedeutung der Symbole wird beim Darüberstehen mit dem Cursor als Tooltip angezeigt:

Selektion in Beispiel-Schriftstück

Beispiel KnowlEdge - 4

Die Abhängigkeiten, die zu einem Schriftgutaufruf definiert sind, sehen Sie im Selektionsdialog, hier am Beispiel von PG-BS-DEPENDENCY-1. Wenn dieses Modul hinzugewählt wird, sollen PG-BS-DEPENDENCY-2, 3, 4 und 7 abgewählt werden.

Titel

Zu sehen ist auch, dass die erste Instanz von PG-BS-DEPENDENCY-4 weder zu- noch abgewält werden kann, da diese fest hinzuselektiert ist. Auch die freie Bausteingruppe PG-FG-TEST1 kann nicht zu- oder abgewählt werden, da freie Bausteingruppen im CTV-Dialog nur als Sammelbecken für zuwählbare freie Bausteine bereitgestellt werden.

Die Modulaufruf-Umschreibung, die in der Liste angezeigt wird, ist zusammengesetzt aus dem Modulnamen und dem Titel der Aktion, in der das Modul aufgerufen wird. So ist es möglich, mehrere Instanzen desselben Moduls zu unterscheiden.

Im CTV-Dialog wird für aufgerufenes Schriftgut dessen Titel angezeigt. Dieser wird deshalb in dem Selektionsdialog im Tooltip zu einer Schriftgutauswahl mit angezeigt.

Beispiel KnowlEdge - 5

Im folgenden Beispiel wurde versucht, abhängige Schriftgutaufrufe zu definieren, die sich widersprechen:

Konflikt: Widerspruch

Bei Selektion von PG-BS-DEPENDENCY-2 soll PG-BS-DEPENDENCY-1 hinzugewählt werden. Diese Selektion aber würde PG-BS-DEPENDENCY-2 entfernen. KnowlEdge erkennt solche Widersprüche und breichtet sie in dem Fels „Konflikte“. OK wird erst wieder aktiviert, wenn der Konflikt bereinigt ist, z.B. indem PG-BS-DEPENDENDY-1 wieder abgewählt wird.

Beispiel KnowlEdge - 6

Durch Ankreuzen der Checkbox „Auch automatisch deselektieren“ wird erreicht, dass bei der Deselektion von Modulen auch die so markierten, von ihnen aufgerufenenen Module deselektiert werden:

automatisch deselektieren

PG-BS-DEPENDENCY-4 (D-4) fügt PG-BS-DEPENDENCY-5 hinzu, mit der zusätzlichen Angabe, dass, wenn D-4 deselektiert wird, auch D-5 entfernt werden soll. D-6 tut das gleiche mit dem Aufruf von D-7. Das bewirkt, dass, wenn der Benutzer D-4 abwählt, auch D-5 bis D-7 entfernt werden.

Wenn diese Checkbox nicht angekreuzt wäre, könnte der Benutzer D-4 entfernen, und D-5 bis D-7 blieben selektiert.

Beispiel KnowlEdge - 7

In den Modulen PG-BS-DEPENDENCY-2 bis -7 haben wir jetzt eine Verkettung von Abhängigkeiten:

D-2 fügt D-4 und D-5 hinzu:
Verkettung
… D-5 fügt D-6 hinzu:
Verkettung
… und D-6 fügt D-7 hinzu:
Verkettung

Das bewirkt zur Laufzeit, dass, wenn D-2 hinzugefügt wird, auch D-4, D-5, D-6 und D-7 selektiert werden, falls sie nicht bereits selektiert sind.

Auch wenn ein Modul zu dem Zeitpunkt bereits selektiert ist, werden seine abhängigen Schriftgutaufrufe dabei überprüft, um zu vermeiden, dass die Reihenfolge, in der die Module sekektiert werden, einen Umterschied macht.

Beispiel KnowlEdge - 8

Sonderfall freie Bausteingruppe:

In einer freien Bausteingrupe sind alle Bausteine immer selektiert und nicht abwählbar. Da sie aber erst in die Schriftgutstruktur übernommen werden, wenn der Benutzer sie im CTV-Dialog hinzuwählt, ist hier trotzdem die Definition von abhängigen Modulaufrufen möglcih. Die Abhängigkeiten werden in diesem Fall wirksam, wenn ein freier Baustein im CTV-Dialog dem Schriftstück hinzugefügt wird.

freie Bausteingruppe

Es ist allerdings nicht möglich, für freie Bausteine zu definieren, dass ein freier Baustein abfgewählt werden soll. Da freie Bausteine auch mehrfach hinzugefügt werden können, wäre es nicht möglich, zur Laufzeit zu entscheiden, welche Bausteininstanz entfernt werden sollte.

Außerdem müssen freie Bausteine ohnehin erst vom Benutzer hinzugefügt werden; es kann also nicht vorkommen, dass in der Schriftgutstruktur über die Entscheidungstabelle bereits ein Baustein hinzuselektiert ist, der entfernt werden müsste.

Beispiel Anzeige im CTV-Dialog

Nun zur Laufzeit und damit zur Anzeige im CTV-Dialog.

Beispiel CTV Dialog - 1

Hier der CTV-Dialog für den Schriftsatz PG-SZ-DEPENDENCY.

Ausgangslage gem. Entscheidungstabelle

Das Schriftstück PG-SK-DEPENDENCY ist selektiert, so wie in der Entscheidungstabelle vorgegeben.

Zur Erinnerung - die Schriftstücke sollen sich gegenseitig ausschließen - jedes gibt als Abhängigkeit an, dass das jeweils andere Schriftstück deselektiert werden soll.

Dass es abhängige Schriftgutaufrufe gibt, wird im Tab „Bestandteile“ durch das „<+>“ hinter der Bezeichnung symbolisiert. Beim Verweilen mit dem Cursor auf dem Schriftgut werden die Abhängigkeiten als Tooltip angezeigt.

Beispiel CTV Dialog - 2

Nach Selektion von PG-SK-DEPENDENDY-ITER sieht die Anzeige so aus:

Selektion anderes Schriftstück

PG-SK-DEPENDENCY ist nicht mehr selektiert. In der Struktur steht jetzt PG-SK-DEPENDENCY-ITER.

Beispiel CTV Dialog - 3

Hier die Struktur von PG-SK-DEPENDENCY. Die Module, die in der Entscheidungstabelle PG-BS-DEPENDENCY-<n> heissen, werden im CTV-Dialog unter ihrem Titel angezeigt.

Hinzuwählen im Schriftstück

Hier sehen wir die Anfangs-Selektion für PG-SK-DEPENDENCY, wie in der Entscheidungstabelle vorgegeben: Schriftgut „Test Abhängigkeiten 3“, 5 und 7 sind nicht selektiert, alle anderen ja. „Test Abhängigkeiten 5“ ist markiert, weil wir dieses gleich dazuwählen wollen. Es ist zu sehen, dass „Test…6“ und „Test…7“ ebenfalls fett angezeigt werden - diese bieden Module werden mit hinzugefügt, wenn „Test…5“ hinzugewählt wird.

Beispiel CTV Dialog - 4

Nach dem Dazuwählen von „Test…5“ sehen wir hier, dass tatsächlich nicht nur „Test…5“, sondern auch „Test…6“ und „Test…7“ selektiert sind:

Nach Selektion

Grund: „Test…5“ wählt „Test…6“ hinzu, „Test…6“ wählt „Test…7“ hinzu. Dabei spielt es keine Rolle, dass „Test…6“ bereits selektiert war. Die Abhängigkeiten werden so aufgelöst, als würde das Schriftgut tatsächlich in dem Moment hinzugewählt. Dies ist wichtig, damit nicht die abhängigen Selektionen unterschiedliche Ergebnisse erzeugen, je nachdem, ob ein Schriftgut zum Zeitpunkt der Selektion eines anderen Schriftguts bereits selektiert ist oder nicht.

Beispiel CTV Dialog - 5

Als nächstes soll „Test…1“ abgewählt werden. Um zu kontrollieren, ob diese Deselektion Nebenwirkungen haben wird, ist das Modul hier selektiert: Es ist kein Modul fett- oder kursiv gedrucht, also keine abhängige Abwahl anderern Schriftguts.

Deselektion

In dem Tooltip sind die Abhängigkeiten Für „Test…1“ sichtbar: Bei Selektion werden mehrere andere Module abgewählt, allerdings ist kein Schriftut definiert, dass bei Selektion von „Test…1“ zu- und bei Deselektion abgewählt werden soll.

In der folgenden Abbildung wurde „Test…1“ abgewählt; wie erwartet, hat sich bei den anderen Selektionen nichts verändert:

Deselektion

Beispiel CTV Dialog - 6

Jetzt soll „Test…1“ wieder hinzugewählt werden - und jetzt wird sich auch bei den anderen Selektionen einiges ändern, vgl. Tooltip zu „Test…1“ im vorigen Schritt. Schauen wir, im im Einzuelnen passieren soll - durch die Selektion von „Test…1“ wird abgewählt:

  • „Test…2“, ohne weitere Folgen
  • „Test…3“, ebenfalls ohne weitere Folgen
  • „Test…4“, hierfür ist definiert, dass „Test…5“ zugewählt und bei Deselektion abgewählt werden soll. In der Folge wird auch „Test…6“ abgewählt, sowie „Test…7“, weil bei beiden angegeben ist, dass die Module bei Deselketion abgewählt werden sollen.
  • „Test…7“, dies wurde auch bereits infolge der Abwahl von „Test…4“ erledigt.

vorher

Tatsächlich ist danach außer „Test…1“ nur noch das nicht abwählbare Schriftgut „Test…4“ selektiert.

nachher

Beispiel CTV Dialog - 7

Ein weiteres Beispiel: „Test…3“ wird hinzugewählt; was muss passieren (s. auch Tooltip in der Abbildung): Es wird hinzugewählt

  • „Test…7“, ohne weitere Folgen
  • „Test…6“, dieser würde „Test…7“ selektieren, was aber bereits erledigt wurde
  • „Test…5“, dieser würde „Test…6“ selektieren, was aber bereits erledigt wurde
  • „Test…4“, dieser würde „Test…5“ selektieren, was aber bereits erledigt wurde

Die Reihenfolge spielt keine Rolle: auch bei Hinzunahme in umgekehrter Reihenfolge wäre das Ergebnis dasselbe.

Dann wird deselektiert

  • „Test…1“, ohne Folgen
  • „Test…2“, ebenfalls ohne Folgen

Vorher:

vorher

Nachher:

nachher

Zur Kontrolle bleiben die Hervorherbungen in der Liste so lange erhalten, bis anderes Schriftgut markiert wird.

Beispiel CTV Dialog - 8

Die Abhängigkeiten an einem Schriftgut werden auch im Tab „Techinfo“ angezeigt:

Techinfo

Beispiel CTV Dialog - 9

Ein Sonderfall sind freie Bausteingruppen und Bausteine.

Die freien Bausteingruppen werden in der erweiterten Bausteinauswahl angezeigt. Hieraus können freie Bausteine dem Schriftstück hinzugefügt werden.

Auch hier sind definierte Abhängigkeiten sichtbar durch ein „<+>“ hinter dem Bausteintitel, und auch hier zeigen Tooltips die Abhängigkeiten an.

freie Bausteingruppe

Bei freien Bausteinen, die als abhängige Bausteinaufrufe hinzugefügt wurden, bleibt allerdings keine Verknüpfung zwischen den so eingefügten Bausteinen erhalten: Wenn einer davon wieder entfernt wird, sind die anderen davon nicht betroffen. Ebenso kann ein einzelner Baustein verschoben werden.

Zu beachten

  • Die so definierten Abhängigkeiten werden nur dann wirksam, wenn der Benutzer im CTV-Dialog Schriftgut ab- oder hinzuwählt. Wenn ein Modul in der Entscheidungstabelle bereits vorgegeben ist (selektiert), werden die Abhängigkeiten nicht wirksam, bzw. nur dann, wenn der Benutzer das Modul ab- und wieder hinzuwählt!
  • Diese Möglichkeit ergänzt die Entscheidungstabelle insofern, dass auf Benutzeraktionen noch in vordefinierter Weise reagiert werden kann. Sie ersetzt nicht die Entscheidungstabelle, und sollte nur für wirklich überschaubare Abhängigkeiten benutzt werden, denn es es kommt hierbei potentiell zu Kettenreaktionen: A fügt B hinzu, B fügt C hinzu, usw.
  • Wenn ein Modul hinzugewählt wird, werden alle in Abhängigkeit hinzu- oder abzuwählenden Module ebenfalls hinzu- bzw. abgewählt, und auch die in Abhängigkeit davon hinzu- oder abzuwählenden Module werden hinzu- bzw. abgewählt. Es entsteht also eine Kettenreaktion.

KnowlEdge überprüft, ob durch solche Kettenreaktionen Konflikte entstehen können, z.B. A fügt B hinzu, B fügt C hinzu, C entfernt A. Zur Laufzeit findet keine Überprüfung mehr statt. Wenn zum Zeitpunkt, dass ein Modul hinzugewählt wird, ein hinzuzuwählendes Modul bereits selektiert ist, werden dessen Abhängigkeiten trotzdem aufgelöst. Dies, weil es sonst unterschiedliche Ergebnisse gäbe abhängig davon, in welcher Reihenfolge der Benutzer Module selektiert. Z.B. in dem Fall A fügt B hinzu, B fügt C hinzu: Sind weder A noch B noch C selektiert, und A fügt B hinzu, würden alle drei Module selektiert - wäre aber B bereits selektiert, würde beim Hinzufügen von A Baustein C nicht hinzugefügt werden.

  • Es sind keine komplexen Entscheidungen möglich, wie z.B:. A entfernt B, aber wenn A und C dann doch B. Zum Teil ließen sich solche Bedingungen zwar formulieren, würden aber von KnowlEdge als potentielle Konflikte abgelehnt werden, da nicht ereknnbar ist, ob das Ergebnis wirklich beabsichtigt ist.
  • Für fest hinzugewählte Module (selektiert, nicht abwählbar) können keine Abhängigkeiten definiert werden.
  • Die Defininition von Abhängigkeiten gilt jeweils für diesen einen Modulaufruf in dem aktuellen Modul, nicht allgemein für alle Aufrufe eines Moduls in diversen Modulen.

Einschränkung: Bei Modulen mit Iteration (Moduliteration) wird die Funktionalität abgeschaltet, denn es ist zur Laufzeit nicht möglich zu unterscheiden, welches Schriftgut aus welchem Iterationsdurchlauf stammt, und welches Schriftgut folglich hinzu- oder abgewählt werden sollte. Sollte sich herausstellen, dass die neue Funktionalität verbreitet genutzt wird und auch innerhalb von Moduliteration genutzt werden sollte, müsste hierfür eine Lösung überlegt werden.

Freie Bausteine und -gruppen

Für diese gelten hier einige Besonderheiten (diese sind nicht neu, sondern werden hier nur zum besseren Verständnis der Folgen für abhängige Bausteinaufrufe erwähnt):

  • Freie Bausteingruppen sind zwar theoretisch selektiert, zu- oder abwählbar wie alle anderen Bausteine. Allerdings hat dies im CTV-Dialog keine Auswirkungen;
  • Ein freier Baustein gilt immer als selektiert, die Zu- oder Abwahl erfolgt im CTV-Dialog (tatsächlich ist er nicht selektiert und vom Sachbearbeiter zuwählbar, technisch gilt er immer als selektiert, da er immer angeboten wird).
  • Freie Bausteingruppen werden - mit ihren Bausteinen - in einer separaten Liste angezeigt, und es können aus der Liste freie Bausteine zur Struktur hinzugefügt werden.
  • In der Dokumentstruktur tauchen freie Bausteine erst auf, wenn sie hinzugefügt wurden, freie Bausteingruppen nie.
  • Freie Bausteine können mehrfach an unterschiedlichen Positionen hinzugefügt werden.
  • Einmal in der Struktur vorhanden, können sie verschoben werden (beliebig, wenn keine Verschiebegrenzen festgelegt wurden) und wieder entfernt werden. Selektion und Deselektion - wie bei anderen Bausteinen durch ankreuzen) ist hier nicht möglich.

Daraus ergibt sich, dass auch das Verhalten des CTV-Dialogs bzgl. abhängiger Bausteinaufrufe beim Selektieren freier Bausteine anders sein muss als bei „normalen“ Bausteinen:

  • Wenn Abhängigkeiten definiert sind, erfolgt deren Auflösung beim Hinzufügen dieses Bausteins im CTV-Dialog.
  • Wenn ein freier Baustein x hinzugefügt wird und dabei der Baustein y ebenfalls hinzugefügt werden soll, wird dieser zusammen mit x hinzugefügt, auch wenn es bereits andere hinzugefügte Instanzen von y geben sollte.
  • Da freie Bausteine beliebig oft hinzugefügt und verschoben werden können, kann CTV-Dialog beim Entfernen eines solchen Bausteinaufrufs nicht entscheiden, welche von n möglicherweise bereits vorhandenen Instanzen entfernt werden soll. Die Aktion wäre nur überschaubar, solange ein freier Baustein nur einmal hinzugefügt wurde. Deshalb werden freie Bausteine vom CTV-Dialog aus nicht aus der Struktur entfernt.
  • Es ist auch nicht praktikabel, bei Hinzufügen des Bausteins x das Hinzufügen des Bausteins y zu verbieten, denn a) könnte Baustein y bereits ein- oder mehrmals hinzugefügt worden sein, b) könnte bei Hinzufügen eines anderen Bausteins z aus derselben Bausteingruppe eine andere Abhängigkeit definiert sein, c) könnte nach Beenden des Einfügens von x in einer neuen Einfügeoperation y getrennt hinzugefügt werden, d) könnte y in einer anderen Bausteingruppe nochmals angeboten werden, ohne jede Abhängigkeit.

Für die Definition in KnowlEdge bedeutet dies: Um keine falschen Erwartungen entstehen zu lassen, können freie Bausteingruppen nicht abhängig zu- oder abgewählt werden. Innerhalb von freien Bausteingruppen können in freien Bausteinaufrufen andere freie Bausteine hinzugewählt werden, aber nicht abgewählt.

Abweichungen vom Konzept bzw. gewählte Alternativen

KnowlEdge

Die Definition von abhängigen Modulaufrufen erfolgt ausschließlich in Knowledge, und dort über einen separaten Dialog, nicht im CTV-Wizard. Warum? Weil der CTV-Wizard auch z.B. in Cedge benutzt wird, wo solche Abhängigkeiten nicht definiert werden können (und dürfen, denn sie können dort nicht überprüft werden), und - wenn auch „nur“ ein technischer Grund - weil der Code hätte dupliziert werden müssen, denn der CTV-Wizard ist nicht in C# implementiert.

Bei der Darstellung in KnowlEdge werden andere Symbole verwendet; Ausehen und Nutzung s. Screenshots.

CTV-Dialog

Um das Bestehen von Abhängigkeiten anzuzeigen, werden Modulaufrufe mit Abhängigkeiten im Tab Bestandteile mit einem „<+>“ hinter der Bezeichung versehen. Wo diese Markierung vorhanden ist, muss der Benutzer beim Hinzuwählen des Bausteins damit rechnen, dass sich auch andere Selektionen ändern.
Die für einen Modulaufruf definierten Abhängigkeiten werden im Tab Techinfo aufgelistet (dies allerdings nur für Module, die bereits in der Struktur enthalten sind). Im Tab Bestandteile werden die definierten Abhängigkeiten im Tooltip zu einem Modul angezeigt. In beiden Fällen sind Verkettungen nicht sichtbar, sondern nur direkte Abhängigkeiten. Bei Auswahl eines Modulaufrufs mit Abhängigkeiten im Tab Bestandteile werden abhängig dazu- oder abgewählte Module bei Selektion (Markierung) kenntlich gemacht durch fett- bzw. kursiv-Anzeige. Hierbei werden sämtliche Verkettungen berücksichtigt! Die Anzeige ist abhängig davon, ob das Schriftgut zum Zeitpunkt der Markierung selektiert (angekreuzt) ist oder nicht: Wenn nein, wird angezeigt, welches Schriftgut hinzu- oder abgewählt werden würde, wenn das Schriftgut selbst hinzugewählt wird. Ist es bereits hinzugewählt, wird angezeigt, welches Schriftgut durch abwählen ebenfalls abgewählt werden würde. Auf farbige Darstellung wurde verzichtet, u.a. da bereits die Farbe grau für nicht-editierbares Schriftgut benutzt wird.

faq:ctv:dependentcalls · Zuletzt geändert: 30.06.2020 11:56

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum