cardo::com

Beachten Sie die unterschiedlichen Ausführungen von cardo3 und cardo4!

cardo 4

Die Entwicklerdokumentation finden Sie hier.

COM-Schnittstelle analog cardo3 zum Aufrufen von cardo mit vordefinierten Anwendungen und Aktionen.

Beispiel: Selektiert den Layer L34 und markiert die Objekte 1 und 2 aus der Spalte ID

http://myServer/net4/icom.ashx?action=select&layer=L34&field=id&value=1|2

 

Beispiel: Selektiert den Layer L34 und markiert die Objekte 1 und 2 aus der Spalte ID und startet die Anwendung GSS

http://myServer/net4/icom.ashx?action=select&layer=L34&field=id&value=1|2&action=startApp&app=IduIT.cardo.Core.Applications.Gss.GssApplication

 

Beispiel: Flurstück (Gemarkung, Zähler und Nenner) mittels cardo4.com aufrufen und angezeigt bekommen

http://myCardo/net4/icom.ashx?action=select&layer=L17&field=gemarkung_key|zaehler|nenner&value=144167|64|9&preventAutoClose=true

Lösung, wenn Nenner NULL Werte enthält, da ein Null – Wert in diesem Aufruf nicht verglichen werden kann.

Zusammensetzung der ALKNR, wenn diese nicht verfügbar ist: aus der Gemarkungsnummer, dann eine ALKNR nach den Regeln zusammensetzen und dann den Link nur auf die ALKNR – Selektion reduzieren.

(Oder wenn das nicht funktioniert, aus den verfügbaren Angaben einen Selektionsstring zusammensetzen und in der Ebene, wie zum Beispiel die Flurstücke, ebenfalls eine Spalte anfügen für den Selektionsstring. Dann nach dem selben Prinzip eine Spalte Selektionsstring anhängen.

Der Link würde sich dann auf die Spalte mit dem Selektionsstring reduzieren.

z.B. http://mycardo/net4/icom.ashx?action=select&layer=L17&field=selektionsstring&value=144167-64-9&preventAutoClose=true

Parameterisierter Aufruf von cardo aus anderen (Web-) Anwendungen

Parameter können als GET oder POST Argumente an cardo.com.asp übergeben werden. (Also Aufruf per Link oder Formular) 

Folgende Parameter sind verfügbar:

Selektion von Objekten:

  • SELLAYER interne ID der Ebene aus der ein Objekt selektiert werden soll (z.B. L34) oder Ebenen-Tag oder durch "|" getrennte Liste von EbenenIds oder Tags (mischen ist erlaubt)
  • SELFIELD Feldname oder durch "|" getrennte Liste von Feldnamen über die die Selektion ausgeführt werden soll
  • SELVALUE Selektionswert oder durch "|" getrennte Liste von Werten, die mit den Selektionsfeldern korrespondieren.
  • SELJOINTYPE Verknüpfungstyp, wenn mehrere Felder angesprochen werden; mögliche Werte: AND oder OR; Standard ist AND
  • SELOFFSET Abstand zum Kartenrand in Karteneinheiten; Standard ist 100
  • SELMODE Art der Selektion;
    mögliche Werte: SHOW (Objekt zentrieren und markiern) oder WINDOW (wie SHOW, plus Anzeige im Selektionsfenster); Standard ist SHOW
  • SELDONTFORCELAYERVIS Selektionsebene nicht zusätzlich anschalten;
    Falls die Selektionsebene nicht schon standardmäßig zugeschalten ist, kann man mit dieser Option verhindern, dass sie beim Selektieren aktiviert wird (dazu TRUE übergeben)
  • SELNOZOOM Kein Zoom auf die Selektoin;
    Falls man nicht zum selektierten Objekt zoomen will, kann man hier TRUE übergeben. Dann kann zusätzich ein Extent übergeben werden, auf den gezoomt werden soll.

Die Angaben SELLAYER, SELFIELD und SELVALUE müssen ordnungsgemäß gesetzt sein, damit diese Funktion ausgeführt wird. Die übrigen Angaben sind optional.

Wenn mehrere Objekte selektiert werden sollen, so kann darauf verzichtet werden, immer wieder den selben Feldnamen zu wiederholen. Es reicht dann einen Feldnamen und eine "|" getrennte Liste von Werten zu übergeben. In diesem Fall muss aber der SELJOINTYPE explizit auf OR gesetzt werden, um das gewünschte Ergebnis zu erhalten.

Zoom auf bestimmten Ausschnitt:
(wird ignoriert, wenn eine Selektion stattfindet - außer SELNOZOOM ist TRUE)

  • EXTENT Ausdehung in der Form xmin|ymin|xmax|ymax

[nur cardo3] Gespeicherte Karte laden:

  • MYMAP ID einer gespeicherten Karte (aus "Meine Karten"). Dieses sollte öffentlich freigegeben sein, damit alle Nutzer Zugriff haben. Die ID der Karte wird als Tooltip angezeigt, wenn man die Maus im Dialog "Meine Karten" über den interessierenden Eintrag bewegt.
  • MYMAP_VIS (optional, Standardwert:REPLACE) Gibt an, wie die Sichtbarkeitseinstellungen der gespeicherten Karte mit der Startkarte bzw. der gerade angezeigen Karte kombiniert werden sollen. Mögliche Werte sind:
    NONE - Einstellungen der gespeicherten Karte werden nicht beachtet.
    REPLACE - Die sichtbaren Ebenen der gespeicherten Karte werden exklusiv angeschaltet.
    MERGE - Bereits sichbare Ebenen der aktuellen Ansicht bleiben erhalten und die Ebenen der gespeicherten Karte werden hinzugeschaltet.
  • MYMAP_SEL (optional, Standardwert:REPLACE) Gibt an, wie die Einstellungen der für die Selektion aktiven Ebenen der gespeicherten Karte mit der Startkarte bzw. der gerade angezeigen Karte kombiniert werden sollen. Mögliche Werte sind:
    NONE - Einstellungen der gespeicherten Karte werden nicht beachtet.
    REPLACE - Die aktiven Ebenen der gespeicherten Karte werden exklusiv aktiviert.
    MERGE - Bereits aktive Ebenen der aktuellen Ansicht bleiben erhalten und die Ebenen der gespeicherten Karte werden hinzugeschaltet.
  • MYMAP_SORT (optional, Standardwert:FALSE) Gibt an, ob die Ebenenreihenfolge entsprechend der gespeicherten Karte gesetzt werden soll oder nicht. Mögliche Werte sind:
    TRUE - Ebenenreihenfolge wird gesetzt.
    FALSE - Ebenenreihenfolge wird nicht gesetzt.
  • MYMAP_EXT (optional, Standardwert:TRUE) Gibt an, ob der Kartenausschnitt der gespeicherten Karte gesetzt werden soll oder nicht. Mögliche Werte sind:
    TRUE - Kartenausschnitt wird gesetzt.
    FALSE - Kartenausschnitt wird nicht gesetzt.

Auswahl eines bestimmten Ebenenbaumes, falls cardo noch nicht gestartet ist:
(wird nur ausgewertet, wenn PKGID und PROJECT nicht angegeben sind oder zu keinem verwertbaren Ergebnis (d.h. Ebenenbaum) führten)

  • CRTID Wenn cardo noch nicht gestartet ist, kann mit diesem Parameter ein bestimmter Ebenenbaum gewählt werden. (Die ID ist in der Admin-Konsole auf der Eigenschaftenseite eines Ebenenbaumes zu finden)

Starten einer Anwendung:

  • APPLICATION erwartet wird der Anwendungsname (Ordnername) (eine "|" getrennte Liste mehrerer Anwendungen ist möglich).
    Argumente können in folgender Form übergeben werden:
    Anwendungsname$Argumentname

    Beispiel:
    http://localhost/cardo.com.asp?APPLICATION=ALB&ALB$ALKNR=1031

    Die Startseite der Anwendung erhält in diesem Fall nur noch das QueryString-Argument ALKNR (ohne ALB$).

    Selektionsergebnis berücksichtigen: Soll beim Starten der Anwendung das aktuell vorliegende Selektionsergebnis mit übergeben werden, so ist das Argument Anwendungsname$SELOBJECTLAYERS anzugeben. Als Wert wird eine "|"-getrennte Liste von Ebenen oder Tags erwartet, die die Ebenen spezifiziert, deren Selektionsergebnis die Anwendung in der Lage ist zu verwenden. Die erste Ebene, zu der ein Selektionsergebnis gefunden wird, wird verwendet. (Dies entspricht dem Klick auf den Anwendungs-Button im Kopf der Selektionstabelle einer Ebene.)

    !! Die Argumentnamen kollidieren mit denen der Prozessoren, d.h. eine Anwendung entweder in APPLICATION oder in PROCESSOR verwenden oder die Argumente für Anwendungen und Anwendungsmodule grundsätzlich unterschiedlich bennenen, so dass sie koexistieren können.

Starten einer Anwendung und Übergabe der Parameter als Selektionsobjekt:

  • SEL_APP erwartet wird der Anwendungsname (Ordnername) (eine "|" getrennte Liste mehrerer Anwendungen ist möglich) Argumente können in folgender Form übergeben werden:
    Anwendungsname$Argumentname z.B.: ALB$ALKNR=0815

    Die Anwendung bekommt in diesem Fall die Argumente nicht per QueryString übergeben, sondern kann darauf clientseitig mit Hilfe des Selektionsobjektes zugreifen. 

    !! Die Argumentnamen kollidieren mit denen der Prozessoren, d.h. eine Anwendung entweder in APPLICATION oder in PROCESSOR verwenden oder die Argumente für Anwendungen und Anwendungsmodule grundsätzlich unterschiedlich bennenen, so dass sie koexistieren können.

Ausführen eines Anwendungsmodules:

  • POSTPROCESSOR erwartet wird der Anwendungsname (Ordnername) (eine "|" getrennte Liste mehrerer Prozessoren ist möglich) (im entsprechenden Anwendungsverzeichnis muss eine Datei invokeProcessor.asp existieren, die beliebige Aktionen ausführen kann, jedoch unbedingt das cardoCom Fortsetzungsereignis auslösen muss - siehe Beispiel!)
    Argumente können in folgender Form übergeben werden:

    Anwendungsname$Argumentname z.B.: SHOW_PLAN_TIF$ID=2

    !! Die Argumentnamen kollidieren mit denen der Application, d.h. eine Anwendung entweder in APPLICATION oder in PROCESSOR verwenden oder die Argumente für Anwendungen und Anwendungsmodule grundsätzlich unterschiedlich bennenen, so dass sie koexistieren können.

    Das Anwendungsmodul erhält in diesem Fall nur noch das Argument ID (ohne SHOW_PLAN_TIF$) per POST.
    Immer übergeben wird der Name des Continue-Events, welches unbedingt zum Abschluss ausgelöst werden muss. Der abzufragende Parameter heißt "expectedEvent".
    	//---------------------------------------------------------
    	var expectedEvent=Request.Form("expectedEvent");
    	%>
    		<script>
    			function continueCardoCom()
    			{
    				var expectedEvent="<%=expectedEvent%>";
    				top.cardoEvents.fireEvent(expectedEvent, null);
    			}
    		</script>
    	<%
    	//-----------------------------------------------------------
    	 

Weitere Argumente:

  • PREVENT_AUTO_CLOSE "true" oder "1" verhindert das automatische Schließen des Zwischenfensters beim ersten Aufruf von cardo, damit der Nutzer nicht die Meldung "Die angezeigte Webseite versucht das Fenster zu schließen ..." erhält. Stattdessen sollte das Fenster dann per "oIE.Quit()" o.ä. geschlossen werden.
  • MENU_HIDDEN "true" oder "1" minimiert die Menüleiste beim ersten Aufruf von cardo.
Beispiele
<a href="http://cardoServer/cardo.com.asp?CRTID=1" target="CARDO_COM_FRAME">cardo starten</a>

----- oder -----

<form method="POST" action="http://cardoServer/cardo.com.asp?CRTID=1" target="CARDO_COM_FRAME">
    <input name="CRTID" value="1" />
</form>
Beispielimplementierung in Visual Basic

Dieses Beispiel zeigt den Aufruf aus einer Desktopanwendung. Zum Absetzen der zusammengestellten URL wird das Internet Explorer Steuerungselement verwendet. Der vorliegende Mechanismus kann in jede Sprache portiert werden, die COM Objekte ertellen und nutzen kann.

 

Option Explicit

 

'Beispiel GIS-Selektion in cardo

Public Sub CardoGisSelect(selValue As String, selOffset As Integer, showTable As Boolean)

 

    Dim cardoComBaseUrl As String  '="http://cardoServer/cardo.com.asp?PREVENT_AUTO_CLOSE=true&" 'BasisUrl für cardo.com

    Dim cardoTreeId As String  '="1" 'in cardo kann es mehrere Ebenenbäume zur Auswahl geben (Angabe ist optional)

    Dim selLayer As String '="L96" 'Ebenen-ID oder Aliasname der Ebene, in der selektiert werden soll

    Dim selField As String ' ="ALKNR" 'Spalte in der selektiert werden soll

 

    'cardo.com BasisUrl

    'Sollte in der Anwendung auf geeignete Weise konfiguriert werden können und auf ? bzw. & enden.

    'Außerdem sollte die BasisUrl alle Parameter enthalten, die nicht von der

    'Anwenung dynamisch belegt werden. Damit können bei Bedarf weitere Parameter problemlos hinzugefügt werden.

    '(Das PREVENT_AUTO_CLOSE ist hier besonders wichtig)

    cardoComBaseUrl = "http://cardo3.idu.de/cardo.com.asp?PREVENT_AUTO_CLOSE=true&"

 

    cardoTreeId = "1"

    selLayer = "L96"

    selField = "ALKNR"

 

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    'weitere Parameter (die in diesem Beispiel aus den Funktionsargumenten kommen):

    'selValue ' ="143072000000002300002";  'zu recherchierender Wert

    '        ' selValue kann auch eine Liste von Werten sein, die durch | getrennt sind (selValue="123|124|125|126")

    'selOffset'="100" '100m Abstand zum Kartenrand rings um das selektierte Objekt

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

    '==================================================================================

    ' Jetzt das Wesentliche ...

    '==================================================================================

 

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ' URL zusammenstellen und absetzen

    '    Zum Ansteuern von cardo wird das IE COM Objekt genutzt.

    '    (http://msdn2.microsoft.com/en-us/library/Aa752127.aspx)

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Dim url As String

    url = cardoComBaseUrl & "CRTID=" & cardoTreeId & "&" & _

                            "SELLAYER=" & selLayer & "&" & _

                            "SELFIELD=" & selField & "&" & _

                            "SELVALUE=" & selValue & "&" & _

                            "SELOFFSET=" & CStr(selOffset) & "&" & _

                            "SELJOINTYPE=OR&" & _

                            IIf(showTable, "SELMODE=WINDOW", "SELMODE=SHOW") & "&"

    'Debug.Print url

 

    Dim oIE As Object

    Set oIE = CreateObject("InternetExplorer.Application")

    oIE.Visible = False 'nicht sichtbar - diese IE Instanz ist nur temporär

 

    oIE.navigate url 'Request absetzen

 

    While (oIE.Busy)

        'warten

    Wend

   

    Sleep 1000 'Vorsichtshalber noch eine Sekunde warten, bis die IE Instanz geschlossen wird   

 

    oIE.Quit 'die versteckte IE Instanz wieder schließen

            '(spielt zusammen mit PREVENT_AUTO_CLOSE=true, denn würde versucht das Fenster per JavaScript aus dem

            ' Browser heraus zu schließen, gäbe es eine lästige Nachfrage, da das Fenster von extern geöffnet wurde)

 

    Set oIE = Nothing

 

End Sub

 

'~~~~~~~~~~~~~~~~

' Testfunktionen

'~~~~~~~~~~~~~~~~

 

Sub test1()

    Call CardoGisSelect("142260000000006900002", 25, False)

End Sub

 

Sub test2()

    Call CardoGisSelect("142260000000000100013|142260000000000100011|142260000000000100007|142260000000001k00000|142260000000001c00000", 50, False) ' Anzeige mehrerer Objekte gleichzeitig

End Sub

 

Sub test3()

    Call CardoGisSelect("142480000000007000005", 25, True) 'Selektionstabelle zur Ansicht der Sachdaten zum Objekt mit anzeigen

End Sub

 

Direkt (von Drittanwendungen) nutzbare WSH Scripte

Falls Sie den im vorhergehenden Abschnitt beschriebenen Mechanismus nicht implementieren können oder möchten, dann können Sie ein WSH Script nutzen, welches die aufzurufende URL als einzigen Parameter erhält. [Download] Im Archiv ist eine VBScript- und eine JScript-Variante. Wählen Sie eine der beiden Dateien aus. Die Dateien sollen lediglich als weitere Beispiele dienen. 

Praktische Umsetzung:

Wir empfehlen, dass Sie in Ihrer Anwendungskonfiguration einen Eintrag "cardoBasisUrl" vorsehen, wo der Nutzer die URL zu seinem cardo-Server inklusive einiger Steuerungsparameter eintragen kann.

Beispiel einer Basis-URL:

http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&

An diese URL hängen Sie dann noch die konkrenten Informationen an, die den Sprung zu dem oder den Zielobjekt(en) ermöglicht.

etwa eine oder mehrere ALK-Nummer(n), um das Beispiel fortzuführen:

SELVALUE=142260000000000100013
oder
SELVALUE=142260000000000100013|142260000000000100011

Der komplette Aufruf könnte dann wie folgt aussehen (VB):

Set Shell = CreateObject("WScript.Shell")
Shell.Execute "startCardo.js ""http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&SELVALUE=142260000000000100013"""

oder direkt zum Testen auf der Konsole:

startCardo.js "http://cardo3.idu.de/cardo.com.asp?CRTID=1&SELLAYER=L96&SELFIELD=ALKNR&SELOFFSET=50&SELJOINTYPE=OR&PREVENT_AUTO_CLOSE=true&SELVALUE=142260000000000100013"

 

Starten von cardo per Verknüpfung vom Desktop

cardo::Com kann auch in Verbindung mit einem kleinen Script [Download] dazu genutzt werden, cardo vom Desktop des Nutzers zu starten. Laden Sie dazu das Script herunter und öffnen sie die js-Datei mit einem Texteditor. Nach dem einleitenden Kommentar finden sie in Zeile 15 die Anweisung:

CARDO_URL=""; // <--- HIER EINTRAGEN (...)

Tragen Sie dort zwischen den doppelten Anführungszeichen die URL zu Ihrem cardo-Server in der cardo::Com-Form ein (einige Beispiele sind direkt in der Datei gegeben).

 

Anschließend können Sie diese Datei auf den Desktops der Clientrechner verteilen oder auf einer Freigabe ablegen und von den Desktops der Nutzer Verknüpfungen darauf erstellen.