Administration
  • die folgenden Seiten richten sich an cardo Systemadministratoren
  • aufgrund der Nutzung des IKX Datenspeichers durch Puzzle, finden Sie die Beschreibung des Aufbaus einer Puzzle Struktur in unserer IKX Hilfe
  • spezielle Puzzle relevante Einstellungen haben wir hier zusammengestellt.
Kurzüberblick zum Aufbau einer Datenstruktur mit cardo.Puzzle
  1. Erstellung der Datenstruktur im IKX Klasseneditor
    • Einrichten von Nachschlageklassen
    • Gliederung der Oberfläche durch Bilden von Gruppen
  2. Setzen der Rechte für die Klassen und Enitäten
  3. Vergabe der Rechte im Dateneditor
  4. Anlegen und Füllen der Dokumente

Weitere ausführliche Hinweise finden Sie unter Administration.

Ablauf einer cardo.Puzzle-Einrichtung

Im cardo.Puzzle können Sie eine neue Kategorie einrichten oder eine bereits vorhandene Kategorie registrieren. Eine Kategorie entspricht dabei einem Themengebiet bzw. kann man auch sagen eine Kategorie definiert genau eine Fachanwendung. Wurde eine neue Kategorie eingerichtet müssen Sie neue Klassen, Entitäten oder Nachschlageklassen einrichten.

Ablauf einer cardo.Puzzle-Einrichtung

1. cardo.Puzzle als Anwendung registrieren

  1. Klicken Sie unter Status und Einstellungen/Anwendung auf die Anwendung CORE$PUZZLE (BuildInApplication) zur Registrierung
  2. und fahren Sie, wie unter Anwendung registrieren beschrieben, fort.
  3. Vergeben Sie nach der Registrierung der entsprechenden Nutzergruppe das Recht Anwendung starten

-> Informieren Sie sich hier über die Puzzle Parameter und Puzzle LayerTag

Tipp: Auch Kategorien können als einzelne Puzzle-Anwendungen registriert werden. Damit soll für den Nutzer eine bessere Übersichtlichkeit hinsichtlich der Puzzle Anwendungen geschaffen werden. Der jeweilige Nutzer sieht dann nur die Puzzle Kategorien, die für ihn freigegeben sind. Vorstellbar wäre, dass die Anwender nur mit den Kategorieanwendungen arbeiten und der Administrator die Anwendung cardo.Puzzle nutzt, in der alle Kategorien zusammengefasst sind.

2. neue Kategorie einrichten

Eine Kategorie beschreibt ein neues Thema oder Aufgabengebiet. Hierzu ist es nötig, diese Kategorie im Programmcode zu definieren. Dies wird im Moment von der IDU übernommen. Sprechen Sie uns bitte an!

3. Kategorie registrieren

-> siehe IKX Hilfe

4. Datenklassen und Entitäten definieren

Die Einrichtung und Definition der Datenklassen und Entitäten wird über den Ikx-Klasseneditor gesteuert. Wurden Kategorien registriert finden Sie diese in der Rubrik Klassen unter dem Punkt cardo.Puzzle. Informationen über die Vorgehensweise lesen Sie hier!

kategorie_klasse.png

5. Rechte einrichten

-> IKX Rechte an Klassen und Entitäten einrichten

-> Rechte auf Datensatzebene einrichten

Hinweis: Wird eine Kategorie als Anwendung erstellt, so können Sie für diese Anwendung Rechte am Puzzleknoten und für die Datensätze vergeben! Dazu wechseln Sie in das Modul Anwendung, wählen ihre Anwendung aus, registrieren diese und wählen im Eigenschaftsmenü den Eintrag Puzzle Klassenstruktur. Die zuvergebenen Rechte sind: Read, Write, Delete und Admin.

 

6. Daten editieren

Sind alle Klassen und Entitäten eingerichtet, können Sie nun die dazugehörigen Daten eingeben oder bereits vorhandene editieren. Hierzu gehen Sie ins cardo-Auskunftssystem und wählen cardo.Puzzle aus den Anwendungen aus.

-> IKX-Dateneditor

Parameter einer als Anwendung registrierten cardo.Puzzle Kategorie

Puzzle-Anwendungen bringen einige Standardparameter und gegebenenfalls weitere anwendungsspezifische Parameter mit.

Beachten Sie, dass aus einer Kategorie eine Ebenen gemacht werden muss. --> weitere Informationen

Folgende Standardparameter stehen (in der Regel) zur Verfügung:

parameter.png

  • Ebene anschalten: Wenn zur PuzzleApp eine Ebene im Administrativen Baum registriert wurde, wird diese beim Start der Anwendung automatisch angeschaltet. (Ja/Nein)
  • Ebene für Selektion aktivieren: Wenn zur PuzzleApp eine Ebene im Administrativen Baum anwendung_aktiviert.pngregistriert wurde, wird diese beim Start der Anwendung automatisch für die Selektion aktiviert. Das vereinfacht Anwendern, welche sich in cardo nicht so gut auskennen den Umgang mit dem GIS-Viewer, da sie das Selektionswerkzeug direkt einsetzen können. (Ja/Nein)
  • Selektionsergebnis direkt übernehmen: Wenn zur PuzzleApp eine Ebene im Administrativen Baum registriert wurde, wird bei Selektion auf dieser Ebene das Selektionsergebnis direkt an die PuzzleApp weitergegeben und dort als Suchergebnis angezeigt. (Ja/Nein)

suche_selektion.png

Puzzle LayerTag

Jede Puzzle Anwendung bringt einen LayerTag mit. Damit dieser unter den LayerTags aufgelistet wird, muss gegebenenfalls die Konfiguration erneut eingelesen werden (Button an den Anwendungseinstellungen unter Verwaltung). Dieser LayerTag stellt die Verbindung zwischen Ebene und Anwendung her. Wird die Ebene neu registriert, wird dieser LayerTag automatisch an der Ebene eingetragen. Ist das bei Ihnen noch nicht der Fall, weil die Ebene mit einer älteren Version von cardo registriert wurde, übernehmen Sie den LayerTag bitte von Hand an die Ebene.

Der korrekt gesetzte LayerTag ist Voraussetzung für das automatische Anzeigen des Selektionsergebnisses.

-> LayerTags auflisten (unter dem Punkt Verwaltung)

Entitätsdaten im Dokumententitel

In der Puzzle-Dokumentenliste wird jedes Dokument mit seinem eigenen Titel und weiteren Metadaten zum Dokument ausgegeben. Diese Daten sind am Dokument direkt erfasst.

Im Laufe der Zeit wurde immer wieder angefordert, dass auch einzelne Werte aus den erfassten IKX-Daten mit in der Dokumentenliste am Dokument angezeigt werden soll. Daher wurde nun eine solche Möglichkeit eingefügt:

Hintergrund zur techn. Umsetzung: Ein direkter Zugriff auf die IKX-Daten würde die Anzeige der Dokumentenliste verlangsamen, da u. U. sehr kostspielige Abfragen ausgeführt werden müssten.
Daher werden schon beim Speichern des IKX-Datensatzes entsprechend markierte Entitäten in einer extra Spalte an der Dokumententabelle redundant gehalten.

Damit also ein IKX-Datenfeld im Dokumentenlisteneintrag angezeigt werden kann, müssen folgende Vorraussetzungen erfüllt sein:

  • Die Kategorie muss das Interface IPuzzleNodeAdditionalData implementieren (ein Interface ohne Member, welches aber für die Aktivierung dieses Features zwingend nötig ist, könnte zukünftig mal wegfallen)
  • Die anzuzeigende Entität muss das Verwendungsflag 'UseInDocumentTemplate' gesetzt bekommen (über Klasseneditor)
  • Es muss ein kategoriespezifisches Template für die Darstellung der Dokumenteinträge im Quelltext eingebunden werden, welches das neue Feld mit einbindet
  • Der anzuzeigende Ikx-Datensatz muss mindestens einmal gespeichert worden sein, nachdem das Verwendungsflag eingestellt wurde

Angedachte Verbesserungen für die Zukunft:

  • Das Standardtemplate könnte entsprechend markierte Entitäten gleich in einer generischen Variante mit anzeigen
  • An der Kategorie müsste es eine Funktion geben, um für alle Datensätze die Werte an die Dokumententabelle zu übernehmen (für die Initialisierung nach Änderung des Verwendungshinweises an einer Entität)
  • Ein Template für den Dokumenteneintrag müsste im Management Center hinterlegbar sein ohne dass es im Quelltext eingebunden sein muss
  • Das obige Interface könnte entfernt werden
Einrichten einer Kategorie als Kartenebene

Diese Schritte dienen dazu, eine cardo.Puzzle-Kategorie als Kartenebene zu registrieren. Wichtig ist dies für die Kategorien des Moduls cardo.Kommunal oder wenn Sie nach dem Aufrufen auf die Schaltfläche inkartezeigen.png im cardo.Puzzle die Information

Für die Kategorie 'Ereignisse' ist keine Karten-Ebene eingerichtet. Ein Anzeigen auf der Karte ist daher nicht möglich.
erhalten haben.

Vorgehensweise

  1. Dazu wechseln Sie ins Startcenter unter Dienste und wählen den Dienst ./services/puzzleServices2.asmx unter 2. SOAP-Dienst für Zugriff auf Puzzle.
  2. Auf der folgenden Seite wählen Sie die Methode CreateOrUpdateAdminLayerForCategory (Erstellt oder aktualisiert eine administrative Ebene für die übergebene Puzzle-Kategorie)
  3. und geben die categoryID an
  4. diese erhalten Sie aus der cardo.Puzzle-Anwendung im Management Center an der jeweiligen Kategorie im rechten oberen Infobereich, hier für das Beispiel HSKD Musikschule
    categoryid.png
  5. kategorieid.png
  6. Notieren Sie die StoreID ebenfalls.
  7. Klicken Sie auf Aufrufen.
    createorupdate.png
  8. Im administrativen Baum finden Sie nun ihre cardo.Puzzle-Kategorie als Kartenebene.
    kartenebeneimadminbaum.png
  9. Ihren Suchergebnissen im cardo.Puzzle (Auskunftssystem) wird nun auch das Symbol b_kartenanzeige.png vorangestellt, so dass Sie das Suchergebnis in der Karten ansehen können.
  10. Um die Puzzle-Ebene in der Karte zu sehen, müssen Sie eine Symbolik an der Ebene vergeben!

Hinweis: für die optimierte Abfrage ist der Parameter theSearchPath auszufüllen. Notieren Sie die entsprechenden Schemata (grün) und den folgenden Zusatz:

km_meta,public;set ENABLE_NESTLOOP to off; 

Implementierung einer Kategorie

Die Implementierung einer Kategorie erfolgt ausschließlich über das Erstellen einer .Net-Datenklasse. Üblicherweise wird dafür eine Anwendungsbibliothek erstellt.

cardo durchsucht bei der Registrierung von Kategorien alle erreichbaren Assemblies und sucht dort nach allen nicht abstrakten, öffentlichen Typen, die die Schnittstelle IPuzzleCategoryDefinition implementieren.

Die neu gefundenen Kategorien müssen für die Verwendung registriert werden. Bei der Registrierung wird die Definition in die cardo-Datenbank importiert und die Datenklasse der Kategorie wird angelegt. Die Datenfelder werden dabei durch die Implementierung bereitgestellt.

Der Benutzer kann nachträglich die Datendefinition mit dem Klasseneditor erweitern bzw. verändern. I.d.R. werden programmtechnisch nur die Datenfelder angegeben, die für das „Funktionieren“ der Kategorie mindestens notwendig sind.

Das Vorgehen wird durch den folgenden Beispielcode dargestellt:

using System.Collections.Generic;
using System.IO;
using IDU.cardo3.CoreModules.Puzzle.Category;
using IDU.KmiLib;
using IDU.KmiLib.Ikx;
 
namespace IDU.LKL.Puzzle.Categories
{
       public sealed class TrainingCourseCategory : LklPuzzleBase,
                                                      IPuzzleCategoryDefinition
       {
             /////////////////////////////////////////////////////////
             #region IPuzzleCategoryDefinition Members
             /////////////////////////////////////////////////////////
             ///<summary>
             /// Die Id der Kategorie, muss eindeutig sein
             ///</summary>
             public string CategoryId
             {
                    get { return "LKL_PZL_TC"; }
             }
             ///<summary>
             /// Die Id der Datenklasse, muss eindeutig sein.
             /// I.d.R. gleicht mit der CategoryId
             ///</summary>
             public string ClassId
             {
                    get { return "LKL_PZL_TC"; }
             }
             ///<summary>
             /// Der Anzeigetitel
             ///</summary>
             public string Title
             {
                    get { return "Beispielimplementierung"; }
             }
             ///<summary>
             /// Ausführliche Beschreibung im HTML Format
             /// Für Anzeigezwecke
             ///</summary>
             ///<param name="targetStream"></param>
             ///<returns></returns>
             public bool GetLongHtmlDescription(System.IO.Stream targetStream)
             {
                    using (StreamWriter wrt = new StreamWriter(targetStream))
                    {
                           wrt.Write(@"<p>
                                        Diese Kategorie beschreibt das
                                        Vorgehen bei der Erstellung.
                                        </p>");
                           wrt.Flush();
                    }
                    //true, wir haben etwas
                    //in den Stream geschrieben
                    return true;
             }
             ///<summary>
             /// Liste der privaten Klassen die verwendet werden sollen.
             /// Wird vor GetClassEntitys aufgerufen.
             ///</summary>
             ///<param name="kmiCtx"></param>
             ///<returns></returns>
             public IList<MDClass> GetPrivateSubClasses(IIKXContext kmiCtx)
             {
                    //In diesem Bsp. sind keine
                    //privaten Subklassen vorhanden
                    return new MDClass[0];
             }
             ///<summary>
             /// Die Klassendefinition wird bei der
             /// Registrierung der Kategorie abgerufen.
             ///</summary>
             ///<param name="kmiCtx"></param>
             ///<returns></returns>
             public IEnumerable<MDClassEntity> GetClassEntitys(IIKXContext kmiCtx)
             {
                    List<MDClassEntity> result = new List<MDClassEntity>();
                    ///////////////////////////////////////////////////               
                    #region Daten zum Objekt
                    ///////////////////////////////////////////////////               
                    //Preis Zelt
                    result.Add(new IDU.KmiLib.Ikx.MDClassEntity(kmiCtx)
                    {
                           //eindeutiger Name des Datenfeldes
                           ClassEntityId = "DESCRIPTION",
                           //Datentype
                           BasicEnumType = MDSimpleTypes.CLob,
                           //Hier könnte eine Spezialisierung
                           //(Datenfeldererweiterung) angegeben werden
                           //SubTypeType = typeof(IDU.cardo3.CoreModules.Ikx.DataExtension.MultiLangTextExtension),
                           //oder eine MimeType
                           //SubType="text/html",                        
                           //Anzeigetitel
                           Label = "Beschreibung",
                           //Ausführliche Beschreibung
                           Description = "Geben Sie hier eine Beschreibung an.",
                           //Häufigkeit dieses Datenfeldes
                           MinOccurrance = 0,
                           MaxOccurrance = 1,
                           //Vererbung aktivieren...?
                           InheritMode = MDInheritMode.None,
                           //Hinweise für die Anzeige im Dateneditor
                           SortHint = "000",
                           GroupName = "Allgemein",
                           GroupSort = "000",
                           //Verwendungshinweis(e)
                           UseHint = MDEntityUsageHint.IsSearchable,
                           //spezielle Bedeutung
                           EntityMeaning = MDEntityMeanings.FullTextSearchContent
                    });
                    ///////////////////////////////////////////////////
                    #endregion
                    ///////////////////////////////////////////////////
                    return result;
             }
             ///<summary>
             /// Hier kann ein Xml Node zurückgeben werden,
             /// der das Kartensymbol für diese Kategory beschreibt.
             /// Erwartet wird null oder eine Symboldefinition aus
             /// dem Namespace http://schemas.webs.idu.de/iwan/symbology       
             ///</summary>
             ///<returns></returns>
             public System.Xml.XmlNode TryGetCategoryLayerSymbolNode()
             {
                    return null;
             }
             ///<summary>
             /// Verhalten beim Aktualisieren der Kategoriedefinition
             ///</summary>
             public UpdateClassDefBehavior UpdateBehavior
             {
                    get
                    {
                           return UpdateClassDefBehavior.CombineSearchAndProjectionUseHint;
                    }
             }
             /////////////////////////////////////////////////////////
             #endregion
             /////////////////////////////////////////////////////////
       }
}
 
Erweiterbarkeit der Puzzle Anwendung

Die Standardfunktionen des Systems sind für allgemeine Datenerfassung, Anzeige und Recherche ausgelegt. Oft ist allerdings die Implementierung eines fachspezifischen Verhaltens erforderlich. Für diese Erweiterungen steht eine Menge von Schnittstellen zur Verfügung, mit denen dieses gewünschte Verhalten implementiert werden kann.
Alle genannten Schnittstellen sind optional und müssen nicht implementiert werden.

Generell gibt es folgende Arten von Erweiterungsmöglichkeiten:

Kategorie unabhängig

  • Definition von Erweiterungen eines bestehenden Datentyps für Datenfelder,
    Schnittstelle: IIkxDataFieldExtensionValidationResult oder IMimeTypeHandler
    Bsp.: Implementierung für ein mehrsprachiges Textfeld.
  • Definition von speziellen Suchhandler,
    Schnittstelle: ISpecialPuzzleQueryHandler und Attribut PuzzleQueryMethodAttribute.
    Bsp.: Suche nach Postleitzahl und Umkreis.

Kategorie spezifisch 

  • Definition von „Aktionen“ in der Oberfläche der Hauptanwendung Puzzle,
    Schnittstelle: IPuzzleSupportNodeOperation
    Bsp.: Zeige Aktion „Liste aller heute geänderten Dokumente“ in der Oberfläche an
  • Umschreiben von Suchanfragen,
    Schnittstelle: IPuzzleExtendedQuery.
    Bsp.: Beim Abrufen von Daten über den anonymen Benutzeraccount ein zusätzliches Filterkriterium erzwingen.
  • Beeinflussen der Einstellungen beim Anlegen einer Geodatenebene,
    Schnittstelle: IPuzzleExtendedAdminTreeLayer
    Bsp.: Modifizieren der automatisch erstellten Abfrage, Voreinstellen von Ebeneneigenschaften, z. B. Initiale Ausdehnung oder Einstellen der Symbolik.
  • Einfügen zusätzlicher Daten in das Ausgabedokument,
    Schnittstelle: IPuzzleIkxData.
    Bsp.: Die Klasse definiert ein Datenfeld, wo der Name eines Ordners aus dem Dateisystem angegeben ist. Im Ausgabedokument wird die Anzahl der Dateien im Ordner angezeigt.
  • Integration in den Prozess des Anlegens, Löschen oder Ändern von Daten,
    Schnittstelle: IPuzzleCategoryDataChangeHandler.
    Bsp.: Eingabevalidierung vor dem Speichern, E-Mail-Versand nachdem ein neues Dokument angelegt wurde, Verhindern des Löschens von Dokumenten etc.
  • Bereitstellen von Einstellungen (für den Administrator),
    Schnittstelle: IPuzzleCategoryWithRuntimeConfiguration.
    Bsp.: Einstellen der E-Mail-Adresse, die bei einer Dokumentänderung versendet wird.
Recherche

Für die Suche in den Datensätzen steht eine leistungsfähige Beschreibungssprache zur Verfügung. Dabei handelt es sich um einen XML-Dialekt. Die genaue Syntax wird durch das ein XML-Schema vorgegeben.

Die Schemadatei finden Sie unter:
http://webs.idu.de/xsdschemas/Cardo/1.0.0/PuzzleQuery.xsd
Die Suche kann dabei sehr komplex definiert werden. Standardmäßig sind alle gängigen Vergleichsoperatoren für die möglichen Typen der Datenfelder einer Klasse definiert (gleich, ungleich, größer, kleiner etc.).

Zudem können eigene sogenannte Such-Handler in einer .NET Sprache implementiert werden. (z. B. eine Suche nach Postleitzahlgebieten usw.).

Hier ein Beispiel für eine Suchdefinition:

<?xmlversion='1.0'encoding='utf-8'?>
<Queryxmlns='http://schemas.webs.idu.de/cardo3/Puzzle/Query'>
   <PuzzleCategoryId>KATEGORIE_ID</PuzzleCategoryId>
   <And>
      <SingleComparison>
          <EntityPath>/*.FIRMA_NAME</EntityPath>
          <Is>Like</Is>
          <Value>%rohr%</Value>
      </SingleComparison>
      <SingleComparison>
          <EntityPath>/*.FIRMA_BRANCHE</EntityPath>
          <Is>Like</Is>
          <Value>Matallurgie</Value>
          <Value>Gießerei</Value>
      </SingleComparison>
   </And>
</Query>
Anpassung der Detailansichten in der cardo.Puzzle Menüleiste

Ausgabeformatierung der Dokumentinhalte

Die Daten eines Dokumentes liegen intern als XML-Dokument vor und können über eine Transformation (definiert über ein XSLT-Stylesheet) in ein aufbereitetes Dokument für die Ansicht (HTML oder PDF) umgewandelt werden.

Grundsätzlich gibt es immer eine generische Standardansicht, welche als XSLT-Stylesheet im System hinterlegt ist. Diese gibt alle Datenfelder des Dokumentes aus und berücksichtigt alle bekannten Datentypen (z. B. Bildvorschau für Binäre Daten, HTTP-Linkumsetzungen usw.). Die Transformationsdatei hat den Namen generic.xslt.

Die Standardansicht kann durch eine kategoriespezifische Ansicht ersetzt werden, indem im System eine XSLT-Datei mit den Namen der ID der für die Kategorie definierten Klasse und der Endung '.xslt' hinterlegt wird. Nur wenn keine Datei mit diesem Namen vorhanden ist, wird die oben erwähnte generische Transformationsdatei verwendet.

modus.png

betrachten - Standardansicht (kategoriespezifisch oder generic)
betrachten(xml) - internes XML (nur mit Superuser-Rechten sichtbar)
bearbeiten - IKX-Editor

Das System sucht die XSLT-Dateien in folgenden Ordnern auf dem cardo-Server (in dieser Reihenfolge):

  • {Projekt-Ordner}\ikxXml\Puzzle\2HtmlXslt\
  • {cardoInstallDir}\coreWeb3\IIS\net3\Ikx\DefaultXML\Puzzle\2HtmlXslt\
Hinweis: Änderungen an Dateien im Installationspfad werden bei Updates überschrieben! Vom Kunden vorgenommene Änderungen sollten also IMMER im Projektordner erfolgen, damit es zu keinem Datenverlust kommt.

Ausgabeformat PDF

Es können auch PDF-Dokumente als Datenansicht generiert werden. Die entsprechenden Transformationsdateien müssen in folgende Verzeichnisse abgelegt werden:

  • {Projekt-Ordner}\ikxXml\Puzzle\2PdfXslt\
  • {cardoInstallDir}\coreWeb3\IIS\net3\Ikx\DefaultXML\Puzzle\2PdfXslt\
Hinweis: Beachten Sie, dass PDF-Ansichten immer in einem kategoriespezifischen Unterverzeichnis in den oben angegebenen Verzeichnissen erwartet werden (siehe nächsten Abschnitt).

 

-> weiterführende Information zur PDF Transformation

Verschiedene Datenansichten anbieten

Seit Version 3.7.3 ist es möglich, mehr als eine Datenansicht für eine Puzzle-Kategorie zur Verfügung zu stellen. Dazu können beliebig viele XSLT-Transformationsdateien in ein nach dem Klassennamen benanntes Unterverzeichnis gelegt werden. Puzzle prüft beim Start zu jeder Kategorie, ob zusätzliche Datenansichten verfügbar sind und bietet diese dann zur Auswahl an:

VerschiedeneAnsichtenMenu.png

Im obigen Beispiel sind 'Übersichtsblatt', 'Formblatt zur Weitergabe' und 'Detailansicht' solche zugeschnittenen Ansichten und der entsprechende Unterordner unter dem Projektverzeichnis sieht für dieses Beispiel so aus:

MultiViewFolderAndFiles.png

Dabei ist GENPAN_CLASS in diesem Beispiel der IKX-Klassenname zur Kategorie und es werden alle Transformationsdateien aus diesem Verzeichnis anhand des Dateinamens in das obige Menü eingefügt.

Die Ansicht 'Zusammenfassung' ist ein PDF-Dokument. Die Vorlage muss  entsprechend in diesem Beispiel im Verzeichnis 2PdfXslt liegen:

MultiViewPdfFolderAndFiles.png

Hinweis: Sobald eine kategoriespezifische Vorlage im Verzeichnis 2HtmlXslt/(KategorieKlassenName) oder 2PdfXslt/(KategorieKlassenName) gefunden wird, wird keine Standardansicht (Kategoriename oder generic) mehr zur Auswahl angeboten.

Einbindung der Standardansicht bei Verwendung von kategoriespezifischen Ordnern

Um bei Verwendung kategoriespezifischer Unterverzeichnisse auch die Standardansicht (hier im Beispiel die Html-Ansicht) im Auswahlmenü angeboten zu bekommen, können Sie eine Transformationsdatei mit einem entsprechenden Verweis auf die Standardansicht im Unterverzeichnis 2HtmlXslt\{IhrKategorieKlassenName} anlegen. Bei obigem Beispiel würde also eine Datei 2HtmlXslt\GENPAN_CLASS\betrachten.xslt den Menüeintrag 'betrachten' wieder hinzufügen. Diese Datei muss folgenden Inhalt haben: 

<?xmlversion="1.0"encoding="utf-8"?>
<xsl:stylesheetversion="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- hier Transformation für generische Darstellung einbinden -->
    <xsl:includehref="..\..\..\..\..\coreWeb3\IIS\net3\Ikx\DefaultXML\Puzzle\2HtmlXslt\Generic.xslt"/>
</xsl:stylesheet>

 

Datenaggregation

Eine weitere Möglichkeit besteht im Abrufen eines einfachen Berichts über aggregierte Daten aus einer Kategorie. Die Erstellung eines Berichts erfolgt über eine Definition von Aggregaten und der Definition der Ausgabetransformation. Optional kann ein Datenfilter mit übergeben werden.

Die Definition ist in der Schemadatei:
http://webs.idu.de/xsdschemas/Cardo/1.0.0/PuzzleQuery.xsd
zu finden.

Beispiel für einen Bericht über die Anzahl der Datensätze, Ausgabe als HTML:

<?xmlversion="1.0"encoding="utf-8"?>
<PuzzleReportxmlns="http://schemas.webs.idu.de/cardo3/Puzzle/Query"
                   includeDebugInfo="false">
 <PuzzleCategoryId>KATEGORIE_ID</PuzzleCategoryId>
 <Reports>
   <ReportreportId="Alle">
     <ReportTitle>Bericht über alles</ReportTitle>
     <CountAllcolumId="AnzahlGesamt">
       <Format>{0:#,0}</Format>
       <FormatOnNull>0</FormatOnNull>
     </CountAll>
   </Report>
   <Filter>
     <NullComparision/>
   </Filter>
 </Reports>
 <pzl:ReportOutputxmlns:pzl="http://schemas.webs.idu.de/cardo3/Puzzle/Query">
     <h1>Beispiel</h1>    
     <b>Gesamt: </b>
       <pzl:ReportValueOf
           reportId="Alle"
           columId="AnzahlGesamt"
           target="TextValue"/>
 </pzl:ReportOutput>
</PuzzleReport>
 
Relationen - Einrichtung von Beziehungen
  • Beziehungen zwischen Dokumenten verschiedener Kategorien können mit "Relations" definiert werden.
  • Dabei wird ein neuer Klassentyp definiert, welcher die Beziehungen zwischen den Dokumenten beschreibt (z. B.: Radweg hat 1...n Netzknoten).
  • Die Zuordnung der Relationen erfolgt in der Oberfläche des neuen Editors V2.
  • Für interne Implementierungen stehen dabei der Puzzle-Philosophie folgend neue Interfaces zur Verfügung, z. B. um auf das Ändern von Relationen zu reagieren. Ebenso wurde in der Version 3.8 das XML für Suchabfragen um die Recherche nach Beziehungen erweitert.
Zugriff auf Datensätze einer Puzzle Anwendung

Auf die Datensätze kann auch in Tabellenform zugegriffen werden. Besondere Bedeutung hat dies beim Einbinden der erfassten Daten als Geodatenebene (Einrichten einer Kartenebene) und bei der Generierung der Ergebnisliste aus einer Suchanfrage.

Das System generiert dazu eine Abfrage mit allen Feldern der Datenklasse der jeweiligen Kategorie die über das Attribut „inTableProjection“ verfügen. (Verwaltungsdaten/Verwendungsflags -> inTableProjection) Hier ist zu beachten, dass möglichst keine Datenfelder ausgewählt werden sollten, die eine Kardinalität > 1 haben.

Für die Erstellung oder Aktualisierung einer administrativen Ebene aus den Daten einer Kategorie steht die Methode CreateOrUpdateAdminLayerForCategory im Dienst puzzleServices2.asmx bereit.

Events des Interface IPuzzleCategoryNodeChangeHandler

Die Events des Interfaces wurden um "BeforeRelocateNode" und "AfterRelocateNode" erweitert. Damit kann auf Änderungen der Struktur eingegangen werden, z. B. wenn ein Dokument in einen anderen Ordner verschoben wird. Zusätzlich werden die Ereignisse "AfterCopyNode", "BeforeInsertNodeForCopyOperation" und "AfterInsertNodeForCopyOpertion" ausgelöst, womit auf Kopiervorgänge reagiert werden kann.

IPuzzleCategoryDataChangeHandler2

Dieser Handler stellt eine verbesserte Schnittstelle für das Reagieren auf Speicher-Aktionen zur Verfügung. Der Zugriff auf die Dokumentdaten wurde hier deutlich vereinfacht.
Neue Anwendungen sollten dieses Interface anstatt IPuzzleCategoryDataChangeHandler verwenden.

IPuzzleSpecialPdfOutputHandler

Dadurch können bei der PDF-Erstellung weitere Optionen genutzt werden. Z. B. können Seitenzahlen in die Fußzeile geschrieben werden oder Dokumentanhänge in das PDF eingebettet werden.

Technische Informationen am Puzzle Dokument

Bitte beachten Sie, die technischen Informationen (Interne Daten) am Puzzle Dokument sind nur vom Systemadministrator lesbar.

technischenDaten_puzzle.png

Kategorie über puzzleServices2 anlegen

Kategorien können auch selber angelegt werden. Beachten Sie, dass es sich hierbei um rechte einfache Strukturen handeln muss, spezielle Abfragen oder Filter oder Einstellungen müssen von uns für die neu Kategorie entwickelt werden.

Nutzen Sie für das Erstellen folgenden Service:

...services/puzzleServices2.asmx

Darin gibt es die Funktion CreateAdHocCategory.

Beachten Sie, dass die IDs immer in GROSSSCHREIBWEISE notiert werden müssen!

Export ins Excel

Alle Entitäten, die mit dem Flag InTableProjection definiert wurden, werden im Excelexport ausgegeben.

Bitte beachten Sie, dass dieser Flag nicht für Nachschlagefelder eingerichtet werden darf. Diese sind vom Excelexport auszuschließen.