TopLogic-Script

Mittels der proprietären Skriptsprache TopLogic-Script lassen sich im Rahmen der Modellierung Berechnungen durchführen. Berechnung ist relativ weit gefasst. Numerische Berechnungen lassen sich ebenso abbilden wie Text- oder Datumsoperationen. Am wichtigsten ist jedoch die Möglichkeit, leicht und schnell auf Modellinhalte zugreifen zu können.

Bevor wir zur Codierung kommen noch einmal eine kurze Wiederholung der Namenskonventionen von TopLogic:

Aus dem technischen Namen und dem Modulnamen wird seitens des Systems ein vollqualifizierter Name nach der folgenden Regel gebildet.

Für Fachobjekte: <technischer Modulname>:<technischer Fachobjektname>

Für deren Eigenschaften: <technischer Modulname>:<technischer Fachobjektname>#<technischer Attribut- oder Referenzname>

Wichtig: die voll qualifizierten technischen Namen der Objekttypen, deren Instanzen gelesen werden sollen, werden immer mit den Zeichen `` eingeschlossen.

Wir können nun die folgenden Codes als Bedingung bei den Verknüpfungen der Gateways eintragen:

Name der Verknüpfung Bedingung
Nachfrage nötig

process -> $process.get(`MyEntities:Ticket#hasSolutionStatus`) == `MyEntities:SolutionStatus#unsolved`

Änderung umgesetzt

process -> $process.get(`MyEntities:Ticket#hasSolutionStatus`) == `MyEntities:SolutionStatus#solved`

Fehler festgestellt, Nachbearbeitung nötig

process -> $process.get(`MyEntities:Ticket#testPassed`) == `tl5.enum:tl.yesno#tl.no`

Änderung OK, Ticket schließen

process -> $process.get(`MyEntities:Ticket#testPassed`)== `tl5.enum:tl.yesno#tl.yes`

Erläuterung am Beispiel von process -> $process.get(`MyEntities:Ticket#hasSolutionStatus`) == `MyEntities:State#Solved`:

  • process deklariert die Variable, mit der wir hier arbeiten.
  • Durch $process wird auf die Variable zugegriffen.
  • .get teilt dem System mit, dass aus dem Modell ausgelesen werden soll
  • Was ausgelesen werden soll steht in der Klammer. Wichtig: die voll qualifizierten Ausdrücke werden immer in Backticks `` eingeschlossen. Es wird hier vom Ticket der Wert vom "hat Lösungsstatus" ausgelesen und geprüft, ob dieser dem Wert "gelöst" (technischer Name: MyEntities:SolutionStatus#solved) entspricht oder nicht.