D: Avaloq Script Sourcecode – Avaloq Parametrierer Beispiel

Avaloq Script? Im IT Bereich der Banken welche das Avaloq Softwarepaket verwenden, werden viele Wirtschaftsinformatiker oder Parametrierer gesucht – da werden Avaloq Script Kenntnisse gewünscht. Aber was ist Avaloq Script? Wie muss ich mir das vorstellen? Gibt es Sourcecode Beispiele?

Mir erging es genau so, nur konnte ich leider nirgends im Internet ein Beispiel finden.
Deshalb mein kleiner Bericht hierzu.

Aber was ist nun dieses Avaloq Script genau? In den Stelleninseraten oder dann auch beim Vorstellungsgespräch erfährt man dazu relativ wenig. Im Internet gibt’s dazu kaum Avaloq Script Codebeispiele. Der Grund liegt auf der Hand: Avaloq Script ist keine “öffentliche” Programmiersprache. Sie wird explizit nur auf dem Avaloq System verwendet. Das Avaloq System kann man sich nicht einfach so runterladen, man muss da schon eine Bank sein und viel Geld investieren um das Softwarepaket lizenziert kaufen zu können.

Allen Stellensuchenden Informatikern die sich nun relativ wenig unter Avaloq Script vorstellen können, möchte ich hier ein kleines Code Beispiel mitsamt Beschreibung zeigen. Dies ist ein Fantasiebeispiel und hat keinen Bezug zu einer reellen Implementierung einer spezifischen Bank.

Grundsätzliches zur Programmiersprache Avaloq Script

Die ganze Avaloqsoftware basiert vollständig auf Oracle, im Hintergrund läuft das meiste als PL/SQL ab.

Avaloq Script Sourcen sind Textbasiert, also schön mittels Version Control kontrollierbar.

Das Softwareunternehmen Avaloq hat einen Compiler geschrieben, welcher aus Avaloq Script Sourcecode dann reines (native) Oracle PL/SQL generiert. Die Avaloq Script Source speichert Avaloq selbst in eigenen Sourcetabellen ab. Die PL/SQL Programme sind dann aber natürlich auf der DB als Programme gespeichert.

avaloq-script Für ein “Avaloq Programm” existiert also eine Avaloq Script Source und jeweils ein oder mehre entsprechendes Stück native PL/SQL Code, wobei dies je nach Fall ein PL/SQL Package oder eine standalone Function sein kann. Es ist sogar möglich dass die Avaloq Script Source als “valid” angezeigt wird, das PL/SQL Programm auf der Oracle DB aber z.B. aufgrund eines Referenzenfehlers als “invalid” aufscheint … dies nur mal so am Rande …

Avaloq Script sieht aus wie ein PL/SQL Dialekt! Im Grunde also PL/SQL mit avaloqspezifischen Anpassungen und Erweiterungen, vor allem im Bereich Datenzugriff. Es gibt keine DML oder DDL Operationen so wie’s man sich in PL/SQL gewöhnt ist. Dazu werden die Avaloq Data Dictionaries (DDIC) abgefragt.
Programmablauflogik kann in Avaloq Script fast gleich wie in PL/SQL gemacht werden.
Im Endeffekt behaupte ich mal dass in Avaloq Script aber leider nur so ungefähr 10% des PL/SQL Funktionsumfangs benützt werden kann, wobei die wichtigen Funktionen wie substr(), length(), usw. selbstverständlich vorhanden sind, aber z.B. keine Ref Cursor uns so was.

Parametrierer (so nennen sich die Wirtschaftsinformatiker welche das Avaloq System auf die bedürfnisse der Bank anpassen) sind also eigentlich PL/SQL Entwickler welche sich mittels Avaloq Script um das Avaloq-System ummanteln. Ein Decorator Muster sozusagen.

Avaloq Script wird übers ganze System konsequent verwendet. Für Programmlogik, für das ganze Reporting, für das Message Handling, usw.

Hauptunterschied: Avaloq Script vs. PL/SQL

Der grösste Unterschied zwischen Avaloq Script und dem “normalen” PL/SQL ist die Möglichkeit der Datenabfragen bzw. Datenmanipulation.

Da PL/SQL ja sehr datennah ist, kann ich innerhalb eines Programmes einfach ein

select tradeDate
into vDate
from tabelle_stex stx, tabelle_settlment set
where stx.id = set.stx_id
and stx.stx_id=15;

absetzten. Also jegliche Art von Tabellenzugriff (DDL und DML).

Innerhalb Avaloq Script funktioniert kein direkter Tabellenzugriff mehr! Avaloq kapselt den Datenzugriff auf die Avaloq Datenstruktur bewusst. Das ist eigentlich auch verständlich da sie releasefähig bleiben müssen. Sie stellen dazu eigene Data Dictionaries (DDIC) zur Verfügung auf die man wirklich elegant lesend und schreiben zugreifen kann.

Mittels Avaloq Script könnte dies in etwa so aussehen

with mem_doc_stex(15) as stx do
vDate := stx.doc.settle.tradeDate();
end with;

Es ist wirklich elegant wie im Codebeispiel ersichtlich, dafür verliert man halt leider etwas die “griffigkeit” die man als Entwickler gerne hätte. Man weiss im endeffekt hat nicht welche Tabellen wo und wie gelesen werden. Vom Grundsatz her muss man sich auch nicht mehr darum kümmern, Avaloq handhabt dies selbst durch ihren Avaloq Script – PL/SQL Compiler. Wobei dann der generierte PL/SQL Code dann sogar gewrappt ist. Er kann dann auf der DB Seite nicht mehr im Klartext angesehen oder sogar geändert werden … eigentlich 😉

Die Dictionaries sind aber äussert umfangreich und man kann im objektorientierten Stil immer weiter in der Baumstrucktur runter gehen. Dies in beide Richtungen. Also auch zuunterst von der Buchung, zum Konto rauf bis zur obersten Business Unit und das ganze auch umgekehrt.

ddic-avaloq-script-beispiel-fuer-avaloq-parametrierer
Beispiel Data Dictionary

Code Beispiel Avaloq Script

Das oben aufgeführte Avaloq Script Beispiel ist etwas phantasielos, hier nun mal was mit etwas mehr Fleisch am Knochen. Wir sind die Bank namens “Superbaningbank” und haben diesen Code hier:


function getBusinessPartnerName(pKonto number) return text
is 
 vName text; 
begin 
 vIrgendwas := lookup.asset_id(‘NESN’);  // hier sinnlos
 vName := obj_pos(pKonto).cont.bp.name;   
 return vName; 
end;

Hier wird also eine Funktion bereitgestellt die als Input Parameter pKonto ein obj_pos Objekt erwartet (ein Konto).
Danach lesen wir hier zusammenhangslos die Asset ID der Nestle Namensaktie.
Nun der Clou: Anstatt irgend eine Business Partner Tabelle zu lesen, werden in Avaloq Script die Data Dictionaries (DDIC) verwendet.

Das folgende Statement

vName := obj_pos(pKonto).cont.bp.name;

bedeutet also dass zuerst der DDC  obj_pos  mit dem Parameter pKonto gelesen wird, darin kann man direkt auf den cont, dann auf den bp zugreifen.
Schlussendlich lesen wir hier dann vom
bp Objekt direkt das Name Element.
Avaloq bietet dazu eine wunderbare DDIC Ansicht, man kann sich da schön durchklicken.

Die ganze Sache kann dann natürlich schon etwas komplexer werden, jedoch bleibt die Übersichtlichkeit bestehen da man sich durch alle DDIC durchhangeln kann. Hier ein etwas komplizierterer Fall aus dem Avaloq Message Interface AMI, hier wird programmtechnisch eine SIC A10 Message aufbereitet die dann durch Avaloq via AMI und Middleware an die SIC verschickt wird:

[message Out 1.0]
----------------------------
message out SIC.A10V1
message type A10
----------------------------
-- Imports
----------------------------
import sic_a10v1;
import sic_msg_header;
----------------------------
-- create message
---------------------------
with mem_msg_sic_a10v(msg) as m do
  with mem_doc_settle(doc) as settle do
    sic_a10v.init;
    msg.head.rcv_bp_id := msg.path.dest_first_mbr_noclrinst.bp_id;
    msg.genm.curry     := msg.path.src_macc.ref_curry.key(def_obj_key.asset.iso);
    msg.genm.val_date := settle.val_date;
  end with;
end with;
end message out;

Sieht etwas kompliziert aus, ist es aber nicht, es werden nur die Message Variablen mit irgendwelchen Settlement Werten aus dem Avaloq System abgefüllt.

In den Dictionaries werden seitens Avaloq ja nicht auch nur Tabellen gelesen, sondern die DDIC sind massiv mit Daten angereichert die dem Parametrierer das Entwickeln massiv vereinfachen.
Avaloq-DDIC-automatisch-berechnet-fuer-Avaloq-Script

Wie man sieht wird Avaloq Script durchs Band konsequent verwendet. Für Programmlogik, für das ganze Reporting, für das Message Handling, usw.

So, ich hoffe mit dieser kurzen Avaloq Script Exkursion einem zukünftigen Avaloq Parametrierer einen Einblick in die Thematik gemacht haben zu können.

3 thoughts on “D: Avaloq Script Sourcecode – Avaloq Parametrierer Beispiel”

  1. avaloq script ist ein verstümmelstes PL/SQL, aber weit entfernt von einer durchdachten, duchgängigen und klar definierten programmiersprache. es spiegelt sehr gut die qualität wider, die avaloq allgemein abliefert.

  2. ok, aber was will Avaloq als Systemhersteller anders machen? Avaloq ist grundsätzlich extrem parameterisierbar. So was ist nur möglich in dem man dem Parametrisierer/Entwickler auch eine Programmiersprache zur Verfügung stellt. In dem Sinne verstehe ich Avaloq schon dass sie nicht einfach mittels “nativen” PL/SQL Jedermann auf der Datenbank rumwurschteln lassen möchten….

  3. René Nyffenegger

    Ich gebe schfr recht: Avaloq hätte zum Beispiel ein reguläres PL/SQL APi zur Verfügung stellen können. Wenn ich sinnvolle, performante und nicht standard Reports auf einer Avaloq-Umgebung erstelle, komme ich nicht umhin, den ganze DDIC – Avaloq-Script Layer einfach zu umgehen und mit selbstgestrickten Views und PL/SQL funkionalitäten die Daten so aus der Datenbank herauszuziehen, wie sie der Kunde eben brauchen kann. Ganz abgesehen ist auch die Entwicklungszeit eines Reports so schneller wie mit dem ganzen Parametrierungsoverhead.

    Ich stelle in den Raum, das Avaloq als Profitcenter nicht daran interessiert ist, ihre Interna offenzulegen, damit sie den Paramtrierermarkt kontrollieren können. Man denke daran: die Kurskosten für die Zertifizierung bewegen sich im Rahmen von CHF 13K – von den Oppurtinitätskosten ganz zu schweigen!

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top