Berichtswesen
Der Shop sammelt während des Betriebs für jeden Kunden Daten in einer Session, die im Idealfall zu einer Bestellung wird. Die kaufmännisch relevanten Daten werden dazu in der Tabelle sessiondata gehalten, in der für jeden Besucher eine neue Zeile angelegt wird. Ist bereits ein Kunde bekannt, wird die Session mit dem Kunden verknüpft, in dem seine Kundennummer in die Spalte ownerID eingetragen wird. Wird innerhalb der Session bestellt, wird in die Zeile in die Spalte customernr ebenfalls die Kundennummer eingetragen - ab diesem Zeitpunkt gilt dieser Datensatz als fertige Bestellung (korrekterweise erst, wenn der Status confirmed erreicht). Im Feld sdate kann das Datum der Erstellung der Session bzw. der Fertigstellung der Bestellung abgefragt werden.
Typische Abfragen gegen diesen Datenbestand können über die Module im Abschnitt Statistik des Admin Backends durchgeführt werden.
Beispiel: die Anzahl der Besuchersessions pro Monat
select year(sdate), month(sdate), count(*) from sessiondata group by year(sdate), month(sdate) order by year(sdate) desc, month(sdate) desc
Beispiel: die Gesamtsumme der Umsätze pro Monat
select year(sdate), month(sdate), sum(totalamount) from sessiondata where customernr is not null group by year(sdate), month(sdate) order by year(sdate) desc, month(sdate) desc
Getrennt von den kaufmännischen Daten werden Nutzungsprotokolle geschrieben, mit denen die statische Nutzung des Shops ermittelt werden kann.
Tabelle | Inhalt |
|---|---|
sessionlog | Protokolliert den Einstieg in den Shop |
searchlog | Protokolliert Suchbegriffe |
itemlog | Protokolliert den Aufruf von Produkt Detailseiten |
categorylog | Protokolliert den Aufruf einer Kategorie |
pagelog | Protokolliert den Aufruf einer CMS Contentseite. |
modulelog | Protokolliert die Anzeige eines Moduls in einer CMS Contentseite. Damit die Protokollierung erfolgt, muss der Tag-Name des Moduls gesetzt sein. |
actionlog | Protokolliert den Aufruf einer Action-Komponente (z.B. ein Button) in einem Modul in einer CMS Contentseite. Damit die Protokollierung erfolgt, muss der Tag-Name des Moduls gesetzt sein. |
bloglog | Protokolliert die Anzeige eines Blog Beitrags. |
Zum Auswerten der Besucher pro Tag kann deshalb die sessionlog Tabelle ausgewertet werden, z.B.
Select CONVERT(varchar, cast(sdate as date),23) as Tag, count(*) as Anzahl from sessionlog group by CONVERT(varchar, cast(sdate as date),23)
Auswertungen im Admin Backend
Das Admin Backend bietet für die Auswertung die Gruppe Statistik an, in der neben den für jeweils eine Auswertung programmierten Modulen auch das allgemeine Modul Berichte verfügbar ist.

Die dort vorbereiteten Berichte können mit dem Klick auf die Anzeigen Schaltfläche in einer Tabelle abgerufen werden.

Durch einen Klick auf die Spaltenüberschriften kann die Sortierung der Daten geändert werden. Außerdem bietet das Suchen Feld die schnelle Möglichkeit an, einen Filter über die Daten zu legen.
Die Schaltfläche Filter ist dann zu verwenden, wenn in der Berichtsdefinition Parameter für die Auswahl definiert wurden. Diese Parameter werden dann als Textfelder angeboten. Sind keine Parameter definiert, dann bliebt die Filter-Seite hinter der Filter-Schaltfläche leer.
Mit der Schaltfläche Export können die dargestellten Daten in Excel exportiert werden, um sie dort weiterzuverarbeiten.
Ändern von Berichten
Der Überblicksbildschirm für Berichte bietet in jeder Zeile auch eine Schaltfläche zum Ändern des Berichts an.

Im nachfolgenden Bildschirm kann der Name und der SQL Befehl editiert werden, der für den Bericht ausgeführt wird.
Die Schaltfläche Generieren bietet Benutzern, die keine SQL Kenntnisse haben, eine einfache Abfragemöglichkeit, bei denen der SQL Befehl automatisch erstellt wird. Die Möglichkeiten der automatischen Generierung sind auf einfaches Auflisten beschränkt.
Mit der Schaltfläche Neuer Parameter kann ein Filter-Kriterum erzeugt werden, dass in den SQL Befehl eingebaut wird.

In der obersten Zeile muss dem Parameter ein Name (ohne Sonderzeichen, keine Leerzeichen) gegeben werden. Dieser Name kann dann mit dem Prefix @ im SQL Befehl verwendet werden. Der Parameter DatumAb kann also im SQL Befehl als @DatumAb benutzt werden.
Die Bezeichnung ist ein erklärender Text, der dem späteren Anwender vor dem Eingabefeld angezeigt wird.
Der Typ legt fest, mit welchem Eingabeformat für diesen Parameter gerechnet wird.
Der Standardwert legt fest, welcher Wert beim Start des Berichts ohne Parametereingabe gearbeitet wird und was dem Benutzer zum Ändern angezeigt wird. Aktuell sind beim Standardwert nur Konstanten erlaubt.
Es können beliebig viele Parameter benutzt werden.
Importieren / Exportieren von Berichten
Jede Zeile in der Berichtsübersicht hat auch eine Exportieren Schaltfläche, mit der der Bericht als XML heruntergeladen werden kann. Dieses XML enthält die Berichtsdefinition und kann mit dieser Datei von einer Shop-Installation in eine andere übertragen werden.
Zum Reimportieren verwenden Sie die Schaltfläche Importieren überhalb der Berichtsübersicht.

Der oben dargestellte Bericht ergibt folgende XML Datei:
<report><name>Top 10 Produkte</name><sql>select top 10
itemnr as ArtNr,
itemname1 as Bezeichnung,
sum(amount) as Verkaufsmenge
from
basket
inner join sessiondata on basket.guid=sessiondata.guid
where
sessiondata.customernr is not null
and sessiondata.sdate > getDate()-@zeitraum
group by
itemnr, itemname1
order by
sum(amount) desc</sql>
<parameter name="zeitraum" prompt="Zeitraum" datatype="int" defaultvalue="30" />
</report>
Berichtsgallerie
Berichte werden von uns auch zentral in einem Verzeichnis bereitgestellt und können einfach von dort in jeden Shop übernommen werden. Übertragen werden dabei nur die Berichtsdefinitionen, nie Daten eines Shops.
Damit die Gallerie funktioniert, muss der Parameter reportrepository in der web.config auf einen Url gesetzt werden, der ein XML mit Berichtsdefinitionen liefert, z.B. https://reports.centauri.at
Aktuell wird das Web reports.centauri.at von Centauri gehostet. Dort muss eine Datei reports.xml mit den Berichtsdefinitionen liegen.
Ist der Konfigurationsparameter gesetzt, kann in der Berichtsübersicht auf Gallerie geklickt werden und man erhält eine Übersicht über vorbereiteten Berichten:

Jeder Bericht kann dann einfach mit einem Klick auf Importieren übernommen werden. Mehrfaches Klicken übernimmt den Bericht auch mehrfach, damit er später angepasst werden kann.
In der Datei reports.xml sind die URLs definiert, in denen die jeweiligen Reportdefinitionen gespeichert sind. Diese Dateien werden aktuell ebenfalls im Web reports.centauri.at bei Centauri gehostet. Jede Reportdefinition ist eine .xml Datei, wie sie auch beim Importieren/Exportieren von Berichten benutzt wird.
Aufgaben
Über das zusätzliche Modul Aufgaben im Admin Backend können Berichte zeitgesteuert als Datei ins Verzeichnissystem oder per EMail an Personen verschickt werden.

Mit der Schaltfläche Neuanlegen bzw. Ändern in jeder Zeile der Übersicht, können das Timing der Aufgabe bzw. die Aktion (EMail, Datei, etc.) umgeschalten werden.

Damit die Aufgabe tatsächlich durchgeführt wird, muss ein Workflow existieren, der die Aufgabe TaskScheduler (keine Parameter notwendig) aufruft. Dieser Workflow muss zeitgesteuert aufgerufen werden und legt durch seine Aufruffrequenz die minimale Intervalldauer fest, die bei den Aufgaben konfiguriert werden kann.
Alarme
Über das zusätzliche Modul Alarme können Grenzen definiert werden, die der Shop in Berichten überwachen soll.

Damit der Alarm tatsächlich kontrolliert wird, muss ein Workflow existieren, der die Aufgabe AlarmScheduler (keine Parameter notwendig) aufruft. Dieser Workflow muss zeitgesteuert aufgerufen werden und legt durch seine Aufruffrequenz die minimale Intervalldauer fest, in der die Alarme kontrolliert werden.

Für jeden Alarm wird ein in den Alarm-Parametern konfigurierter Bericht ausgeführt und die ebenfalls in den Alarm-Parametern definierte Spalte gegen einen Grenzwert verglichen. In der Konfiguration wird ebenfalls festgelegt, ob das unter oder überschreiten des Grenzwerts zu einem Alarm führen soll. Enthält der Bericht mehr als eine Ergebniszeile, werden alle Zeilen mit dem Grenzwert verglichen.
Wird der Alarm ausgelöst, kann wie bei einer Aufgabe festgelegt werden, welche Aktion durchgeführt wird (E-Mail versenden, Datei abspeichern, etc.).